/* =========================================================
   Base / Reset
========================================================= */
:root{
  /* === C案 デザイントークン（移植元: design/nicotech-redesign-C-gsap.html）=== */
  --base:#F7F5F1;        /* 生成り（ベース） */
  --base-2:#EFECE5;      /* セクション交互 */
  --ink:#23211E;         /* 墨（本文・見出し） */
  --ink-body:#4A453E;    /* 本文・説明文用（墨とくすみ墨の中間トーン。A11y: 明背景#F7F5F1=8.72 / 交互背景#EFECE5=8.04 でAAA級。可読性と上品さの両立） */
  --ink-soft:#6F695E;    /* 補足テキスト（A11y: 明背景#F7F5F1=5.00 / 交互背景#EFECE5=4.61 で両方AA達成。旧#7C766C 4.13:1） */
  --accent:#83643A;      /* ブロンズ（ラベル・装飾）。A11y: #F7F5F1=5.01 / #EFECE5(base-2)=4.62 で両方AA達成。旧#9A7B4F 3.63:1。装飾は同系で違和感なし・news badge白文字比も改善 */
  --accent-on-dark:#B8965E; /* 暗背景(墨)上のブロンズ文字用（例 .c-cv-area eyebrow）5.78:1。濃色ブロンズは暗背景で不可読のため */
  --sky:#2E5E78;         /* 主CTAの空色 */
  --sky-deep:#22485C;
  --line:rgba(35,33,30,.14);

  /* Typography（英字=Cormorant / 和文見出し=Zen Old Mincho / 本文=Zen Kaku Gothic New）*/
  --en:"Cormorant Garamond", serif;
  --serif:"Zen Old Mincho", serif;
  --sans:"Zen Kaku Gothic New", sans-serif;
  --font-display: var(--en);   /* レガシー別名 */
  --font-serif: var(--serif);
  --font-body: var(--sans);    /* レガシー別名 */

  /* === タイプスケール（本文系）：リード/説明/メタの3段（直値pxを廃しここを唯一の正に） === */
  --ts-lead:1.125rem;   /* 18px   リード・導入文（濃い墨 --ink + 太さ500 / 行間1.85） */
  --ts-body:1rem;       /* 16px   説明文・カード本文・回答（中間トーン --ink-body / 行間1.9・モバイル可読性で15→16px） */
  --ts-meta:.78rem;     /* 12.5px メタ・注記・出典（くすみ墨 --ink-soft / 行間1.7） */

  /* === レガシートークンの別名（C案値へ寄せ、未移植箇所のカスケード事故を防ぐ）=== */
  --brand-teal: var(--sky);
  --brand-teal-vivid: var(--sky);
  --brand-orange: var(--accent);
  --brand-blue: var(--sky);
  --brand-blue-deep: var(--sky-deep);
  --ink-2: var(--ink);
  --muted: var(--ink-soft);
  --eyebrow: var(--accent);
  --surface: var(--base);
  --surface-muted: var(--base-2);
  --surface-accent: var(--base-2);
  --bg: var(--base);
  --bg-weak: var(--base-2);

  /* グラデは罫線主義のためフラット化 */
  --lp-page-gradient: var(--base);
  --lp-section-gradient: var(--base-2);
  --lp-hover-gradient: transparent;
  --gradient-soft: var(--base-2);
  --gradient-strong: var(--sky);
  --gradient-em: var(--accent);
  --gradient-card: var(--base);

  /* 影は罫線主義のため撤去（罫線で代替） */
  --shadow-sm: none;
  --shadow: none;
  --shadow-lg: none;
  --shadow-strong: none;

  /* 角丸は罫線主義のため 0（円形要素は個別に 999px/50% 指定で維持） */
  --radius-sm:0;
  --radius:0;
  --radius-lg:0;
  --radius-xl:0;

  /* Spacing */
  --section-gap: clamp(5rem, 9vw, 7.5rem);
  --container:1160px;
  --w: var(--container);

  /* Header */
  --header-pad: clamp(12px, 3vw, 24px);
  --header-max: 1180px;

  /* z-index tokens */
  --z-fixed-cv: 40;
  --z-header: 200;
  --z-modal: 1200;
  --z-overlay-top: 9999;

  /* Border */
  --border-subtle:1px solid var(--line);
  --border-card:1px solid var(--line);
}

