:root {
  --white: #fff;
  --paper: #F4F1EA;      /* 和紙 */
  --paper-deep: #EDE9DF;
  --navy: #0B1F3A;       /* 墨紺 */
  --ink: #1A1A1A;        /* 墨 */
  --muted: #66727F;      /* 鋼青系グレー */
  --line: #DDD8CC;
  --orange: #B08D57;     /* 真鍮。アクセントの基準色 */
  --gold: #DFC069;       /* 強調用ゴールド。CTAボタンのみに使う */
  --orange-soft: #F1E9DB;
  --cyan: #35506B;       /* 鋼青 */
  --navy-lift: #243F5E;  /* 墨紺と鋼青の中間。CTA面用 */
  --cyan-soft: #E9EDF2;
  --container: 1280px;
  --header-h: 76px;
  --radius: 2px;
  --ease: cubic-bezier(.22, 1, .36, 1);
  --sans: "Noto Sans JP", sans-serif;
  --display: "Zen Kaku Gothic New", "Noto Sans JP", sans-serif;
  --latin: "Inter", sans-serif;
  --serif: "Shippori Mincho", serif;
  --scroll-p: 0;
}

/* 上司レビュー用の比較オーバーレイ（議事録2026-07-23のTodo対応）。
   既定は真鍮のまま。?gold=1 / ?gold=2 を付けたときだけ、強調8箇所を明るいゴールドに差し替える。
   ※ 特徴アイコンはSVG内の直値（#C9A96B）なので、この切替では変わらない */
