:root{--bg: #05070f;--ink: #fff8ee;--ink-2: #d9cfc2;--muted: #a99d90;--gold: #ffcb5c;--red: #ff5a3c;--glass: rgba(10, 12, 24, .72);--line: rgba(255, 220, 160, .22);--fs: clamp(15px, 1.15vw, 22px);color-scheme:dark;--font: "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", "Heiti TC", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--fs)}#app,#app canvas,.labels{position:fixed;inset:0}.labels{pointer-events:auto}button{font:inherit;color:inherit;cursor:pointer}.panel{position:fixed;left:2vw;top:5.5vw;bottom:5.5vw;width:min(34vw,640px);padding:1.6em 1.6em 1.4em;overflow-y:auto;scrollbar-width:none;background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:18px;transition:opacity .5s,transform .5s;animation:in .6s ease both}@keyframes in{0%{opacity:0;transform:translate(-12px)}}.panel::-webkit-scrollbar{display:none}.kicker{color:var(--gold);letter-spacing:.12em;font-size:.85em;margin-bottom:.4em}h1{font-size:2.15em;line-height:1.15;margin:.2em 0 .3em;font-weight:800;letter-spacing:.02em;background:linear-gradient(180deg,#fff6dc,#ffb347);-webkit-background-clip:text;background-clip:text;color:transparent}h2{font-size:1.8em;margin:.1em 0 .5em;font-weight:800}h3{font-size:1.05em;margin:1.2em 0 .5em;color:var(--gold)}p{line-height:1.65;color:var(--ink-2);margin:.5em 0}.lead{font-size:1.2em;color:var(--ink)}.slogan{font-size:1.5em;color:var(--gold);font-weight:700;letter-spacing:.2em}.note{border-left:3px solid var(--gold);padding-left:.8em}.hint{color:var(--muted);font-size:.85em}.src{color:var(--muted);font-size:.72em;margin-top:1.2em}.specs{display:grid;grid-template-columns:auto 1fr;gap:.45em 1em;margin:.9em 0}.specs dt{color:var(--muted);white-space:nowrap}.specs dd{margin:0;font-weight:600}figure.ai{margin:1em 0 0;position:relative;cursor:zoom-in;border-radius:12px;overflow:hidden;border:1px solid var(--line)}figure.ai img{display:block;width:100%;max-height:32vh;object-fit:cover}figure.ai figcaption{position:absolute;right:8px;bottom:8px;font-size:.68em;background:#0009;padding:.2em .6em;border-radius:99px;color:#fff}.views{display:grid;grid-template-columns:repeat(3,1fr);gap:.5em}.views figure.ai img{height:13vh}.btns{display:flex;flex-wrap:wrap;gap:.5em;margin:1em 0 .4em}.btns button,.tools button{background:#ffffff0f;border:1px solid var(--line);border-radius:99px;padding:.45em 1em;font-size:.9em}.btns button.on{background:var(--gold);color:#2a1a05;border-color:var(--gold);font-weight:700}.legend{list-style:none;padding:0;margin:0}.legend li{display:flex;justify-content:space-between;gap:1em;padding:.55em .2em;border-bottom:1px solid rgba(255,255,255,.07)}.legend li b{font-weight:600}.legend li b:before{content:"";display:inline-block;width:.8em;height:.8em;border-radius:3px;background:var(--c);margin-right:.6em;vertical-align:-.05em}.legend li span{color:var(--muted);white-space:nowrap}.substeps{display:flex;flex-wrap:wrap;gap:.4em;margin-top:1em}.substeps span{font-size:.75em;padding:.25em .7em;border-radius:99px;border:1px solid var(--line);color:var(--muted)}.substeps span.on{background:var(--red);border-color:var(--red);color:#fff}.slider{display:block;margin:.6em 0 1em}.slider b{color:var(--gold);font-size:1.4em}.slider input{width:100%;margin-top:.5em;accent-color:var(--gold);height:1.4em}.legend-heat{display:flex;gap:.4em;font-size:.75em;margin-bottom:.8em}.legend-heat span{flex:1;padding:.3em .5em;border-radius:6px;color:#111;font-weight:700;text-align:center}.legend-heat .g{background:#45ff8c}.legend-heat .y{background:#ffd23f}.legend-heat .r{background:#ff4038;color:#fff}.live{display:grid;grid-template-columns:repeat(3,1fr);gap:.5em;margin-bottom:.6em}.live div,.big div{background:#ffffff0d;border:1px solid var(--line);border-radius:12px;padding:.6em .7em}.live small,.big small{display:block;color:var(--muted);font-size:.72em}.live b{font-size:1.15em}.big{display:grid;grid-template-columns:1.6fr 1fr;gap:.6em}.big b{font-size:1.35em;color:var(--gold)}.bars{list-style:none;padding:0;margin:0}.bars li{display:grid;grid-template-columns:9em 1fr 3em;align-items:center;gap:.6em;padding:.28em 0;font-size:.9em}.bars i{display:block;height:.7em;width:var(--w);border-radius:99px;background:linear-gradient(90deg,var(--red),var(--gold))}.bars b{text-align:right}.points{padding-left:1.2em;margin:1em 0 0;line-height:1.6;color:var(--ink-2);font-size:.92em}.topbar{position:fixed;top:0;left:0;right:0;height:4.4vw;min-height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 2vw;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.55),transparent)}.brand{font-weight:800;letter-spacing:.06em}.brand span{font-weight:400;color:var(--muted);margin-left:.6em}.tools{display:flex;gap:.5em;pointer-events:auto}.bottombar{position:fixed;left:50%;bottom:1.2vw;transform:translate(-50%);display:flex;align-items:center;gap:.6em;background:var(--glass);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:99px;padding:.35em .5em}.arrow{background:none;border:0;font-size:1.8em;line-height:1;padding:0 .4em;color:var(--gold)}.dots{display:flex;gap:.25em}.dots button{background:none;border:0;display:flex;align-items:center;gap:.35em;padding:.3em .55em;border-radius:99px;color:var(--muted);font-size:.85em}.dots button span{display:inline-grid;place-items:center;width:1.7em;height:1.7em;border-radius:50%;border:1px solid var(--line)}.dots button em{font-style:normal;display:none}.dots button.on{background:#ffcb5c29;color:var(--ink)}.dots button.on span{background:var(--gold);color:#2a1a05;border-color:var(--gold);font-weight:800}.dots button.on em{display:inline}.keys{position:fixed;right:2vw;bottom:1.6vw;font-size:.68em;color:var(--muted);opacity:.7}.flybar-main{position:fixed;left:0;right:0;bottom:0;height:5px;background:linear-gradient(90deg,var(--gold) calc(var(--p, 0) * 100%),transparent 0);opacity:0;transition:opacity .4s}body.flying .flybar-main{opacity:1}.lbl{font-family:var(--font);white-space:nowrap;pointer-events:none;transform:translateY(-50%)}.lbl.zone{font-size:clamp(13px,1vw,20px);font-weight:800;color:#fff;padding:.25em .7em;border-radius:99px;background:#0000008c;border:2px solid var(--c)}.lbl.poi{font-size:clamp(12px,.85vw,17px);padding:.2em .6em;border-radius:6px;background:#000000a6;color:#fff}.lbl.poi.gate{border-left:4px solid #45ff8c}.lbl.poi.service{border-left:4px solid #ff5a5a}.lbl.poi.transit{border-left:4px solid #5ab8ff}.lbl.landmark{font-size:clamp(13px,.95vw,19px);color:#fff;text-shadow:0 1px 4px #000,0 0 12px #000;font-weight:700;letter-spacing:.1em}.lbl.landmark.far{opacity:.8;font-weight:400}.lbl.dim{font-size:clamp(14px,1.1vw,22px);font-weight:800;color:#fff;background:#0009;padding:.15em .6em;border-radius:6px;margin-left:4em}body.flying .panel{opacity:0;pointer-events:none}.lbl.dim.small{font-size:clamp(11px,.8vw,15px);margin-left:0}body.hide-ui .panel,body.hide-ui .keys{opacity:0;pointer-events:none;transform:translate(-20px)}body.blackout:after{content:"";position:fixed;inset:0;background:#000;z-index:100}body[data-chapter=cover] .panel{top:auto;bottom:6vw}#loading{position:fixed;inset:0;display:grid;place-items:center;background:var(--bg);z-index:50;transition:opacity .8s}#loading div{text-align:center}#loading b{display:block;font-size:2.4em;color:var(--gold);letter-spacing:.3em}#loading span{color:var(--muted)}#loading.done{opacity:0;pointer-events:none}.lightbox{position:fixed;inset:0;background:#000000eb;display:grid;place-items:center;z-index:60;cursor:zoom-out}.lightbox img{max-width:92vw;max-height:86vh;border-radius:10px}.lightbox p{position:absolute;bottom:2vh;color:var(--muted);font-size:.85em}@media (max-width: 760px){:root{--fs: 14px}.panel{left:max(16px,env(safe-area-inset-left,0px));right:max(16px,env(safe-area-inset-right,0px));width:auto;top:auto;bottom:calc(64px + env(safe-area-inset-bottom,0px));max-height:46vh;padding:1em 1.1em}body[data-chapter=cover] .panel{bottom:calc(64px + env(safe-area-inset-bottom,0px))}h1{font-size:1.7em}h2{font-size:1.35em}.brand span,.keys,.dots button em,.dots button.on em{display:none}.bottombar{bottom:calc(10px + env(safe-area-inset-bottom,0px));max-width:calc(100vw - 32px)}.dots button{padding:.2em}.views figure.ai img{height:18vw}figure.ai img{max-height:22vh}.bars li{grid-template-columns:7em 1fr 2.6em}}