*,
*::before,
*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
}
body{
  margin:0;
  color:var(--ink);
  background:var(--base);
  font-family: var(--sans);
  line-height:1.9;
  letter-spacing:.04em;
  font-feature-settings:"palt";
  font-variant-numeric:lining-nums;   /* Cormorant Garamond のオールドスタイル数字を高さの揃ったライニング数字に（継承で全数字に適用） */
  line-break:strict;        /* 日本語禁則を厳格化：ー・小書き仮名・句読点を行頭に孤立させない（全体に継承） */
  text-wrap:pretty;         /* 本文末尾1字の孤立を抑制（未対応ブラウザは normal にフォールバック＝無害） */
  word-break:auto-phrase;   /* 和文を文節境界で改行＝語の途中で割らない（例「ワンストップ」「サポート」を分断しない）。全体に継承・Chrome/Safari対応・未対応はnormalにフォールバック */
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
/* 見出し/タイトル群の折り返し品質：均等割り＋日本語の文節境界で改行（語の途中で割らない） */
.h-ja, .h-en, .rs-card h3, .sp-item h3, .pr-card h3, .fq-cat, .faq summary, .ac-dl dd{
  text-wrap:balance;        /* 行長を均等化し孤立行を解消（Firefox/Safari含む） */
  word-break:auto-phrase;   /* 文節で改行＝「資格取得後の/アフターフォロー」。Chrome/Safari対応、未対応は balance にフォールバック */
}
/* リード（導入文）は短いので行長を均等化＝「きれいな塊」に。body継承の auto-phrase で語の途中は割れない */
.lead, .gallery__lead, .sp-top__lead, .contact-modal__lead, .contact-complete__text{ text-wrap:balance; }

img{ max-width:100%; height:auto; display:block; }
a{ color:var(--ink-2); text-decoration:none; touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
a:hover{ text-decoration:underline; }
button, [role="button"], summary{ touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
ul,ol{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4,p{ margin:0 0 .75rem; }

.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

.skip-link{
  position:absolute; left:-9999px; top:auto; width:1px; height:1px; overflow:hidden;
}
.skip-link:focus{
  position:fixed; left:1rem; top:1rem; width:auto; height:auto;
  background:#000; color:#fff; padding:.5rem .75rem; z-index:var(--z-overlay-top); border-radius:.5rem;
}

/* =========================================================
   C案 共通ユーティリティ（括弧ラベル + 英字/和文見出し + 導線）
   ※ 新規追加要素（factbar / mission / hero 等）が使用
========================================================= */
.label{
  font-family:var(--en); font-size:.95rem; letter-spacing:.18em; color:var(--accent);
}
.label::before{ content:"( "; }
.label::after{ content:" )"; }
.h-en{
  font-family:var(--en); font-weight:400;
  font-size:clamp(40px,5.6vw,72px); line-height:1.1; letter-spacing:.02em;
  margin:10px 0 22px;
}
.h-ja{
  font-family:var(--serif); font-weight:500;
  font-size:clamp(20px,2.4vw,27px); letter-spacing:.12em; line-height:1.9;
}
.lead{ color:var(--ink); max-width:600px; font-size:var(--ts-lead); line-height:1.85; }
.tlink{
  display:inline-flex; align-items:center; gap:14px; min-height:44px;  /* タップ領域44px確保（旧29px） */
  font-family:var(--en); font-size:.95rem; letter-spacing:.16em; color:var(--ink);
}
.tlink::after{ content:""; width:48px; height:1px; background:var(--ink); transition:width .3s; }
.tlink:hover{ text-decoration:none; }
.tlink:hover::after{ width:72px; }
.btn-cv{
  display:inline-flex; align-items:center; gap:12px;
  background:var(--sky); color:var(--base); border:1px solid var(--sky);
  font-family:var(--sans); font-weight:700; font-size:.95rem; letter-spacing:.06em;
  text-align:center;  /* 狭幅で文言が2行に折り返した際に各行をセンタリング（単行は無影響） */
  padding:18px 52px; transition:background .3s, transform .25s;
}
.btn-cv:hover{ background:var(--sky-deep); transform:translateY(-2px); color:var(--base); text-decoration:none; }
.btn-cv:focus-visible{ outline:3px solid rgba(46,94,120,.5); outline-offset:3px; }
/* 明背景用の副CTA（生成り背景で可読な空色アウトライン。声セクション等の主従ペアで使用） */
.btn-outline{
  display:inline-flex; align-items:center; gap:12px;
  background:transparent; color:var(--sky); border:1px solid var(--sky);
  font-family:var(--sans); font-weight:700; font-size:.95rem; letter-spacing:.06em;
  padding:18px 44px; transition:background .3s, color .3s, transform .25s;
}
.btn-outline:hover{ background:var(--sky); color:var(--base); transform:translateY(-2px); text-decoration:none; }
.btn-outline:focus-visible{ outline:3px solid rgba(46,94,120,.5); outline-offset:3px; }

/* =========================================================
   Header（C案：reg-bar + #siteHeader sticky / comp準拠）
========================================================= */
.wrap{ max-width:var(--container); margin:0 auto; padding:0 clamp(20px, 4vw, 28px); }

.reg-bar{
  background:var(--ink); color:var(--base);
  font-size:.66rem; letter-spacing:.08em; text-align:center; padding:6px 12px;
}
#siteHeader{
  position:sticky; top:0; z-index:var(--z-header);
  background:rgba(247,245,241,.92);
  border-bottom:1px solid transparent;
  transition:border-color .3s, background .3s;
}
@media(min-width:1200px){
  #siteHeader{
    background:rgba(247,245,241,.86);
    backdrop-filter:blur(8px) saturate(1.1);
    -webkit-backdrop-filter:blur(8px) saturate(1.1);
  }
}
#siteHeader.scrolled{ border-bottom-color:var(--line); }
.hd{
  display:flex; align-items:center; justify-content:space-between; gap:1.4rem;
  padding:12px clamp(16px, 2vw, 24px); /* 全幅・ロゴ左端寄せ（中央寄せmax-width解除） */
}
.brand{ margin:0 auto 0 0; line-height:0; } /* margin-right:auto で nav/tel/cta を右寄せグループ化 */
.brand img{ height:30px; width:auto; display:block; }
.brand a{ display:inline-flex; align-items:center; min-height:44px; }  /* ロゴ画像は30pxのまま、タップ領域のみ44px確保 */
.hd nav ul{ display:flex; gap:clamp(10px, 1.3vw, 22px); align-items:center; flex-wrap:nowrap; white-space:nowrap; }
.hd nav a{
  font-family:var(--en); font-size:15px; letter-spacing:.08em;
  display:flex; flex-direction:column; line-height:1.35; color:var(--ink);
}
.hd nav a small{ font-family:var(--sans); font-size:12px; color:var(--ink-soft); letter-spacing:0; }
.hd nav a:hover{ color:var(--accent); text-decoration:none; }
.hd-tel{
  font-family:var(--en); font-size:18px; letter-spacing:.06em; line-height:1.2;
  color:var(--ink); display:flex; flex-direction:column; text-align:right;
  font-variant-numeric:lining-nums tabular-nums;
}
.hd-tel:hover{ text-decoration:none; color:var(--accent); }
.hd-tel small{ font-family:var(--sans); font-size:10.5px; color:var(--ink-soft); letter-spacing:.04em; }
.hd-cta{
  background:var(--sky); color:var(--base);
  font-family:var(--sans); font-weight:700; font-size:14.5px; letter-spacing:.06em;
  padding:11px 22px; white-space:nowrap; transition:background .3s;
}
.hd-cta:hover{ background:var(--sky-deep); color:var(--base); text-decoration:none; }
.hd-cta:focus-visible{ outline:3px solid rgba(46,94,120,.5); outline-offset:2px; }

/* モバイル・セクションナビ：トリガー（既定は非表示・PCはフルナビ） */
.m-nav-toggle{
  display:none; align-items:center; min-height:44px; cursor:pointer;
  background:none; border:0; padding:8px 4px;
  font-family:var(--en); font-size:16px; letter-spacing:.1em; color:var(--ink);
}
.m-nav-toggle:hover{ color:var(--accent); }
.m-nav-toggle:focus-visible{ outline:3px solid rgba(46,94,120,.5); outline-offset:2px; }
/* オーバーレイ（下部CTAバー52pxを残して覆う・既定は visibility で非表示） */
.m-nav{
  position:fixed; inset:0 0 52px 0; z-index:var(--z-modal);
  background:var(--base);
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .25s ease, visibility 0s linear .25s; /* 閉じる時はフェード後にhidden */
}
.m-nav.is-open{ opacity:1; visibility:visible; pointer-events:auto; transition:opacity .25s ease, visibility 0s linear 0s; } /* 開く時は即visible（focus可能に） */
.m-nav__panel{
  height:100%; overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
  display:flex; flex-direction:column; justify-content:flex-start;
  padding:clamp(22px, 6vw, 40px) clamp(22px, 6vw, 40px) clamp(28px, 9vw, 48px);
}
.m-nav__list{ list-style:none; margin:0; padding:0; }
.m-nav__list li{ border-bottom:1px solid var(--line); }
.m-nav__list a{
  display:flex; align-items:baseline; gap:14px; padding:15px 2px;
  font-family:var(--en); font-size:clamp(24px, 7vw, 32px); letter-spacing:.04em; color:var(--ink);
}
.m-nav__list a small{ font-family:var(--sans); font-size:13px; letter-spacing:.04em; color:var(--ink-soft); }
.m-nav__list a:hover{ color:var(--accent); text-decoration:none; }
.m-nav__list a:focus-visible{ outline:3px solid rgba(46,94,120,.5); outline-offset:2px; }
.m-nav__tel{
  margin-top:26px; display:flex; flex-direction:column;
  font-family:var(--en); font-size:22px; letter-spacing:.06em; color:var(--ink);
  font-variant-numeric:lining-nums tabular-nums;
}
.m-nav__tel small{ font-family:var(--sans); font-size:11px; letter-spacing:.04em; color:var(--ink-soft); }
.m-nav__close{
  margin-top:28px; align-self:flex-start; min-height:44px; cursor:pointer;
  background:none; border:1px solid var(--line); padding:12px 26px;
  font-family:var(--sans); font-size:13px; letter-spacing:.1em; color:var(--ink-soft);
}
.m-nav__close:hover{ color:var(--ink); border-color:var(--ink-soft); }
.m-nav__close:focus-visible{ outline:3px solid rgba(46,94,120,.5); outline-offset:2px; }
@media(prefers-reduced-motion:reduce){ .m-nav, .m-nav.is-open{ transition:none; } }

/* 8項目ナビの幅確保のため、電話番号は1280px以下で先に隠す（モバイル下部バー＋CTA区で電話導線は担保） */
@media(max-width:1279px){ .hd-tel{ display:none; } }
@media(max-width:959px){
  .hd nav{ display:none; }
  .hd-cta{ display:none; }                 /* モバイルは下部CTAバーに集約。ヘッダーは logo＋Menu */
  .m-nav-toggle{ display:inline-flex; }
}

.l-container{ overflow:hidden; }

/* =========================================================
   Facility Gallery — C案（フラット・罫線／フィルター・モーダル・動画は機能維持）
========================================================= */
.gallery{
  position:relative;
  padding: var(--section-gap) 0;
  background: var(--base);
}
.gallery__inner{
  position:relative;
  max-width:var(--container);
  margin:0 auto;
  padding:0 clamp(1.25rem, 4vw, 2rem);
}
.gallery__head{ max-width:680px; margin:0 0 clamp(1.8rem, 3.5vw, 2.6rem); }
.gallery__eyebrow{
  font-family:var(--en); font-size:.95rem; letter-spacing:.18em; color:var(--accent);
}
.gallery__eyebrow::before{ content:"( "; }
.gallery__eyebrow::after{ content:" )"; }
.gallery__title{
  margin-top:.6rem;
  font-family:var(--serif); font-weight:500;
  font-size:clamp(1.6rem, 1.8vw + 1rem, 2.4rem);
  color:var(--ink); line-height:1.5; letter-spacing:.08em;
}
.gallery__lead{ margin-top:.9rem; color:var(--ink); line-height:1.85; font-size:var(--ts-lead); }

/* フィルター（タブ風・罫線） */
.gallery__controls{ display:flex; gap:.6rem; flex-wrap:wrap; margin-top:1.6rem; }
.gallery__filter{
  border:1px solid var(--line);
  background:transparent;
  color:var(--ink-soft);
  font-family:var(--en); font-size:.9rem; letter-spacing:.08em;
  display:inline-flex; align-items:center; justify-content:center; min-height:44px;  /* タップ領域44px確保（旧40px） */
  padding:.5rem 1.3rem;
  cursor:pointer;
  transition:color .24s ease, border-color .24s ease, background .24s ease;
}
.gallery__filter:hover{ color:var(--ink); border-color:var(--ink-soft); }
.gallery__filter:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.gallery__filter.is-active{ background:var(--ink); color:var(--base); border-color:var(--ink); }

/* グリッド */
.gallery__grid{
  margin-top:clamp(1.8rem, 4vw, 2.6rem);
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:clamp(.9rem, 2vw, 1.4rem);
}
.gallery__item{
  position:relative;
  transition:opacity .38s ease, transform .38s ease;
}
.gallery__item.is-entering{ opacity:0; transform:scale(.97); }
.gallery__item.is-leaving{ opacity:0; transform:scale(.97); pointer-events:none; }
.gallery__item.is-hidden{ display:none; }
.gallery__trigger{
  display:block; width:100%; border:none; padding:0; background:none;
  cursor:pointer; text-align:left;
}
.gallery__figure{
  position:relative;
  overflow:hidden;
  border:1px solid var(--line);
  background:var(--base-2);
  aspect-ratio:4 / 3;
  margin:0;
  width:100%;
}
.gallery__figure picture,
.gallery__figure img,
.gallery__figure video{ display:block; width:100%; height:100%; }
.gallery__figure img,
.gallery__figure video{ object-fit:cover; }

/* キャプション（写真下に墨グラデの帯） */
.gallery__figcaption{
  position:absolute;
  left:0; right:0; bottom:0;
  display:flex;
  flex-direction:column;
  gap:.3rem;
  padding:1.6rem 1.1rem .9rem;
  color:var(--base);
  background:linear-gradient(to top, color-mix(in srgb, var(--ink) 74%, transparent), transparent);
}
.gallery__tag{
  align-self:flex-start;
  font-family:var(--en); font-size:.72rem; letter-spacing:.12em;
  color:var(--base); opacity:.85;
}
.gallery__text{ font-size:.98rem; font-weight:500; letter-spacing:.04em; }

/* ホバーオーバーレイ（拡大アイコン） */
.gallery__overlay{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:color-mix(in srgb, var(--ink) 34%, transparent);
  opacity:0;
  transition:opacity .3s ease;
}
.gallery__icon{ width:40px; height:40px; color:var(--base); }
.gallery__trigger:hover .gallery__overlay,
.gallery__trigger:focus-visible .gallery__overlay{ opacity:1; }
.gallery__trigger:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }

/* --- ギャラリー・ハイブリッドナビ（PC≥960・pointer:fine・非reduced-motion時にJSが .gallery--nav を付与。
       左=大型タイポ行（罫線ホバー・縦操縦）／右=固定プレビュー面（常時1枚を大きく安定表示）。
       条件を満たさない環境ではグリッドのまま＝フォールバック） --- */
.gallery--nav .gallery__grid{
  display:flex; gap:clamp(24px, 4vw, 56px); align-items:stretch;
  position:relative;
  height:min(72vh, 600px);   /* 箱を固定＝CLSゼロ・この中で左列が操縦される */
  overflow:hidden;
}
.gallery--nav .gallery__navcol{ flex:1 1 54%; min-width:0; position:relative; overflow:hidden; }
.gallery--nav .gallery__navlist{ position:relative; will-change:transform; }
.gallery--nav .gallery__item{ position:relative; }
.gallery--nav .gallery__trigger{ position:relative; width:100%; }
.gallery--nav .gallery__row{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:clamp(12px, 1.6vw, 22px); row-gap:2px;
  padding:clamp(10px, 1.8vw, 20px) 2px;
  border-top:1px solid transparent; border-bottom:1px solid transparent;
  transition:border-color .25s ease;
}
.gallery--nav .gallery__row em{
  font-style:normal; font-family:var(--en); font-weight:500;
  font-size:clamp(1.9rem, 3.4vw, 3.4rem); line-height:1.12; letter-spacing:.02em;
  color:color-mix(in srgb, var(--ink) 32%, transparent);
  transition:color .25s ease;
  white-space:nowrap;
}
.gallery--nav .gallery__row small{
  font-family:var(--sans); font-size:13px; letter-spacing:.08em; color:var(--ink-soft);
}
.gallery--nav .gallery__trigger:hover .gallery__row,
.gallery--nav .gallery__trigger:focus-visible .gallery__row{
  border-top-color:var(--ink); border-bottom-color:var(--ink);
}
.gallery--nav .gallery__trigger:hover .gallery__row em,
.gallery--nav .gallery__trigger:focus-visible .gallery__row em{ color:var(--ink); }
/* プレビュー面（各itemのfigureをJSがここへ移設。is-activeの1枚をクロスフェード表示） */
.gallery--nav .gallery__navview{
  flex:1 1 46%; position:relative; align-self:center;
  aspect-ratio:4 / 3; max-height:100%;
  border:1px solid var(--line); background:var(--base-2);
  overflow:hidden;
}
.gallery--nav .gallery__navview .gallery__figure{
  position:absolute; inset:0; width:100%; height:100%;
  margin:0; border:none; aspect-ratio:auto;
  opacity:0; transition:opacity .35s ease;
  pointer-events:none;
}
.gallery--nav .gallery__navview .gallery__figure.is-active{ opacity:1; }
.gallery--nav .gallery__overlay{ display:none; }   /* ＋アイコンはトリガー外に出たため非表示（クリック誘導はカーソルで担保） */

/* モーダル */
.gallery__dialog{ border:none; padding:0; background:transparent; max-width:none; width:100%; overscroll-behavior:contain; }
.gallery__dialog::backdrop{ background:color-mix(in srgb, var(--ink) 60%, transparent); backdrop-filter:blur(4px); }
.gallery__dialog-inner{
  position:relative;
  margin:4vh auto;
  width:min(90vw, 920px);
  background:var(--base);
  border:1px solid var(--line);
  overflow:hidden;
  transform:translateY(18px) scale(.96);
  opacity:0;
  transition:transform .32s ease, opacity .32s ease;
}
.gallery__dialog[data-state="open"] .gallery__dialog-inner{ transform:translateY(0) scale(1); opacity:1; }
.gallery__dialog-close{
  position:absolute;
  top:12px; right:12px;
  width:44px; height:44px;
  border:1px solid var(--line);
  background:color-mix(in srgb, var(--ink) 72%, transparent);
  color:var(--base);
  font-size:1.6rem; line-height:1;
  cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:background .24s ease;
}
.gallery__dialog-close:hover{ background:var(--ink); }
.gallery__dialog-close:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.gallery__dialog-figure{
  display:flex; flex-direction:column; gap:1.3rem;
  padding:clamp(1.4rem, 3vw, 2.2rem);
}
.gallery__dialog-picture{ display:block; }
.gallery__dialog-picture[hidden]{ display:none; }
.gallery__dialog-picture img{ width:100%; height:auto; border:1px solid var(--line); }
.gallery__dialog-video{
  width:100%;
  max-height:min(80vh, 640px);
  border:1px solid var(--line);
  background:#000;
  display:none;
  object-fit:cover;
}
.gallery__dialog-video.is-active{ display:block; }
.gallery__dialog-caption{ display:flex; flex-direction:column; gap:.4rem; color:var(--ink); }
.gallery__dialog-title{
  font-family:var(--serif); font-weight:500;
  font-size:1.3rem; letter-spacing:.06em; color:var(--ink);
}
.gallery__dialog-text{ color:var(--ink-soft); line-height:1.9; font-size:.92rem; }

@media (max-width:767px){
  .gallery__dialog-inner{ margin:8vh auto; width:min(94vw, 560px); }
  .gallery__dialog-figure{ padding:1.3rem; }
  .gallery__dialog-close{ top:10px; right:10px; width:44px; height:44px; }
}

/* =========================================================
   モバイル追従CTA（全幅ボトムバー・comp準拠 / .c-fixed-cv は計測フック維持）
========================================================= */
.c-fixed-cv{
  display:none;
  position:fixed; bottom:0; left:0; right:0; z-index:var(--z-fixed-cv);
  grid-template-columns:1fr 1fr; border-top:1px solid var(--line);
}
.c-fixed-cv a{
  display:flex; align-items:center; justify-content:center;
  padding:15px; min-height:52px;
  text-align:center; font-size:13px; font-weight:700; letter-spacing:.04em;
}
.c-fixed-cv a:hover{ text-decoration:none; }
.c-fixed-cv .m-tel{ background:var(--base); color:var(--ink); }
.c-fixed-cv .m-cv{ background:var(--sky); color:var(--base); }
@media(max-width:959px){
  .c-fixed-cv{ display:grid; }
  body{ padding-bottom:52px; }
  .ft-nav a{ min-height:44px; justify-content:center; }  /* モバイルのフッターリンクのタップ領域44px（旧30px・デスクトップは据置） */
}

/* =========================================================
   Footer — C案（comp footer / .ft）
========================================================= */
.l-footer{ border-top:1px solid var(--line); padding:64px 0 36px; background:var(--base); }
.l-footer a{ color:var(--ink-soft); transition:color .2s ease; }
.l-footer a:hover{ color:var(--accent); text-decoration:none; }
.ft{ display:flex; justify-content:space-between; gap:50px; flex-wrap:wrap; }
.ft-brand img{ height:30px; width:auto; margin-bottom:16px; }
.ft-brand p{ font-size:11px; color:var(--ink-soft); letter-spacing:.04em; max-width:420px; line-height:1.9; }
.ft-nav ul{ list-style:none; padding:0; margin:0; }
.ft-nav a{ font-size:12.5px; line-height:2.4; font-family:var(--sans); letter-spacing:.04em; color:var(--ink-soft); display:inline-flex; flex-direction:column; }
.ft-nav a small{ font-family:var(--en); font-size:9px; color:var(--accent); letter-spacing:.08em; }
.copy{ margin-top:50px; font-family:var(--en); font-size:11px; color:var(--ink-soft); letter-spacing:.16em; }

/* =========================================================
   Animation / Utilities
========================================================= */

/* アンカー遷移時に sticky ヘッダー(#siteHeader)の下へ見出しが隠れないオフセット（R5） */
section[id]{ scroll-margin-top: clamp(72px, 8vw, 88px); }

/* =========================================================
   モバイル要約（プログレッシブディスクロージャー / スマホ ≤599px 限定）
   PC/タブレットは全文表示。no-JS(html.no-js)では畳まず全文可視＝コンテンツ常時可視。
   <summary>不使用＝GTM faq_open 非汚染。詳細文はDOM保持＝AIO無傷。
========================================================= */
.m-fold-btn{
  display:none;  /* 既定（PC/タブレット・no-JS）＝ボタン非表示・本文は全文表示 */
  align-items:center; gap:8px; min-height:44px; margin-top:8px; padding:4px 0;
  background:none; border:0; cursor:pointer;
  font-family:var(--en); font-size:.9rem; letter-spacing:.08em; color:var(--accent);
}
.m-fold-btn::after{ content:"＋"; font-family:var(--en); }
.m-fold-btn[aria-expanded="true"]::after{ content:"−"; }
.m-fold-btn:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }
@media(max-width:599px){
  html:not(.no-js) .m-fold-hide{ display:none; }                    /* リード=要約を残し詳細を畳む */
  html:not(.no-js) .m-fold-hide.is-open{ display:block; }
  html:not(.no-js) .m-fold-clamp{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }  /* 2行teaser */
  html:not(.no-js) .m-fold-clamp.is-open{ display:block; -webkit-line-clamp:unset; overflow:visible; }
  html:not(.no-js) .m-fold-btn{ display:inline-flex; }
}

