/* ================================================================
   BRIDGE Design System v3.0 — 正式ロゴ準拠
   全ページ共通のデザイントークン+コンポーネント。
   配色:白と余白を基調に、藍を骨格、砂色を温度として使う。
   ロゴの思想:線は交差するが接続しない。自由と余白。
   ================================================================ */

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

:root{
  /* Light = 白と余白 */
  --bg:#FBFAF7;
  --bg-2:#F4EFE6;
  --bg-3:#EAE2D3;
  --ink:#1B1B1E;
  --ink-2:#45464C;
  --ink-3:#63646B;
  --ink-4:#B6B3AB;
  --line:rgba(27,27,30,0.10);
  --navy:#16233E;
  --blue:#24365C;
  --blue-soft:#8B9BBC;
  --dawn:#A98F63;          /* 砂色。ロゴの温度。使いすぎない */
  --dawn-deep:#7D6845;     /* 文字として使える砂。--dawnは白面3.09:1でAA未達のため小さい文字はこちら */
  --card:#FFFFFF;
  --dark-sec:#131A2A;
  --dark-sec-text:#EFECE4;
  --dark-sec-dim:#8E93A3;
  --hero-sky-1:#F4EFE6;
  --hero-sky-2:#FBFAF7;
  --hero-glow:rgba(169,143,99,0.16);
  --shadow:0 2px 8px rgba(22,35,62,0.04),0 16px 48px rgba(22,35,62,0.07);
  --mincho:'Shippori Mincho B1','Noto Serif JP',serif;
  --sans:'Noto Sans JP',sans-serif;
  --en:'Inter',sans-serif;
  --max:1180px;
  --text-max:660px;
  --pad-x:clamp(24px,6vw,96px);
  --sec-y:clamp(100px,14vh,180px);
  --ease:cubic-bezier(.16,1,.3,1);
}
[data-theme="dark"]{
  /* Dark = 炭と藍 */
  --bg:#111521;
  --bg-2:#161B2B;
  --bg-3:#1D2436;
  --ink:#EDEAE2;
  --ink-2:#C2BFB6;
  --ink-3:#8A8D98;
  --ink-4:#565A68;
  --line:rgba(237,234,226,0.10);
  --navy:#D8DEEB;
  --blue:#9FB1D4;
  --blue-soft:#5A6C92;
  --dawn:#C2A97E;
  --dawn-deep:#C2A97E;    /* ダークは--dawnが暗い面で7.33:1と合格しているため暗くしない(designer指定) */
  --card:#181E2E;
  --dark-sec:#0B0F1A;
  --hero-sky-1:#161B2B;
  --hero-sky-2:#111521;
  --hero-glow:rgba(194,169,126,0.12);
  --shadow:0 2px 8px rgba(0,0,0,0.25),0 16px 48px rgba(0,0,0,0.35);
}

html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--bg);color:var(--ink);line-height:2;overflow-x:hidden;font-feature-settings:"palt" 1;transition:background .5s,color .5s}
h1,h2,h3,.stmt{text-wrap:balance;word-break:auto-phrase;line-break:strict;overflow-wrap:break-word}
p{text-wrap:pretty;word-break:auto-phrase;line-break:strict;overflow-wrap:break-word}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
button{font:inherit;background:none;border:none;cursor:pointer;color:inherit}
/* 砂: テキストを選んでいる瞬間(第22条)。subpage.css と読みを揃える。
 * 文字色に --navy を使わないのは、ダークで淡い藍に反転して砂地の上で1.68:1に
 * なるため。--dark-sec は両テーマとも暗いままで、ライト5.62:1 / ダーク8.45:1。 */
::selection{background:var(--dawn);color:var(--dark-sec)}
.nowrap{white-space:nowrap}
.br-pc{display:none}
@media(min-width:720px){.br-pc{display:inline}}
section[id],div[id]{scroll-margin-top:90px}
main{display:block}

/* ===== タイポグラフィ ===== */
.eyebrow{font:700 10px/1 var(--en);letter-spacing:0.24em;text-transform:uppercase;color:var(--ink-3);display:inline-flex;align-items:center;gap:10px}
.eyebrow::before{content:'';width:22px;height:1px;background:var(--dawn)}
.stmt{font-family:var(--mincho);font-weight:600;line-height:1.75;letter-spacing:0.02em}
.hikari{color:var(--dawn)}
.ao{color:var(--blue)}
.body-p{max-width:var(--text-max);font-size:15px;line-height:2.3;color:var(--ink-2)}
.sec-h{font-family:var(--mincho);font-weight:600;font-size:clamp(25px,4.2vw,44px);line-height:1.7;margin:24px 0 28px}

