:root{--cream:#F3ECE0;--sheet:#FBF7F0;--ink:#241C16;--mute:#6E6258;--gold:#B07D3F;--rose:#D38A86;--sage:#7C8C6B;--jade:#4E7468;--line:#E3D6C3;--blush:#F6E1DA;--mint:#E3EDE4;--sky:#E2E8F2}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--cream);color:var(--ink);font:17px/1.75 "Noto Sans TC",system-ui,sans-serif}
html[lang=en] body{font-family:Fraunces,Georgia,serif;font-size:18px;line-height:1.65}
a{color:var(--jade)}a:hover{color:var(--gold)}
.sh{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 22px;border-bottom:1px solid var(--line);background:var(--sheet);position:sticky;top:0;z-index:2}
.sh .brand{font:600 15px/1 "IBM Plex Mono",monospace;letter-spacing:.18em;color:var(--ink);text-decoration:none}
.sh nav{display:flex;gap:16px;font:500 13px/1 "IBM Plex Mono",monospace;letter-spacing:.06em}.sh nav a{text-decoration:none;color:var(--mute)}.sh nav a:hover{color:var(--ink)}
main{max-width:760px;margin:0 auto;padding:32px 22px 56px}
.kick{font:500 12px/1.4 "IBM Plex Mono",monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin:0 0 10px}
h1{font:600 clamp(32px,6vw,52px)/1.1 Fraunces,"Noto Serif TC",serif;margin:0 0 6px;letter-spacing:-.01em}
h1 small{display:block;font:400 20px/1.4 "Noto Serif TC",serif;color:var(--mute);margin-top:8px}
h2{font:600 22px/1.3 Fraunces,"Noto Serif TC",serif;margin:36px 0 12px}
h3{font:600 18px/1.4 Fraunces,"Noto Serif TC",serif;margin:26px 0 6px}
.hero{margin:22px 0 8px;border-radius:18px;overflow:hidden;background:var(--sheet);border:1px solid var(--line)}
.hero img{display:block;width:100%;height:auto;max-height:520px;object-fit:cover;object-position:top}
.lede{font-size:1.06em}
.card{background:var(--sheet);border:1px solid var(--line);border-radius:16px;padding:6px 20px;margin:14px 0}
.card.js{background:var(--blush);border-color:#EBCFC6}.card.notes{background:var(--mint);border-color:#CFDDD1}
.notes li{margin:10px 0}.notes .ar{font:500 12px/1.4 "IBM Plex Mono",monospace;color:var(--mute);letter-spacing:.06em;display:block}
.notes .od{display:block;color:var(--jade);font-size:.94em}
ul{padding-left:1.2em}
dd small.hc{display:block;font-size:12px;color:var(--mute)}dl{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:18px 0}dt{font:500 12px/2 "IBM Plex Mono",monospace;letter-spacing:.1em;color:var(--mute);text-transform:uppercase}dd{margin:0}
.acts{display:flex;flex-wrap:wrap;gap:10px;margin:28px 0}
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:999px;background:var(--ink);color:var(--sheet);text-decoration:none;font:500 14px/1.2 "IBM Plex Mono",monospace;letter-spacing:.04em}
.btn:hover{background:var(--jade);color:#fff}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--ink)}.btn.ghost:hover{background:var(--ink);color:var(--sheet)}
.chips{display:flex;flex-wrap:wrap;gap:8px;padding:0;list-style:none}.chips a{display:inline-block;padding:6px 12px;border-radius:999px;background:var(--sheet);border:1px solid var(--line);text-decoration:none;color:var(--ink);font-size:.92em}
.chips a:hover{border-color:var(--gold)}
.secs{counter-reset:s;padding:0;list-style:none}.secs>li{margin:0 0 6px}
.idx h2{font-size:18px;margin-top:30px}.idx ul{columns:2;column-gap:28px;padding-left:1em}.idx li{break-inside:avoid;margin:2px 0}
.small{font-size:.86em;color:var(--mute)}
footer{border-top:1px solid var(--line);padding:22px;text-align:center;font:400 13px/1.7 "IBM Plex Mono",monospace;color:var(--mute)}
@media(max-width:560px){body{font-size:16px}.idx ul{columns:1}.sh{padding:12px 16px}.sh nav{gap:12px}main{padding:24px 18px 44px}}