:root[data-gold="1"] { --gold: #DFC069; }
:root[data-gold="2"] { --gold: #D4AF37; }
:root[data-gold] .ht-copy h1 .accent,
:root[data-gold] .svc-item.is-active .svc-toggle__no,
:root[data-gold] .svc-item.is-active .svc-panel__body .card-link:hover { color: var(--gold); }
:root[data-gold] .contact__inner::before { background: var(--gold); }
:root[data-gold] .case-card:hover .card-go { color: var(--navy); background: var(--gold); }

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--sans);
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
body.menu-open { overflow: hidden; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { color: inherit; font: inherit; }
h1, h2, h3, p, ul { margin: 0; }
ul { padding: 0; list-style: none; }
::selection { color: var(--white); background: var(--orange); }
:focus-visible { outline: 3px solid var(--orange); outline-offset: 4px; }

.skip-link {
  position: fixed;
  z-index: 9999;
  top: 10px;
  left: 10px;
  padding: 10px 14px;
  color: var(--white);
  background: var(--navy);
  transform: translateY(-150%);
}
.skip-link:focus { transform: translateY(0); }
.container { width: min(var(--container), calc(100% - 64px)); margin-inline: auto; }
main { position: relative; }
main > .section, main > .hero { position: relative; }
main .container { position: relative; z-index: 2; }
.section { padding: 120px 0; }
.section--navy { color: var(--white); background: var(--navy); }

[data-reveal] {
  opacity: 0;
  transform: translateY(34px);
  clip-path: inset(0 0 12% 0);
  transition: opacity .8s var(--ease), transform .8s var(--ease), clip-path .9s var(--ease), filter .8s var(--ease);
}
[data-reveal="left"] { transform: translateX(-46px); clip-path: none; }
[data-reveal="right"] { transform: translateX(46px); clip-path: none; }
[data-reveal="blur"] { transform: none; clip-path: none; filter: blur(10px); }
/* NOTE: initial clip must keep over half the box visible — IntersectionObserver counts clipped area, a fully clipped element never intersects */
[data-reveal="mask"] { transform: none; clip-path: inset(0 0 46% 0); }
[data-reveal="mask"] img { transform: scale(1.12); transition: transform 1.2s var(--ease); }
[data-reveal].is-visible { opacity: 1; transform: none; clip-path: inset(0); filter: none; }
/* clip-pathをアニメーションに使わない型は、表示後にクリップを残さない。
   inset(0)が残ると、要素の外に出る子（Flowの番号バッジ）やホバーの浮き上がり・影が切られる（改訂60） */
[data-reveal="left"].is-visible, [data-reveal="right"].is-visible, [data-reveal="blur"].is-visible,
[data-reveal="rise"].is-visible, [data-reveal="zoom"].is-visible { clip-path: none; }
[data-reveal="mask"].is-visible img { transform: scale(1); }
/* 見出しの下からのポップアウト（partners-re.co.jp/company/ 実測: 外側 overflow:hidden ＋
   内側 span を translateY(100%)→0、transform 1s cubic-bezier(.33,1,.68,1) / opacity .8s）。
   外側は opacity:1 のままにする（0にすると内側ごと消えて演出が見えない） */
[data-reveal="pop"] { display: block; overflow: hidden; opacity: 1; transform: none; clip-path: none; }
/* 内側は block にする。inline-block だと親のベースラインに揃うため箱の下へ食み出し、
   overflow:hidden で文字の下端が切れる（実測で18px欠けた） */
[data-reveal="pop"] > span { display: block; opacity: 0; transform: translateY(100%); transition: transform 1s cubic-bezier(.33, 1, .68, 1), opacity .8s var(--ease); }
[data-reveal="pop"].is-visible > span { opacity: 1; transform: none; }
/* カード・ブロックの小さく素早い浮上（recruit.triorb.co.jp 実測: opacity 0＋translateY 12〜16px） */
[data-reveal="rise"] { transform: translateY(16px); clip-path: none; transition: opacity .7s var(--ease), transform .7s cubic-bezier(.33, 1, .68, 1); }
/* 巨大な数字を「近づけて」見せる。図像として立たせたい要素に使う */
[data-reveal="zoom"] { transform: scale(.88); clip-path: none; transform-origin: 0 50%; transition: opacity .8s var(--ease), transform .9s cubic-bezier(.33, 1, .68, 1); }

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  min-height: 54px;
  padding: 13px 24px;
  border: 1px solid transparent;
  border-radius: var(--radius);
  font-weight: 700;
  font-size: 14px;
  line-height: 1.2;
  transition: transform .25s var(--ease), background .25s, color .25s, border-color .25s, box-shadow .25s;
}
.button:hover { transform: translateY(-2px); }
.button:disabled { opacity: .55; cursor: not-allowed; pointer-events: none; }
.button--small { min-height: 42px; padding: 9px 18px; font-size: 12px; }
/* サイト最大の訴求点だけゴールド（議事録2026-07-23「主役となる訴求箇所に限定」）。
   面＝ゴールド／文字＝墨紺で 9.35:1。他のアクセントは真鍮のまま */
.button--orange { color: var(--navy); background: var(--gold); box-shadow: 0 12px 30px rgba(223,192,105,.28); }
.button--orange:hover { background: #CFAE55; box-shadow: 0 16px 38px rgba(223,192,105,.38); }
.button--navy { color: var(--white); background: var(--navy); }
.button--navy:hover { background: #142F52; }
.button--ghost { color: var(--navy); background: var(--white); border-color: #B5AE9D; }
.button--ghost:hover { border-color: var(--navy); }
.button--white { color: var(--navy); background: rgba(255,255,255,.9); border-color: rgba(255,255,255,.7); }
.button--dark-outline { color: var(--white); border-color: rgba(255,255,255,.45); }
.button--dark-outline:hover { border-color: var(--white); background: rgba(255,255,255,.08); }
.text-link, .card-link {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-weight: 700;
}
.text-link { margin-top: 30px; padding-bottom: 4px; border-bottom: 1px solid var(--ink); }
.card-link { font-size: 13px; }
.text-link span, .card-link span { transition: transform .25s var(--ease); }
.text-link:hover span, a:hover .card-link span { transform: translateX(5px); }

/* タグチップ。_v5-before-scroll-upgrade-archive/css/style.css:226-230 にあったものが
   v6の白基調化リライトで失われ、v09/v10/v11/v12 で色も枠も無い素のテキストになっていた。
   角丸はピル999pxではなくブランド規定の2px、配色は墨青パレットに置き換えて復旧する。
   明地（白カード・和紙）に乗るのでゴールドではなく真鍮系のまま */
.tag {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: var(--radius);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .02em;
  white-space: nowrap;
}
.tag--orange { color: #7C5F30; background: var(--orange-soft); }
.tag--cyan { color: #2A4460; background: var(--cyan-soft); }
.tag--navy { color: var(--white); background: var(--navy); }
.tag--outline { color: var(--muted); background: transparent; border: 1px solid var(--line); }

/* Header */
.header {
  position: fixed;
  z-index: 1000;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--header-h);
  background: rgba(255,255,255,.93);
  border-bottom: 1px solid rgba(26,26,26,.09);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  transition: box-shadow .3s, background .3s;
}
.header.is-scrolled { background: rgba(255,255,255,.98); box-shadow: 0 8px 30px rgba(11,31,58,.07); }
.header.is-inverse { background: rgba(36,63,94,.9); border-bottom-color: rgba(255,255,255,.14); box-shadow: none; }
/* 改訂15: 下層ページはヒーローが墨紺で始まるため、最上部では帯を透明にして
   ヒーローを一枚の面として見せる（明るい帯が段差として乗るのを解消）。スクロール後は帯が戻る */
.header.is-inverse:not(.is-scrolled) { background: transparent; border-bottom-color: transparent; }
.header.is-inverse .brand,
.header.is-inverse .nav-link,
.header.is-inverse .nav-item__button { color: var(--white); }
.header.is-inverse .menu-button span { background: var(--white); }
.header.is-inverse .button--ghost { color: var(--white); background: transparent; border-color: rgba(255,255,255,.45); }
.header.is-inverse .button--ghost:hover { border-color: var(--white); }
.header__inner {
  /* 現行サイトは全幅でロゴが常に左端固定。上限幅で中央寄せすると広い画面で中央へ流れる */
  width: calc(100% - 96px);
  height: 100%;
  margin-inline: auto;
  display: flex;
  align-items: center;
  gap: 34px;
}
.brand {
  position: relative;
  flex: 0 0 auto;
  display: block;
  width: 70px;
  aspect-ratio: 766 / 306;
}
/* 正式ロゴと白抜きロゴは元画像の比率が違う（2.503 / 2.379）。高さで揃え、左端を基準にする */
.brand__logo { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: contain; object-position: left center; transition: opacity .3s var(--ease); }
.brand__logo--light { opacity: 0; }
.header.is-inverse .brand__logo--dark { opacity: 0; }
.header.is-inverse .brand__logo--light { opacity: 1; }
.header__nav { display: flex; align-items: center; gap: 26px; margin-left: auto; }
.nav-link, .nav-item__button {
  position: relative;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
}
.nav-link::after, .nav-item__button::after { content: ""; position: absolute; left: 0; bottom: -8px; width: 100%; height: 1px; background: var(--orange); transform: scaleX(0); transform-origin: right; transition: transform .3s var(--ease); }
.nav-link:hover::after, .nav-item:hover .nav-item__button::after, .nav-item__button[aria-expanded="true"]::after { transform: scaleX(1); transform-origin: left; }
/* gen-x型: ホバー／キーボードで開くドロップダウン */
.nav-item { position: relative; display: flex; align-items: center; }
.nav-item__button { display: inline-flex; align-items: center; gap: 7px; }
.nav-item__button::before { content: ""; order: 1; width: 5px; height: 5px; border-right: 1.4px solid currentColor; border-bottom: 1.4px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .3s var(--ease); }
.nav-item__button[aria-expanded="true"]::before { transform: translateY(1px) rotate(-135deg); }
.nav-menu {
  position: absolute;
  z-index: 20;
  top: calc(100% + 18px);
  left: 50%;
  display: grid;
  min-width: 216px;
  padding: 10px;
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: 0 20px 44px rgba(11,31,58,.14);
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, -8px);
  transition: opacity .26s var(--ease), transform .26s var(--ease), visibility .26s;
}
.nav-item:hover .nav-menu, .nav-item.is-open .nav-menu { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
.nav-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -18px; height: 18px; }
.nav-menu a { padding: 11px 14px; color: var(--navy); font-size: 13px; font-weight: 600; white-space: nowrap; border-radius: var(--radius); transition: background .25s, color .25s; }
.nav-menu a:hover, .nav-menu a:focus-visible { background: var(--paper); color: #8F6E3F; }
/* neoAI型: 採用だけ色を変えたチップ */
.nav-chip { padding: 9px 15px; color: var(--white); background: var(--cyan); border-radius: var(--radius); font-size: 12.5px; font-weight: 700; white-space: nowrap; transition: background .25s, transform .25s var(--ease); }
.nav-chip:hover { background: #2A4157; transform: translateY(-2px); }
.header.is-inverse .nav-chip { background: rgba(255,255,255,.16); }
.header.is-inverse .nav-chip:hover { background: rgba(255,255,255,.26); }
/* 改訂62: 採用目的の来訪者がすぐ飛べるよう、SPでもヘッダーに採用特設サイトのチップを常時表示
   （上司FB: HPに来てすぐ採用特設サイトへ飛べる導線）。PCでは既存のナビ内チップがあるため隠す */
.nav-chip--sp { display: none; }
.header__actions { display: flex; gap: 9px; }
/* 改訂68: 超ワイドモニターではロゴとナビが両端に離れすぎるため、
   フッターと同じ最大幅（--container）で中央寄せにする */
@media (min-width: 2560px) {
  .header__inner { width: min(var(--container), 100% - 96px); }
}
.menu-button { display: none; width: 44px; height: 44px; margin-left: auto; padding: 10px; border: 0; background: transparent; cursor: pointer; }
.menu-button span { display: block; width: 100%; height: 2px; margin: 5px 0; background: var(--navy); transition: transform .3s, opacity .3s; }
.menu-button.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.menu-button.is-open span:nth-child(2) { opacity: 0; }
.menu-button.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.mobile-menu { position: fixed; z-index: 900; inset: var(--header-h) 0 0; display: none; padding: 30px 24px; background: var(--white); overflow-y: auto; }
.mobile-menu.is-open { display: block; }
.mobile-menu nav { display: flex; flex-direction: column; }
.mobile-menu__group { padding: 18px 0; border-bottom: 1px solid var(--line); }
.mobile-menu__head { color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .18em; }
.mobile-menu__group > a { display: block; padding: 12px 4px 0; font-size: 17px; font-weight: 700; }
/* 改訂15: グループ見出し自体がリンクになった項目（私たちについて）。
   .mobile-menu__group > a（0,1,1）が .mobile-menu__head（0,1,0）に勝つため、見出しの体裁を明示的に取り戻す */
.mobile-menu__group > a.mobile-menu__head--link { padding: 0 4px; color: var(--muted); font-size: 11px; letter-spacing: .18em; }
.mobile-menu__group > a.mobile-menu__solo { padding: 10px 4px; font-size: 19px; }
.mobile-menu__actions { display: grid; gap: 10px; margin-top: 30px; }

/* Hero: sense-trust式カラースウィープ（左=現場×真鍮／右=AI技術×鋼青）
   改訂62/68: 「人物が中央に来る半分画像」×2パネル方式。
   各画像（hero-left/right.webp 1806x795）は人物を水平中央・目線を同じ高さ（y188）に揃え、
   左右に鏡面延長した背景を焼き足してある。object-position は 50% 0（横=人物中央、縦=上端基準）。
   どの画面幅でも「左右それぞれの半分の中央に人物」と「目線の一致」が同時に成立する */
.ht-hero { padding-top: var(--header-h); background: var(--paper); }
.ht-stage {
  position: relative;
  min-height: 560px;
  /* 改訂69: ファーストビューをヒーローだけで満たす（直下の章を覗かせない）。
     高さ上限880pxとvw連動を廃止し、常にビューポート高いっぱいに。
     横長画面では左右延長済み画像（1806x795）が吸収するため人物のクロップ・拡大は起きない。
     縦長画面は成立しないため改訂72のアスペクト比ガードで高さを抑える */
  height: calc(100svh - var(--header-h));
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1fr;
  background: var(--navy);
  isolation: isolate;
}
/* 改訂68: 超ワイド対応は「中央寄せ＋左右余白」をやめ、画像自体の左右に鏡面延長した背景を
   焼き足した幅広版（1806x795）でフル幅表示に変更。人物は画像中央に固定してあるため、
   どの画面幅でも各パネル中央に人物・目線一致のまま、超ワイドでは背景だけが広がる
   （〜4000px級まで縦クロップなし。それ以上は上端基準で脚元から僅かに切れるのみ） */
.ht-panel { position: relative; overflow: hidden; height: 100%; }
.ht-panel img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* 横は人物中央固定。縦が足りない画面では上端基準で脚元から切り、頭と目線位置を守る */
  object-position: 50% 0;
  filter: grayscale(1) contrast(1.08) brightness(.86);
  animation: ht-drift-plain 16s ease-out forwards;
}
@keyframes ht-drift-plain { from { transform: scale(1.02); } to { transform: scale(1.09); } }
/* 改訂72: 縦長ビューポート（iPad縦持ち・縦スナップ等）では100svh高だと人物が過大ズームされ
   腕が切れるため、高さをvw連動で抑える（横長画面のファーストビュー純化は維持） */
@media (min-width: 961px) and (max-aspect-ratio: 11/10) {
  .ht-stage { height: min(calc(100svh - var(--header-h)), calc(100vw * 0.72)); }
}
/* 墨紺ダクトーン */
.ht-panel::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.ht-panel--field::after { background: linear-gradient(100deg, rgba(11,31,58,.66) 0%, rgba(11,31,58,.3) 60%, rgba(11,31,58,.42) 100%); }
.ht-panel--tech::after { background: linear-gradient(260deg, rgba(11,31,58,.66) 0%, rgba(11,31,58,.3) 60%, rgba(11,31,58,.42) 100%); }

/* カラースウィープ（動きながら部分的に色を置く）
   漂いは0%起点・0%終点の明示keyframesにし、スウィープイン終了delayと厳密一致させて
   着地と漂い開始の速度をゼロに揃える（かくつき防止） */
.ht-sweep {
  position: absolute;
  z-index: 2;
  top: -12%;
  bottom: -12%;
  width: 58%;
  transform: skewX(-12deg);
  pointer-events: none;
  will-change: transform;
}
.ht-sweep--left {
  background: #B08D57;
  left: -14%;
  mix-blend-mode: color;
  opacity: .95;
  animation: ht-in-l 1.25s cubic-bezier(.16,.84,.28,1) .45s both, ht-drift-band 12s ease-in-out 1.7s infinite;
}
.ht-sweep--b.ht-sweep--left {
  mix-blend-mode: multiply;
  opacity: .38;
  width: 34%;
  left: 30%;
  animation: ht-in-l 1.4s cubic-bezier(.16,.84,.28,1) .62s both, ht-drift-band-b 14s ease-in-out 2.02s infinite;
}
.ht-sweep--right {
  background: #35506B;
  left: auto;
  right: -14%;
  mix-blend-mode: color;
  opacity: .95;
  animation: ht-in-r 1.25s cubic-bezier(.16,.84,.28,1) .58s both, ht-drift-band 12s ease-in-out 1.83s infinite;
}
.ht-sweep--b.ht-sweep--right {
  mix-blend-mode: multiply;
  opacity: .42;
  width: 34%;
  right: 30%;
  animation: ht-in-r 1.4s cubic-bezier(.16,.84,.28,1) .75s both, ht-drift-band-b 14s ease-in-out 2.15s infinite;
}
@keyframes ht-in-l { from { transform: skewX(-12deg) translateX(-130%); } to { transform: skewX(-12deg) translateX(0); } }
@keyframes ht-in-r { from { transform: skewX(-12deg) translateX(130%); } to { transform: skewX(-12deg) translateX(0); } }
@keyframes ht-drift-band {
  0% { transform: skewX(-12deg) translateX(0); }
  50% { transform: skewX(-12deg) translateX(4.5%); }
  100% { transform: skewX(-12deg) translateX(0); }
}
@keyframes ht-drift-band-b {
  0% { transform: skewX(-12deg) translateX(0); }
  50% { transform: skewX(-12deg) translateX(-3.5%); }
  100% { transform: skewX(-12deg) translateX(0); }
}

.ht-seam { position: absolute; z-index: 4; left: 50%; top: 0; bottom: 0; width: 1px; background: rgba(255,255,255,.22); pointer-events: none; }
.ht-frame { position: absolute; z-index: 5; inset: 22px; border: 1px solid rgba(255,255,255,.16); pointer-events: none; }
.ht-shade { position: absolute; z-index: 3; inset: 0; background: linear-gradient(to top, rgba(4,13,25,.72) 0%, rgba(4,13,25,.28) 22%, rgba(4,13,25,0) 44%); pointer-events: none; }

.ht-copy {
  /* --fall は main.js がスクロール量から 0→1 で書き込む（partners-re式の落下） */
  position: absolute;
  z-index: 7;
  left: 50%;
  bottom: clamp(44px, 6.5vh, 72px);
  transform: translateX(-50%) translateY(calc(var(--fall, 0) * 220px));
  opacity: calc(1 - var(--fall, 0) * 1.25);
  filter: blur(calc(var(--fall, 0) * 4px));
  width: min(860px, 92%);
  text-align: center;
  pointer-events: none;
  will-change: transform, opacity;
}
.ht-copy h1 { color: var(--white); font-family: var(--display); font-size: clamp(38px, 4.6vw, 66px); font-weight: 900; line-height: 1.16; letter-spacing: -.04em; }
.ht-copy h1 .accent { color: #C9A96B; }
/* 1文字ずつのブラーリビールはトップのヒーロー専用（改訂24でスコープを戻した）。
   下層ページのヒーロー見出しは章見出しと同じ左スライドで扱う */
.ht-copy h1 .char { display: inline-block; opacity: 0; filter: blur(8px); transition: opacity .45s var(--ease), filter .6s var(--ease); transition-delay: calc(var(--char-i, 0) * 55ms); }
.ht-copy h1.is-revealed .char { opacity: 1; filter: blur(0); }
.ht-sub { margin-top: 16px; color: rgba(255,255,255,.9); font-size: 14px; font-weight: 500; line-height: 2; letter-spacing: .02em; }

/* Mission: ヒーローから落ちてきた一文を受け止める章 */
.mission { padding: clamp(96px, 11vw, 150px) 0 clamp(56px, 6vw, 88px); }
.mission__inner { max-width: 840px; text-align: center; }
/* 改訂67: kickerは英字ラベル用（Inter・字間.22em）のため、日本語「ミッション」では
   字間が間延びする。トップのみ日本語用にフォント・字間を持ち替える（ラベル自体は
   セクション名として残す。下層で削除したのは日本語見出しに重複する英語ラベル） */
.mission .section-kicker { color: var(--orange); font-family: var(--sans); font-size: 12px; letter-spacing: .08em; }
.mission__title {
  margin-top: 18px;
  color: var(--navy);
  font-family: var(--display);
  font-size: clamp(32px, 4.2vw, 58px);
  font-weight: 900;
  line-height: 1.24;
  letter-spacing: -.04em;
}
.mission__title .accent { color: var(--orange); }
.mission__lead {
  margin-top: 34px;
  padding-top: 34px;
  border-top: 1px solid var(--line);
  color: var(--navy);
  font-family: var(--serif);
  font-size: clamp(18px, 1.75vw, 25px);
  font-weight: 600;
  line-height: 1.95;
  letter-spacing: .01em;
}
.mission__body { margin-top: 30px; display: grid; gap: 20px; }
.mission__body p { color: var(--muted); font-size: 15px; line-height: 2.15; }

/* Shared headings: 大きな英語1語のみ（日本語サブ・リード文は置かない） */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.section-heading { margin-bottom: clamp(46px, 5vw, 72px); }
.section-heading__en {
  color: var(--navy);
  font-family: var(--latin);
  font-size: clamp(40px, 5.6vw, 82px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -.025em;
}
.section-kicker { color: var(--orange); font: 700 11px/1.2 var(--latin); letter-spacing: .22em; }
/* 改訂61: トップのセクション見出しを日本語表記に変更。極太Interのままでは字面が寝るので
   日本語向けにフォント・サイズ・字間を持ち替える（about.htmlの --ja と同じ考え方） */
.section-heading__en--ja { font-family: var(--display); font-size: clamp(30px, 3.8vw, 54px); font-weight: 900; line-height: 1.2; letter-spacing: -.02em; }
.feat-aside__title--ja { font-family: var(--display); font-size: clamp(24px, 2.5vw, 34px); font-weight: 900; line-height: 1.35; letter-spacing: -.02em; }

/* Services: スクロールで開く縦リスト（開閉=.is-open ／ 画面中央の行の着色=.is-active） */
.svc-list { width: min(1040px, 100%); margin-inline: auto; border-top: 1px solid var(--line); }
.svc-item { border-bottom: 1px solid var(--line); transition: background .5s var(--ease), border-color .5s var(--ease); }
.svc-item.is-active { background: var(--navy); border-bottom-color: var(--navy); }
.svc-item__head { margin: 0; }
.svc-toggle {
  display: grid;
  grid-template-columns: 86px 1fr 34px;
  align-items: center;
  gap: 20px;
  width: 100%;
  padding: 34px 28px;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: padding .45s var(--ease);
}
.svc-toggle__no { color: var(--muted); font: 500 30px/1 var(--latin); letter-spacing: -.02em; transition: color .5s var(--ease); }
.svc-toggle__name { display: block; color: var(--navy); font-family: var(--display); font-size: clamp(21px, 2.1vw, 30px); font-weight: 700; letter-spacing: -.02em; transition: color .5s var(--ease); }
.svc-toggle__tag { display: block; margin-top: 8px; color: var(--muted); font-size: 13px; font-weight: 500; transition: color .5s var(--ease); }
.svc-toggle__icon { position: relative; width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 50%; transition: border-color .5s var(--ease), transform .5s var(--ease); }
.svc-toggle__icon::before { content: ""; position: absolute; left: 50%; top: 44%; width: 8px; height: 8px; border-right: 1.5px solid var(--navy); border-bottom: 1.5px solid var(--navy); transform: translate(-50%, -50%) rotate(45deg); transition: border-color .5s var(--ease); }
.svc-toggle:hover .svc-toggle__no { color: var(--orange); }
.svc-toggle:hover .svc-toggle__icon { border-color: var(--orange); }
.svc-item.is-open .svc-toggle { padding-bottom: 8px; }
.svc-item.is-open .svc-toggle__icon { transform: rotate(180deg); }
.svc-item.is-active .svc-toggle__no { color: var(--orange); }
.svc-item.is-active .svc-toggle__name { color: var(--white); }
.svc-item.is-active .svc-toggle__tag { color: #A9B6C6; }
.svc-item.is-active .svc-toggle__icon { border-color: rgba(255,255,255,.4); }
.svc-item.is-active .svc-toggle__icon::before { border-color: var(--white); }
/* 0fr→1fr で高さを滑らかに開く */
.svc-panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .6s var(--ease); }
.svc-item.is-open .svc-panel { grid-template-rows: 1fr; }
.svc-panel__inner { overflow: hidden; }
.svc-panel__grid {
  display: grid;
  grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
  gap: clamp(28px, 4vw, 60px);
  align-items: center;
  padding: 18px 28px 44px;
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .5s var(--ease) .12s, transform .55s var(--ease) .12s;
}
.svc-item.is-open .svc-panel__grid { opacity: 1; transform: none; }
/* 2番目（DXコンサルティング）だけ画像を右に */
.svc-item:nth-child(2) .svc-panel__media { order: 2; }
.svc-item:nth-child(2) .svc-panel__body { order: 1; }
.svc-panel__media { overflow: hidden; border-radius: var(--radius); }
.svc-panel__media img { width: 100%; height: auto; aspect-ratio: 1.62; object-fit: cover; transform: scale(1.06); transition: transform 1.1s var(--ease); }
.svc-item.is-open .svc-panel__media img { transform: scale(1); }
.svc-panel__body p { color: var(--muted); font-size: 14.5px; line-height: 2.1; transition: color .5s var(--ease); }
.svc-item.is-active .svc-panel__body p { color: #C4CEDA; }
.svc-panel__body ul { display: grid; gap: 10px; margin: 24px 0 28px; }
.svc-panel__body li { position: relative; padding-left: 20px; color: var(--navy); font-size: 13px; font-weight: 600; transition: color .5s var(--ease); }
.svc-item.is-active .svc-panel__body li { color: var(--white); }
.svc-panel__body li::before { content: ""; position: absolute; left: 0; top: .78em; width: 10px; height: 1px; background: var(--orange); }
.svc-panel__body .card-link { color: var(--navy); transition: color .5s var(--ease); }
.svc-item.is-active .svc-panel__body .card-link { color: var(--white); }
.svc-panel__body .card-link:hover { color: #8F6E3F; }
.svc-item.is-active .svc-panel__body .card-link:hover { color: #D8BC8A; }

/* Cases: 4-up photo cards */
/* 事例: akariinc.co.jp「注目の記事」型。白カード＋16:9画像＋チップ＋見出し＋右下の丸矢印 */
/* 3枚表示のカルーセル。hoverのリフト(-8px)と影が切れないよう上下にpaddingを足し、同量の負マージンで打ち消す */
.case-carousel { --case-gap: 24px; overflow: hidden; padding: 14px 0 34px; margin-block: -14px -34px; }
.case-track { display: flex; gap: var(--case-gap); transition: transform .7s var(--ease); will-change: transform; }
.case-track.is-jumping { transition: none; }
.case-card { flex: 0 0 calc((100% - var(--case-gap) * 2) / 3); }
.case-card.is-entering { animation: case-rise .56s var(--ease) both; }
@keyframes case-rise { from { transform: translateY(26px); opacity: 0; } to { transform: none; opacity: 1; } }

/* コントロール（中央）と View all（右）を1行に */
.case-foot { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; margin-top: 40px; }
.case-foot > .button { grid-column: 3; justify-self: end; }
.carousel-ctrl { display: flex; justify-content: center; gap: 14px; grid-column: 2; }
.carousel-ctrl__btn {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  color: var(--navy);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 50%;
  cursor: pointer;
  transition: color .25s, background .25s, border-color .25s;
}
.carousel-ctrl__btn:hover { color: var(--white); background: var(--navy); border-color: var(--navy); }
.carousel-ctrl__btn svg { width: 20px; height: 20px; }
.carousel-ctrl__btn .carousel-ctrl__play { display: none; }
.carousel-ctrl__btn[aria-pressed="true"] .carousel-ctrl__pause { display: none; }
.carousel-ctrl__btn[aria-pressed="true"] .carousel-ctrl__play { display: block; }
.case-card { position: relative; display: flex; flex-direction: column; overflow: hidden; background: var(--white); border-radius: var(--radius); transition: transform .4s var(--ease), box-shadow .4s; }
.case-card:hover { transform: translateY(-8px); box-shadow: 0 24px 55px rgba(11,31,58,.12); }
.case-card__image { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: #EDEAE1; }
.case-card__image::before { content: ""; position: absolute; z-index: 2; left: 0; bottom: 0; width: 100%; height: 3px; background: var(--orange); transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease); }
.case-card__image::after { content: ""; position: absolute; z-index: 1; inset: 0; background: linear-gradient(to top, rgba(11,31,58,.4) 0%, rgba(11,31,58,0) 52%); opacity: 0; transition: opacity .4s var(--ease); }
.case-card:hover .case-card__image::before { transform: scaleX(1); }
.case-card:hover .case-card__image::after { opacity: 1; }
.case-card__image img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease), filter .5s var(--ease); }
.case-card:hover .case-card__image img { transform: scale(1.05); filter: saturate(1.15) contrast(1.04); }
.case-card__image--contain img { object-fit: contain; background: var(--white); }
.case-card__body { display: flex; flex-direction: column; flex: 1; padding: 18px 22px 22px; }
.case-card__tags { display: flex; flex-wrap: wrap; gap: 5px; }
.case-card__client { margin-top: 14px; color: var(--muted); font-size: 11.5px; font-weight: 600; letter-spacing: .02em; }
.case-card h3 { margin-top: 6px; color: var(--navy); font-size: 14.5px; font-weight: 700; line-height: 1.7; transition: color .3s; }
.case-card:hover h3 { color: #8F6E3F; }
/* 右下の丸矢印（akari式） */
.card-go { display: grid; place-items: center; width: 30px; height: 30px; margin-top: auto; margin-left: auto; color: var(--white); background: var(--navy); border-radius: 50%; transition: background .3s, transform .3s var(--ease); }
.card-go svg { width: 15px; height: 15px; }
.case-card:hover .card-go { background: var(--orange); transform: translateX(3px); }
.case-card__tags + .case-card__client { }
.section-more { display: flex; justify-content: center; margin-top: 36px; }
.section-more--end { justify-content: flex-end; }

/* CASE STUDY と SERVICE の間は「View all」ボタンの下に何も無く空き過ぎるので、この境界だけ詰める */
.cases { padding-bottom: 96px; }
.services { padding-top: 96px; }

/* Feature: irep.inc型の2カラム（左=見出し固定／右=円リスト＋曲線コネクタ）
   改訂62: 業界ティッカー（帯）を廃止したため、下余白を通常のセクション値に戻す */
.feature { overflow: hidden; }
.feat-layout {
  --aside-w: clamp(240px, 23vw, 316px);
  --arc: clamp(560px, 52vw, 780px);
  display: grid;
  grid-template-columns: var(--aside-w) minmax(0, 1fr);
  gap: clamp(32px, 4vw, 64px);
  align-items: center;
}
/* 左カラム: 画面左端で切れる半月。円の中心をビューポート左端に置き、右半分だけを見せる。
   上下はセクション内に収まるサイズにして、切り口が直線（台形）にならないようにしている。
   NOTE: .feat-aside には data-reveal が付いており .is-visible が clip-path:inset(0) を掛けるため、
   円弧を .feat-aside の擬似要素にすると箱の外へはみ出せない。必ずこの層に置くこと */
.feat-layout::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 50%;
  left: 50%;
  width: var(--arc);
  height: var(--arc);
  margin-left: calc(-50vw - var(--arc) / 2);
  border-radius: 50%;
  background: rgba(11, 31, 58, .055);
  transform: translateY(-50%);
}
/* 広い画面ではコンテナが中央に寄り、左カラムが円弧（ビューポート左端が中心）から外に出てしまう。
   右カラムは共通コンテナに揃えたまま、左カラムだけを画面左に寄せ直す */
.feat-aside { margin-left: min(0px, calc(96px - max(32px, (100vw - 1280px) / 2))); }
/* 改訂64: ウルトラワイド（2560px以上）では「画面左端アンカー」の作法が中央のコンテンツから
   切り離されて見えるため、見出しはコンテナ内に戻し、円弧はコンテナ左端を中心に置き直す
   （見出しが円の右半分に重なる関係は従来と同じ） */
@media (min-width: 2560px) {
  .feat-aside { margin-left: 0; }
  /* 改訂70→71: 半円クリップを試したが、画面の途中に直線の切り口が出て不自然だったため撤回。
     PCの半円は「画面端が切断線」だから成立する。ウルトラワイドでは完全な円として見せる */
  .feat-layout::before { left: 0; margin-left: calc(var(--arc) / -2); }
}
.feat-aside__title { color: var(--navy); font-family: var(--latin); font-size: clamp(30px, 3.1vw, 42px); font-weight: 700; line-height: 1.1; letter-spacing: -.02em; }
.feat-aside .button { margin-top: 26px; }
.feat-main { position: relative; }
/* 3つの円の中心を通る弓なりの弧。座標は main.js が実測して描画する（円の背面） */
.feat-curve { position: absolute; z-index: 0; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.feat-list { position: relative; z-index: 1; display: grid; gap: clamp(56px, 6vw, 92px); }
.feat-row:nth-of-type(2) { margin-left: clamp(0px, 3.2vw, 44px); }
.feat-row { display: grid; grid-template-columns: 158px minmax(0, 1fr); align-items: start; gap: clamp(36px, 4.4vw, 64px); }
.feat-row__icon {
  display: grid;
  place-items: center;
  width: 158px;
  height: 158px;
  border-radius: 50%;
  background: var(--navy);
}
.feat-row__icon img { width: 80px; height: 80px; }
.feat-row__label { color: var(--orange); font: 700 24px/1 var(--latin); letter-spacing: -.01em; }
/* 見出しは読点で折る。span を inline-block にして句の途中で割れないようにする */
.feat-row h3 span,
.contact h2 span { display: inline-block; }
.feat-row h3 { margin-top: 16px; color: var(--navy); font-family: var(--display); font-size: clamp(21px, 1.95vw, 27px); font-weight: 700; line-height: 1.5; letter-spacing: -.02em; }
.feat-row__text > p:last-child { margin-top: 16px; max-width: 46em; color: var(--muted); font-size: 14.5px; line-height: 2.1; }

/* News: photo cards, 4 x 2 */
/* お知らせ: photoruction型。カードの枠と背景をやめ、画像ブロック＋タグ＋日付＋見出しだけで組む */
.news-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 48px 28px; }
.news-card { display: flex; flex-direction: column; }
.news-card__image { position: relative; aspect-ratio: 1920 / 1260; overflow: hidden; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); transition: transform .35s var(--ease), box-shadow .35s, border-color .35s; }
.news-card:hover .news-card__image { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(11,31,58,.13); border-color: transparent; }
.news-card__image::before { content: ""; position: absolute; z-index: 2; left: 0; bottom: 0; width: 100%; height: 3px; background: var(--orange); transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease); }
.news-card__image::after { content: ""; position: absolute; z-index: 1; inset: 0; background: linear-gradient(to top, rgba(11,31,58,.42) 0%, rgba(11,31,58,0) 55%); opacity: 0; transition: opacity .4s var(--ease); }
.news-card:hover .news-card__image::before { transform: scaleX(1); }
.news-card:hover .news-card__image::after { opacity: 1; }
.news-card__image img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.news-card:hover .news-card__image img { transform: scale(1.04); }
.news-card__meta { display: flex; align-items: center; gap: 12px; padding: 18px 0 0; }
.news-card__meta time { color: var(--muted); font: 600 12px/1 var(--latin); letter-spacing: .02em; }
.news-card h3 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; padding: 10px 0 0; color: var(--navy); font-size: 13.5px; font-weight: 700; line-height: 1.8; transition: color .3s; }
.news-card:hover h3 { color: #8F6E3F; }

/* ===== 下層ページ（case / news / seminar / document / contact / privacy） ===== */
/* ページ見出し: トップのセクション見出しと同じ作法（大きな英語＋日本語h1＋リード）。
   改訂16: estie式の墨紺ヒーローは「会社を知るページ」だけの扮装とし、他ページはこの静かな見出しに戻す */
.page-head { padding: calc(var(--header-h) + 68px) 0 8px; }
.crumb ol { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0; padding: 0; list-style: none; color: var(--muted); font-size: 11.5px; }
.crumb li + li::before { content: "/"; margin-right: 10px; color: #B5AE9D; }
.crumb a:hover { color: var(--orange); }
/* 改訂65: 英語大見出し（page-head__en）を廃止し、日本語タイトルをページ主見出しのサイズに */
.page-head__title { margin-top: 30px; color: var(--navy); font-family: var(--display); font-size: clamp(26px, 3vw, 38px); font-weight: 700; letter-spacing: -.01em; }
.page-head__lead { max-width: 46em; margin-top: 16px; color: var(--muted); font-size: 14.5px; line-height: 2.05; }

/* ===== about専用ヒーロー（estie.jp/purpose 型をAICE語彙に翻訳） ===== */
/* estieの構図＝①ブランド色の大面 ②巨大ゴースト英語 ③曲線の下辺。
   ①は鋼青寄りの明るい紺（墨紺ベタだと重すぎたため改訂16で持ち上げた）、②はdata-ghost属性の英語、
   ③はestieの自社モチーフSVGマスクの代わりに、AICEのFEATUREと同じ「巨大な円弧」の語彙で作る。 */
.page-hero {
  /* 改訂17: 面の高さをゴースト文字の大きさから逆算する。
     ゴーストの見えている高さ（Inter大文字のキャップハイト）は約 .727em なので、
     下余白 = キャップハイト + 下端のクリアランス。これで下に無駄な空きが出ない。 */
  /* 改訂61: 文字数の多いゴースト（AI AGENT / TRAINING / SEMINAR）がSPで画面幅を超えて
     見切れていたため、文字数（--ghost-chars）から収まる上限を逆算して min() で頭打ちにする */
  --ghost-chars: 5;
  --ghost-size: min(clamp(104px, 14.5vw, 208px), calc(92vw / (var(--ghost-chars) * .66)));
  /* ゴースト英語の左端をコンテナ（h1・リード文）の左端に合わせるための余白。
     .container の width: min(--container, 100% - 64px) と同じ計算で左オフセットを出す */
  --hero-gutter: max(32px, calc((100% - var(--container)) / 2));
  position: relative;
  padding: calc(var(--header-h) + 40px) 0 calc(var(--ghost-size) * .727 - 9px);
  color: var(--white);
  background: var(--navy-lift);
  clip-path: ellipse(150% 100% at 26% 0%);
  overflow: hidden; /* ゴースト英語のはみ出しを面内に閉じる */
}
.page-hero > .container { position: relative; z-index: 1; }
/* 巨大ゴースト英語: h1には被らせず、リード文の下から始めて面の下辺ギリギリまで（切らない）。
   line-height:1 の箱では大文字の下端が箱の下端より .1365em ほど上に来るので、
   bottom を少しマイナスにして箱の余白を詰めつつ、円弧に触れない位置で止める。 */
.page-hero::before {
  content: attr(data-ghost);
  animation: ghost-in 1.6s var(--ease) .25s both;
  position: absolute;
  left: calc(var(--hero-gutter) - .05em); /* -.05em はグリフ左のサイドベアリング分の視覚補正 */
  bottom: 8px;
  color: rgba(255, 255, 255, .07);
  font: 800 var(--ghost-size)/1 var(--latin);
  letter-spacing: -.045em;
  white-space: nowrap;
  pointer-events: none;
  user-select: none;
}
@keyframes ghost-in { from { opacity: 0; } to { opacity: 1; } }
/* ゴースト文字数（半角スペース含む）。ページを増やしたらここに追記する */
.page-hero[data-ghost="CASE"], .page-hero[data-ghost="NEWS"] { --ghost-chars: 4; }
.page-hero[data-ghost="SEMINAR"] { --ghost-chars: 7; }
.page-hero[data-ghost="AI AGENT"], .page-hero[data-ghost="TRAINING"] { --ghost-chars: 8; }
.page-hero .crumb ol { color: rgba(255, 255, 255, .66); }
.page-hero .crumb li + li::before { color: rgba(255, 255, 255, .36); }
.page-hero__title { margin-top: 18px; color: var(--white); font-family: var(--display); font-size: clamp(31px, 4.4vw, 54px); font-weight: 700; line-height: 1.28; letter-spacing: -.02em; }
.page-hero__lead { max-width: 42em; margin-top: 22px; color: #D3DCE7; font-size: 14.5px; line-height: 2.05; }

/* 絞り込みタブ＋件数（採用サイト positions.html の作法を踏襲し aria-pressed を追加） */
.listing { padding-top: 44px; }
.listing-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 40px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
.filter { display: flex; flex-wrap: wrap; gap: 8px; }
.filter__tab {
  padding: 9px 18px;
  color: var(--muted);
  background: transparent;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font-size: 12.5px;
  font-weight: 700;
  cursor: pointer;
  transition: color .25s, background .25s, border-color .25s;
}
.filter__tab:hover { color: var(--navy); border-color: var(--navy); }
.filter__tab.is-active { color: var(--white); background: var(--navy); border-color: var(--navy); }
.listing-count { color: var(--muted); font: 600 12px/1 var(--latin); letter-spacing: .04em; }
.listing-empty { padding: 60px 0; color: var(--muted); font-size: 14px; text-align: center; }
.listing .case-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.listing .case-card { flex: initial; }
.listing [data-item][hidden] { display: none; }
/* 改訂66: 全件表示時にJSが hidden を立てても .section-more の display:flex が勝って
   「もっと見る」が残っていた。hidden属性を優先させる */
[data-more-wrap][hidden] { display: none; }

/* ===== 記事詳細（case-*.html / news-*.html） ===== */
.article-head { padding: calc(var(--header-h) + 68px) 0 0; }
.article-head__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 30px; }
.article-head__meta time { color: var(--muted); font: 600 12px/1 var(--latin); letter-spacing: .04em; }
.article-head h1 { max-width: 30em; margin-top: 20px; color: var(--navy); font-family: var(--display); font-size: clamp(24px, 2.7vw, 38px); font-weight: 700; line-height: 1.55; letter-spacing: -.015em; }
.article-head__lead { max-width: 44em; margin-top: 26px; color: var(--muted); font-size: 15px; line-height: 2.1; }
.article-head__lead p + p { margin-top: 18px; }
.article-head__lead--wide { max-width: 46em; }
/* 記事のヒーロー画像。比率を固定して cover すると写真が切れるので、元画像の比率のまま出す。
   width属性の presentational hint を打ち消すため height: auto が必須（付けないと縦に潰れる） */
.article-hero { max-width: 880px; margin-top: 40px; overflow: hidden; border-radius: var(--radius); }
.article-hero img { display: block; width: 100%; height: auto; }
.article-hero__caption { max-width: 880px; margin-top: 12px; color: var(--muted); font-size: 11.5px; line-height: 1.8; }

.article-layout { display: grid; grid-template-columns: minmax(0, 1fr) 268px; gap: clamp(40px, 5vw, 76px); align-items: start; padding: 68px 0 0; }
.article-body { max-width: 46em; }
.article-body > * + * { margin-top: 26px; }
/* 固定ヘッダーぶんのオフセット。無いと目次から飛んだとき見出しがヘッダーの裏に隠れる */
.article-body h2, .article-body h3 { scroll-margin-top: calc(var(--header-h) + 28px); }
.article-body h2 { margin-top: 62px; padding-top: 30px; border-top: 1px solid var(--line); color: var(--navy); font-family: var(--display); font-size: clamp(20px, 1.9vw, 25px); font-weight: 700; line-height: 1.6; }
.article-body h3 { margin-top: 42px; color: var(--navy); font-size: 17px; font-weight: 700; line-height: 1.7; }
.article-body p { color: var(--ink); font-size: 15px; line-height: 2.15; }
/* 重要な一文の強調。太字＋真鍮の下敷きで、読み飛ばしても要点が残るようにする */
.article-body strong { font-weight: 700; color: var(--navy); background: linear-gradient(transparent 62%, rgba(176,141,87,.26) 62%); }
.article-body .q { color: var(--navy); font-size: 15px; font-weight: 700; line-height: 2; }
.article-body .who { margin-bottom: -14px; color: var(--orange); font-size: 12.5px; font-weight: 700; letter-spacing: .02em; }
/* blockquote は使わない方針にした（見えにくく、強調は太字に統一）。念のためスタイルは残す */
.article-body blockquote { margin-inline: 0; padding-left: 22px; border-left: 2px solid var(--line); }
.article-body figure { margin-inline: 0; }
/* 記事本文の箇条書き（改訂26: 公開元の <ul>/<ol> をそのまま起こすために新設）。
   日程・会場・登壇者などの列挙が、段落に混ざらず読めるようにする */
.article-list { margin: 22px 0 0; padding-left: 1.35em; }
.article-list li { color: var(--ink); font-size: 15px; line-height: 2.1; }
.article-list li + li { margin-top: 6px; }
.article-list li::marker { color: var(--orange); }
.article-body .spec { margin-top: 24px; }
.article-body .spec th { width: 30%; }
/* 3列以上の表（展示会一覧・比較表）は項目名カラムの固定幅をやめ、狭い画面では横スクロールさせる */
.article-body .spec--cols th { width: auto; }
.table-scroll { margin-top: 24px; overflow-x: auto; }
.table-scroll .spec { margin-top: 0; min-width: 640px; }
.article-body figure img { display: block; width: 100%; height: auto; border-radius: var(--radius); }
/* 公開元の本文に入っているロゴ・バナー（本文幅より小さい素材）は引き伸ばさず原寸で置く */
.article-body figure.figure--small img { width: auto; max-width: 100%; }
/* 本文中の顔写真は本文幅いっぱいにすると顔が大きすぎる。経営陣（340px）に近い寸法に抑える */
.article-body figure.figure--portrait img { max-width: 320px; }
/* 登壇者・発表者プロフィールの写真は本文写真の半分の幅に（改訂55） */
.article-body figure.figure--speaker img { width: 50%; max-width: 50%; }
.article-body figcaption { margin-top: 10px; color: var(--muted); font-size: 11.5px; line-height: 1.8; }
.article-body .note { padding: 20px 22px; background: var(--paper-deep); border-radius: var(--radius); font-size: 13.5px; line-height: 2; }

.article-toc { position: sticky; top: calc(var(--header-h) + 28px); padding: 24px; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); }
.article-toc__title { color: var(--navy); font: 700 12.5px/1 var(--sans); letter-spacing: .12em; }
.article-toc ol { margin: 18px 0 0; padding: 0; list-style: none; counter-reset: toc; }
.article-toc li { counter-increment: toc; }
.article-toc li + li { margin-top: 12px; }
.article-toc a { display: flex; gap: 10px; color: var(--muted); font-size: 12.5px; line-height: 1.75; }
.article-toc a::before { content: counter(toc, decimal-leading-zero); color: var(--orange); font: 700 11px/1.6 var(--latin); }
.article-toc a:hover { color: var(--navy); }

/* 規約系ページの箇条書き（グローバルで list-style:none を当てているので明示的に戻す） */
.article-body ul, .article-body ol { margin-left: 0; padding-left: 1.4em; }
.article-body ul { list-style: disc; }
.article-body ol { list-style: decimal; }
.article-body :is(ul, ol) li { color: var(--ink); font-size: 14.5px; line-height: 2.05; }
.article-body :is(ul, ol) li + li { margin-top: 8px; }
.article-body :is(ul, ol) li::marker { color: var(--orange); }
/* 規約ページの最終行。記事下ナビが無いので、CTAとの余白はここで確保する（.article-foot と同じ96px） */
.legal-meta { display: flex; flex-wrap: wrap; gap: 8px 26px; margin-top: 40px; margin-bottom: 96px; padding-top: 22px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12.5px; }

.spec { width: 100%; margin-top: 26px; border-collapse: collapse; font-size: 13.5px; }
.spec th, .spec td { padding: 14px 16px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; line-height: 1.9; }
.spec th { width: 34%; color: var(--navy); font-weight: 700; background: var(--white); }
.spec td { color: var(--muted); }

/* 記事下ナビ。区切り線は本文h2の罫と紛れるので置かず、余白で切る。CTAとの間も空ける */
.article-foot { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 80px; margin-bottom: 96px; }

/* ===== フォーム（document.html / contact.html） ===== */
.form-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: clamp(40px, 5vw, 72px); align-items: start; padding-top: 52px; }
.form { display: grid; gap: 22px; }
.form[hidden] { display: none; }
.field { display: grid; gap: 8px; }
.field > label { color: var(--navy); font-size: 13px; font-weight: 700; }
.field .req { margin-left: 8px; color: var(--orange); font-size: 11px; font-weight: 700; }
.field .opt { margin-left: 8px; color: var(--muted); font-size: 11px; font-weight: 700; }
.field input[type="text"], .field input[type="email"], .field input[type="tel"], .field select, .field textarea {
  width: 100%;
  padding: 13px 14px;
  color: var(--ink);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font-family: inherit;
  font-size: 14px;
  transition: border-color .25s, box-shadow .25s;
}
.field textarea { min-height: 168px; resize: vertical; line-height: 1.9; }
.field :is(input, select, textarea):focus { border-color: var(--navy); box-shadow: 0 0 0 3px rgba(11,31,58,.08); outline: none; }
.field__hint { color: var(--muted); font-size: 11.5px; line-height: 1.8; }
.check-group { display: grid; gap: 10px; }
.check { display: flex; align-items: flex-start; gap: 10px; font-size: 13.5px; line-height: 1.8; }
.check input { flex: 0 0 auto; width: 17px; height: 17px; margin-top: 3px; accent-color: var(--navy); }
.form__submit { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-top: 8px; }
.form__note { padding: 18px 20px; background: var(--paper-deep); border-radius: var(--radius); color: var(--muted); font-size: 12.5px; line-height: 1.9; }
.form__message { margin: 0; padding: 18px 20px; border-radius: var(--radius); font-size: 14px; line-height: 1.8; }
.form__message--success { background: var(--paper-deep); color: var(--navy); }
.form__message--error { background: #fff1ef; color: #9b2c20; }
.form-aside { display: grid; gap: 18px; padding: 26px; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); }
.form-aside h2 { color: var(--navy); font-size: 15px; font-weight: 700; }
.form-aside p { color: var(--muted); font-size: 13px; line-height: 1.95; }
.form-aside dl { display: grid; gap: 14px; margin: 0; }
.form-aside dt { color: var(--navy); font: 700 11px/1 var(--latin); letter-spacing: .14em; }
.form-aside dd { margin: 6px 0 0; color: var(--muted); font-size: 13px; line-height: 1.9; }

/* ===== 私たちについて（about.html） ===== */
/* ===== about シーン設計 =====
   改訂15: ヒーロー（page-head）が墨紺になったため、直後のMISSIONが墨紺だと暗面が2連続する。
   暗転をヒーロー／LEADERSHIP／CTAの3回に組み替え、章の面色を
   墨紺ヒーロー → 和紙 MISSION → 白 MESSAGE → 和紙 FEATURE → 墨紺 LEADERSHIP → 和紙 COMPANY → 墨紺CTA とする。
   （VALUE＝行動指針は採用サイトの必須項目でコーポレートには不要のため改訂15で削除） */

/* 改訂26: ミッション/ビジョン・特徴の説明文は、意味の区切りで改行を打って読ませる。
   横幅を揃えるためではなく文節で切るので、行末は不揃いになるのが正しい。
   ただし狭い画面では固定改行がぶら下がりを生むので、SPでは <br> を無効化して自然折返しに戻す。 */
.pp-row__body > p, .sc-feature__lead { max-width: none; }
@media (max-width: 700px) {
  .pp-row__body > p br, .sc-feature__lead br { display: none; }
}
/* 01 MISSION & VISION（改訂17）
   背景は分断せず和紙の一続きの面に。円弧の背景装飾とウォーターマークは「ダサい」との指摘で撤去し、
   意味不明だった「10x」の図像も廃止。装飾ではなく、罫と縦組みラベルによる"組み"で見せる。
   2つを同じ型のブロックとして対にすることで、ミッションとビジョンの並びが読み取れる。 */
.sc-purpose { background: var(--paper); padding: clamp(84px, 9vw, 124px) 0; }
.pp-row { text-align: center; } /* 改訂19: ミッション・ビジョンは中央揃え（宣言としての章なので左揃えより据わる） */
.pp-row + .pp-row { margin-top: clamp(56px, 7vw, 92px); padding-top: clamp(44px, 5vw, 64px); border-top: 1px solid var(--line); }
.pp-row__body { margin-top: clamp(24px, 3vw, 36px); }
.pp-row__body h3 { color: var(--navy); font-family: var(--serif); font-size: clamp(31px, 4.6vw, 58px); font-weight: 600; line-height: 1.42; letter-spacing: -.01em; }
.pp-row + .pp-row .pp-row__body h3 { font-size: clamp(25px, 3.2vw, 42px); }
.pp-row__body h3 .x10,
.pp-row__body h3 .accent { color: var(--orange); }
.pp-row__body h3 .accent { font-style: normal; }
.pp-row__body > p { max-width: 40em; margin: clamp(22px, 2.4vw, 30px) auto 0; color: var(--ink); font-size: 15px; line-height: 2.15; }
.pp-row .about-heading { scroll-margin-top: calc(var(--header-h) + 28px); }
.sc-purpose[id], .pp-row[id] { scroll-margin-top: calc(var(--header-h) + 20px); }

/* 02 MESSAGE: 額装写真（真鍮オフセット＋skew帯）＋プルクオート */
.msg-photo { position: relative; }
.msg-photo::before { content: ""; position: absolute; inset: 12px -12px -12px 12px; background: var(--orange); border-radius: var(--radius); }
/* 改訂19: 斜めの帯は写真の画角からはみ出して収まりが悪かったため廃止。額装（::before）だけを残す */
.msg-photo img { position: relative; z-index: 1; display: block; width: 100%; height: auto; border-radius: var(--radius); }
.pull-quote { max-width: 22em; margin: 0 0 34px; padding-left: 20px; border-left: 2px solid var(--gold); color: var(--navy); font-family: var(--serif); font-size: clamp(20px, 2.2vw, 26px); font-weight: 600; line-height: 1.85; }

/* 03 FEATURE（改訂21）— 画面録画で指定された「sticky積み重ねカード」
   参考の挙動（recruit.triorb.co.jp の録画を解析）:
   ・各カードが画面上部に貼り付いて（position: sticky）順に積み重なる
   ・次のカードが上へスライドして前のカードに覆いかぶさる
   ・覆われたカードは灰色に沈み、わずかに縮んで奥へ退く（上端だけがカードの束として残る）
   貼り付き位置を1枚ごとに14pxずつ下げることで、前のカードの上端が帯として見え続ける。 */
.sc-feature { background: var(--paper); padding: clamp(90px, 10vw, 130px) 0; }
.sc-feature .section-kicker + .about-heading,
.about-section .section-kicker + .about-heading,
.pp-row .section-kicker + .about-heading { margin-top: 16px; }
.sc-feature__lead { max-width: 52em; margin-top: 26px; color: var(--ink); font-size: 15px; line-height: 2.15; }
.feat-stack { margin-top: clamp(40px, 5vw, 64px); }
.feat-card {
  position: sticky;
  top: calc(var(--header-h) + 26px + var(--i) * 14px);
  display: grid;
  grid-template-columns: minmax(120px, .5fr) minmax(0, 2fr);
  gap: clamp(20px, 3.4vw, 52px);
  align-items: start;
  min-height: clamp(190px, 21vw, 258px);
  padding: clamp(32px, 3.8vw, 48px) clamp(24px, 3.2vw, 44px);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  /* 覆われ具合（0→1）はJSが --cover に入れる。奥へ退く動きと灰色化に使う */
  --cover: 0;
  transform: scale(calc(1 - .045 * var(--cover)));
  transform-origin: 50% 0;
  transition: transform .25s linear;
  overflow: hidden;
}
.feat-card + .feat-card { margin-top: clamp(26px, 3vw, 40px); }
/* 覆われたカードを灰色に沈ませる（和紙をかぶせるので、紙面の奥に退いたように見える） */
.feat-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--paper-deep);
  opacity: calc(.93 * var(--cover));
  pointer-events: none;
  transition: opacity .25s linear;
}
.feat-card__no {
  margin: 0;
  color: rgba(176,141,87,.46);
  -webkit-text-stroke: 1.5px var(--orange);
  font: 800 clamp(64px, 7vw, 104px)/0.9 var(--latin);
  letter-spacing: -.04em;
  user-select: none;
}
.feat-card--steel .feat-card__no { color: rgba(53,80,107,.42); -webkit-text-stroke-color: var(--cyan); }
.feat-card--navy .feat-card__no { color: rgba(11,31,58,.62); -webkit-text-stroke-color: var(--navy); }
.feat-card__body h3 { color: var(--navy); font-family: var(--display); font-size: clamp(20px, 2.1vw, 26px); font-weight: 700; line-height: 1.6; }
.feat-card__body > p { max-width: 44em; margin-top: 16px; color: var(--muted); font-size: 14.5px; line-height: 2.1; }
/* 改訂44: 重要箇所の強調。真鍮を薄く敷いた蛍光ペンの見え方にして、墨色の本文の中で1段浮かせる */
.feat-card__body > p strong {
  color: var(--navy);
  font-weight: 700;
  background: linear-gradient(transparent 58%, rgba(176, 141, 87, .3) 58%);
}

/* 04 LEADERSHIP: 白の明面（改訂16: 暗面＋モノクロ写真だと全体が暗く沈むため明面に戻した）。
   写真は控えめなモノクロ（.35）から始め、ホバーで完全にカラー＋1.03倍。
   完全なグレースケールにしないので、触る前から人物の色味が残る。 */

/* 改訂58: 写真の外枠は会社紹介資料の実出力に合わせ、墨紺1pxの1本のみ（残像枠は廃止） */
.leader-card .leader-card__frame { overflow: hidden; border-radius: 0; }
.leader-card__ph { display: block; overflow: hidden; border: 1px solid var(--navy); }
.leader-card img { filter: contrast(1.07) saturate(1.05); transform: scale(1); transition: filter .6s var(--ease), transform .6s var(--ease); }
.leader-card:hover img { filter: contrast(1.12) saturate(1.08); transform: scale(1.04); }
.leader-card__latin { margin-top: 5px; color: var(--orange); font: 600 12px/1 var(--latin); letter-spacing: .14em; }

/* 06 COMPANY: 表の上辺に墨紺の罫 */
/* 改訂19: 右端にも罫を入れて枠の閉じた表にする */
.spec--about { border: 1px solid var(--line); border-top: 2px solid var(--navy); }
.spec--about th, .spec--about td { border-right: 1px solid var(--line); }
.spec--about th:last-child, .spec--about td:last-child { border-right: 0; }
.spec--about tr:last-child th, .spec--about tr:last-child td { border-bottom: 0; }
/* 面色（章ごとのシーン。about-section の既定は和紙＝body背景を透かす） */
.about-section--white { background: var(--white); }

/* 代表メッセージ: 左=縦写真(sticky)・右=本文 */
.message-layout { display: grid; grid-template-columns: minmax(260px, 380px) minmax(0, 1fr); gap: clamp(36px, 5vw, 72px); align-items: start; margin-top: 44px; }
.message-layout__photo { position: sticky; top: calc(var(--header-h) + 28px); }
.message-layout__photo img { display: block; width: 100%; height: auto; border-radius: var(--radius); }
.message-body > p { max-width: 40em; color: var(--ink); font-size: 15px; line-height: 2.2; }
.message-body > p + p { margin-top: 26px; }
.message-body strong { font-weight: 700; color: var(--navy); background: linear-gradient(transparent 62%, rgba(176,141,87,.26) 62%); }
.message-sign { margin-top: 40px; }
.message-sign__role { color: var(--muted); font-size: 12px; }
.message-sign__name { margin-top: 4px; color: var(--navy); font-family: var(--display); font-size: 21px; font-weight: 700; }
.message-sign__latin { margin-top: 3px; color: var(--muted); font: 500 12px/1 var(--latin); letter-spacing: .08em; }

/* 経営陣（改訂16: max-width 880pxで2枚が左半分に固まっていたため、コンテナ全幅の2列に。
   写真は上・テキストは下の縦組みのまま、写真だけ幅に上限を設けて巨大化を防ぐ。
   横組み（写真左・テキスト右）も試したが、写真が小さくなり一言の改行も窮屈になったため戻した） */
.leader-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); margin-top: 44px; }
.leader-card__frame { max-width: 340px; }
.leader-card__body { margin-top: 18px; }
.leader-card__body > :first-child { margin-top: 0; }
.leader-card img { display: block; width: 100%; height: auto; }
.leader-card__role { margin-top: 18px; color: var(--muted); font-size: 11.5px; font-weight: 600; letter-spacing: .04em; }
.leader-card__name { margin-top: 6px; color: var(--navy); font-family: var(--display); font-size: clamp(23px, 2.2vw, 28px); font-weight: 700; letter-spacing: -.01em; }
.leader-card__copy { margin-top: 14px; padding-left: 14px; border-left: 2px solid var(--orange); color: var(--navy); font-family: var(--serif); font-size: 14.5px; font-weight: 600; line-height: 1.9; }
.leader-card__bio { margin-top: 14px; color: var(--muted); font-size: 12.5px; line-height: 2; }

/* アクセス */
.access-list { margin: 26px 0 0; padding: 0; list-style: none; }
.access-list li { display: flex; gap: 12px; color: var(--ink); font-size: 14px; line-height: 2; }
.access-list li + li { margin-top: 6px; }
.access-list li::before { content: ""; flex: 0 0 auto; width: 8px; height: 8px; margin-top: 11px; background: var(--orange); border-radius: 50%; }
/* 地図の下余白は章（.about-section）の padding-bottom で確保する（改訂16。二重取りで空きすぎていた） */
.access-map { margin: 26px 0 0; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.access-map iframe { display: block; width: 100%; height: 380px; border: 0; }

/* aboutのセクション見出し（page-headより一段小さい章見出し） */
.about-heading { color: var(--navy); font: 800 clamp(30px, 3.6vw, 52px)/1 var(--latin); letter-spacing: -.02em; }
/* 改訂19: aboutの章見出しは日本語に変更。英語用の極太Interのままでは字面が寝るので、
   日本語向けにフォント・字間・行送りを持ち替える（seminar.htmlの英語見出しには影響させない） */
.about-heading--ja { font: 700 clamp(25px, 2.8vw, 37px)/1.45 var(--serif); letter-spacing: .03em; }
.about-heading + .about-heading-ja { margin-top: 12px; color: var(--muted); font-size: 13.5px; font-weight: 600; }
/* 改訂16: 上余白だけ持たせて `:last-of-type` にしか下余白がなく、
   代表メッセージ・経営陣の下が次の章に詰まっていた。全章に下余白を持たせる */
.about-section { padding: clamp(76px, 8vw, 116px) 0; }
.about-section h2, .about-section h3 { scroll-margin-top: calc(var(--header-h) + 28px); }
.about-section[id] { scroll-margin-top: calc(var(--header-h) + 20px); }

/* ===== セミナー・ウェビナー（seminar.html） ===== */
/* 開催予定0件のパネル（在庫ゼロでも回収先を置く） */
.upcoming-empty { display: grid; gap: 18px; max-width: 880px; margin-top: 40px; padding: clamp(30px, 4vw, 48px); background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); }
.upcoming-empty p { color: var(--muted); font-size: 14px; line-height: 2.05; }
.upcoming-empty__actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* 過去のセミナー: 2列の厚いカード */
/* セミナー実績（改訂25）— sairu.co.jp/event/ の「セミナーレポート」型の縦リスト。
   実測: リストは display:block で縦積み、各行は padding 24px 0 ＋ 上罫1px #E6E6E6、
   サムネ238×125px、右に 日付14px/500 → タイトル20px/700。
   カードを並べるより情報密度が高く、実績が「積み上がって見える」ため一覧に向く。 */
.seminar-list { margin-top: 36px; border-bottom: 1px solid var(--line); }
.seminar-row {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: clamp(18px, 2.2vw, 28px);
  align-items: start;
  padding: 24px 0;
  border-top: 1px solid var(--line);
}
.seminar-row__thumb { overflow: hidden; aspect-ratio: 3 / 2; background: var(--paper-deep); border-radius: var(--radius); }
.seminar-row__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; transform: scale(1); transition: transform .5s var(--ease); }
.seminar-row:hover .seminar-row__thumb img { transform: scale(1.04); }
.seminar-row__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.seminar-row__meta time { color: var(--muted); font: 600 12.5px/1 var(--latin); letter-spacing: .02em; }
.seminar-row h3 { margin-top: 10px; color: var(--navy); font-size: 17px; font-weight: 700; line-height: 1.7; }
.seminar-row__detail { margin-top: 8px; color: var(--muted); font-size: 12.5px; line-height: 1.9; }
.seminar-row__link { margin-top: 10px; }
.seminar-row__link a { color: var(--navy); font-size: 12.5px; font-weight: 700; border-bottom: 1px solid rgba(11,31,58,.28); padding-bottom: 2px; transition: color .25s, border-color .25s; }
.seminar-row__link a:hover { color: #8F6E3F; border-color: var(--orange); }

/* Contact and footer */
.contact { color: var(--white); background: var(--navy-lift); }
/* CTA: 見出し→本文→ボタンの縦積み・センター（採用サイトと同じ作法） */
.contact { padding-block: clamp(88px, 9vw, 118px); } /* 改訂23: 帯が厚く間延びしていたので詰めた */
/* 面はフラット1色。装飾は見出し上のゴールドの罫1本だけに絞る */
.contact__inner::before {
  content: "";
  display: block;
  width: 48px;
  height: 2px;
  margin: 0 auto 40px;
  background: #C9A96B;
}
.contact__inner { position: relative; z-index: 2; text-align: center; }
.contact h2 { color: var(--white); font-family: var(--serif); font-size: clamp(30px, 3.4vw, 52px); font-weight: 600; line-height: 1.32; letter-spacing: -.015em; }
.contact__inner > p { max-width: 640px; margin: 22px auto 0; color: #bac8d8; font-size: 15px; line-height: 2.1; }
.contact__buttons { display: flex; justify-content: center; gap: 12px; margin-top: 40px; }
.footer { padding: 84px 0 30px; color: #c3cbd7; background: var(--navy); }
.footer__top { display: grid; grid-template-columns: 1fr 2fr; gap: 100px; }
.brand--footer { display: block; width: 126px; aspect-ratio: 490 / 258; }
.brand--footer img { width: 100%; height: 100%; object-fit: contain; object-position: left center; }
.footer__brand > p { margin-top: 18px; font-family: var(--serif); }
/* 改訂23: SNSはテキストリンクからアイコン表示に（neoai.jp/company の作法。
   アイコンのみ・flexで横並び・枠は細く。将来SNSが増えても並べるだけで済む） */
.footer__sns { display: flex; align-items: center; gap: 10px; margin-top: 28px; }
.footer__sns a { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border: 1px solid rgba(255,255,255,.22); border-radius: 50%; opacity: .82; transition: opacity .25s, border-color .25s, background .25s; }
.footer__sns a:hover { opacity: 1; border-color: rgba(255,255,255,.5); background: rgba(255,255,255,.06); }
.footer__sns img { display: block; width: auto; height: 15px; }
.footer__links { display: grid; grid-template-columns: repeat(5, 1fr); gap: 30px 24px; }
.footer__links h3 { margin-bottom: 18px; color: var(--white); font-size: 12px; }
.footer__links a { display: block; margin-top: 10px; font-size: 11px; }
.footer__links a:hover { color: var(--white); }
.footer__address { margin-top: 72px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.13); font-size: 11px; }
.footer__bottom { display: flex; justify-content: space-between; margin-top: 23px; font-size: 10px; }

/* Custom cursor */
/* summary を入れ忘れると、FAQの上だけOSの指カーソルとカスタムカーソルが二重に出る。
   改訂62: フォーム部品（label・select・checkbox等）の上でもOSの矢印カーソルが二重に出ていたため追加。
   テキスト入力だけはIビームを残す（入力位置が分からなくなるため） */
body.has-cursor, body.has-cursor a, body.has-cursor button, body.has-cursor summary,
body.has-cursor label, body.has-cursor select,
body.has-cursor input[type="checkbox"], body.has-cursor input[type="radio"] { cursor: none; }
.cursor {
  position: fixed;
  z-index: 9000;
  top: -7px;
  left: -7px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--orange);
  box-shadow: 0 0 0 1px rgba(255,255,255,.55), 0 2px 10px rgba(11,31,58,.28);
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s, width .22s var(--ease), height .22s var(--ease), top .22s var(--ease), left .22s var(--ease), background .22s, box-shadow .22s;
}
.cursor.is-visible { opacity: 1; }
.cursor.is-hover {
  top: -22px;
  left: -22px;
  width: 44px;
  height: 44px;
  background: rgba(176,141,87,.14);
  border: 1.5px solid var(--orange);
  box-shadow: 0 0 0 1px rgba(255,255,255,.3);
}

@media (max-width: 1180px) {
  .header__nav { gap: 18px; }
  .header__actions .button--ghost { display: none; }
  .case-card { flex-basis: calc((100% - var(--case-gap)) / 2); }
  .listing .case-grid { grid-template-columns: repeat(2, 1fr); }
  /* minmax(0,1fr)にしないと、幅640px固定の表（.table-scroll .spec）が列のmin-contentを
     押し広げ、ページ全体が横に伸びてSPレスポンシブが壊れる（建設DX詳細で実害） */
  .article-layout, .form-layout { grid-template-columns: minmax(0, 1fr); }
  .message-layout { grid-template-columns: 1fr; }
  .message-layout__photo { position: relative; top: auto; max-width: 420px; } /* sticky解除。staticにすると.msg-photo::beforeの額装が基準を失いセクション全体に広がる */
  .leader-grid { grid-template-columns: 1fr; }
  .seminar-row { grid-template-columns: 116px minmax(0, 1fr); gap: 14px; padding: 20px 0; }
  .seminar-row h3 { font-size: 15px; margin-top: 8px; }
  .feat-card { grid-template-columns: 1fr; gap: 6px; top: calc(var(--header-h) + 16px + var(--i) * 10px); }
  .feat-card__no { font-size: 62px; }
  .leader-card__frame { max-width: 320px; }
  /* estie式ヒーロー（about専用）: 狭い画面ではゴーストが画面幅に対して相対的に広くなり、
     浅い楕円だと右端で切られる。楕円を大きく（=下辺をフラット寄りに）してゴーストを守る。
     余白とフォントは --ghost-size から自動で決まるので個別指定しない */
  .page-hero { --ghost-size: min(clamp(84px, 24vw, 132px), calc(92vw / (var(--ghost-chars) * .66))); clip-path: ellipse(260% 100% at 30% 0%); }
  .article-toc { position: static; order: -1; }
  .news-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 960px) {
  :root { --header-h: 68px; }
  .container { width: min(100% - 40px, var(--container)); }
  .page-hero { --hero-gutter: 20px; }
  .section { padding: 100px 0; }
  .header__inner { width: calc(100% - 32px); }
  .header__nav, .header__actions { display: none; }
  .nav-chip--sp { display: inline-flex; align-items: center; margin-left: auto; padding: 8px 12px; font-size: 11.5px; }
  .menu-button { display: block; margin-left: 10px; }
  /* 改訂62: 人物は各パネル中央に固定されるため、タブレット以下は縦長比率でヒーローを使う */
  .ht-stage { min-height: 480px; height: min(calc(100svh - var(--header-h)), calc(100vw / 1.12)); }
  .svc-toggle { grid-template-columns: 62px 1fr 30px; padding: 28px 18px; gap: 16px; }
  .svc-toggle__no { font-size: 24px; }
  .svc-panel__grid { grid-template-columns: 1fr; padding: 14px 18px 36px; gap: 24px; }
  .feat-layout { grid-template-columns: 1fr; gap: 40px; }
  .feat-layout::before { display: none; }
  .feat-row { grid-template-columns: 120px minmax(0, 1fr); gap: 32px; }
  .feat-row:nth-of-type(2) { margin-left: 0; }
  .feat-curve { display: none; }
  .footer__links { grid-template-columns: repeat(3, 1fr); }
  .feat-row__icon { width: 120px; height: 120px; }
  .feat-row__icon img { width: 62px; height: 62px; }
  /* SPではドロップダウンを畳まず、モバイルメニュー側で展開表示する */
  .nav-menu { display: none; }
  .news-grid { grid-template-columns: repeat(2, 1fr); }
  .footer__top { grid-template-columns: 1fr; gap: 60px; }
}

@media (max-width: 700px) {
  .container { width: calc(100% - 32px); }
  .page-hero { --hero-gutter: 16px; }
  .section { padding: 78px 0; }
  .ht-stage { height: min(calc(100svh - var(--header-h)), calc(100vw * 1.28)); min-height: 0; }
  .ht-frame { inset: 12px; }
  .ht-copy { bottom: 30px; width: 94%; }
  .ht-copy h1 { font-size: clamp(23px, 6.9vw, 32px); }
  .ht-sub { font-size: 11px; }
  .ht-sub br { display: none; }
    [data-reveal="left"], [data-reveal="right"] { transform: translateY(34px); }
  .section-heading { margin-bottom: 34px; }
  .section-heading__en { font-size: clamp(34px, 11.5vw, 48px); }
  .section-heading__en--ja { font-size: clamp(27px, 8.5vw, 38px); }
  .contact h2 { font-size: 28px; }
  .listing .case-grid { grid-template-columns: 1fr; }
  .listing-bar { justify-content: flex-start; }
  .page-head__lead { font-size: 13.5px; }
  .case-carousel { --case-gap: 16px; }
  .case-card { flex-basis: 100%; }
  .case-foot { grid-template-columns: 1fr; justify-items: center; gap: 24px; }
  .case-foot > .button { grid-column: 1; justify-self: center; }
  .carousel-ctrl { grid-column: 1; }
  .case-card__body > p { min-height: 0; }
  .section-more { margin-top: 32px; }
  .svc-toggle { grid-template-columns: 1fr 28px; grid-template-areas: "no icon" "label label"; padding: 24px 14px; gap: 10px 12px; }
  .svc-toggle__no { grid-area: no; font-size: 20px; }
  .svc-toggle__icon { grid-area: icon; width: 28px; height: 28px; }
  .svc-toggle__label { grid-area: label; }
  .svc-toggle__tag { margin-top: 6px; font-size: 11.5px; }
  .svc-panel__grid { padding: 8px 14px 30px; }
  .svc-panel__body p { font-size: 13px; }
  .mission { padding: 76px 0 68px; }
  .mission__lead { margin-top: 26px; padding-top: 26px; font-size: 17px; line-height: 1.9; }
  .mission__lead .mission__br { display: none; }
  .mission__body p { font-size: 13.5px; line-height: 2.05; }
  .brand { width: 68px; }
  .brand--footer { width: 104px; }
  .feat-row { grid-template-columns: 1fr; gap: 22px; }
  .feat-row__icon { width: 96px; height: 96px; }
  .feat-row__icon img { width: 50px; height: 50px; }
  .feat-row h3 { font-size: 21px; }
  .feat-row__text > p:last-child { font-size: 13.5px; }
  .svc-item:nth-child(2) .svc-panel__media { order: 0; }
  .svc-item:nth-child(2) .svc-panel__body { order: 0; }
  .news-grid { grid-template-columns: 1fr; }
  /* 改訂61: SPだけ1.9に潰すとサムネ内の文字が上下で切れるため、PCと同じ比率で見せる */
  .contact__buttons { display: grid; justify-content: stretch; max-width: 340px; margin-inline: auto; }
  .footer { padding-top: 65px; }
  .footer__links { grid-template-columns: 1fr 1fr; gap: 42px 25px; }
  .footer__address { line-height: 1.8; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  [data-reveal] { opacity: 1; transform: none; clip-path: none; filter: none; }
  [data-reveal="mask"] img { transform: none; }
  .ht-panel img { animation: none !important; }
  .ht-sweep { animation: none !important; }
  .ht-copy h1 .char { opacity: 1; filter: none; }
  .ht-copy { transform: translateX(-50%) !important; opacity: 1 !important; filter: none !important; }
  .svc-panel__grid { opacity: 1; transform: none; }
  .svc-panel__media img { transform: none; }
  .cursor { display: none; }
}

/* ===== 事業内容ページ（service-ai 等）専用コンポーネント（改訂37） =====
   課題＝見出し＋吹き出し（説明文）＋透過イラスト（トモラクProblems型）
   解決＝見出し＋白カードのイラスト（トモラクSolutions型。提供するものは廃止）
   Feature＝墨紺の暗面に番号つきの縦リスト／Flow＝5ステップの横トラック */

/* 章の頭 */
.svc-head { margin-bottom: clamp(38px, 4.6vw, 60px); }
.svc-head .about-heading { margin-top: 16px; }
.svc-head__lead { max-width: 50em; margin-top: 20px; color: var(--ink); font-size: 14.5px; line-height: 2.1; }
.svc-head--center { text-align: center; }
.svc-head--center .svc-head__lead { margin-inline: auto; }

/* --- 課題 --- */
.worry-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 3vw, 48px); }
.worry-item { text-align: center; }
.worry-item h3 { margin: 0; color: var(--navy); font-size: clamp(16px, 1.5vw, 18.5px); font-weight: 700; line-height: 1.7; }
.worry-item__bubble {
  position: relative;
  margin-top: 16px;
  padding: 22px 20px;
  background: var(--white);
  border: 1px solid rgba(11, 31, 58, .28);   /* 紙地では --line が薄すぎて輪郭が消えるため寒色の細枠に（改訂46） */
  border-radius: 14px;   /* 吹き出しだけは角丸を許容（角丸2pxの例外・改訂37で判断） */
  text-align: left;
}
.worry-item__bubble p { margin: 0; color: var(--muted); font-size: 13px; line-height: 2; }
/* 吹き出しの尾: 3つの円が右下へ小さくなる */
.worry-item__tail { position: relative; height: 32px; }
.worry-item__tail span { position: absolute; display: block; background: var(--white); border: 1px solid rgba(11, 31, 58, .32); border-radius: 50%; }
.worry-item__tail span:nth-child(1) { width: 11px; height: 11px; left: calc(50% + 44px); top: 3px; }
.worry-item__tail span:nth-child(2) { width: 7px; height: 7px; left: calc(50% + 58px); top: 15px; }
.worry-item__tail span:nth-child(3) { width: 5px; height: 5px; left: calc(50% + 68px); top: 25px; }
.worry-item__art { display: grid; place-items: center; }
.worry-item__art img { width: min(100%, 210px); height: auto; }

