/* ============================================================
   高雄武德殿 — 導覽站
   色票：墨 (sumi) / 朱 (shu) / 生成 (kinari) / 金 (kin)
   ============================================================ */

:root{
  --sumi:      #15120e;
  --sumi-2:    #1e1a15;
  --sumi-3:    #2b251d;
  --kinari:    #f3ece0;
  --kinari-2:  #e8dfcd;
  --shu:       #b3392a;
  --shu-lit:   #d4553c;
  --kin:       #b99148;
  --kin-lit:   #d8b578;
  --ink:       #211c16;
  --ink-soft:  #574d40;
  --line:      rgba(33,28,22,.14);
  --line-lit:  rgba(243,236,224,.16);

  --serif: "Noto Serif TC", "Songti TC", serif;
  --sans:  "Noto Sans TC", system-ui, -apple-system, "Segoe UI", sans-serif;

  --wrap: 1180px;
  --pad: clamp(20px, 5vw, 64px);
  --ease: cubic-bezier(.22,.7,.3,1);
}

*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; scroll-padding-top:78px; -webkit-text-size-adjust:100%; }

body{
  margin:0;
  background:var(--sumi);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:400;
  line-height:1.9;
  letter-spacing:.02em;
  overflow-x:hidden;
}

img{ max-width:100%; height:auto; display:block; }
a{ color:inherit; }

.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--pad); }

.sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

.skip{
  position:fixed; top:-100px; left:12px; z-index:200;
  background:var(--shu); color:#fff; padding:10px 18px; border-radius:4px;
  text-decoration:none; font-weight:700;
}
.skip:focus{ top:12px; }

:focus-visible{ outline:2px solid var(--kin-lit); outline-offset:3px; }

/* ───────────── TOPBAR ───────────── */
.topbar{
  position:fixed; inset:0 0 auto 0; z-index:100;
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:14px var(--pad);
  background:linear-gradient(to bottom, rgba(21,18,14,.72), rgba(21,18,14,0));
  transition:background .4s var(--ease), padding .4s var(--ease), backdrop-filter .4s;
}
.topbar.stuck{
  background:rgba(21,18,14,.94);
  backdrop-filter:saturate(1.4) blur(10px);
  padding-block:10px;
  border-bottom:1px solid var(--line-lit);
}

.brand{ display:flex; align-items:center; gap:11px; text-decoration:none; }
.brand-seal{
  width:34px; height:34px; flex:none;
  display:grid; place-items:center;
  background:var(--shu); color:#fff;
  font-family:var(--serif); font-weight:900; font-size:19px;
  border-radius:3px;
  box-shadow:0 0 0 1px rgba(255,255,255,.18) inset;
}
.brand-text{ display:flex; flex-direction:column; line-height:1.15; }
.brand-text b{ font-family:var(--serif); font-weight:700; font-size:16px; color:var(--kinari); letter-spacing:.12em; }
.brand-text i{ font-style:normal; font-size:9.5px; letter-spacing:.24em; color:var(--kin-lit); text-transform:uppercase; }

.nav{ display:flex; gap:4px; }
.nav a{
  position:relative; padding:7px 14px; text-decoration:none;
  font-size:14px; letter-spacing:.14em; color:rgba(243,236,224,.68);
  transition:color .25s;
}
.nav a::after{
  content:""; position:absolute; left:14px; right:14px; bottom:2px; height:1px;
  background:var(--kin-lit); transform:scaleX(0); transform-origin:left;
  transition:transform .3s var(--ease);
}
.nav a:hover, .nav a.on{ color:var(--kinari); }
.nav a:hover::after, .nav a.on::after{ transform:scaleX(1); }

.nav-toggle{
  display:none; width:40px; height:40px; padding:9px 8px;
  background:none; border:1px solid var(--line-lit); border-radius:4px; cursor:pointer;
  flex-direction:column; justify-content:space-between;
}
.nav-toggle span{ display:block; height:1.5px; background:var(--kinari); transition:.3s var(--ease); }
.topbar.open .nav-toggle span:nth-child(1){ transform:translateY(9px) rotate(45deg); }
.topbar.open .nav-toggle span:nth-child(2){ opacity:0; }
.topbar.open .nav-toggle span:nth-child(3){ transform:translateY(-9px) rotate(-45deg); }

