:root{--ink: #16243a;--muted: #5b6b80;--panel: rgba(255, 255, 255, .9);--panel-border: rgba(255, 255, 255, .7);--accent: #ff7a1a;--accent-ink: #ffffff;--sea: #1478b8;--ok: #22a861;--bad: #e5484d;--shadow: 0 10px 30px rgba(10, 30, 60, .25);--radius: 16px;font-family:Segoe UI,system-ui,-apple-system,Microsoft JhengHei,PingFang TC,Noto Sans TC,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#cfe6f2}button{font:inherit;color:inherit;cursor:pointer}#scene{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none;outline:none}body[data-lang=en] .zh,body[data-lang=zh] .en{display:none!important}body[data-lang=both] span.zh{margin-left:.35em}body[data-lang=both] p.zh{margin-top:-.3em;color:var(--muted)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:none;align-items:center;justify-content:center;padding:16px;background:#081c3473;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50}.overlay.show{display:flex}#loading{background:linear-gradient(180deg,#3b82c4,#cfe6f2)}.loader-box{text-align:center;color:#fff;font-size:1.1rem;text-shadow:0 1px 4px rgba(0,0,0,.3)}.loader-box .zh{display:block;margin:.2em 0 0!important}.spinner{width:54px;height:54px;margin:0 auto 16px;border-radius:50%;border:5px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.intro-box,.map-box,.quiz-box{background:#fff;border-radius:22px;box-shadow:var(--shadow);max-height:calc(100vh - 32px);overflow:auto}.intro-box{width:min(620px,100%);padding:28px 30px 22px;text-align:center}.intro-badge{font-size:3rem;line-height:1}.intro-box h1{margin:8px 0 6px;font-size:1.75rem}.intro-box h1 .zh{display:block;margin:2px 0 0!important;font-size:1.35rem;color:var(--sea)}.lead{color:var(--muted);margin:0 0 14px;line-height:1.5}.lead .zh,.mission .zh,.tip .zh,.note .zh{display:block;margin:.25em 0 0!important}.mission{background:#fff4e8;border:1px solid #ffd9b5;border-radius:12px;padding:10px 14px;text-align:left;line-height:1.45}.mission b{display:block;margin-bottom:2px}.controls{list-style:none;padding:0;margin:16px 0 8px;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px 14px;text-align:left;font-size:.92rem}kbd{display:inline-block;min-width:1.6em;padding:2px 7px;margin-right:4px;border-radius:6px;border:1px solid #c9d3df;border-bottom-width:3px;background:#f6f8fb;font:600 .8rem/1.4 inherit;font-family:inherit}.tip{font-size:.9rem;color:var(--sea);margin:8px 0 14px}.lang-row{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap;margin-bottom:16px;font-size:.9rem;color:var(--muted)}.note{font-size:.78rem;color:var(--muted);margin:14px 0 0}.primary{border:0;border-radius:999px;padding:10px 22px;background:var(--accent);color:var(--accent-ink);font-weight:700;box-shadow:0 4px #d35f0a;transition:transform .1s}.primary:active{transform:translateY(2px);box-shadow:0 2px #d35f0a}.primary.big{font-size:1.15rem;padding:13px 34px}.ghost{border:2px solid #d4dde8;background:#fff;border-radius:999px;padding:8px 20px;font-weight:600}.icon-btn{border:0;background:#eef2f7;width:34px;height:34px;border-radius:50%;font-size:1rem;flex:none}.icon-btn:hover{background:#e1e8f1}.seg{display:inline-flex;background:#ffffffbf;border-radius:999px;padding:3px;border:1px solid #d4dde8}.seg button{border:0;background:transparent;padding:5px 11px;border-radius:999px;font-size:.85rem;font-weight:600;color:var(--muted)}.seg button.active{background:var(--sea);color:#fff}#topbar{position:fixed;top:12px;left:12px;right:210px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;z-index:10;pointer-events:none}#topbar>*{pointer-events:auto}.brand{background:var(--panel);padding:7px 14px;border-radius:999px;font-weight:800;box-shadow:var(--shadow)}.chip{border:0;background:var(--panel);padding:7px 14px;border-radius:999px;font-weight:600;box-shadow:var(--shadow)}.chip:hover{background:#fff}.chip.locked{opacity:.6}#nb-count{color:var(--accent)}#notebook{position:fixed;top:62px;left:12px;width:300px;max-height:calc(100vh - 150px);overflow:auto;background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;z-index:9;transform:translate(-340px);transition:transform .25s ease}#notebook.open{transform:none}#notebook h2{margin:0 0 8px;font-size:1.05rem}.progress{height:8px;background:#e6ebf2;border-radius:99px;overflow:hidden;margin-bottom:10px}#nb-bar{height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--ok));transition:width .4s}#nb-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}#nb-list li{display:flex;align-items:center;gap:6px}.nb-open{flex:1;display:flex;align-items:center;gap:8px;text-align:left;border:0;background:#f4f7fb;padding:7px 8px;border-radius:10px;font-size:.9rem}.nb-open:hover{background:#e9f0f8}.nb-num{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;font-weight:700;font-size:.8rem}li.done .nb-num{background:var(--ok)}li.done .nb-num:after{content:"✓";position:absolute}li.done .nb-num{color:transparent;position:relative}li.done .nb-num:after{color:#fff}.nb-title .zh{margin-left:.3em}.nb-go{flex:none;border:0;background:var(--sea);color:#fff;border-radius:8px;padding:6px 9px;font-size:.8rem;font-weight:600}.nb-go .zh{margin-left:.25em!important}#hud-right{position:fixed;top:12px;right:12px;width:186px;z-index:10}#minimap{width:186px;height:186px;border-radius:50%;border:4px solid #fff;box-shadow:var(--shadow);display:block;background:#18407a}.mini-n{position:absolute;top:-2px;left:50%;transform:translate(-50%);background:#d62828;color:#fff;font-weight:800;font-size:.75rem;padding:1px 7px;border-radius:99px}#readout{margin-top:8px;background:var(--panel);border-radius:12px;padding:8px 10px;box-shadow:var(--shadow);font-size:.82rem;display:grid;gap:3px}.ro-row{display:flex;justify-content:space-between;gap:8px}.ro-k{color:var(--muted)}.ro-row b{font-variant-numeric:tabular-nums;white-space:nowrap}#ro-mode{justify-content:center;font-weight:600;color:var(--sea)}#card{position:fixed;left:50%;bottom:16px;width:min(560px,calc(100vw - 32px));max-height:52vh;overflow:auto;background:#fff;border-radius:20px;box-shadow:var(--shadow);padding:18px 20px 16px;z-index:20;transform:translate(-50%,calc(100% + 40px));transition:transform .35s cubic-bezier(.2,.9,.3,1.2)}#card.open{transform:translate(-50%)}#card-close{position:sticky;top:0;float:right;margin:-4px -6px 0 8px}.card-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}.card-num{width:30px;height:30px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;font-weight:800;flex:none}.card-icon{font-size:1.6rem}.card-head h2{margin:0;font-size:1.3rem;line-height:1.25}.card-head h2 .zh{color:var(--sea)}#card h3{margin:12px 0 4px;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:var(--accent)}#card h3 .zh{text-transform:none;letter-spacing:0}#card p{margin:0 0 6px;line-height:1.5;font-size:.95rem}.terms{list-style:none;padding:0;margin:4px 0 0;display:flex;flex-wrap:wrap;gap:6px}.terms li{background:#eef6fc;border:1px solid #cfe4f4;border-radius:999px;padding:3px 10px;font-size:.85rem}.terms li .en{font-weight:600}.look{margin-top:12px;background:#fff7e0;border-radius:10px;padding:8px 12px;font-size:.9rem;line-height:1.45}body[data-lang=both] .look .zh{display:block;margin:.2em 0 0 1.6em;color:var(--muted)}.demo-btn{margin-top:12px;width:100%}#demo-panel{position:fixed;left:50%;bottom:16px;transform:translate(-50%,calc(100% + 40px));transition:transform .35s ease;width:min(560px,calc(100vw - 32px));background:#fff;border-radius:20px;box-shadow:var(--shadow);padding:14px 18px;z-index:25}#demo-panel.show{transform:translate(-50%)}.demo-top{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.85rem;font-weight:700}.demo-tag{color:var(--accent)}#demo-years{color:var(--sea);font-variant-numeric:tabular-nums}#demo-steps{display:flex;gap:6px;margin:8px 0 2px}#demo-steps i{flex:1;height:5px;border-radius:9px;background:#e3eaf3;transition:background .3s}#demo-steps i.on{background:var(--sea)}#demo-title{margin:8px 0 4px;font-size:1.1rem}#demo-title .zh{color:var(--sea)}#demo-text p{margin:0 0 4px;line-height:1.45;font-size:.95rem}.demo-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.field-btn{margin-top:8px;width:100%;background:var(--sea);box-shadow:0 4px #0d5a8c}.field-btn:active{box-shadow:0 2px #0d5a8c}#field-panel{position:fixed;left:12px;bottom:64px;width:min(380px,calc(100vw - 24px));max-height:calc(100vh - 140px);overflow:auto;background:#fff;border-radius:20px;box-shadow:var(--shadow);padding:12px 16px 14px;z-index:22;transform:translate(calc(-100% - 40px));transition:transform .3s ease}#field-panel.show{transform:none}.field-top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.85rem;font-weight:700}.field-tag{color:var(--sea)}#field-steps{display:flex;gap:6px;margin:6px 0 2px}#field-steps i{flex:1;height:5px;border-radius:9px;background:#e3eaf3}#field-steps i.on{background:var(--ok)}#field-steps i.now{background:var(--sea)}#field-title{margin:8px 0 4px;font-size:1.02rem;line-height:1.3}#field-title .zh{color:var(--sea)}#field-text{margin-top:10px}#field-text p{margin:0 0 4px;line-height:1.45;font-size:.88rem}#field-reading:empty{display:none}#field-reading{margin:4px 0 0;background:#fff7e0;border-radius:10px;padding:7px 10px;font-size:.9rem;font-variant-numeric:tabular-nums}.field-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.field-actions .primary{padding:8px 18px}.field-actions .primary:disabled{background:#c4ccd6;box-shadow:0 4px #a5afbb;cursor:default}.field-actions kbd{margin:0 0 0 4px;color:var(--ink)}.field-actions .ghost{padding:6px 14px;font-size:.88rem}#field-chart{display:none;width:100%;margin-top:10px;background:#fbfcfe;border-radius:10px}.field-readings{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:.8rem;color:var(--muted);margin:6px 0 0}.field-readings b{color:var(--ink);font-variant-numeric:tabular-nums}.field-result{margin:8px 0 0}.field-table{width:100%;border-collapse:collapse;margin-top:8px;font-size:.82rem}.field-table th,.field-table td{border-bottom:1px solid #e3e8ef;padding:5px 4px;text-align:left;vertical-align:top}.field-table th{color:var(--muted);font-weight:600}.field-table td:not(:first-child),.field-table th:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}body[data-lang=both] .field-table .zh{display:block;margin:0!important;color:var(--muted)}.field-note{font-size:.78rem;color:var(--muted);margin:8px 0 0}body[data-lang=both] .field-note .zh{display:block;margin:.2em 0 0!important}.fq-q{margin-top:12px;border-top:1px solid #e3e8ef;padding-top:10px}.fq-q p{margin:0 0 2px;font-weight:700;line-height:1.4;font-size:.92rem}.fq-q p.en:before{content:"❓ "}body[data-lang=zh] .fq-q p.zh:before{content:"❓ "}.fq-opts{display:grid;gap:6px;margin-top:8px}.fq-opts .quiz-opt{padding:7px 10px;font-size:.86rem}body[data-lang=both] .fq-opts .zh{display:block;margin:.15em 0 0 30px!important;color:var(--muted)}.fq-feedback:empty{display:none}.fq-feedback{margin-top:10px;border-radius:12px;padding:8px 12px;font-size:.86rem}.fq-feedback.ok{background:#e8f8ef}.fq-feedback.no{background:#fff1f1}.fq-feedback p{margin:0 0 6px;line-height:1.45}.fq-feedback .verdict{font-weight:700}.field-finish{margin-top:12px;width:100%}#toast{position:fixed;top:70px;left:50%;transform:translate(-50%,-20px);opacity:0;pointer-events:none;background:#16243ae0;color:#fff;padding:9px 18px;border-radius:999px;font-weight:600;z-index:30;transition:all .25s;max-width:calc(100vw - 32px);text-align:center}#toast.show{opacity:1;transform:translate(-50%)}#hint{position:fixed;left:12px;bottom:12px;background:#16243a99;color:#fff;padding:6px 12px;border-radius:10px;font-size:.8rem;z-index:5}body[data-lang=both] #hint .zh{display:block;margin:2px 0 0!important}.map-box{padding:14px;display:flex;flex-direction:column;align-items:center}.map-head{display:flex;width:100%;justify-content:space-between;align-items:center;margin-bottom:8px}.map-head h2{margin:0;font-size:1.1rem}#bigmap{border-radius:10px;display:block}.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:.8rem;color:var(--muted);max-width:720px;justify-content:center}.legend>span{display:inline-flex;align-items:center;gap:6px}.legend .sw{width:46px;height:10px;border-radius:3px;display:inline-block}.legend .ln{width:24px;border-top:2px solid;display:inline-block}.legend .dot{width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid #fff;box-shadow:0 0 0 1px #ccc;display:inline-block}.legend .tri{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:12px solid #e11d48;display:inline-block}.quiz-box{width:min(560px,100%);padding:20px 22px}.quiz-top{display:flex;align-items:center;gap:12px;color:var(--muted);font-weight:600;font-size:.9rem}.quiz-top>span:first-child{flex:1}.quiz-q p{font-size:1.15rem;font-weight:700;margin:14px 0 6px;line-height:1.4}.quiz-q p.zh{font-size:1.05rem}.quiz-options{display:grid;gap:8px;margin-top:12px}.quiz-opt{text-align:left;border:2px solid #dde5ef;background:#f8fafc;border-radius:12px;padding:10px 14px;line-height:1.35}.quiz-opt b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#e3eaf3;margin-right:6px;font-size:.8rem}.quiz-opt:hover:not(:disabled){border-color:var(--sea)}.quiz-opt.right{border-color:var(--ok);background:#e8f8ef}.quiz-opt.wrong{border-color:var(--bad);background:#fdeced}.quiz-opt:disabled{cursor:default}.quiz-feedback:empty{display:none}.quiz-feedback{margin-top:12px;border-radius:12px;padding:10px 14px}.quiz-feedback.ok{background:#e8f8ef}.quiz-feedback.no{background:#fff1f1}.quiz-feedback p{margin:0 0 6px;line-height:1.45}.quiz-feedback .verdict{font-weight:700}.quiz-feedback .primary{margin-top:6px}.quiz-result{text-align:center;padding:10px 0}.big-score{font-size:3rem;font-weight:800;color:var(--sea)}.stars{font-size:1.6rem;margin:4px 0 10px}.quiz-result .row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}#joystick{position:fixed;left:24px;bottom:28px;width:120px;height:120px;border-radius:50%;background:#ffffff40;border:2px solid rgba(255,255,255,.6);display:none;z-index:15;touch-action:none}#joystick .knob{position:absolute;left:50%;top:50%;width:52px;height:52px;margin:-26px 0 0 -26px;border-radius:50%;background:#ffffffd9;box-shadow:var(--shadow)}@media (pointer: coarse){#joystick{display:block}#hint{display:none}}@media (max-width: 720px){#topbar{right:12px;top:8px;left:8px;gap:6px}#topbar .lbl,.brand .en,.brand .zh{display:none!important}.chip,.brand{padding:6px 10px}#hud-right{bottom:auto;right:8px;top:54px;width:120px}#minimap{width:120px;height:120px}#readout{font-size:.72rem;padding:6px 8px}#notebook{top:54px;width:min(300px,calc(100vw - 150px))}#card{max-height:46vh;bottom:8px;padding:14px 16px}#card.open~#joystick{display:none}#field-panel{left:8px;right:8px;bottom:8px;width:auto;max-height:40vh;padding:10px 12px 12px}#field-panel.show~#joystick{bottom:calc(40vh + 20px)}.intro-box{padding:22px 18px 18px}}