/* ============================================================
   FLIGHT RAIL — 画面右端固定のスクロール進捗インジケータ（装飾）
   PC（>=1280px）かつ pointer:fine のみ。reduced-motion で非表示
   ============================================================ */
.p-rail{ display:none; }
@media (min-width:1280px) and (pointer:fine){
  .p-rail{
    display:block;
    position:fixed; right:26px; top:50%; transform:translateY(-50%);
    height:46vh; width:24px; z-index:var(--z-fixed-cv); pointer-events:none;
    opacity:0; transition:opacity .45s ease;   /* 既定は非表示→ヒーロー通過後にJSで表示（クレジット重なり回避・no-JSでは出さない） */
  }
}
.p-rail::before{
  content:""; position:absolute; left:50%; top:0; bottom:0;
  border-left:1.4px dashed color-mix(in srgb, var(--accent) 50%, transparent);
}
.p-rail__drone{
  position:absolute; left:50%; top:0; transform:translate(-50%,-50%);
  transition:top .15s linear;
}
.p-rail__drone img{ display:block; width:72px; max-width:none; height:auto; }   /* max-width:none で全画像リセット img{max-width:100%} の頭打ちを解除 */
@media (prefers-reduced-motion:reduce){ .p-rail{ display:none; } }

@media (max-width: 599px){
  :root{ --section-gap: clamp(2rem, 5vw, 3.2rem); }
}

@media (max-width: 599px){
  .gallery__grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .6rem;
  }
  .gallery__figure{ aspect-ratio: 1 / 1; }
  .gallery__figcaption{ font-size: .78rem; }
}
