/* KEEP 官方網站 — 靜態單頁 */
:root{--navy:#12233B;--navy2:#0E1D31;--ink:#0B1420;--orange:#FF5A1F;--orange-d:#C63C08;--steel:#6C90B0;--cream:#F5F6F7;--mute:#8B95A1;--line:#DEE2E7;--body-ink:#3A4756;--ok:#1A7F4B;
--disp:'Space Grotesk','Noto Sans TC',system-ui,sans-serif;--body:'Noto Sans TC',system-ui,sans-serif;--mono:'JetBrains Mono',ui-monospace,monospace;
--wrap:1120px;--pad:clamp(20px,5vw,48px)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--body);color:var(--ink);background:#fff;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
a{color:var(--orange-d);text-decoration:none}
a:hover{color:var(--navy)}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding-inline:var(--pad)}

/* 導覽 */
.nav{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.nav .in{display:flex;align-items:center;gap:clamp(12px,3vw,28px);min-height:64px}
.brand{display:flex;align-items:center;gap:9px;flex:none}
.brand svg{width:26px;height:26px}
.brand b{white-space:nowrap;font-family:var(--disp);font-weight:700;font-size:19px;letter-spacing:-.02em;color:var(--navy)}
.nav .links{display:flex;gap:clamp(10px,2.4vw,24px);margin-left:auto;flex-wrap:wrap}
.nav .links a{font-size:14.5px;font-weight:500;color:var(--body-ink)}
.nav .links a:hover{color:var(--orange-d)}
/* 會員登入：次要樣式。有邊框沒有填色，視覺層級明確低於實心的「加入 LINE」，
   但仍然是一顆看得出可以按的東西——純文字連結在一顆實心按鈕旁邊會被吃掉 */
.nav .login{flex:none;font-family:var(--disp);font-weight:700;font-size:14.5px;
  color:var(--navy);padding:9px 16px;border:1px solid var(--line);border-radius:999px;
  margin-left:auto}
.nav .login:hover{border-color:var(--navy);color:var(--orange-d)}
/* .links 顯示時由它接手靠右，登入鍵就不該再推一次 */
.nav .links ~ .login{margin-left:0}
.nav .cta{flex:none;background:var(--navy);color:var(--cream);font-family:var(--disp);font-weight:700;font-size:14.5px;padding:10px 18px;border-radius:999px}
.nav .cta:hover{background:var(--orange);color:var(--ink)}
/* 760px 以下 .links 整組隱藏（官網沒有漢堡選單），所以登入鍵要自己靠右。
   同時脫掉邊框與內距改成純文字：360px 寬的手機要同時放下品牌、登入、
   「加入 LINE」三樣東西，兩顆膠囊按鈕並排會擠到換行 */
/* 手機導覽選單（T-055）。桌機用 .links，這一顆整個不存在 */
.mnav{display:none;position:relative;flex:none}
.mnav summary{display:flex;align-items:center;justify-content:center;width:40px;height:40px;
  border-radius:10px;cursor:pointer;color:var(--navy);list-style:none;-webkit-tap-highlight-color:transparent}
/* 三家瀏覽器三種寫法，少一個就會多出一個三角形箭頭 */
.mnav summary::-webkit-details-marker{display:none}
.mnav summary::marker{content:''}
.mnav summary:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.bars{position:relative;display:block;width:20px;height:2px;background:currentColor;border-radius:2px}
.bars::before,.bars::after{content:'';position:absolute;left:0;width:20px;height:2px;
  background:currentColor;border-radius:2px}
.bars::before{top:-6px}
.bars::after{top:6px}
/* 展開後變成叉，使用者才知道再按一次會關起來 */
.mnav[open] .bars{background:transparent}
.mnav[open] .bars::before{top:0;transform:rotate(45deg)}
.mnav[open] .bars::after{top:0;transform:rotate(-45deg)}
.mnav-panel{position:absolute;top:calc(100% + 12px);right:-6px;min-width:190px;display:grid;
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:6px;
  box-shadow:0 18px 44px rgba(16,26,48,.18)}
/* 每一項至少 44px 高：手指按得到才算看得到 */
.mnav-panel a{padding:12px 14px;border-radius:10px;font-size:15px;font-weight:500;color:var(--body-ink)}
.mnav-panel a:hover,.mnav-panel a:focus-visible{background:var(--cream);color:var(--orange-d)}

@media(max-width:760px){
  .nav .links{display:none}
  /* 選單鍵放<b>最右邊</b>，面板才能貼著畫面邊緣落下。放在中間（例如登入鍵左邊）
     的話，面板會懸在畫面正中央，看起來像跳出來的東西而不是那顆鍵打開的 */
  .mnav{display:block}
  /* 選擇器要跟上面那條 `.links ~ .login` 一樣重：media query 本身不加權重，
     寫成 `.nav .login` 會輸給它，登入鍵就不會靠右 */
  .nav .links ~ .login{margin-left:auto}
  .nav .login{border:0;padding:0 2px;font-size:14px;font-weight:500}
}

/* 區塊骨架 */
section{padding-block:clamp(56px,9vw,104px)}
section.tint{background:#F7F9FA;border-block:1px solid var(--line)}
section.dark{background:var(--navy);color:var(--cream)}
.kick{font-family:var(--mono);font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--orange-d);margin:0 0 14px}
.dark .kick{color:var(--orange)}
h2{font-family:var(--disp);font-weight:700;font-size:clamp(26px,4.2vw,42px);line-height:1.2;letter-spacing:-.025em;color:var(--navy);margin:0 0 16px;text-wrap:balance}
.dark h2{color:var(--cream)}
h2 em{font-style:normal;color:var(--orange-d)}
.dark h2 em{color:var(--orange)}
.lede{margin:0;font-size:clamp(15px,1.6vw,18px);line-height:1.75;color:var(--body-ink);max-width:62ch;text-wrap:pretty}
.dark .lede{color:#C6D2DE}
.head{max-width:66ch;margin-bottom:clamp(32px,5vw,52px)}

/* Hero */
.hero{background:var(--navy);color:var(--cream);padding-block:clamp(56px,8vw,96px)}
.hero .grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(28px,5vw,64px);align-items:center}
.hero .tag{display:inline-block;font-family:var(--mono);font-size:12.5px;letter-spacing:.1em;color:var(--orange);border:1px solid rgba(255,90,31,.55);padding:6px 12px;border-radius:999px;margin-bottom:22px}
.hero h1{font-family:var(--disp);font-weight:700;font-size:clamp(32px,6vw,60px);line-height:1.14;letter-spacing:-.035em;margin:0 0 20px;text-wrap:balance}
.hero h1 em{font-style:normal;color:var(--orange);display:block}
.hero p{margin:0 0 30px;font-size:clamp(15px,1.8vw,19px);line-height:1.7;color:#CFD9E3;max-width:46ch}
.hero p strong{color:#fff;font-weight:700}
.btns{display:flex;flex-wrap:wrap;gap:12px}
.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--disp);font-weight:700;font-size:15.5px;padding:14px 24px;border-radius:999px;border:1.5px solid transparent}
.btn.p{background:var(--orange);color:var(--ink)}
.btn.p:hover{background:#fff;color:var(--navy)}
.btn.s{border-color:rgba(245,246,247,.4);color:var(--cream)}
.btn.s:hover{border-color:var(--orange);color:var(--orange)}
.hero .card{background:#fff;color:var(--ink);border-radius:18px;padding:clamp(22px,3vw,32px);box-shadow:0 24px 60px rgba(4,12,24,.35)}
.hero .card h3{font-family:var(--disp);font-weight:700;font-size:20px;color:var(--navy);margin:0 0 6px}
.hero .card p{color:var(--body-ink);font-size:14px;line-height:1.6;margin:0 0 18px}
.hero .card .qr{display:block;width:min(200px,100%);aspect-ratio:1;margin:0 auto 16px;border:1px solid var(--line);border-radius:12px;padding:10px}
.hero .card .qr img{width:100%;height:100%;object-fit:contain}
.hero .card .note{font-family:var(--mono);font-size:12px;color:var(--mute);text-align:center;line-height:1.6;margin:0}
@media(max-width:860px){.hero .grid{grid-template-columns:1fr}}

/* 功能卡 */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:clamp(14px,2vw,22px)}
#partner .cards{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}
.c{background:#fff;border:1px solid var(--line);border-radius:14px;padding:clamp(20px,2.4vw,28px)}
.tint .c{background:#fff}
.c .ic{width:44px;height:44px;border-radius:10px;background:var(--navy);display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.c .ic svg{width:24px;height:24px}
.c h3{font-family:var(--disp);font-weight:700;font-size:19px;color:var(--navy);margin:0 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.c p{margin:0;font-size:14.5px;line-height:1.7;color:var(--body-ink)}
.ai{font-family:var(--disp);font-weight:700;font-size:11.5px;letter-spacing:.04em;color:#B03F12;background:#FFE8DE;padding:4px 8px;border-radius:6px;white-space:nowrap}
.foot-note{margin:clamp(18px,2.5vw,26px) 0 0;font-family:var(--mono);font-size:13px;line-height:1.7;color:var(--mute)}

/* 步驟 */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:clamp(18px,3vw,32px);counter-reset:s}
.steps li{list-style:none;padding-top:18px;border-top:2px solid var(--orange)}
.steps u{text-decoration:none;display:block;font-family:var(--mono);font-weight:700;font-size:26px;color:var(--orange-d);line-height:1;margin-bottom:12px}
.steps b{display:block;font-family:var(--disp);font-weight:700;font-size:19px;color:var(--navy);margin-bottom:8px}
.steps span{display:block;font-size:14.5px;line-height:1.7;color:var(--body-ink)}

/* 進步／飲食卡 */
.report{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:clamp(16px,2.5vw,24px);align-items:start}
.pcard,.dcard{background:#fff;border:1px solid var(--line);border-radius:14px;padding:clamp(20px,2.4vw,28px)}
.pcard .ph{padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:18px}
.pcard .ph b{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-family:var(--disp);font-weight:700;font-size:20px;color:var(--navy)}
.pcard .ph s{text-decoration:none;display:block;font-size:13px;color:var(--mute);margin-top:7px}
.mv{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 14px;align-items:baseline;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid #EEF1F4}
.mv:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}
.mv b{font-family:var(--disp);font-weight:700;font-size:16.5px;color:var(--navy)}
.mv u{text-decoration:none;font-family:var(--disp);font-weight:700;font-size:16.5px;color:var(--ok);white-space:nowrap}
.mv u.flat{color:var(--mute)}
.mv s{text-decoration:none;grid-column:1/-1;font-family:var(--mono);font-size:12.5px;color:#8A939D}
.dcard .dh{display:flex;align-items:baseline;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:18px}
.dcard .dh b{font-family:var(--disp);font-weight:700;font-size:20px;color:var(--navy)}
.dcard .dh s{text-decoration:none;margin-left:auto;font-family:var(--mono);font-size:12.5px;color:var(--mute)}
.dcard .st{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(120px,100%),1fr));gap:18px}
.dcard .st em{font-style:normal;display:block;font-size:13.5px;color:var(--body-ink);margin-bottom:7px}
.dcard .st i{font-style:normal;display:block;font-family:var(--disp);font-weight:700;font-size:26px;color:var(--navy);line-height:1}
.dcard .st u{text-decoration:none;display:block;font-family:var(--mono);font-size:12px;color:var(--mute);margin-top:7px}

/* 點數 */
.pts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr));gap:clamp(14px,2vw,22px)}
.pt{border:1px solid rgba(245,246,247,.2);border-radius:14px;padding:clamp(20px,2.4vw,28px);background:rgba(245,246,247,.05)}
.pt b{display:block;font-family:var(--disp);font-weight:700;font-size:18px;color:var(--cream);margin-bottom:10px}
.pt p{margin:0;font-size:14.5px;line-height:1.7;color:#C6D2DE}
.pt .n{display:block;font-family:var(--mono);font-weight:700;font-size:13px;color:var(--orange);margin-bottom:12px}
/* 「走過的路，自己決定給誰看」（T-145 新增的區塊 / T-150 補樣式）。
   ⚠️ T-145 把這個區塊加進 home.php 卻<b>沒有在這裡加樣式</b>，所以它上線後是
   用瀏覽器預設值在排——旁邊是 .pt 那幾張做過的卡片，對比很明顯，而且段落會
   跑到整個 .wrap 寬（桌機上約 1024px、每行 64 個中文字）。
   設計語言沿用 .pt：同樣的半透明邊框與圓角，標題用 var(--disp)，內文 #C6D2DE。
   ⚠️ 段落限 60ch：這一段是四段說明文字，是這個區塊裡唯一會長到需要限寬的東西。 */
.share-note{margin-top:clamp(14px,2vw,22px);border:1px solid rgba(245,246,247,.2);border-radius:14px;padding:clamp(20px,2.4vw,28px);background:rgba(245,246,247,.05)}
.share-note h3{margin:0 0 12px;font-family:var(--disp);font-weight:700;font-size:18px;color:var(--cream)}
.share-note p{margin:0;max-width:60ch;font-size:14.5px;line-height:1.7;color:#C6D2DE}
.share-note p+p{margin-top:10px}
.share-note b{color:var(--cream);font-weight:700}

/* FAQ */
.faq{display:grid;gap:0;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:14px;padding:20px 0;font-family:var(--disp);font-weight:700;font-size:clamp(16px,1.9vw,19px);color:var(--navy)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"＋";margin-left:auto;color:var(--orange-d);font-weight:700;flex:none}
.faq details[open] summary::after{content:"－"}
.faq p{margin:0 0 22px;font-size:15px;line-height:1.8;color:var(--body-ink);max-width:70ch}

/* 頁尾 */
footer{background:var(--navy2);color:#9FB0C2;padding-block:clamp(36px,5vw,56px);font-size:13.5px}
footer .in{display:flex;flex-wrap:wrap;gap:20px 40px;align-items:flex-start}
footer .brand b{color:var(--cream)}
footer p{margin:0;line-height:1.75;max-width:56ch}
footer .tagline{color:var(--cream);font-weight:600;letter-spacing:.06em;white-space:nowrap}
footer .fine{font-size:12.5px;color:#7C8FA3;border-top:1px solid rgba(255,255,255,.1);margin-top:28px;padding-top:20px;line-height:1.7}
/* 場館管理後台的入口。設計稿沒有這一項——是根路徑讓給官網之後補的功能性連結，
   所以用頁尾最淡的顏色、放在最底，不跟任何行銷內容搶位置 */
footer .staff{margin-top:14px;font-size:12.5px}
/* T-254：連結與後面的備註原本緊貼在一起（「場館管理後台限工作人員」）。備註改成小一點、淡一點、前面留空 */
footer .staff small{margin-left:.8em;font-size:11.5px;color:#6B7F94}
footer .staff + .staff{margin-top:6px}
footer .staff a{color:#7C8FA3;text-decoration:underline;text-underline-offset:3px}
footer .staff a:hover{color:var(--cream)}

/* 錨點捲動的留白。
   導覽列是 sticky（min-height 64px），不留這個的話點「怎麼記錄」捲過去之後，
   該區塊的標題會被導覽列蓋住——handoff 的 Interactions 有列這一項，
   但 prototype 的 CSS 裡沒有，補上。 */
section[id]{scroll-margin-top:76px}

/* 頁尾的會員登入。比 .staff 明顯（會員該找得到），但不搶頁尾正文。
   ⚠️ 頁尾是深底（--navy2），顏色一定要是亮色——用 --navy 會整行看不見 */
footer .member{margin-top:18px;font-size:13.5px}
footer .member a{color:var(--cream);text-decoration:underline;text-underline-offset:3px}
footer .member a:hover{color:var(--orange)}

/* ── 下一座山（CHG-046）──────────────────────────────────────────
   ⚠️ hidden 屬性要擋得住：底下的 .mtn-cta > div 有 display，而<b>任何作者端的
   display 規則都會蓋掉 hidden 的預設值</b>。沒有這一條的話，兩組行動按鈕會同時
   出現——這個坑在會員專區的功能選單上發生過一次。 */
[hidden]{display:none !important}

.mtn{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(20px,3vw,40px);
  align-items:center;margin-bottom:clamp(28px,4vw,44px)}
.mtn svg{display:block;width:100%;height:auto;border-radius:18px;background:#141F36}
.mtn-lab{margin:0;font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:#8792A8}
.mtn-val{margin:6px 0 0;font-family:var(--disp);font-weight:700;font-size:clamp(34px,5vw,44px);
  line-height:1.05;color:var(--cream)}
.mtn-val s{text-decoration:none;font-size:18px;margin-left:8px}
.mtn-msg{margin:12px 0 0;font-size:15.5px;line-height:1.75;color:#C6D2DE}
.mtn-cta{margin-top:clamp(22px,3vw,32px)}
.mtn-cta > div{display:flex;flex-wrap:wrap;gap:12px}

/* 路徑一次畫出來。⚠️ 這是裝飾，不是資訊——所以 stroke-dashoffset 的<b>終點</b>
   才是真正的比例（35 ＝ 走了 65%），動畫只是從 100 走到那裡。
   關掉動畫的人看到的是同一張圖，沒有少任何東西。 */
@media (prefers-reduced-motion: no-preference){
  .mtn .trail{animation:mtn-draw 1.2s ease-out both}
  .mtn .dot{animation:mtn-dot 1.2s ease-out both}
  @keyframes mtn-draw{from{stroke-dashoffset:100}to{stroke-dashoffset:35}}
  @keyframes mtn-dot{from{opacity:0}60%{opacity:0}to{opacity:1}}
}

@media(max-width:760px){
  .mtn{grid-template-columns:1fr;gap:20px}
}

/* 320px 這種窄螢幕，四樣東西擠在同一列裡（標誌／登入／加入 LINE／選單鍵），
   間距與字級要自己收，否則最右邊的選單鍵會被擠出畫面 */
@media(max-width:420px){
  .nav .in{gap:6px}
  .nav .cta{padding:9px 12px;font-size:13px}
  .nav .login{font-size:13px}
  .brand b{font-size:16.5px}
  .brand svg{width:23px;height:23px}
  .mnav summary{width:34px}
}
@media(max-width:340px){
  /* 真的放不下就把標誌的字拿掉，留下 K 的圖形——它本身就是連回首頁的按鈕 */
  .brand b{display:none}
}

/* ── 圖解介紹 /story（T-151）──────────────────────────────────────
   四張六格漫畫：電腦 3×2，760px 以下一格直排（斷點跟官網其他區塊一致）。
   圖片本身帶白底加深藍圓角框，所以 .strip 不再畫卡片框——雙框會很吵。 */
.story-hero{padding-block:clamp(44px,7vw,80px) clamp(8px,2vw,16px)}
.story-hero h1{font-family:var(--disp);font-weight:700;font-size:clamp(30px,5.4vw,52px);line-height:1.15;letter-spacing:-.03em;color:var(--navy);margin:0 0 16px;text-wrap:balance}
.story-hero h1 em{font-style:normal;color:var(--orange-d)}
.strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2.4vw,26px) clamp(14px,2vw,22px);align-items:start}
.strip figure{margin:0}
.strip img{width:100%;height:auto;border-radius:12px}
.strip figcaption{margin-top:10px}
/* figcaption 是每格重點文字的正確版本（圖內文字搜尋引擎讀不到），
   不是裝飾——字級跟卡片內文同級，不要縮成圖說的小灰字 */
.strip figcaption b{display:block;font-family:var(--disp);font-weight:700;font-size:16px;color:var(--navy);margin-bottom:4px}
.strip figcaption span{display:block;font-size:14.5px;line-height:1.7;color:var(--body-ink)}
.dark .strip figcaption b{color:var(--cream)}
.dark .strip figcaption span{color:#C6D2DE}
@media(max-width:760px){.strip{grid-template-columns:1fr;gap:30px}}
/* 段尾的單行連結（/story 的 gym 段與結尾、首頁 #how 段尾共用一種樣子） */
.sec-link{margin-top:clamp(18px,2.5vw,26px);font-size:15px;font-weight:500}
.dark .sec-link a{color:var(--orange)}
.more-link{margin-top:12px;font-size:14.5px;font-weight:500}

/* ── hero 輪播（T-152）────────────────────────────────────────────
   grid 疊放：所有 slide 佔同一格，容器高度＝最高的一張，輪播時高度不跳。
   非當前的 slide 用 visibility 藏：同時擋掉點擊與輔助技術的朗讀，
   不需要另外管 tabindex 或 aria-hidden。
   沒有 JS 時：HTML 只有第一張帶 .is-on（QR 卡），圓點是 JS 生成的——
   頁面看起來就是改版前那張卡。 */
.hero .card .slides{display:grid}
/* 手指左右滑換張（🐞 T-162）。pan-y：上下捲動照樣交給瀏覽器，
   水平方向留給輪播自己判斷——少了這一行，iPhone 會把水平手勢也當成捲動吃掉 */
.hero .card[data-carousel]{touch-action:pan-y}
.hero .card .slide{grid-area:1/1;visibility:hidden;opacity:0;transition:opacity .45s}
.hero .card .slide.is-on{visibility:visible;opacity:1}
@media (prefers-reduced-motion: reduce){.hero .card .slide{transition:none}}
.hero .card a.slide{display:block;color:inherit}
.hero .card .slide>img{width:100%;height:auto;border-radius:12px}
.hero .card .slide .cap{display:block;margin-top:12px;font-family:var(--disp);font-weight:700;font-size:18px;color:var(--navy)}
.hero .card .slide .go{display:block;margin-top:4px;font-size:13.5px;font-weight:500;color:var(--orange-d)}
.hero .card a.slide:hover .go{color:var(--navy)}
/* 圓點：44px 的可按範圍（手指），視覺上是 10px 的點。
   ⚠️ 原本註解寫 44px、實際是 32px（T-162 抓到）。5 顆 × 44px 在 320 寬的手機也放得下 */
.hero .card .dots{display:flex;justify-content:center;gap:0;margin-top:4px}
.hero .card .dots button{width:44px;height:44px;border:0;padding:0;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center}
.hero .card .dots button::before{content:'';width:10px;height:10px;border-radius:50%;background:var(--line)}
.hero .card .dots button:hover::before{background:var(--steel)}
.hero .card .dots button[aria-current="true"]::before{background:var(--orange)}
.hero .card .dots button:focus-visible{outline:2px solid var(--orange);outline-offset:-4px;border-radius:50%}

/* ── 合作場域（T-226）────────────────────────────────────────────
   首頁 #partner 底下的清單，與 /venues/{id} 場域頁。
   官網每個場域只顯示名稱、行政區、器材照片（使用者定案），所以卡片就這三樣。
   照片一律 4:3 裁切顯示（object-fit），手機拍的直式、橫式混在一起也排得整齊。 */
.venues{margin-top:clamp(32px,5vw,52px)}
.venues-h{font-family:var(--disp);font-weight:700;font-size:20px;color:var(--navy);margin:0 0 16px}
.venue-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:clamp(14px,2vw,22px)}
.venue-card{display:block;height:100%;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;color:var(--ink)}
.venue-card:hover{border-color:var(--steel);color:var(--ink)}
.venue-card img,.venue-card .venue-ph{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;background:var(--cream)}
.venue-card b{display:block;padding:14px 16px 2px;font-family:var(--disp);font-weight:700;font-size:17px;color:var(--navy)}
.venue-card span:not(.venue-ph){display:block;padding:0 16px 14px;font-size:14px;color:var(--mute)}
.venue-card b:last-child{padding-bottom:14px}
.venue-hero{padding-block:clamp(44px,7vw,80px) clamp(8px,2vw,16px)}
.venue-hero h1{font-family:var(--disp);font-weight:700;font-size:clamp(28px,5vw,48px);line-height:1.2;letter-spacing:-.02em;color:var(--navy);margin:0 0 10px;text-wrap:balance;overflow-wrap:anywhere}
.venue-district{margin:0;font-size:16px;color:var(--body-ink)}
.venue-photos{padding-top:clamp(20px,3vw,32px)}
.venue-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2.4vw,26px) clamp(14px,2vw,22px);align-items:start}
.venue-grid figure{margin:0}
.venue-grid img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:12px;background:var(--cream)}
.venue-grid figcaption{margin-top:8px;font-size:14.5px;font-weight:500;color:var(--navy)}
@media(max-width:860px){.venue-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.venue-grid{grid-template-columns:1fr;gap:22px}}
