:root{--paper: #e7dfd0;--sheet: #f7f1e6;--ink: #1c1710;--mute: #6a6154;--rule: #c9beab;--ice: #0b5f56;--ice-soft: #cfe4dc;--clay: #b56a32;--rose: #8f2d24;--rose-soft: #f0d2cc;--good: #1d5c3a;--serif: "Newsreader", "Iowan Old Style", Georgia, serif;--sans: "Outfit", "Avenir Next", sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--ink);background:linear-gradient(180deg,rgba(255,255,255,.28),transparent 180px),repeating-linear-gradient(0deg,transparent,transparent 23px,rgba(28,23,16,.035) 24px),repeating-linear-gradient(90deg,transparent,transparent 23px,rgba(28,23,16,.035) 24px),var(--paper);font-family:var(--sans);font-weight:440}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.18;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}button,input{font:inherit;color:inherit}button{cursor:pointer}.app{width:min(1280px,calc(100% - 32px));margin:18px auto 28px;background:var(--sheet);border:1px solid var(--ink);box-shadow:0 24px 70px #281c0c1f;display:grid;grid-template-rows:auto auto 1fr auto;min-height:calc(100vh - 46px)}.mast{display:grid;grid-template-columns:220px 1fr auto;border-bottom:1px solid var(--ink)}.block{padding:16px 18px 14px;border-right:1px solid var(--ink)}.block:last-child{border-right:0}.block small,.kicker{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}.block b{display:block;margin-top:6px;font-family:var(--serif);font-size:28px;font-weight:500;letter-spacing:-.04em;line-height:.95}.block p{margin:8px 0 0;color:var(--mute);font-size:13px}.identity{min-width:0}.identity b{font-size:34px}.controls{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-end;gap:10px;padding:14px 16px}.controls small{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}.controls b{display:block;font-family:var(--serif);font-weight:500;letter-spacing:-.03em}.controls p{margin:4px 0 0;color:var(--mute);font-size:12px}.seg,.chips{display:flex;border:1px solid var(--ink);background:#fffdf8}.seg button,.chips button,.icon-btn{border:0;background:transparent;padding:8px 12px;color:var(--mute)}.seg button+button,.chips button+button{border-left:1px solid var(--rule)}.seg button[aria-pressed=true],.chips button[aria-pressed=true]{background:var(--ink);color:var(--sheet)}.icon-btn{border:1px solid var(--ink);min-width:42px}.nav{display:grid;grid-template-columns:repeat(6,1fr);border-bottom:1px solid var(--ink)}.nav button{border:0;background:transparent;text-align:left;padding:12px 16px 14px;border-right:1px solid var(--rule);color:var(--mute)}.nav button:last-child{border-right:0}.nav button small{font-family:var(--mono);font-size:10px;letter-spacing:.12em}.nav button b{display:block;margin-top:4px;font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:-.03em;color:inherit}.nav button em{display:block;margin-top:3px;font-style:normal;font-size:12px;color:var(--mute)}.nav button[aria-current=page]{background:var(--ice-soft);color:var(--ink)}.stage{padding:18px;display:grid;gap:16px}.hero,.story,.row{display:grid;grid-template-columns:1.15fr .85fr;gap:16px}.pane{border:1px solid var(--rule);background:#fffdf8;padding:20px 22px;min-width:0}.pane h2,.wide h2{margin:0;font-family:var(--serif);font-weight:500;letter-spacing:-.035em;line-height:.95;font-size:clamp(28px,3.4vw,42px)}.lede{margin:10px 0 0;max-width:42ch;color:var(--mute);line-height:1.45}.building{width:100%;height:320px;margin-top:8px;display:block}.node{cursor:pointer}.app.zh{--serif: "Noto Serif TC", "Newsreader", serif;--sans: "Noto Sans TC", "Outfit", sans-serif}.app.zh .block b,.app.zh .pane h2,.app.zh .metric b{letter-spacing:-.02em}.pane-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.twin-hero{grid-template-columns:1.35fr .65fr}.twin{position:relative;height:440px;margin:12px -22px -20px;border-top:1px solid var(--rule);background:#efe6d4}.twin-hint{position:absolute;left:14px;bottom:10px;margin:0;font-size:11px;color:var(--mute);pointer-events:none}.tag{border:1px solid var(--ink);background:#fffdf8;color:var(--ink);font:500 11px/1.2 var(--sans);padding:4px 8px;white-space:nowrap}.tag.on{background:var(--ink);color:var(--sheet)}.tag.slim{font-size:10px}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:18px 14px}.metric small{color:var(--mute);font-size:12px}.metric b{display:block;margin-top:2px;font-family:var(--serif);font-size:40px;font-weight:500;letter-spacing:-.045em;line-height:.92}.metric b i{font-style:normal;font-size:16px;color:var(--mute);margin-left:3px}.metric em{display:block;margin-top:6px;font-style:normal;font-size:12px;color:var(--mute)}.advice{margin-top:18px;padding:14px 14px 12px;border-top:1px solid var(--ink)}.advice.held{background:#f6e6d4;margin:18px -22px -20px;padding:16px 22px 18px}.advice strong{font-family:var(--serif);font-size:22px;font-weight:500}.advice p{margin:6px 0 0;line-height:1.4}.wide{border:1px solid var(--rule);background:#fffdf8;padding:16px 18px 10px}.chart-wrap{position:relative}.chart{width:100%;height:200px;display:block}.legend{display:flex;gap:18px;margin:0 0 6px;font-size:12px;color:var(--mute)}.legend i{display:inline-block;width:22px;height:2px;margin:0 6px 3px 0;background:var(--ice);vertical-align:middle}.legend i.sec{background:var(--clay)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--rule);font-size:14px;vertical-align:top}.table th{color:var(--mute);font-weight:440;font-size:11px;letter-spacing:.06em;text-transform:uppercase}.table tr{cursor:pointer}.table tr.on td{background:var(--ice-soft)}.table td.num{font-family:var(--mono);font-size:13px}.pill{display:inline-flex;align-items:center;height:22px;padding:0 8px;border:1px solid currentColor;font-size:11px;letter-spacing:.04em;color:var(--ice);background:transparent}.pill.bad{color:var(--rose);background:var(--rose-soft)}.pill.warn{color:var(--clay)}.pill.quiet{color:var(--mute)}.feed{margin:12px 0 0;font-family:var(--mono);font-size:12px;line-height:1.55;max-height:380px;overflow:auto;white-space:pre-wrap;color:#24443e}.steps{display:grid;gap:12px;margin-top:16px}.step{display:grid;grid-template-columns:14px 1fr;gap:10px;color:var(--mute)}.step b{color:var(--ink);font-weight:520}.dot{width:10px;height:10px;margin-top:5px;background:var(--ice)}.dot.off{background:var(--rule)}.actions,.arm{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.primary,.ghost,.danger{border:1px solid var(--ink);background:var(--ink);color:var(--sheet);padding:9px 14px}.ghost{background:transparent;color:var(--ink)}.danger{background:transparent;color:var(--rose);border-color:var(--rose)}.arm input{border:1px solid var(--ink);background:#fffdf8;padding:9px 12px;width:132px}.tickets{display:grid;gap:10px}.ticket{border:1px solid var(--rule);padding:14px}.about{display:grid;gap:16px}.about-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}.about-grid.five{grid-template-columns:repeat(5,1fr)}.about-grid.two{grid-template-columns:1fr 1fr}.card{border:1px solid var(--ink);background:#fffdf8;padding:14px 16px 16px;text-align:left}.card small{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}.card b{display:block;margin:6px 0 8px;font-family:var(--serif);font-size:20px;font-weight:500;letter-spacing:-.03em}.card p{margin:0;color:var(--mute);line-height:1.45;font-size:13px}button.card{font:inherit;color:inherit;width:100%;display:block}.card.go{cursor:pointer}.card.go:hover{background:var(--ice-soft)}.about .lede{max-width:68ch}.about .wide{padding:20px 22px 22px}.foot{display:grid;grid-template-columns:1fr auto;gap:16px;padding:12px 18px;border-top:1px solid var(--ink);font-size:12px;color:var(--mute)}@media (max-width: 980px){.mast,.hero,.story,.row,.nav,.foot,.twin-hero,.about-grid,.about-grid.five,.about-grid.two{grid-template-columns:1fr}.nav button,.block{border-right:0;border-bottom:1px solid var(--rule)}.app{width:calc(100% - 16px);margin:8px auto 16px}.twin{height:360px}}