/* ───────────── HERO ───────────── */
.hero{
  position:relative; min-height:100svh;
  display:flex; align-items:flex-end;
  overflow:hidden; background:var(--sumi);
}
.hero-media{ position:absolute; inset:0; }
.hero-media img{
  width:100%; height:100%; object-fit:cover; object-position:center 42%;
  filter:saturate(.86) contrast(1.05) brightness(.82);
  transform:scale(1.06);
  animation:heroIn 2.4s var(--ease) both;
}
@keyframes heroIn{ from{ transform:scale(1.14); opacity:0; } to{ transform:scale(1.06); opacity:1; } }

.hero-veil{
  position:absolute; inset:0;
  background:
    radial-gradient(120% 90% at 20% 90%, rgba(21,18,14,.92) 0%, rgba(21,18,14,.35) 55%, transparent 80%),
    linear-gradient(to top, rgba(21,18,14,.96) 0%, rgba(21,18,14,.35) 38%, rgba(21,18,14,.28) 70%, rgba(21,18,14,.6) 100%);
}

.hero-body{
  position:relative; z-index:2;
  width:100%; max-width:var(--wrap); margin-inline:auto;
  padding:0 var(--pad) clamp(90px,14vh,150px);
}
.hero-kicker{
  margin:0 0 20px; font-size:12.5px; letter-spacing:.34em; color:var(--kin-lit);
  animation:up .9s .35s var(--ease) both;
}
.hero-kicker::before{
  content:""; display:inline-block; width:34px; height:1px;
  background:var(--kin); vertical-align:middle; margin-right:14px;
}

.hero-title{
  margin:0 0 26px; display:flex; gap:clamp(4px,1.4vw,18px);
  font-family:var(--serif); font-weight:900;
  font-size:clamp(66px, 16vw, 168px); line-height:.94;
  color:var(--kinari); letter-spacing:.02em;
}
/* HERO 字元樣式移到下方特效層的 .hero-ch */

.hero-lead{
  margin:0 0 30px; max-width:30ch;
  font-family:var(--serif); font-size:clamp(17px,2.2vw,23px); line-height:2;
  color:rgba(243,236,224,.9);
  animation:up 1s .85s var(--ease) both;
}

.hero-chips{
  display:flex; flex-wrap:wrap; gap:9px; margin:0; padding:0; list-style:none;
  animation:up 1s 1s var(--ease) both;
}
.hero-chips li{
  padding:6px 16px; font-size:12.5px; letter-spacing:.16em;
  color:var(--kinari); border:1px solid var(--line-lit); border-radius:100px;
  background:rgba(243,236,224,.05); backdrop-filter:blur(4px);
}

@keyframes up{ from{ opacity:0; transform:translateY(26px); } to{ opacity:1; transform:none; } }

.hero-scroll{
  position:absolute; z-index:2; left:50%; bottom:26px; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:8px;
  font-size:10.5px; letter-spacing:.3em; color:rgba(243,236,224,.55);
  text-decoration:none;
  animation:up 1s 1.3s var(--ease) both;
}
.hero-scroll span{
  display:block; width:1px; height:46px;
  background:linear-gradient(to bottom, transparent, var(--kin-lit));
  animation:pulse 2.2s infinite;
}
@keyframes pulse{ 0%,100%{ opacity:.35; transform:scaleY(.6); transform-origin:top; } 50%{ opacity:1; transform:scaleY(1); } }

/* ───────────── BANDS ───────────── */
.band{ position:relative; padding-block:clamp(72px,11vw,140px); }

.band-paper{
  background:var(--kinari);
  color:var(--ink);
  background-image:
    radial-gradient(rgba(33,28,22,.035) 1px, transparent 1px),
    radial-gradient(rgba(33,28,22,.025) 1px, transparent 1px);
  background-size:28px 28px, 17px 17px;
  background-position:0 0, 9px 11px;
}
.band-ink{ background:var(--sumi); color:rgba(243,236,224,.84); }
.band-ink::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(90% 60% at 50% 0%, rgba(185,145,72,.07), transparent 70%);
}
.band-ink > .wrap{ position:relative; z-index:2; }
.band-ink::before{ z-index:1; }

