/* ============================================================
   base.css — 共通のリセットとレイアウト基礎
   （Studio.design のランタイムCSSのうち、必要な部分だけを再現。
     :where() で詳細度を0にして、各要素のクラス指定が必ず勝つようにしている）
   ============================================================ */
:root{
  --font-noto:"Noto Sans JP",sans-serif;
  --font-lato:Lato,"Noto Sans JP",sans-serif;
  --font-poppins:Poppins,"Noto Sans JP",sans-serif;
  --font-inter:Inter,"Noto Sans JP",sans-serif;
  /* 元サイトは「新ゴ R」(モリサワ/TypeSquare・Studio経由のみ利用可)。代替として Noto Sans JP */
  --font-shingo:"Noto Sans JP",sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:#fff}
:where(.site){font-family:sans-serif;font-size:16px;line-height:1;color:#333;-webkit-font-smoothing:antialiased}
:where(.site) :is(a){color:inherit;text-decoration:none}
:where(.site) :is(button){font:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0;margin:0}
:where(.site) :is(input,textarea,select){font:inherit;color:inherit;margin:0;border:0;padding:0;background:none}
:where(.site) textarea{resize:none}
:where(.site) :is(h1,h2,h3,h4,h5,h6,p){margin:0;font-weight:inherit;font-size:inherit}
:where(.site) :is(ul,ol){margin:0;padding:0;list-style:none}
.site{display:flex;flex-direction:column;align-items:center;min-height:100dvh;width:100%;overflow:clip}
.site>.sd{min-height:100dvh}

/* すべての要素の基本: Studio の .sd と同じ */
:where(.sd){position:relative;display:flex;flex-flow:column;flex:none;align-items:center;align-content:center;max-width:100%;z-index:0;box-sizing:border-box;pointer-events:all;transition-property:all;transition-duration:0s;transition-timing-function:cubic-bezier(.4,.4,0,1)}
:where(.sd.text,.sd.icon){display:flex;flex-direction:row;place-content:center;align-items:center;overflow:visible;word-break:break-word;overflow-wrap:anywhere}
:where(.sd.image){position:relative}
:where(.sd.image)::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit;z-index:-2;pointer-events:none;background-position:50%;background-size:cover;background-repeat:no-repeat;transition:inherit}
:where(.sd.frame){display:block;overflow:hidden}
:where(.sd.frame)>iframe{width:100%;height:100%;border:0}
:where(.sd.button){cursor:pointer;transition:all .4s cubic-bezier(.4,.4,0,1)}
:where(.sd.fixed){z-index:2}
:where(a.sd){cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,.15)}
:where(input.sd,textarea.sd){align-content:normal;-webkit-appearance:none;appearance:none}
:where(input[type=radio].sd,input[type=checkbox].sd){appearance:auto;-webkit-appearance:auto;display:inline-block}
:where(.material-icons){font-family:"Material Icons";font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;display:inline-flex;justify-content:center;align-items:center;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"liga"}

/* リッチテキスト（CMS記事本文など） */
:where(.richText){display:block;word-break:break-word}
:where(.richText) p{display:block;margin:10px 0;min-height:1em}
:where(.richText) h1{margin:20px 0;font-size:3em;font-weight:700;display:block}
:where(.richText) h2{margin:10px 0;font-size:2em;font-weight:700;display:block}
:where(.richText) h3{margin:10px 0;font-size:1em;font-weight:700;display:block}
:where(.richText) :is(h4,h5){margin:10px 0;font-size:1em;font-weight:600;display:block}
:where(.richText) strong{font-weight:900;display:inline;color:inherit;font-family:inherit}
:where(.richText) em{font-style:italic}
:where(.richText) u{text-decoration:underline}
:where(.richText) a{color:#007cff;text-decoration:underline;display:inline}
:where(.richText) :is(img,video){max-width:100%;height:auto;vertical-align:bottom;display:inline-block}
:where(.richText) figure{margin:0}
:where(.richText) ul{margin:0 0 0 20px}:where(.richText) ul li{margin:10px 0;list-style:outside}
:where(.richText) ol{margin:0 0 0 20px}:where(.richText) ol li{margin:10px 0;list-style:decimal}
:where(.richText) hr{border:0;border-top:1px solid #ccc;margin:10px 0}

/* トグル（FAQ） */
:where(.toggle [data-toggle]){text-align:left}

/* モーダル（スマホのメニュー） */
.modal{position:fixed;inset:0;z-index:100;display:none;overflow:auto;-webkit-overflow-scrolling:touch}
.modal.is-open{display:flex}
.modal>.sd{transition:opacity .3s cubic-bezier(.4,.4,0,1),transform .3s cubic-bezier(.4,.4,0,1)}
.modal:not(.is-visible)>.sd{opacity:0;transform:translateY(100px)}
body.modal-open{overflow:hidden}

/* 中間幅の表示調整（JSが動かないときの近似値。正確な倍率は main.js が設定する）
   - 541〜1023px: スマホ用レイアウトを少し拡大
   - 1024〜1365px: PC用レイアウト（1366px設計）を縮小 */
@media screen and (min-width:541px) and (max-width:1023px){body{zoom:1.1}}
@media screen and (min-width:1024px) and (max-width:1365px){body{zoom:.85}}

/* お問い合わせフォームのロボット判定（hCaptcha） */
.h-captcha{display:block;margin:12px 0 4px;min-height:78px;max-width:100%}
.h-captcha iframe{max-width:100%}
button.submitLoading{opacity:.6;cursor:wait}
