/*THEME:TOKENS — 單一來源:地圖與靜態頁共用(build_site.py 會讀取這段產生 site.css)*/
:root{
  color-scheme:dark;
  /* 色彩:深海軍藍底、青藍光線 */
  --bg:#06111F; --bg-2:#0A1A2E; --surface:#0D2036; --panel:rgba(13,32,54,.82); --panel-2:rgba(19,44,72,.70);
  --ink:#E8F2F8; --muted:#A3BACB; --rule:rgba(122,190,230,.16); --rule-strong:rgba(122,190,230,.34); --chip:rgba(69,180,230,.10);
  --teal:#45D0EE; --teal-ink:#8BE4F7; --focus:#8BE4F7; --star-off:#2E4C68;
  /* 星等五階(青藍同色系,越亮越多星) */
  --s0:#13283F; --s1:#163B5A; --s2:#1B5878; --s3:#227E9C; --s4:#33A9C6; --s5:#86E1F2;
  /* 地圖 */
  --sea:#050F1C; --zone-line:#CFE6F2; --fade:.30; --seam:rgba(5,15,28,.85); --grid-line:rgba(110,190,235,.055);
  --land-ctx:#132538; --land-ctx-line:rgba(150,190,220,.22); --sea-dash:#6FD3F0; --sea-dash-opacity:.2; --sea-dash-gap:22px; --hover-lift:1.35;
  --z-north:#24507F; --z-west:#1C6B72; --z-central:#3E4386; --z-east:#226F96; --z-south:#3E566C;
  --zl-north:#7EB0EA; --zl-west:#62D3D8; --zl-central:#A7ACF5; --zl-east:#7ED2F6; --zl-south:#AFC4D6;
  /* 間距、圓角、陰影、邊框、發光、動態 */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px;
  --r-sm:6px; --r-md:10px; --r-lg:14px; --r-pill:999px;
  --border:1px solid var(--rule); --border-strong:1px solid var(--rule-strong);
  --shadow-panel:inset 0 1px 0 rgba(255,255,255,.04), 0 10px 30px rgba(0,0,0,.35);
  --glow-sm:0 0 0 1px rgba(69,208,238,.45), 0 0 10px rgba(69,208,238,.20);
  --glow-line:linear-gradient(90deg,transparent,rgba(69,208,238,.55),transparent);
  --t-fast:.16s; --t-med:.3s;
  /* 字體 */
  --f-display:'Barlow Semi Condensed','Noto Sans TC',system-ui,sans-serif;
  --f-body:'IBM Plex Sans','Noto Sans TC',system-ui,sans-serif;
  --f-data:'IBM Plex Mono',ui-monospace,Menlo,monospace;
}
/*/THEME:TOKENS*/
.flinks a{margin:0 2px}.zsum ul{padding-left:1.2em;line-height:1.7}.badge{display:inline-block;font-size:11px;padding:1px 6px;margin-left:4px;border-radius:999px;border:1px solid var(--teal);color:var(--teal-ink)}
.zsum ul.pcards{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.zsum ul.pcards li{display:grid;grid-template-columns:28px 1fr;column-gap:10px;align-items:center;padding:10px 12px;background:var(--panel);border:var(--border);border-radius:var(--r-md);line-height:1.4}
.zsum .pic{color:var(--teal);grid-row:span 2}
.zsum .pn{font-weight:600;color:var(--ink)}.zsum .pm{font-size:13px;color:var(--muted)}
.zsum .plegend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--muted)}.zsum .plegend span{display:inline-flex;align-items:center;gap:6px}.zsum .plegend .pic{width:18px;height:18px}.zsum ul ul{margin:.3em 0}.zsum ul.cols{columns:2;column-gap:2em}@media(max-width:560px){.zsum ul.cols{columns:1}}

*{box-sizing:border-box}
body{margin:0;color:var(--ink);font:16px/1.65 var(--f-body);background:radial-gradient(1000px 500px at 10% -10%,rgba(40,120,190,.16),transparent 60%),linear-gradient(180deg,var(--bg-2),var(--bg) 380px);background-color:var(--bg)}
.wrap{max-width:900px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:18px 48px}
a{color:var(--teal-ink)}
nav.top{position:relative;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;padding-bottom:12px;font-size:14px}
nav.top::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--glow-line)}
nav.top .brand{font:700 20px var(--f-display);color:var(--ink);text-decoration:none;letter-spacing:.01em}
nav.top .links{display:flex;gap:14px;flex-wrap:wrap}
.crumbs{font-size:13px;color:var(--muted);margin:18px 0 0}.crumbs a{color:var(--muted)}
h1{font:700 clamp(30px,5vw,44px)/1.08 var(--f-display);margin:8px 0 12px;text-wrap:balance;letter-spacing:.01em}
h2{font:600 22px/1.25 var(--f-display);margin:36px 0 12px;text-wrap:balance;color:var(--ink);letter-spacing:.02em}
h2::before{content:"";display:inline-block;width:10px;height:2px;background:var(--teal);vertical-align:middle;margin-right:10px;box-shadow:0 0 6px rgba(69,208,238,.6)}
p{max-width:68ch}.lede{background:var(--panel);border:var(--border-strong);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);box-shadow:var(--shadow-panel)}
.lede p{margin:0 0 8px}.lede p:last-child{margin:0}
.btn{display:inline-block;border:1px solid var(--teal);border-radius:var(--r-sm);padding:8px 14px;text-decoration:none;font-weight:600;margin-top:14px;color:var(--teal-ink);background:var(--chip);transition:box-shadow var(--t-fast)}
.btn:hover{box-shadow:var(--glow-sm)}
.tablebox{overflow-x:auto;background:var(--panel);border:var(--border);border-radius:var(--r-md);padding:4px var(--sp-4)}
table{width:100%;border-collapse:collapse;font-size:15px;font-variant-numeric:tabular-nums}
th{text-align:left;font:500 11px var(--f-data);letter-spacing:.08em;text-transform:uppercase;color:var(--teal-ink);border-bottom:var(--border-strong);padding:10px 10px 8px 0}
td{border-bottom:var(--border);padding:9px 10px 9px 0;vertical-align:top}tr:last-child td{border-bottom:0}
td.n{font-family:var(--f-data);font-size:14px}.profile td:first-child{width:55%;color:var(--muted)}
.stars{color:var(--teal);letter-spacing:1px;white-space:nowrap}.stars .off{color:var(--star-off)}.na{color:var(--muted);font:500 12px var(--f-data)}
.note{border-left:3px solid var(--teal);padding:2px 0 2px 12px;color:var(--muted);font-size:14px}
ul{padding-left:18px}ul.cols{columns:2;column-gap:28px}@media (max-width:520px){ul.cols{columns:1}}
.ad{border:1px dashed var(--rule-strong);border-radius:var(--r-md);min-height:110px;display:grid;place-items:center;color:var(--muted);font-size:12px;margin:28px 0;background:rgba(5,15,28,.4)}
.langbar{background:var(--panel-2);border:var(--border);border-radius:var(--r-sm);padding:8px 12px;font-size:14px;margin:12px 0 0;display:flex;gap:10px;align-items:center;justify-content:space-between}
.langbar button{border:0;background:none;color:var(--muted);cursor:pointer;font:inherit}
footer{border-top:var(--border);margin-top:44px;padding-top:12px;font-size:13px;color:var(--muted)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}