/* ===== レイアウト ===== */
.sec{padding:var(--sec-y) var(--pad-x);position:relative}
.sec-inner{max-width:var(--max);margin:0 auto}
.sec.tint{background:var(--bg-2)}

/* ===== Reveal ===== */
/* JSが付与する html.js 配下でだけ隠す。JS無効環境では最初から見える */
html.js [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
html.js [data-reveal].on{opacity:1;transform:none}
[data-reveal-delay="1"]{transition-delay:.1s}
[data-reveal-delay="2"]{transition-delay:.2s}
[data-reveal-delay="3"]{transition-delay:.3s}
[data-reveal-delay="4"]{transition-delay:.4s}
@media(prefers-reduced-motion:reduce){
  html.js [data-reveal]{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
}

/* ===== ヘッダー(JSが .site-nav に描画) ===== */
.site-nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;justify-content:space-between;align-items:center;padding:18px var(--pad-x);transition:all .35s;background:transparent}
.site-nav.scrolled{background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line);padding:12px var(--pad-x)}
.nav-logo{font:500 14px/1 var(--en);letter-spacing:0.34em;display:flex;align-items:center;gap:12px;z-index:2;color:var(--ink)}
.nav-logo svg{width:40px;height:18px;flex-shrink:0}
.logo-mark .l-navy{stroke:var(--navy);fill:none;stroke-linecap:round}
.logo-mark .l-sand{stroke:var(--dawn);fill:none;stroke-linecap:round}
[data-theme="dark"] .logo-mark .l-navy{stroke:var(--ink)}
.nav-right{display:flex;align-items:center;gap:20px}
.nav-links{display:flex;gap:20px;font:600 10px/1 var(--en);letter-spacing:0.15em;text-transform:uppercase;color:var(--ink-3)}
.nav-links a{padding:6px 0;position:relative;transition:color .2s}
.nav-links a::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--dawn);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease)}
.nav-links a:hover{color:var(--ink)}
.nav-links a:hover::after{transform:scaleX(1);transform-origin:left}
.nav-links a.active{color:var(--ink)}
.nav-links a.active::after{transform:scaleX(1)}
.nav-cta{font:700 11px/1 var(--sans);letter-spacing:0.08em;padding:10px 20px;border-radius:100px;background:var(--blue);color:#fff;transition:all .3s var(--ease)}
[data-theme="dark"] .nav-cta{color:#08131E}
.nav-cta:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.theme-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-3);transition:all .3s;flex-shrink:0;position:relative}
.theme-btn::after{content:'';position:absolute;inset:-5px;border-radius:50%} /* 見た目は34pxのまま、タップ領域を44pxに */
.theme-btn:hover{color:var(--ink);border-color:var(--ink-3)}
.theme-btn svg{width:15px;height:15px}
[data-theme="light"] .icon-sun{display:none}
[data-theme="dark"] .icon-moon{display:none}

/* ハンバーガー(モバイル) */
.nav-burger{display:none;width:38px;height:38px;position:relative;z-index:2}
.nav-burger::after{content:'';position:absolute;inset:-3px} /* タップ領域44px */
.nav-burger span{position:absolute;left:9px;right:9px;height:1.5px;background:var(--ink);transition:all .35s var(--ease)}
.nav-burger span:nth-child(1){top:14px}
.nav-burger span:nth-child(2){top:22px}
body.menu-open .nav-burger span:nth-child(1){top:18px;transform:rotate(45deg)}
body.menu-open .nav-burger span:nth-child(2){top:18px;transform:rotate(-45deg)}