/* --- 解決（できること）改訂38: 見出し → 説明 → イラストの順。
   課題は「白い吹き出し」、解決は「紙色のパネル」で対をつくり、面色で役割を分ける。 --- */
.solve-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(18px, 2.4vw, 34px); align-items: stretch; }
.solve-item {
  display: flex;
  flex-direction: column;
  /* 改訂40: 正方形に近かったカードを縦長の長方形にする（横幅の約1.25倍） */
  min-height: clamp(440px, 35vw, 520px);
  padding: clamp(26px, 2.8vw, 36px) clamp(20px, 2.2vw, 30px) clamp(18px, 2vw, 26px);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;   /* 課題の吹き出しと同じ角丸で対をつくる */
  text-align: center;
}
.solve-item h3 {
  margin: 0;
  padding-bottom: 16px;
  color: var(--navy);
  font-family: var(--display);
  font-size: clamp(16px, 1.55vw, 19px);
  font-weight: 700;
  line-height: 1.7;
}
/* 見出しと説明のあいだに真鍮の短い罫を1本だけ入れて、答えの側であることを示す */
.solve-item h3::after { content: ""; display: block; width: 26px; height: 2px; margin: 16px auto 0; background: var(--orange); }
.solve-item__text { flex: 0 0 auto; margin: 0; color: var(--muted); font-size: 13px; line-height: 2.05; text-align: left; }
/* 縦長カードの余白はイラスト側に持たせ、上下中央に置く（下端に貼り付くと文とイラストの間が空きすぎる） */
.solve-item__art { flex: 1 1 auto; margin-top: clamp(18px, 2vw, 26px); display: grid; place-items: center; }
.solve-item__art img { display: block; width: min(100%, 208px); height: auto; }

