:root{--bg:#faf7f2;--surface:#fff;--surface-2:#f1ece3;--ink:#2b2622;--muted:#7a7068;--line:#e3dccf;--accent:#c2610c;--accent-soft:#fbe9d6;--wood:#dcae6e;--wood-2:#c98d4e;--wood-edge:#8f5d2c;--wall:#6f6a64;--stone:#cfc7bb;--good:#2f8f5b;--bad:#d64545;--cam-l:#2563a8;--cam-r:#c2610c;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-unit=B]{--accent:#2563a8;--accent-soft:#dbe9f8}:root[data-unit="0"]{--accent:#2f7d6b;--accent-soft:#dcefe9}@media (prefers-color-scheme:dark){:root{--bg:#16130f;--surface:#211c17;--surface-2:#2c251e;--ink:#f0e8dc;--muted:#a69a8c;--line:#3a3128;--accent:#f0a050;--accent-soft:#3a2a18;--wood:#b98547;--wood-2:#a06f38;--wood-edge:#e0b27a;--wall:#9a928a;--stone:#4a423a;--good:#5cc48a;--bad:#ff7b7b;--cam-l:#6fb0f0;--cam-r:#f0a050}:root[data-unit=B]{--accent:#6fb0f0;--accent-soft:#1a2a3c}:root[data-unit="0"],.unit-0{--accent:#6fcfb2;--accent-soft:#17302a}}*{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);margin:0;font-family:Noto Sans TC,system-ui,-apple-system,PingFang TC,sans-serif;font-size:16px;line-height:1.7}a{color:var(--accent)}.top{z-index:10;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.top a{font-weight:700;text-decoration:none}.top nav a{background:var(--surface-2);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:14px;font-weight:500}.brand{color:var(--ink)}main{max-width:760px;margin:0 auto;padding:24px 16px 64px}h1{margin:4px 0 8px;font-size:clamp(26px,6vw,38px);line-height:1.25}h2{margin:0 0 8px;font-size:20px}.sec{margin:32px 0}.eyebrow{letter-spacing:.04em;color:var(--accent);font-size:13px;font-weight:700}.lead{color:var(--ink);font-size:18px}.note{color:var(--muted);font-size:14px}.hero{padding:8px 0}.hero .en{color:var(--muted);margin:0 0 16px;font-weight:500}.unit{margin:36px 0}.unit h2{font-size:22px}.unit .en{color:var(--muted);letter-spacing:.03em;font-size:13px}.cards{gap:10px;margin-top:14px;display:grid}.card-link{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:14px;align-items:center;gap:14px;padding:14px 16px;text-decoration:none;transition:transform .15s,border-color .15s;display:flex}.card-link:hover{border-color:var(--accent);transform:translateY(-1px)}.card-link .no{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:10px;flex:none;place-items:center;font-weight:700;display:grid}.card-link .txt{flex:1;min-width:0}.card-link .t{font-weight:700}.card-link .d{color:var(--muted);font-size:14px}.card-link .tick{color:var(--good);font-weight:700}.unit-A{--accent:#c2610c;--accent-soft:#fbe9d6}.unit-B{--accent:#2563a8;--accent-soft:#dbe9f8}@media (prefers-color-scheme:dark){.unit-A{--accent:#f0a050;--accent-soft:#3a2a18}.unit-B{--accent:#6fb0f0;--accent-soft:#1a2a3c}}.cta{background:var(--ink);color:var(--bg);border-radius:999px;margin-top:8px;padding:10px 18px;font-weight:700;text-decoration:none;display:inline-block}.demo-card{border:1px solid var(--line);background:var(--surface);border-radius:16px;margin:14px 0;padding:10px}svg.demo{background:var(--surface-2);-webkit-user-select:none;user-select:none;border-radius:10px;width:100%;height:auto;display:block}.controls{gap:8px;padding:10px 4px 2px;display:grid}.ctl{grid-template-columns:8.5em 1fr 4.6em;align-items:center;gap:10px;font-size:14px;display:grid}.ctl output{text-align:right;font-variant-numeric:tabular-nums;font-weight:500}@media (width<=480px){.ctl{grid-template-columns:1fr 4.6em}.ctl-label{grid-column:1/-1}}input[type=range]{width:100%;accent-color:var(--accent);min-height:28px}.tgl{align-items:center;gap:8px;font-size:14px;display:flex}.tgl input{width:20px;height:20px;accent-color:var(--accent)}.seg{flex-wrap:wrap;align-items:center;gap:6px;font-size:14px;display:flex}.seg-label{color:var(--muted);margin-right:2px}.seg-btn,.btn{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:14px}.seg-btn.on{background:var(--accent);border-color:var(--accent);color:#fff}.btn:disabled{opacity:.4;cursor:default}.btn-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.readout{background:var(--surface-2);border-radius:10px;grid-template-columns:auto 1fr;gap:2px 14px;margin:10px 4px 2px;padding:10px 12px;font-size:14px;display:grid}.readout dt{color:var(--muted)}.readout dd{font-variant-numeric:tabular-nums;margin:0;font-weight:700}.v.good{color:var(--good)}.v.bad{color:var(--bad)}.formula{border-left:3px solid var(--accent);background:var(--surface-2);white-space:pre-wrap;border-radius:0 10px 10px 0;margin:10px 0;padding:10px 14px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:15px;overflow-x:auto}details{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin:12px 0;padding:10px 14px}summary{cursor:pointer;font-weight:500}.quiz{border:1px solid var(--line);background:var(--surface);border-radius:14px;margin:14px 0;padding:14px}.quiz-q{margin:0 0 10px;font-weight:700}.choices{gap:8px;display:grid}.choice{font:inherit;text-align:left;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;border-radius:10px;padding:10px 14px}.choice:hover:not(:disabled){border-color:var(--accent)}.choice.ok{border-color:var(--good);background:color-mix(in srgb, var(--good) 15%, var(--bg))}.choice.no{border-color:var(--bad);opacity:.6}.quiz-fb{margin:10px 0 0;font-size:14px}.quiz-fb.ok{color:var(--good)}.quiz-fb.no{color:var(--bad)}.chap-nav{justify-content:space-between;gap:12px;margin-top:40px;display:flex}.chap-nav a{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;flex:1;padding:12px 14px;font-size:14px;text-decoration:none}.chap-nav a.next{text-align:right}.chap-nav small{color:var(--muted);display:block}svg .t{fill:var(--ink);font-family:inherit;font-size:19px}svg .t-sm{font-size:16px}svg .t-muted{fill:var(--muted)}svg .t-acc{fill:var(--accent);font-weight:700}svg .t-bad{fill:var(--bad);font-weight:700}svg .t-good{fill:var(--good);font-weight:700}svg .t-l{fill:var(--cam-l);font-weight:700}svg .t-r{fill:var(--cam-r);font-weight:700}svg .middle{text-anchor:middle}svg .end{text-anchor:end}svg .room{fill:var(--surface)}svg .wall{stroke:var(--wall);stroke-width:7px;stroke-linecap:round;fill:none}svg .wall-fill{fill:var(--stone);stroke:var(--wall);stroke-width:3px;stroke-linejoin:round}svg .board{fill:var(--wood);stroke:var(--wood-edge);stroke-width:2px;stroke-linejoin:round}svg .board.b2{fill:var(--wood-2)}svg .gap{fill:var(--bad);opacity:.6}svg .guide{stroke:var(--muted);stroke-width:1.5px;stroke-dasharray:6 5;fill:none}svg .ink{stroke:var(--ink);stroke-width:2px;fill:none}svg .thin{stroke:var(--muted);stroke-width:1px;fill:none}svg .acc{stroke:var(--accent);stroke-width:3px;fill:none;stroke-linecap:round;stroke-linejoin:round}svg .acc-thin{stroke:var(--accent);stroke-width:1.8px;fill:none}svg .acc-dash{stroke:var(--accent);stroke-width:2px;stroke-dasharray:7 5;fill:none}svg .acc-fill{fill:var(--accent)}svg .good-line{stroke:var(--good);stroke-width:3px;fill:none}svg .bad-line{stroke:var(--bad);stroke-width:3px;fill:none}svg .l-line{stroke:var(--cam-l);stroke-width:2.5px;fill:none}svg .r-line{stroke:var(--cam-r);stroke-width:2.5px;fill:none}svg .l-fill{fill:var(--cam-l)}svg .r-fill{fill:var(--cam-r)}svg .ghost{stroke:var(--muted);stroke-width:2.5px;stroke-dasharray:5 4;fill:none;opacity:.85}svg .ghost-fill{fill:var(--muted);opacity:.8}svg .sensor{stroke:var(--ink);stroke-width:3px}svg .photo-bg{fill:var(--surface);stroke:var(--ink);stroke-width:2px}svg .obj{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2.5px}svg .obj2{fill:color-mix(in srgb, var(--good) 25%, var(--surface));stroke:var(--good);stroke-width:2.5px}svg .arrow-head{fill:currentColor}svg .arrow-head.ink{fill:var(--ink)}svg .arrow-head.acc{fill:var(--accent)}svg .handle{cursor:grab;touch-action:none}svg .handle .hit{fill:#0000}svg .handle .dot{fill:var(--accent);stroke:var(--surface);stroke-width:3px}svg .handle.active{cursor:grabbing}svg .handle.active .dot{stroke:var(--ink)}.toast{left:50%;bottom:calc(16px + env(safe-area-inset-bottom));background:var(--ink);color:var(--bg);z-index:20;border-radius:999px;align-items:center;gap:12px;padding:10px 16px;font-size:14px;display:flex;position:fixed;transform:translate(-50%)}.toast[hidden]{display:none}.toast button{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;font-weight:700}.stepper{background:var(--accent-soft);border-radius:12px;margin:4px 0 10px;padding:12px 14px}.step-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.dots{gap:6px;display:flex}.dot{background:var(--line);border-radius:50%;width:9px;height:9px}.dot.past{background:var(--accent);opacity:.5}.dot.on{background:var(--accent)}.step-title{color:var(--accent);margin-top:8px;font-weight:700}.step-text{margin:4px 0 0;font-size:15px}svg .paper{fill:color-mix(in srgb, #fff 80%, var(--surface));stroke:var(--muted);stroke-width:2px;stroke-dasharray:6 4;opacity:.92}svg .hl{fill:color-mix(in srgb, var(--bad) 35%, transparent);stroke:var(--bad);stroke-width:2px}svg .gold{stroke:#d4a017;stroke-width:3px;fill:none}.unit-0{--accent:#2f7d6b;--accent-soft:#dcefe9}.needs{color:var(--muted);margin:4px 0 0;font-size:14px}.needs a{margin-left:6px}.num-in{font:inherit;border:1px solid var(--line);background:var(--bg);width:8em;color:var(--ink);border-radius:10px;padding:8px 10px}.choices.many{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