/* モバイル・フルスクリーンメニュー=「探索の地図」 */
.nav-drawer{position:fixed;inset:0;z-index:99;background:var(--bg);padding:110px var(--pad-x) 60px;overflow-y:auto;opacity:0;pointer-events:none;transition:opacity .4s var(--ease)}
body.menu-open .nav-drawer{opacity:1;pointer-events:auto}
.drawer-list{display:grid;gap:4px;max-width:560px}
.drawer-item{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--line);opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
body.menu-open .drawer-item{opacity:1;transform:none}
.drawer-item .t{font-family:var(--mincho);font-weight:600;font-size:20px}
.drawer-item .t .en{display:block;font:600 9px/1 var(--en);letter-spacing:0.2em;text-transform:uppercase;color:var(--dawn);margin-bottom:6px}
.drawer-item .d{font-size:11px;color:var(--ink-3);text-align:right;line-height:1.8;max-width:180px}
.nav-burger{display:block}
@media(max-width:920px){
  .nav-links,.nav-cta{display:none}
}

/* ===== ページヒーロー(下層ページ共通) ===== */
.page-hero{padding:clamp(150px,22vh,240px) var(--pad-x) clamp(70px,10vh,110px);background:linear-gradient(180deg,var(--hero-sky-1),var(--bg));position:relative;overflow:hidden}
.page-hero-inner{max-width:var(--max);margin:0 auto;position:relative;z-index:1}
.page-hero .crumb{font:600 10px/1 var(--en);letter-spacing:0.2em;text-transform:uppercase;color:var(--ink-3);margin-bottom:26px;display:flex;gap:10px;align-items:center}
.page-hero .crumb a:hover{color:var(--ink)}
.page-hero .crumb .sep{color:var(--ink-4)}
.page-hero h1{font-family:var(--mincho);font-weight:600;font-size:clamp(32px,6vw,64px);line-height:1.6;letter-spacing:0.02em}
.page-hero h1 .period{color:var(--dawn)}
.page-hero .lead{max-width:var(--text-max);margin-top:24px;font-size:15px;line-height:2.3;color:var(--ink-2)}
/* 下層ヒーローの線(bridge.jsが自動挿入) */
.ph-lines{position:absolute;inset:0;pointer-events:none;opacity:.4}
.ph-lines svg{width:100%;height:100%}
.ph-lines path{fill:none;stroke-linecap:round;stroke-width:1.6;stroke-dasharray:1;stroke-dashoffset:1;animation:phd 2.4s var(--ease) .2s forwards}
.ph-lines .pl-n{stroke:var(--navy)}
[data-theme="dark"] .ph-lines .pl-n{stroke:var(--blue)}
.ph-lines .pl-s{stroke:var(--dawn);animation-delay:.7s}
@keyframes phd{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.ph-lines path{animation:none;stroke-dashoffset:0}}