/* section head */
.sec-head{ margin-bottom:clamp(38px,5vw,62px); max-width:62ch; }
.sec-ord{
  margin:0 0 14px; font-family:var(--serif); font-size:12px; letter-spacing:.42em;
  color:var(--shu);
}
.sec-head-light .sec-ord{ color:var(--kin-lit); }
.sec-title{
  margin:0; font-family:var(--serif); font-weight:700;
  font-size:clamp(27px,4.3vw,46px); line-height:1.4; letter-spacing:.02em;
  color:var(--ink);
}
.sec-head-light .sec-title{ color:var(--kinari); }
.sec-sub{
  margin:18px 0 0; font-size:15.5px; line-height:2; color:var(--ink-soft); max-width:56ch;
}
.sec-head-light .sec-sub{ color:rgba(243,236,224,.6); }

/* ───────────── STORY ───────────── */
.story-grid{
  display:grid; grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);
  gap:clamp(36px,6vw,80px); align-items:start;
}
.story-text p{ margin:0 0 22px; font-size:16px; line-height:2.1; color:#3a332a; }
.story-text .lede{
  font-family:var(--serif); font-size:clamp(18px,2.4vw,22px); line-height:1.95;
  color:var(--ink); margin-bottom:30px;
  padding-left:20px; border-left:3px solid var(--shu);
}
.story-text .pull{
  margin-top:30px; padding:22px 26px;
  background:rgba(179,57,42,.06); border:1px solid rgba(179,57,42,.18);
  border-radius:3px; font-size:16px;
}
.story-text .pull b{ color:var(--shu); font-weight:700; }

.story-stats{ display:grid; gap:2px; background:var(--line); border:1px solid var(--line); }
.stat{ background:var(--kinari); padding:22px 24px; }
.stat b{
  display:block; font-family:var(--serif); font-weight:700;
  font-size:clamp(34px,4.6vw,46px); line-height:1.1; color:var(--shu);
  font-variant-numeric:tabular-nums;
}
.stat i{ display:block; margin-top:6px; font-style:normal; font-size:13px; letter-spacing:.1em; color:var(--ink-soft); }

/* ───────────── TIMELINE ───────────── */
.tl{ list-style:none; margin:0; padding:0; position:relative; }
.tl::before{
  content:""; position:absolute; left:0; top:6px; bottom:6px; width:1px;
  background:linear-gradient(to bottom, transparent, var(--line-lit) 8%, var(--line-lit) 92%, transparent);
}
.tl-item{
  position:relative; display:grid; grid-template-columns:132px minmax(0,1fr);
  gap:clamp(16px,3vw,40px); padding:0 0 clamp(26px,3.6vw,42px) clamp(22px,3vw,40px);
}
.tl-item::before{
  content:""; position:absolute; left:-4.5px; top:13px;
  width:9px; height:9px; border-radius:50%;
  background:var(--sumi); border:1px solid var(--kin);
}
.tl-item.is-key::before{ background:var(--shu); border-color:var(--shu-lit); box-shadow:0 0 0 5px rgba(179,57,42,.16); }

.tl-year{
  font-family:var(--serif); font-weight:700; font-size:clamp(21px,2.8vw,28px);
  line-height:1.5; color:var(--kin-lit); font-variant-numeric:tabular-nums; letter-spacing:.01em;
}
.tl-item.is-key .tl-year{ color:var(--shu-lit); }

.tl-card h3{
  margin:0 0 9px; font-family:var(--serif); font-weight:600; font-size:18.5px;
  color:var(--kinari); letter-spacing:.05em;
}
.tl-card p{ margin:0; font-size:15px; line-height:2; color:rgba(243,236,224,.62); max-width:62ch; }

/* ───────────── ANATOMY ───────────── */
.anat{
  display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);
  gap:clamp(26px,4vw,52px); align-items:start;
}
.anat-fig{ position:relative; margin:0; border:1px solid var(--line); background:#000; }
.anat-fig img{ width:100%; }

.hotspots{ position:absolute; inset:0; }
.hs{
  position:absolute; left:var(--x); top:var(--y); transform:translate(-50%,-50%);
  width:38px; height:38px; padding:0; border:0; background:none; cursor:pointer;
  display:grid; place-items:center;
}
.hs span{
  display:block; width:13px; height:13px; border-radius:50%;
  background:var(--shu-lit); box-shadow:0 0 0 2px rgba(255,255,255,.9), 0 2px 10px rgba(0,0,0,.5);
  transition:transform .3s var(--ease);
}
.hs::after{
  content:""; position:absolute; width:13px; height:13px; border-radius:50%;
  border:1.5px solid var(--shu-lit); animation:ping 2.4s var(--ease) infinite;
}
@keyframes ping{ 0%{ transform:scale(1); opacity:.85; } 70%,100%{ transform:scale(3.2); opacity:0; } }
.hs:hover span{ transform:scale(1.3); }
.hs.on span{ background:#fff; transform:scale(1.45); box-shadow:0 0 0 3px var(--shu), 0 2px 14px rgba(0,0,0,.6); }
.hs.on::after{ animation:none; opacity:0; }

.anat-panel{
  border:1px solid var(--line); background:#fff;
  padding:clamp(24px,3vw,34px); min-height:280px;
  box-shadow:0 18px 40px -30px rgba(33,28,22,.6);
}
.ap-no{
  font-family:var(--serif); font-size:12px; letter-spacing:.3em; color:var(--shu); margin:0 0 12px;
}
.ap-title{
  margin:0 0 4px; font-family:var(--serif); font-weight:700; font-size:clamp(21px,2.6vw,27px);
  color:var(--ink); letter-spacing:.03em;
}
.ap-ruby{ margin:0 0 18px; font-size:12px; letter-spacing:.22em; color:var(--kin); }
.ap-body{ margin:0; font-size:15.5px; line-height:2.05; color:#3a332a; }
.ap-body + .ap-body{ margin-top:14px; }
.ap-enter{ animation:apIn .45s var(--ease) both; }
@keyframes apIn{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:none; } }

.anat-extra{
  margin-top:clamp(32px,4vw,56px);
  display:grid; grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr); gap:clamp(20px,3vw,36px);
  align-items:start;
}

.ph{ margin:0; }
.ph img{ width:100%; border:1px solid var(--line); }
.ph figcaption{
  margin-top:13px; font-size:13.5px; line-height:1.95; color:var(--ink-soft);
  padding-left:14px; border-left:2px solid var(--kin);
}
.ph-dark img{ border-color:var(--line-lit); }
.ph-dark figcaption{ color:rgba(243,236,224,.55); border-left-color:var(--kin); }

/* ───────────── INSIDE ───────────── */
.inside-grid{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(30px,4.5vw,60px); align-items:start;
}
.plan-box{
  border:1px solid var(--line-lit); padding:clamp(18px,2.6vw,30px);
  background:rgba(243,236,224,.03);
}
.plan{ width:100%; height:auto; display:block; }
.p-wall{ fill:rgba(243,236,224,.04); stroke:var(--kin); stroke-width:1.4; }
.p-div{ stroke:var(--kin); stroke-width:.8; stroke-dasharray:5 6; opacity:.6; }
.p-kami{ fill:var(--shu); stroke:var(--shu-lit); stroke-width:1; }
.p-karahafu{ fill:none; stroke:var(--kin-lit); stroke-width:2.4; stroke-linecap:round; }
.p-door{ fill:var(--sumi); stroke:var(--kin-lit); stroke-width:1.2; }
.p-arrow{ fill:none; stroke:var(--kin-lit); stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; }
.p-lbl{ fill:var(--kin-lit); font-family:var(--serif); font-size:12px; letter-spacing:.2em; text-anchor:middle; }
.p-lbl-k{ fill:#fff; font-size:11px; letter-spacing:.18em; }
.p-zone{ fill:var(--kinari); font-family:var(--serif); font-size:21px; font-weight:700; letter-spacing:.16em; text-anchor:middle; }
.p-zone-en{ fill:var(--kin); font-size:10.5px; letter-spacing:.24em; text-anchor:middle; }
.p-note{ fill:rgba(243,236,224,.38); font-size:10.5px; letter-spacing:.12em; text-anchor:middle; }
.p-compass{ fill:rgba(243,236,224,.45); font-size:10.5px; letter-spacing:.16em; text-anchor:end; }
.plan-cap{ margin:18px 0 0; font-size:13.5px; line-height:1.95; color:rgba(243,236,224,.55); }

.inside-photos{ display:grid; gap:clamp(22px,3vw,34px); }

/* ───────────── VISIT ───────────── */
.visit-grid{
  display:grid; grid-template-columns:repeat(12,1fr); gap:clamp(16px,2.2vw,26px);
}
.card{
  background:#fff; border:1px solid var(--line); padding:clamp(22px,2.8vw,32px);
  box-shadow:0 18px 40px -34px rgba(33,28,22,.55);
}
.card-hours{ grid-column:span 4; }
.card-info{ grid-column:span 8; }
.card-map{ grid-column:span 7; }
.card-etiquette{ grid-column:span 5; background:var(--sumi); border-color:var(--sumi-3); color:rgba(243,236,224,.78); }

.card-h{
  margin:0 0 20px; font-family:var(--serif); font-weight:700; font-size:18px;
  letter-spacing:.14em; color:var(--ink);
  padding-bottom:12px; border-bottom:1px solid var(--line);
}
.card-etiquette .card-h{ color:var(--kinari); border-bottom-color:var(--line-lit); }

.hours{ width:100%; border-collapse:collapse; font-size:14.5px; }
.hours th{ text-align:left; font-weight:400; color:var(--ink-soft); padding:8px 0; letter-spacing:.1em; }
.hours td{ text-align:right; padding:8px 0; font-variant-numeric:tabular-nums; border-bottom:1px solid var(--line); }
.hours tr:last-child td{ border-bottom:0; }
.hours .off{ color:var(--shu); font-weight:700; }

.warn{
  margin:18px 0 0; padding:13px 15px; font-size:12.5px; line-height:1.85;
  color:#6b3a20; background:rgba(185,145,72,.12); border-left:3px solid var(--kin);
}

.kv{ margin:0; display:grid; grid-template-columns:auto minmax(0,1fr); gap:0 22px; font-size:14.5px; }
.kv dt{
  padding:10px 0; color:var(--ink-soft); letter-spacing:.12em; white-space:nowrap;
  border-top:1px solid var(--line);
}
.kv dd{ margin:0; padding:10px 0; line-height:1.85; border-top:1px solid var(--line); }
.kv dt:first-of-type, .kv dt:first-of-type + dd{ border-top:0; }
.kv a{ color:var(--shu); text-decoration:none; border-bottom:1px solid rgba(179,57,42,.35); }
.kv a:hover{ background:rgba(179,57,42,.08); }
.free{ color:var(--shu); font-size:17px; font-family:var(--serif); }

.kv-light dt{ color:rgba(243,236,224,.5); border-top-color:var(--line-lit); }
.kv-light dd{ color:rgba(243,236,224,.86); border-top-color:var(--line-lit); }
.kv-light .dim{ color:rgba(243,236,224,.42); font-size:12.5px; }

.btns{ display:flex; flex-wrap:wrap; gap:10px; margin-top:24px; }
.btn{
  display:inline-block; padding:12px 24px; font-size:14px; letter-spacing:.14em;
  text-decoration:none; border:1px solid var(--ink); color:var(--ink);
  transition:.25s var(--ease);
}
.btn:hover{ background:var(--ink); color:var(--kinari); }
.btn-primary{ background:var(--shu); border-color:var(--shu); color:#fff; }
.btn-primary:hover{ background:#8f2b1f; border-color:#8f2b1f; color:#fff; }

.map-frame{ position:relative; aspect-ratio:16/10; background:var(--kinari-2); border:1px solid var(--line); }
.map-frame iframe{ position:absolute; inset:0; width:100%; height:100%; }
.map-note{ margin:12px 0 0; font-size:12px; letter-spacing:.06em; color:var(--ink-soft); }

.tips{ margin:0; padding:0; list-style:none; }
.tips li{
  position:relative; padding:0 0 15px 24px; font-size:14.5px; line-height:1.95;
  color:rgba(243,236,224,.7);
}
.tips li:last-child{ padding-bottom:0; }
.tips li::before{
  content:""; position:absolute; left:2px; top:13px;
  width:7px; height:7px; border:1px solid var(--kin); transform:rotate(45deg);
}
.tips b{ color:var(--kin-lit); font-weight:500; }

/* ───────────── DATA ───────────── */
.data-grid{
  display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);
  gap:clamp(30px,5vw,64px); align-items:start;
}
.crit h3{
  margin:0 0 12px; font-family:var(--serif); font-size:15px; letter-spacing:.2em; color:var(--kin-lit);
}
.crit h3 + *{ margin-top:0; }
.crit > * + h3{ margin-top:30px; }
.crit-list{ margin:0; padding-left:1.4em; font-size:14.5px; line-height:2.05; color:rgba(243,236,224,.78); }
.law{ margin:0; font-size:14.5px; color:rgba(243,236,224,.78); }
.quote{
  margin:0; padding:20px 24px; font-family:var(--serif); font-size:15.5px; line-height:2.05;
  color:rgba(243,236,224,.84);
  background:rgba(243,236,224,.04); border-left:3px solid var(--shu);
}

/* ───────────── FOOT ───────────── */
.foot{ background:#0e0c09; color:rgba(243,236,224,.5); padding-top:clamp(50px,7vw,80px); }
.foot-in{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) minmax(0,1.2fr);
  gap:clamp(26px,4vw,56px); padding-bottom:44px;
}
.foot-brand{ margin:0; font-family:var(--serif); font-weight:700; font-size:22px; color:var(--kinari); letter-spacing:.18em; }
.foot-sub{ margin:6px 0 0; font-size:11px; letter-spacing:.24em; color:var(--kin); }
.foot h4{ margin:0 0 14px; font-size:12px; letter-spacing:.24em; color:var(--kin-lit); font-weight:500; }
.foot ul{ margin:0; padding:0; list-style:none; font-size:13px; line-height:1.95; }
.foot li{ margin-bottom:7px; }
.foot a{ color:rgba(243,236,224,.66); text-decoration:none; border-bottom:1px solid rgba(243,236,224,.18); }
.foot a:hover{ color:var(--kin-lit); border-bottom-color:var(--kin-lit); }
.foot-note{ margin:0; font-size:12.5px; line-height:1.95; }
.foot-bar{
  margin:0; padding:18px var(--pad); text-align:center;
  font-size:11.5px; letter-spacing:.2em; color:rgba(243,236,224,.28);
  border-top:1px solid rgba(243,236,224,.08);
}

/* ───────────── TO TOP ───────────── */
.totop{
  position:fixed; right:22px; bottom:22px; z-index:90;
  width:46px; height:46px; border-radius:50%;
  background:var(--shu); color:#fff; border:0; cursor:pointer;
  font-size:19px; line-height:1;
  opacity:0; pointer-events:none; transform:translateY(14px);
  transition:.35s var(--ease);
  box-shadow:0 8px 24px -8px rgba(0,0,0,.7);
}
.totop.show{ opacity:1; pointer-events:auto; transform:none; }
.totop:hover{ background:#8f2b1f; }

/* ───────────── REVEAL ───────────── */
.rv{ opacity:0; translate:0 30px; transition:opacity .9s var(--ease), translate .9s var(--ease); }
.rv.in{ opacity:1; translate:0 0; }

/* ───────────── RESPONSIVE ───────────── */
@media (max-width:1000px){
  .story-grid, .anat, .inside-grid, .data-grid, .anat-extra{ grid-template-columns:1fr; }
  .story-stats{ grid-template-columns:1fr 1fr; }
  .anat-panel{ min-height:0; }
  .card-hours, .card-info, .card-map, .card-etiquette{ grid-column:span 12; }
  .foot-in{ grid-template-columns:1fr 1fr; }
}

@media (max-width:760px){
  html{ scroll-padding-top:66px; }
  .nav-toggle{ display:flex; }
  .nav{
    position:absolute; top:100%; left:0; right:0;
    flex-direction:column; gap:0;
    background:rgba(21,18,14,.98); backdrop-filter:blur(12px);
    border-top:1px solid var(--line-lit);
    max-height:0; overflow:hidden; transition:max-height .45s var(--ease);
  }
  .topbar.open .nav{ max-height:520px; }
  .topbar.open{ background:rgba(21,18,14,.98); }
  .nav a{ padding:15px var(--pad); border-bottom:1px solid var(--line-lit); font-size:15px; }
  .nav a::after{ display:none; }

  .hero{ min-height:92svh; }
  .hero-title{ font-size:clamp(58px,22vw,110px); }
  .tl-item{ grid-template-columns:1fr; gap:6px; }
  .tl-year{ font-size:20px; }
  .story-stats{ grid-template-columns:1fr; }
  .foot-in{ grid-template-columns:1fr; }
  .kv{ grid-template-columns:1fr; gap:0; }
  .kv dt{ padding-bottom:0; border-top:1px solid var(--line); }
  .kv dd{ padding-top:2px; border-top:0; }
  .kv dt:first-of-type + dd{ border-top:0; }
  .hs{ width:34px; height:34px; }
}

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  .rv{ opacity:1; transform:none; }
}

@media print{
  .topbar,.totop,.hero-scroll,.nav-toggle,.map-frame{ display:none !important; }
  body{ background:#fff; color:#000; }
  .band-ink{ background:#fff; color:#000; }
  .band-ink .sec-title,.tl-card h3{ color:#000; }
}

/* ════════════════════════════════════════════════════════════
   特效層（fx.js 對應）
   ════════════════════════════════════════════════════════════ */

/* ── 捲動進度條 ── */
.progress{
  position:fixed; inset:0 0 auto 0; height:2px; z-index:110; pointer-events:none;
}
.progress i{
  display:block; height:100%; transform:scaleX(0); transform-origin:left;
  background:linear-gradient(90deg, var(--shu), var(--kin-lit) 70%, #fff);
  box-shadow:0 0 12px rgba(212,85,60,.6);
}

/* ── WebGL / Canvas 圖層 ── */
.fx-layer{
  position:absolute; inset:0; width:100%; height:100%;
  display:block; pointer-events:none; z-index:1;
}
.fx-layer.fx-fallback{ display:none; }
.fx-spark{
  position:fixed; inset:0; width:100vw; height:100vh;
  pointer-events:none; z-index:150;
}

/* ── 視差 ── */
[data-par]{ transform:translate3d(0, var(--py,0px), 0); will-change:transform; }

/* ── 滑鼠聚光 ── */
[data-spot]{ position:relative; }
[data-spot]::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  opacity:0; transition:opacity .45s var(--ease);
  background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%),
             rgba(216,181,120,.15), transparent 68%);
}
[data-spot]:hover::after{ opacity:1; }

/* ── 立體傾斜 ── */
[data-tilt]{
  transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  transition:transform .55s var(--ease), box-shadow .55s var(--ease);
  transform-style:preserve-3d;
}

/* ── 章節大標逐字浮現 ── */
.sec-title .ch{
  display:inline-block;
  opacity:0; filter:blur(10px); transform:translateY(.4em) scale(.96);
  transition:opacity .75s var(--ease) var(--d,0ms),
             filter .75s var(--ease) var(--d,0ms),
             transform .75s var(--ease) var(--d,0ms);
}
.sec-title.lit .ch{ opacity:1; filter:blur(0); transform:none; }

/* ── HERO 標題：金屬掃光 ── */
.hero-title{ filter:drop-shadow(0 14px 46px rgba(0,0,0,.7)); }
.hero-ch{
  display:block;
  background-image:linear-gradient(105deg,
    var(--kinari) 28%, #ffffff 42%, var(--kin-lit) 50%, var(--kinari) 62%);
  background-size:280% 100%;
  -webkit-background-clip:text; background-clip:text;
  color:transparent; -webkit-text-fill-color:transparent;
  animation:up 1.1s var(--ease) both, sheen 7s 2.2s linear infinite;
}
.hero-ch:nth-child(1){ animation-delay:.45s, 2.2s; }
.hero-ch:nth-child(2){ animation-delay:.58s, 2.5s; }
.hero-ch:nth-child(3){
  animation-delay:.71s, 2.8s;
  background-image:linear-gradient(105deg,
    var(--shu) 28%, #ff8c6b 42%, var(--kin-lit) 50%, var(--shu-lit) 62%);
}
@keyframes sheen{ 0%{ background-position:180% 0; } 45%,100%{ background-position:-80% 0; } }

.hero-alias{
  margin:-12px 0 24px; font-size:13.5px; letter-spacing:.14em;
  color:rgba(243,236,224,.62);
  animation:up 1s .78s var(--ease) both;
}
.hero-alias b{
  font-family:var(--serif); font-size:17px; font-weight:700;
  color:var(--kin-lit); letter-spacing:.2em; margin-right:6px;
}

/* ── 百年視差帶 ── */
.epic{
  position:relative; min-height:clamp(420px,72svh,700px);
  display:grid; place-items:center; overflow:hidden; background:var(--sumi);
  border-block:1px solid rgba(243,236,224,.08);
}
.epic-media{ position:absolute; inset:-14% 0; }
.epic-media img{
  width:100%; height:100%; object-fit:cover;
  filter:grayscale(.35) brightness(.38) contrast(1.15) saturate(.7);
}
.epic-veil{
  position:absolute; inset:0; z-index:2;
  background:radial-gradient(75% 75% at 50% 50%, rgba(21,18,14,.4), rgba(21,18,14,.94) 78%);
}
.epic .fx-layer{ z-index:3; }
.epic-body{
  position:relative; z-index:4; text-align:center;
  padding:clamp(56px,9vw,110px) var(--pad);
}
.epic-sup{
  margin:0 0 20px; font-size:11.5px; letter-spacing:.42em; color:var(--kin);
}
.epic-years{
  margin:0; display:flex; align-items:center; justify-content:center;
  gap:clamp(12px,3vw,34px);
  font-family:var(--serif); font-weight:900; line-height:1;
  font-size:clamp(44px,10.5vw,130px);
  color:var(--kinari); letter-spacing:.04em;
  font-variant-numeric:tabular-nums;
  filter:drop-shadow(0 10px 40px rgba(0,0,0,.8));
}
.epic-years em{ font-style:normal; font-size:.44em; color:var(--shu-lit); font-weight:400; }
.epic-sub{
  margin:26px 0 0; font-family:var(--serif); font-size:clamp(15px,2vw,19px);
  color:rgba(243,236,224,.74); letter-spacing:.06em;
}

/* ── 年表：中線隨捲動生長 ── */
.tl::after{
  content:""; position:absolute; left:0; top:6px; width:1px;
  height:calc((100% - 12px) * var(--grow, 0));
  background:linear-gradient(to bottom, var(--kin), var(--shu-lit));
  box-shadow:0 0 14px rgba(212,85,60,.55);
}
.tl-item .tl-card{
  padding:2px 0 2px 0;
}
.tl-item.is-loss::before{
  background:var(--sumi-3); border-color:rgba(243,236,224,.35);
  box-shadow:0 0 0 5px rgba(243,236,224,.06);
}
.tl-item.is-loss .tl-year{ color:rgba(243,236,224,.55); }

/* ── 材料清單 ── */
.mat{ margin-top:clamp(36px,4.5vw,58px); }
.mat-h{
  margin:0 0 18px; font-family:var(--serif); font-weight:700; font-size:16px;
  letter-spacing:.22em; color:var(--shu);
}
.mat-list{
  margin:0; padding:0; list-style:none;
  display:grid; grid-template-columns:repeat(auto-fit, minmax(272px,1fr)); gap:1px;
  background:var(--line); border:1px solid var(--line);
}
.mat-list li{
  background:#fff; padding:18px 20px; overflow:hidden;
  transition:background .35s var(--ease);
}
.mat-list li:hover{ background:#fffdf8; }
.mat-list b{
  display:block; font-family:var(--serif); font-size:17px; font-weight:700;
  color:var(--ink); letter-spacing:.08em; margin-bottom:5px;
}
.mat-list i{ font-style:normal; font-size:12.5px; line-height:1.8; color:var(--ink-soft); }

/* ── 老榕段 ── */
.band-banyan{ border-top:1px solid rgba(33,28,22,.09); }
.banyan-grid{
  display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
  gap:clamp(30px,4.5vw,62px); align-items:start;
}
.banyan-ph img{ filter:saturate(.72) contrast(1.02); }
.cap-archive{
  border-left-color:rgba(33,28,22,.3) !important;
  color:var(--ink-soft);
}
.cap-archive b{
  display:inline-block; margin-right:8px; padding:2px 8px;
  font-size:11px; letter-spacing:.16em; font-weight:500;
  background:rgba(33,28,22,.82); color:var(--kinari);
}
.banyan-text p{ margin:0 0 20px; font-size:16px; line-height:2.1; color:#3a332a; }
.pull-quiet{
  background:rgba(33,28,22,.05) !important;
  border-color:rgba(33,28,22,.14) !important;
  font-family:var(--serif); font-size:17px !important;
}
.src-note{ font-size:12.5px !important; color:var(--ink-soft) !important; line-height:1.85 !important; }

.hl{
  color:var(--shu); font-weight:700;
  background:linear-gradient(transparent 62%, rgba(179,57,42,.16) 62%);
}

.band-visit{ border-top:1px solid rgba(33,28,22,.09); }

/* ── 響應式補充 ── */
@media (max-width:1000px){
  .banyan-grid{ grid-template-columns:1fr; }
}
@media (max-width:760px){
  .epic-years{ gap:10px; }
  .hero-alias{ font-size:12px; }
  .mat-list{ grid-template-columns:1fr 1fr; }
}
@media (max-width:480px){
  .mat-list{ grid-template-columns:1fr; }
}

@media (prefers-reduced-motion:reduce){
  .hero-ch{ animation:none; }
  .sec-title .ch{ opacity:1; filter:none; transform:none; }
  [data-par]{ transform:none; }
  .tl::after{ height:calc(100% - 12px); }
}

@media print{
  .progress,.fx-layer,.fx-spark,.epic{ display:none !important; }
}
