@import "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600&family=Manrope:wght@400;500;600;700&display=swap";:root{color:#ecf1eb;font-synthesis:none;--glass:#122725e0;--muted:#b5c5bd;--line:#cfe4d42e;--accent:#d4edac;background:#172d2d;font-family:Manrope,Noto Sans SC,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);color:inherit;background:#e6f4e20f;border-radius:9px;padding:10px 13px}button:hover{background:#e6f4e229}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);color:#20342a;border-color:var(--accent);font-weight:600}button.primary:hover{background:#e5f8c9}a{color:var(--accent)}canvas{touch-action:none;width:100%;height:100%;display:block}.scene{position:fixed;inset:0}.overlay{pointer-events:none;position:fixed;inset:0}.overlay>*{pointer-events:auto}.topbar{justify-content:space-between;align-items:center;gap:20px;display:flex;position:absolute;inset:24px 28px auto}.brand{text-shadow:0 2px 14px #153829;align-items:center;gap:12px;display:flex}.brand-mark{border:1px solid #d9e8d3;border-radius:50%;place-items:center;width:40px;height:40px;font-size:23px;display:grid}.brand strong{letter-spacing:5px;font-size:22px}.brand small{letter-spacing:2px;margin-top:3px;font-size:9px;display:block}.top-actions{gap:8px;display:flex}.top-actions button{background:var(--glass);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.intro{text-shadow:0 2px 20px #173c33;max-width:360px;position:absolute;top:110px;left:28px}.eyebrow{letter-spacing:3px;color:var(--accent);text-transform:uppercase;font-size:10px}.intro h1{letter-spacing:4px;overflow-wrap:anywhere;max-width:330px;margin:10px 0;font-size:38px;font-weight:500;line-height:1.2}.intro p{color:#ebf0e5;max-width:285px;font-size:12px;line-height:1.9}.pill{background:var(--glass);border:1px solid var(--line);letter-spacing:.4px;border-radius:20px;align-items:center;gap:7px;padding:7px 12px;font-size:10px;display:inline-flex}.pill:before{content:"";background:#d4edac;border-radius:50%;width:5px;height:5px}.panel{background:var(--glass);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--line);border-radius:18px;width:310px;padding:23px;position:absolute;top:110px;bottom:102px;right:28px;overflow-y:auto;box-shadow:0 18px 70px #0b211728}.panel h2{margin:10px 0 12px;font-size:22px;font-weight:500}.panel p{color:#d0dcd2;font-size:12px;line-height:1.9}.panel .limit{color:#aebfb2;border-left:2px solid #b5c393;padding-left:11px;font-size:11px}.panel .source{margin:14px 0;font-size:11px;line-height:1.7;display:block}.divider{background:var(--line);height:1px;margin:20px 0}.label{letter-spacing:1px;color:var(--muted);font-size:10px}.branches{gap:8px;margin-top:12px;display:grid}.branch{text-align:left;justify-content:space-between;font-size:12px;display:flex}.branch span:last-child{color:var(--accent)}.metrics{grid-template-columns:1fr 1fr;gap:8px;margin:16px 0;display:grid}.metric{border:1px solid var(--line);background:#e6f2e709;border-radius:10px;padding:10px}.metric b{margin-top:5px;font-size:14px;font-weight:500;display:block}.metric small{color:var(--muted);font-size:10px}.toolbar{justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute;bottom:24px;left:28px;right:28px}.navgroup{border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);border-radius:14px;align-items:center;gap:8px;padding:8px;display:flex}.breadcrumbs{color:#c9d9cc;max-width:330px;padding:0 8px;font-size:11px}.status{background:var(--glass);border:1px solid var(--line);text-align:right;border-radius:8px;padding:10px 13px;font-size:10px;line-height:1.7}.instructions{color:#e6ede3;text-shadow:0 2px 8px #000;font-size:11px;line-height:1.8;position:absolute;bottom:108px;left:28px}.toast{color:#20342a;opacity:0;background:#e0edcf;border-radius:8px;max-width:80vw;padding:11px 20px;font-size:12px;transition:opacity .2s;position:absolute;bottom:105px;left:50%;transform:translate(-50%)}.toast.show{opacity:1}.experiment{background:var(--glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--line);border-radius:16px;width:290px;max-height:calc(100vh - 225px);padding:21px;position:absolute;top:110px;left:28px;overflow:auto}.experiment h2{margin:0 0 10px;font-size:19px}.experiment p{color:var(--muted);font-size:11px;line-height:1.8}.experiment label{justify-content:space-between;margin:20px 0 7px;font-size:12px;display:flex}.experiment input{width:100%;accent-color:var(--accent)}.experiment output{color:var(--accent)}[hidden]{display:none!important}.touch-controls{gap:6px;display:none;position:absolute;bottom:165px;left:25px}.touch-controls button{background:var(--glass);width:44px}.loading{text-align:center;z-index:5;background:#182f2c;place-content:center;display:grid;position:fixed;inset:0}.loading p{color:var(--muted);font-size:12px}.reference{border:1px solid var(--line);color:#fff;z-index:10;background:#142b27;border-radius:18px;width:min(1000px,90vw);max-height:90vh;margin:0;padding:18px;position:fixed;inset:50%;transform:translate(-50%,-50%)}.reference::backdrop{background:#06130caa}.reference img{object-fit:contain;border-radius:10px;width:100%;max-height:67vh}.reference p{font-size:12px;line-height:1.7}.reference header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.legend{color:#d8e3d7;gap:12px;margin:14px 0;font-size:10px;display:flex}.dot{border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block}.panel.collapsed{display:none}.compass{color:#e2ebde;align-items:center;gap:12px;font-size:11px;display:flex;position:absolute;top:360px;left:28px}.compass span{background:#14322a55;border:1px solid #c4d6c755;border-radius:50%;place-items:center;width:44px;height:44px;display:grid}@media (width<=800px){.topbar{inset:16px 16px auto}.brand strong{font-size:18px}.top-actions button{padding:8px;font-size:11px}.intro{top:90px;left:18px}.intro h1{font-size:28px}.intro p{display:none}.panel{width:265px;max-height:43vh;padding:17px;top:auto;bottom:98px;right:14px}.toolbar{align-items:flex-end;bottom:14px;left:14px;right:14px}.navgroup{flex-wrap:wrap;max-width:72%}.breadcrumbs{display:none}.status{max-width:110px;font-size:9px}.instructions{max-width:110px;font-size:10px;bottom:110px;left:18px}.compass{top:250px;left:18px}.experiment{z-index:2;width:270px;top:145px;left:14px}.touch-controls{flex-wrap:wrap;width:105px;display:flex;bottom:195px;left:16px}.toast{z-index:6;width:max-content;bottom:85px}.brand small{font-size:8px}.reference{width:94vw}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.measurement{background:var(--glass);border:1px solid var(--line);text-align:center;border-radius:10px;max-width:90vw;padding:12px 18px;font-size:12px;position:absolute;bottom:105px;left:50%;transform:translate(-50%)}button[aria-pressed=true]{color:#20342a;background:#d4edac}@media (width<=800px){.topbar{align-items:flex-start;gap:8px}.brand{flex-shrink:0}.brand small,.brand-mark{display:none}.top-actions{flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:245px}.top-actions button{padding:7px;font-size:10px}.intro{top:115px}.compass{top:220px}.measurement{width:90vw;bottom:90px}}.scale-transition{pointer-events:none;z-index:1;transform-origin:50%;width:100vw;height:100vh;position:fixed;inset:0}.overlay{z-index:2}.scale-hint{pointer-events:none;background:#142b27dd;border-radius:8px;max-width:80vw;padding:8px 12px;font-size:12px;position:absolute;bottom:100px;left:50%;transform:translate(-50%)}.scale-hint:empty{display:none}.camera-panel{width:332px;max-height:calc(100vh - 124px);padding:18px 20px;top:96px;left:auto;right:28px;overflow-y:auto}.camera-panel .camera-row{margin:5px 0}.camera-panel .camera-row label{color:#cfdcd3;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:3px;font-size:11.5px;display:flex}.camera-panel output{color:var(--accent);font-variant-numeric:tabular-nums;font-size:12px}.camera-panel input[type=range]{accent-color:#d4edac;background:0 0;width:100%;height:16px}.camera-panel select{border:1px solid var(--line);width:100%;color:inherit;background:#16302c;border-radius:9px;padding:8px 9px;font-size:12px}.camera-panel .check{color:#cfdcd3;justify-content:flex-start;align-items:center;gap:8px;margin:10px 0;font-size:12px;display:flex}.camera-actions{flex-wrap:wrap;gap:6px;margin:9px 0;display:flex}.camera-actions button{padding:7px 10px;font-size:11px}.capture-box{border:1px solid var(--line);border-radius:11px;flex-direction:column;gap:6px;margin:9px 0;padding:9px 10px;display:flex}.capture-box figcaption{margin:0}.camera-panel #capture4kButton{background:var(--accent);color:#20342a;border-color:var(--accent);font-weight:600}.camera-panel textarea{color:#dff0e4;border:1px solid var(--line);resize:vertical;background:#122a26;border-radius:9px;width:100%;min-height:120px;margin-top:8px;padding:8px;font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.camera-panel details{margin-top:10px}.camera-panel summary{cursor:pointer;color:#cfdcd3;font-size:12px}@media (width<=800px){.camera-panel{width:auto;max-width:none;max-height:56vh;inset:auto 14px 98px}}.science{margin-top:10px}.science .label{margin-bottom:6px}.science-list{grid-template-columns:68px 1fr;gap:4px 8px;margin:0;font-size:11px;line-height:1.55;display:grid}.science-list dt{color:#a9d2b8;font-weight:600}.science-list dd{color:#d8e6da;opacity:.92;margin:0}@media (width<=800px){.science-list{grid-template-columns:60px 1fr;font-size:11px}}.scalebar{z-index:5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#dcecdf;pointer-events:none;background:#0916116b;border:1px solid #bee6cd2e;border-radius:10px;flex-direction:column;align-items:center;gap:6px;padding:8px 12px;font-size:11px;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.scalebar-line{border-left:2px solid #cfe8d6;border-right:2px solid #cfe8d6;justify-content:center;width:160px;height:8px;display:flex;position:relative}#scaleBarBar{background:#cfe8d68c;border-radius:2px;height:100%;display:block}.scalebar-caption{white-space:nowrap;align-items:baseline;gap:8px;display:flex}.scalebar-caption output{color:#f2fff5;letter-spacing:.02em;font-weight:700}.scalebar-caption small{color:#a9c9b4;font-size:10px}@media (width<=800px){.scalebar{padding:6px 10px;bottom:92px}.scalebar-line{width:120px}.scalebar-caption small{display:none}}.scale-demo{margin:8px 0 0;font-size:12px;line-height:1.5}.scale-demo a{color:#9fe0c0;border-bottom:1px dotted #9fe0c080;text-decoration:none}.scale-demo a:hover{color:#c8f2de}.scale-demo small{color:#8ba39b;margin-top:4px;display:block}.journey-actions{grid-template-columns:1fr 1fr;gap:6px;margin:8px 0;display:grid}.journey-actions button{padding:7px 8px;font-size:12px}.journey-hud{z-index:24;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#e8f2ea;background:#0a1816d1;border:1px solid #b4dcc847;border-radius:14px;width:min(560px,100vw - 28px);padding:12px 14px;font-size:12px;position:fixed;bottom:104px;left:50%;transform:translate(-50%)}.journey-hud-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.journey-hud-head b{letter-spacing:.04em;font-size:14px}.journey-hud-head button{color:#e8f2ea;cursor:pointer;background:#ffffff14;border:1px solid #b4dcc84d;border-radius:999px;padding:4px 10px;font-size:11px}.journey-hud dl{grid-template-columns:auto 1fr;gap:3px 10px;margin:6px 0;display:grid}.journey-hud dt{opacity:.62}.journey-hud dd{color:#d7f0d9;font-variant-numeric:tabular-nums;margin:0}.journey-hud p{opacity:.66;margin:6px 0 0;font-size:11px;line-height:1.45}body.journey-active .scalebar,body.journey-active .instructions,body.journey-active .compass,body.journey-active .intro,body.journey-active .camera-panel{display:none!important}.eco-note{z-index:16;color:#dcefe2;letter-spacing:.02em;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;text-align:right;background:#0c1a189e;border:1px solid #b4dcc833;border-radius:10px;padding:7px 11px;font-size:11px;position:fixed;bottom:112px;right:20px}.eco-note small{opacity:.62;margin-top:2px;font-size:10px;display:block}body.journey-active .eco-note{display:none!important}@media (width<=800px){.eco-note{display:none!important}}.top-actions #speedButton{color:#eaf7da;border-color:#d4edac8c}.speed-panel{z-index:22;background:var(--glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--line);border-radius:14px;width:300px;padding:18px 20px;position:absolute;top:96px;right:28px;box-shadow:0 18px 50px #00000047}.speed-panel h2{margin:6px 0 4px;font-size:17px}.speed-panel p{color:#cfdcd3;margin:6px 0 10px;font-size:11.5px;line-height:1.65}.speed-panel .speed-row{margin:9px 0}.speed-panel .speed-row label{color:#cfdcd3;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:3px;font-size:11.5px;display:flex}.speed-panel output{color:var(--accent);font-variant-numeric:tabular-nums;font-size:12px}.speed-panel input[type=range]{accent-color:#d4edac;background:0 0;width:100%;height:16px}.speed-panel input[type=range]:disabled{opacity:.4}.speed-panel .speed-actions{gap:8px;margin-top:10px;display:flex}.speed-panel .speed-actions button{flex:1}.speed-panel .source{color:#9fb7a8;margin-top:8px;font-size:10.5px;line-height:1.5}body.journey-active .speed-panel{display:none!important}@media (width<=800px){.speed-panel{width:auto;max-height:56vh;inset:auto 14px 98px;overflow-y:auto}}.micro-route{border-top:1px solid #96d2af38;margin-top:12px;padding-top:10px}.micro-route .label{margin-bottom:6px}.micro-route h3{color:#e9f4ea;letter-spacing:.01em;margin:0 0 6px;font-size:13px;font-weight:650}.micro-route p{color:#bfd6c4;margin:0 0 8px;font-size:11px;line-height:1.55}.micro-route ol{counter-reset:microroute;grid-template-columns:1fr 1fr;gap:5px 10px;margin:0 0 8px;padding:0;list-style:none;display:grid}.micro-route ol li{color:#d8e6da;padding-left:16px;font-size:10.5px;line-height:1.45;position:relative}.micro-route ol li:before{counter-increment:microroute;content:counter(microroute);color:#a9d2b8;text-align:center;background:#96d2af29;border-radius:50%;width:12px;height:12px;font-size:8px;line-height:12px;position:absolute;top:1px;left:0}.micro-route ol li b{color:#e9f4ea;font-weight:600;display:block}.micro-route ol li span{color:#a9c7b0;font-size:9.5px;display:block}.micro-route a.micro-route-link{color:#cde7a8;border-bottom:1px dashed #cde7a873;margin-top:2px;font-size:10.5px;text-decoration:none;display:inline-block}.micro-route a.micro-route-link:hover{color:#eaf7c9}.micro-route small{color:#9db9a4;opacity:.9;margin-top:7px;font-size:9.5px;line-height:1.5;display:block}@media (width<=800px){.micro-route ol{grid-template-columns:1fr}}