/* ===== ボタン ===== */
.btn{display:inline-flex;align-items:center;gap:10px;padding:15px 32px;border-radius:100px;font:700 13px/1 var(--sans);letter-spacing:0.06em;transition:all .3s var(--ease)}
.btn.primary{background:var(--blue);color:#fff}
[data-theme="dark"] .btn.primary{color:#08131E}
.btn.primary:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.btn.ghost{border:1px solid var(--line);color:var(--ink-2)}
.btn.ghost:hover{border-color:var(--ink-3);color:var(--ink);transform:translateY(-2px)}

/* ===== カード ===== */
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:clamp(24px,3vw,36px);box-shadow:var(--shadow);transition:all .35s var(--ease)}
a.card:hover{transform:translateY(-4px);border-color:var(--blue-soft)}
.card-tag{font:700 10px/1 var(--en);letter-spacing:0.2em;text-transform:uppercase;color:var(--blue);margin-bottom:14px;display:block}
.card-tag.d{color:var(--dawn)}
.card-t{font-family:var(--mincho);font-weight:600;font-size:clamp(17px,2.2vw,21px);line-height:1.8;margin-bottom:12px}
.card-p{font-size:12.5px;line-height:2.1;color:var(--ink-2)}
.card-link{font:600 11px/1 var(--en);letter-spacing:0.08em;color:var(--blue);display:inline-flex;gap:6px;align-items:center;margin-top:16px}
a.card:hover .card-link{gap:10px}

/* ステータスチップ */
.chip{font:600 9.5px/1 var(--en);letter-spacing:0.12em;padding:5px 10px;border:1px solid var(--line);border-radius:100px;color:var(--ink-3);white-space:nowrap}
.chip.run{border-color:color-mix(in srgb,var(--dawn) 55%,transparent);color:var(--dawn)}

/* タグ(Journal等・選べるUI) */
.tag-row{display:flex;gap:8px;flex-wrap:wrap}
.tag{font:600 11px/1 var(--sans);letter-spacing:0.04em;padding:8px 16px;border:1px solid var(--line);border-radius:100px;color:var(--ink-2);transition:all .25s;cursor:pointer}
.tag:hover{border-color:var(--ink-3);color:var(--ink)}
.tag.active{background:var(--blue);border-color:var(--blue);color:#fff}
[data-theme="dark"] .tag.active{color:#08131E}

/* グリッド */
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:960px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}

/* 行リスト */
.rows{max-width:var(--max);margin:0 auto;border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:64px 260px 1fr auto;gap:16px 32px;align-items:baseline;padding:clamp(24px,4vh,38px) 0;border-bottom:1px solid var(--line);transition:background .3s}
a.row:hover{background:color-mix(in srgb,var(--blue) 4%,transparent)}
.row-num{font:600 11px/1 var(--en);letter-spacing:0.14em;color:var(--dawn)}
.row-t{font-family:var(--mincho);font-weight:600;font-size:clamp(17px,2.3vw,23px);line-height:1.7}
.row-t .en{display:block;font:500 9.5px/1 var(--en);letter-spacing:0.18em;text-transform:uppercase;color:var(--ink-3);margin-top:6px}
.row-p{font-size:13px;line-height:2.1;color:var(--ink-2);max-width:520px}
.row-arr{font-family:var(--en);color:var(--ink-4);transition:all .3s var(--ease)}
a.row:hover .row-arr{transform:translateX(6px);color:var(--blue)}
@media(max-width:860px){.row{grid-template-columns:1fr auto}.row-num{display:none}.row-p{grid-column:1/-1}}

/* 「次はどこへ歩く?」— 各ページ末尾の分岐(押し付けない導線) */
.walk{padding:var(--sec-y) var(--pad-x);border-top:1px solid var(--line)}
.walk-inner{max-width:var(--max);margin:0 auto}
.walk-h{font-family:var(--mincho);font-weight:600;font-size:clamp(19px,2.6vw,26px);line-height:1.7;color:var(--ink);margin:18px 0 34px}
.walk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.walk-card{border:1px solid var(--line);border-radius:2px;padding:24px;transition:all .3s var(--ease);background:var(--card)}
.walk-card:hover{transform:translateY(-3px);border-color:var(--blue-soft)}
.walk-card .en{font:600 9px/1 var(--en);letter-spacing:0.2em;text-transform:uppercase;color:var(--dawn-deep);display:block;margin-bottom:10px}
.walk-card .t{font-family:var(--mincho);font-weight:600;font-size:16px;margin-bottom:6px}
.walk-card .p{font-size:11.5px;color:var(--ink-2);line-height:1.9}
/* 第29条「何もしなくても十分」の一行。思想の言葉なので明朝(subpage.cssと同型) */
.walk-note{max-width:34em;margin:34px 0 0;font:400 14px/2.1 var(--mincho);color:var(--ink-2)}
@media(max-width:760px){.walk-grid{grid-template-columns:1fr}}

/* ===== フッター(JSが .site-footer に描画) ===== */
.site-footer{border-top:1px solid var(--line);padding:64px var(--pad-x) 56px;background:var(--bg-2)}
.footer-grid{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:36px}
.footer-brand{font:500 15px/1 var(--en);letter-spacing:0.34em;display:flex;align-items:center;gap:12px}
.footer-brand svg{width:44px;height:20px}
.footer-brand .tg{display:block;font:500 8.5px/1 var(--en);letter-spacing:0.22em;color:var(--ink-3);margin-top:7px}
.footer-tagline{margin-top:14px;font-size:11.5px;color:var(--ink-3);letter-spacing:0.04em;line-height:2;max-width:240px}
.footer-col .h{font:700 9.5px/1 var(--en);letter-spacing:0.2em;text-transform:uppercase;color:var(--ink-3);margin-bottom:16px}
.footer-col a{display:block;font-size:12px;color:var(--ink-2);padding:5px 0;transition:color .2s}
.footer-col a:hover{color:var(--ink)}
.footer-base{max-width:var(--max);margin:44px auto 0;padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font:500 10px/1.8 var(--en);letter-spacing:0.1em;color:var(--ink-4)}
@media(max-width:860px){.footer-grid{grid-template-columns:1fr 1fr}}