/* 改訂42: 横長構図のイラスト（service-dx）は幅ではなく「高さ」でそろえる。
   幅を基準にすると、正方形構図の service-ai と並べたときに人物が一段小さく見えるため。
   高さは max-height で与える（コンテナ側の height ＋ img の height:100% は、
   grid の auto トラックや flex:1 と噛み合わず解決しないため使わない） */
.worry-item__art--landscape { --art-h: clamp(150px, 14vw, 196px); }
.solve-item__art--landscape { --art-h: clamp(120px, 11vw, 150px); }

/* 改訂45（A案・service-ai先行）: 章のベースを紙に統一したページでは、
   解決パネルは紙に溶けるので白に反転する（課題の白い吹き出しと同じ「紙の上の白」になる） */
.solve--paper .solve-item { background: var(--white); }
.worry-item__art--landscape img,
.solve-item__art--landscape img {
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: var(--art-h);
}

/* --- 業界×ユースケース（業界色 --ind ＋ 写真帯 ＋ アイコン付きカード） --- */
.uc-panels { margin-top: clamp(26px, 3vw, 38px); }
[data-uc-panel] { display: none; --ind: var(--cyan); --ind-soft: #EEF2F6; }
[data-uc-panel].is-active { display: block; }
/* --ind = 業界の主色（写真帯の下罫・カード上端のバー・アイコンチップ）
   --ind-soft = その主色を紙に一滴落とした程度の淡色（カードのホバー地） */
[data-uc-panel="mfg"] { --ind: #35506B; --ind-soft: #EDF1F5; }
[data-uc-panel="con"] { --ind: #B08D57; --ind-soft: #F7F2E9; }
[data-uc-panel="fin"] { --ind: #0B1F3A; --ind-soft: #ECEFF3; }
[data-uc-panel="med"] { --ind: #6E8CA8; --ind-soft: #F0F4F8; }
.filter__tab[data-uc-tab="mfg"].is-active { background: #35506B; border-color: #35506B; }
.filter__tab[data-uc-tab="con"].is-active { background: #B08D57; border-color: #B08D57; }
.filter__tab[data-uc-tab="fin"].is-active { background: #0B1F3A; border-color: #0B1F3A; }
.filter__tab[data-uc-tab="med"].is-active { background: #6E8CA8; border-color: #6E8CA8; }

/* 改訂45: ユースケース章の暗面（A案の「核」）。.section--navy が地と文字を反転し、
   ここではタブと見出しまわりだけ暗面用に上書きする。カード・写真帯は白面なのでそのまま効く */
.uc-dark .svc-head .about-heading { color: var(--white); }
.uc-dark .svc-head__lead { color: #C7D2DE; }
.uc-dark .section-kicker { color: #D8BC8A; }
.uc-dark .filter__tab { color: #C7D2DE; border-color: rgba(255, 255, 255, .3); }
.uc-dark .filter__tab:hover { color: var(--white); border-color: var(--white); }
/* 暗面のアクティブタブは白地に業界色の文字（fin=墨紺の塗りが地に溶けるため、塗りでなく文字色で業界を示す） */
.uc-dark .filter__tab[data-uc-tab="mfg"].is-active { color: #35506B; background: var(--white); border-color: var(--white); }
.uc-dark .filter__tab[data-uc-tab="con"].is-active { color: #B08D57; background: var(--white); border-color: var(--white); }
.uc-dark .filter__tab[data-uc-tab="fin"].is-active { color: #0B1F3A; background: var(--white); border-color: var(--white); }
.uc-dark .filter__tab[data-uc-tab="med"].is-active { color: #6E8CA8; background: var(--white); border-color: var(--white); }
.uc-dark .uc-card { border-color: transparent; }
.uc-dark .uc-swipe-hint { color: #C7D2DE; }

.uc-hero {
  position: relative;
  height: clamp(150px, 16vw, 210px);
  margin-bottom: clamp(18px, 2vw, 26px);
  overflow: hidden;
  border-radius: var(--radius);
  border-bottom: 3px solid var(--ind);
}
.uc-hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 34%; }
/* 帯は写真より横長なので上下が大きく切れる。業界ごとに人物が入る高さへ寄せる（改訂38） */
[data-uc-panel="mfg"] .uc-hero img { object-position: center 25%; }   /* 頭が切れないよう上寄り */
[data-uc-panel="con"] .uc-hero img { object-position: center 70%; }   /* 右手前の人物が入る高さ */
[data-uc-panel="fin"] .uc-hero img { object-position: center 52%; }   /* 人物の下が切れないよう少し下へ */
.uc-hero::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(11, 31, 58, .62), rgba(11, 31, 58, .12) 60%); z-index: 1; }
.uc-hero__body { position: absolute; inset: auto auto 18px clamp(18px, 2vw, 28px); z-index: 2; color: var(--white); }
.uc-hero__body h3 { margin-top: 6px; font-size: clamp(19px, 2vw, 25px); font-weight: 700; line-height: 1.4; }
.uc-hero__body p { margin-top: 4px; font-size: 12px; color: #D3DCE7; }

/* カードは高さを揃える（効果タグを廃止し、行の高さも1frで統一） */
.uc-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 1fr; gap: clamp(14px, 1.8vw, 24px); }
/* 改訂39: 白地に業界色を差す方式。上端の2pxバーとアイコンチップの塗りが業界ごとに変わり、
   ホバーでその業界の淡色が敷かれる（面を塗り分けるより白の抜けを残したほうが写真帯が引き立つ） */
.uc-card {
  position: relative;
  display: flex; flex-direction: column;
  padding: clamp(22px, 2.4vw, 28px);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), background-color .35s var(--ease);
}
.uc-card::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: var(--ind); }
.uc-card:hover { transform: translateY(-4px); background: var(--ind-soft); box-shadow: 0 14px 30px rgba(11, 31, 58, .08); }
.uc-card__head { display: flex; align-items: center; gap: 14px; }
.uc-card__icon {
  flex: 0 0 52px;
  display: grid; place-items: center;
  width: 52px; height: 52px;
  background: var(--ind);
  border: 1px solid var(--ind);
  border-radius: var(--radius);
  color: var(--white);
}
.uc-card__icon svg { width: 30px; height: 30px; }
.uc-card h4 { color: var(--navy); font-size: clamp(15.5px, 1.3vw, 17.5px); font-weight: 700; line-height: 1.6; }
.uc-card > p { margin-top: 14px; color: var(--muted); font-size: 13px; line-height: 1.95; }
.uc-swipe-hint { display: none; }

/* --- Feature（改訂38: about.html の「AICEの特徴」と同じ .sc-feature / .feat-card を流用。
   面色は紙色。カードの重なり（--cover）は js/main.js の既存処理がそのまま効く） --- */

/* --- Flow（改訂38: 採用サイト recruit-site-renewal-2026-07-v6 の .s-flow2 を移植。
   接続線が左→右に伸び、01〜05のノードが順に立ち上がる。色はコーポレートのパレットに置換 --- */
.fl2 {
  position: relative;
  --fl-gap: clamp(14px, 1.8vw, 24px);
  opacity: 1; transform: none; clip-path: none; filter: none;  /* data-reveal は発火のトリガーとしてのみ使う */
}
.fl2__line {
  position: absolute;
  /* 01のノード中心から05のノード中心まで。5列＋gapから最終列の幅を逆算して端をそろえる */
  left: 27px;
  right: calc((100% - 4 * var(--fl-gap)) / 5 - 27px);
  top: 27px;
  height: 2px;
  background: linear-gradient(90deg, var(--orange), var(--cyan));
  transform-origin: left;
  transform: scaleX(0);
  transition: transform 1.6s cubic-bezier(.4, 0, .2, 1);
}
.fl2.is-visible .fl2__line { transform: scaleX(1); }
.fl2__grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: var(--fl-gap);
  margin: 0; padding: 0; list-style: none;
}
.fl2__step {
  position: relative;
  padding-top: 72px;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .6s var(--ease), transform .6s var(--ease);
}
.fl2.is-visible .fl2__step { opacity: 1; transform: none; }
.fl2.is-visible .fl2__step:nth-child(1) { transition-delay: .25s; }
.fl2.is-visible .fl2__step:nth-child(2) { transition-delay: .52s; }
.fl2.is-visible .fl2__step:nth-child(3) { transition-delay: .79s; }
.fl2.is-visible .fl2__step:nth-child(4) { transition-delay: 1.06s; }
.fl2.is-visible .fl2__step:nth-child(5) { transition-delay: 1.33s; }
.fl2__node {
  position: absolute;
  top: 0;
  left: 0;
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  border-radius: 50%;
  background: var(--white);
  border: 2px solid var(--navy);
  color: var(--navy);
}
.fl2__node svg { width: 23px; height: 23px; }
.fl2__num {
  position: absolute;
  top: -4px;
  left: 46px;
  padding: 1px 8px;
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--orange);
  font: 800 11px/1.7 var(--latin);
  letter-spacing: .1em;
}
.fl2__step h3 { margin: 0; color: var(--navy); font-size: clamp(15px, 1.4vw, 17.5px); font-weight: 700; line-height: 1.6; }
.fl2__term { margin: 10px 0 0; display: inline-block; padding: 3px 10px; background: var(--paper-deep); color: var(--navy); font-size: 11.5px; font-weight: 700; border-radius: var(--radius); }
.fl2__step > p:last-child { margin: 12px 0 0; color: var(--muted); font-size: 12.5px; line-height: 1.95; }

/* --- AI研修ページ（service-lecture）専用 改訂45（43を全面差し替え） --- */

/* 章内の中見出し */
.svc-sub {
  margin-top: clamp(48px, 5vw, 72px);
  color: var(--navy);
  font-family: var(--display);
  font-size: clamp(17px, 1.7vw, 21px);
  font-weight: 700;
  letter-spacing: .01em;
}
.svc-sub + * { margin-top: clamp(20px, 2.4vw, 28px); }

/* --- A案の暗面その2: DXの「支援の進め方」（flow--dark） 改訂46 --- */
.flow--dark .svc-head .about-heading { color: var(--white); }
.flow--dark .svc-head__lead { color: #C7D2DE; }
.flow--dark .section-kicker { color: #D8BC8A; }
.flow--dark .fl2__line { background: linear-gradient(90deg, #D8BC8A, #7E97B2); }
.flow--dark .fl2__step h3 { color: var(--white); }
.flow--dark .fl2__step > p:last-child { color: #C7D2DE; }
.flow--dark .fl2__term { background: rgba(255, 255, 255, .14); color: var(--white); }
.flow--dark .fl2__num { border-color: transparent; }

/* --- A案の暗面その3: 研修の「研修プログラム」（pg-dark） 改訂46 --- */
.pg-dark .svc-head .about-heading { color: var(--white); }
.pg-dark .svc-head__lead { color: #C7D2DE; }
.pg-dark .section-kicker { color: #D8BC8A; }
.svc-sub--light { color: var(--white); }
/* 要点4枚（形式・時間・人数・受講料） */
.pg-band { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(12px, 1.6vw, 20px); }
.pg-cell { padding: 18px 20px; background: var(--white); border-radius: var(--radius); }
.pg-cell__label { color: var(--orange); font-size: 11px; font-weight: 700; letter-spacing: .12em; }
.pg-cell__val { margin-top: 8px; color: var(--navy); font-size: clamp(14.5px, 1.3vw, 16.5px); font-weight: 800; line-height: 1.5; }
.pg-cell__sub { margin-top: 6px; color: var(--muted); font-size: 11.5px; line-height: 1.7; }
/* 全5回の流れ（1行ずつ） */
.pg-steps { margin: clamp(30px, 3.4vw, 44px) 0 0; padding: 0; list-style: none; border-top: 1px solid rgba(255, 255, 255, .2); }
.pg-steps li {
  display: grid;
  grid-template-columns: clamp(40px, 4.4vw, 56px) minmax(0, .42fr) minmax(0, .58fr);
  column-gap: clamp(12px, 2vw, 28px);
  align-items: baseline;
  padding: 15px 0;
  border-bottom: 1px solid rgba(255, 255, 255, .2);
}
.pg-steps span { color: #D8BC8A; font: 800 14px/1.4 var(--latin); letter-spacing: .08em; }
.pg-steps h3 { margin: 0; color: var(--white); font-size: clamp(14px, 1.3vw, 15.5px); font-weight: 700; line-height: 1.8; }
.pg-steps p { margin: 0; color: #C7D2DE; font-size: 12.5px; line-height: 1.9; }
.pg-note { max-width: 52em; margin: 16px 0 0; color: #C7D2DE; font-size: 12.5px; line-height: 1.95; }
/* 実施例2枚（選択肢ではなく事例の立ち位置。小ぶりの白カード） */
.pg-ex { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(14px, 1.8vw, 24px); }
.pg-ex__item {
  padding: clamp(20px, 2.2vw, 28px);
  background: var(--white);
  border-radius: var(--radius);
  border-top: 2px solid var(--pg, var(--orange));
  transition: background-color .3s var(--ease), transform .3s var(--ease);
}
.pg-ex__item:hover { background: #F7F2E9; transform: translateY(-3px); }
.pg-ex__label { color: var(--pg, var(--orange)); font: 700 10.5px/1 var(--latin); letter-spacing: .16em; }
.pg-ex__item h4 { margin-top: 10px; color: var(--navy); font-size: clamp(14.5px, 1.3vw, 16px); font-weight: 700; line-height: 1.7; }
.pg-ex__item p { margin-top: 10px; color: var(--muted); font-size: 12.5px; line-height: 1.95; }

/* --- 職種別プログラム（改訂61: 更新依頼の標準コース要件を正としてPROGRAM章を再構成） --- */
.sp-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(16px, 2vw, 26px); margin-top: clamp(20px, 2.4vw, 28px); }
.sp-card { padding: 0 clamp(20px, 2.2vw, 30px) clamp(24px, 2.6vw, 34px); background: var(--white); border-radius: var(--radius); border-top: 2px solid var(--orange); overflow: hidden; }
.sp-card__photo { position: relative; height: clamp(150px, 13vw, 185px); margin: 0 calc(-1 * clamp(20px, 2.2vw, 30px)); overflow: hidden; }
.sp-card__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center 30%; }
.sp-card__photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,31,58,.08) 0%, rgba(11,31,58,.66) 100%); }
.sp-card__label { color: var(--orange); font: 700 10.5px/1 var(--latin); letter-spacing: .18em; }
.sp-card__photo .sp-card__label { position: absolute; left: 20px; bottom: 34px; z-index: 1; color: #D8BC8A; }
.sp-card__photo h4 { position: absolute; left: 20px; right: 20px; bottom: 10px; z-index: 1; margin: 0; color: var(--white); font-size: clamp(14.5px, 1.3vw, 16.5px); font-weight: 700; line-height: 1.6; }
.sp-card__sub { display: inline-block; margin-top: 16px; padding: 3px 10px; background: var(--paper-deep); border-radius: 999px; color: var(--navy); font-size: 11px; font-weight: 700; letter-spacing: .06em; }
.sp-card__target { margin: 10px 0 0; color: var(--muted); font-size: 12.5px; line-height: 1.95; }
/* 2列表示のとき、隣のカードと「修了時にできるようになること」の開始位置を揃える */
@media (min-width: 961px) {
  .sp-card__target { min-height: 5.9em; }
}
.sp-card ul { margin: 16px 0 0; padding: 0; list-style: none; }
.sp-card li { position: relative; padding: 9px 0 9px 16px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12.5px; line-height: 1.9; }
.sp-card li b { font-weight: 650; color: var(--navy); background: linear-gradient(transparent 66%, rgba(176,141,87,.24) 66%, rgba(176,141,87,.24) 94%, transparent 94%); }
.sp-card li::before { content: ""; position: absolute; left: 0; top: 18px; width: 8px; height: 1px; background: var(--orange); }
.pg-note--wide { max-width: none; }

/* --- 役割×業界の切り替え（研修・改訂46） --- */
.pick2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(22px, 2.8vw, 40px); align-items: start; }
.pick2__q { margin: 0 0 12px; color: var(--navy); font-size: 14px; font-weight: 700; }
.pick2 .filter { margin-bottom: 16px; }
.rp, .ip {
  display: none;
  background: var(--white);
  border: 1px solid var(--line);
  border-top: 3px solid var(--rc, var(--ind, var(--navy)));
  border-radius: var(--radius);
  padding: clamp(22px, 2.4vw, 30px);
}
.rp.is-active, .ip.is-active { display: block; }
.rp h3 { margin: 0; color: var(--navy); font-size: clamp(15.5px, 1.5vw, 18px); font-weight: 700; line-height: 1.7; }
.rp ul, .ip ul { margin: 14px 0 0; padding: 0; list-style: none; }
.rp li, .ip li { position: relative; padding: 10px 0 10px 18px; border-top: 1px solid var(--line); color: var(--muted); font-size: 13px; line-height: 1.9; }
.rp li::before { content: ""; position: absolute; left: 0; top: 19px; width: 8px; height: 1px; background: var(--rc, var(--navy)); }
.ip li::before { content: ""; position: absolute; left: 0; top: 19px; width: 8px; height: 1px; background: var(--ind, var(--navy)); }
.ip__photo, .rp__photo { position: relative; height: clamp(120px, 12vw, 160px); border-radius: var(--radius); overflow: hidden; }
.ip__photo img, .rp__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center var(--ip-pos, 40%); }
.ip__photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11, 31, 58, 0) 42%, rgba(11, 31, 58, .55)); }
/* 役割の写真は白背景で明るいので、見出しが読めるようグラデを強める */
.rp__photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11, 31, 58, 0) 30%, rgba(11, 31, 58, .68)); }
.rp__photo p { position: absolute; left: 16px; right: 16px; bottom: 12px; z-index: 1; margin: 0; color: var(--white); font-size: 13px; font-weight: 700; line-height: 1.6; }
.ip__photo span { position: absolute; left: 14px; bottom: 12px; z-index: 1; color: var(--white); font: 700 13px/1.4 var(--latin); letter-spacing: .14em; }
.pick2__note { max-width: 46em; margin-top: clamp(18px, 2.2vw, 26px); color: var(--muted); font-size: 12.5px; line-height: 1.95; }
/* タブの選択色（役割＝真鍮/鋼青/墨紺、業界＝ユースケースと同じ色） */
[data-tab-group="role"] .filter__tab[data-tab="exec"].is-active { background: #B08D57; border-color: #B08D57; }
[data-tab-group="role"] .filter__tab[data-tab="lead"].is-active { background: #35506B; border-color: #35506B; }
[data-tab-group="role"] .filter__tab[data-tab="field"].is-active { background: #0B1F3A; border-color: #0B1F3A; }
[data-tab-group="ind"] .filter__tab[data-tab="mfg"].is-active { background: #35506B; border-color: #35506B; }
[data-tab-group="ind"] .filter__tab[data-tab="con"].is-active { background: #B08D57; border-color: #B08D57; }
[data-tab-group="ind"] .filter__tab[data-tab="fin"].is-active { background: #0B1F3A; border-color: #0B1F3A; }
[data-tab-group="ind"] .filter__tab[data-tab="med"].is-active { background: #6E8CA8; border-color: #6E8CA8; }



/* --- FAQ --- */
/* 改訂44: 開いた項目だけ、章の面色と逆の地色（紙面なら白／白面なら紙）で塗る。
   塗りに余白を持たせるため、リストを左右へ --faq-pad ぶん広げ、中身は同じ量だけ戻している */
.faq-list { --faq-pad: clamp(14px, 1.6vw, 20px); max-width: calc(880px + 2 * var(--faq-pad)); margin-inline: calc(-1 * var(--faq-pad)); }
.faq-item {
  padding-inline: var(--faq-pad);
  border-bottom: 1px solid var(--line);
  border-radius: var(--radius);
  transition: background-color .3s var(--ease);
}
.faq-item:first-child { border-top: 1px solid var(--line); }
.about-section .faq-item[open] { background: var(--white); }
.about-section--white .faq-item[open] { background: var(--paper); }
.faq-item summary {
  position: relative;
  display: block;
  padding: 22px 44px 22px 0;
  color: var(--navy); font-size: 15px; font-weight: 700; line-height: 1.9;
  cursor: pointer; list-style: none;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::before { content: "Q. "; color: var(--orange); font-family: var(--latin); font-weight: 800; }
.faq-item summary::after {
  content: ""; position: absolute; right: 6px; top: 50%;
  width: 12px; height: 12px; translate: 0 -50%;
  background:
    linear-gradient(var(--orange), var(--orange)) center / 12px 2px no-repeat,
    linear-gradient(var(--orange), var(--orange)) center / 2px 12px no-repeat;
  transition: transform .3s var(--ease);
}
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-item .faq-a { padding: 0 0 24px; max-width: 44em; color: var(--muted); font-size: 13.5px; line-height: 2.05; }

/* ヒーロー直後が白面のページ用: 円弧の外側に白を敷く */
.hero-plate { background: var(--white); }
/* 全章を紙に統一したページ（A案）は、円弧の外も紙にして継ぎ目を消す */
.hero-plate--paper { background: var(--paper); }

/* --- レスポンシブ --- */
@media (max-width: 1100px) {
  /* 2列に折り返すと接続線が行をまたいでしまうので、線は隠して縦の順序だけで見せる */
  .fl2__line { display: none; }
  .fl2__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 24px; }
}
@media (max-width: 960px) {
  .worry-grid { grid-template-columns: 1fr; gap: 34px; }
  .pick2 { grid-template-columns: 1fr; }
  .pg-band { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sp-grid { grid-template-columns: 1fr; }
  .pg-ex { grid-template-columns: 1fr; }
  .solve-grid { grid-template-columns: 1fr; gap: 30px; }
  .worry-item__art img { width: min(100%, 240px); }
  /* 1列に落ちたら縦長にする理由がなくなるので、高さの下限は外す */
  .solve-item { min-height: 0; }
  .solve-item__art img { width: min(100%, 230px); }
  .worry-item__art--landscape { --art-h: 215px; }
  .solve-item__art--landscape { --art-h: 165px; }
}
@media (max-width: 700px) {
  .fl2__grid { grid-template-columns: 1fr; gap: 26px; }
  /* 1列では番号バッジをノードの真下に置く（右に出すと見出しに重なる） */
  .fl2__step { padding-top: 0; padding-left: 74px; min-height: 84px; }
  .fl2__node { top: 0; }
  .fl2__num { top: 58px; left: 8px; }
  /* 改訂61: SPの横スワイプは1枚+見切れの詰まった見え方になるため、縦積み1列に変更 */
  .uc-grid { grid-template-columns: 1fr; }
  .pg-steps li { grid-template-columns: 40px minmax(0, 1fr); row-gap: 4px; }
  .pg-steps li p { grid-column: 2; }
}
