:root{--ink: #f4f1ea;--mute: #aeb4c2;--bg: #101828;--red: #ef3340;--sky: #00a1de;--glass: rgba(16, 24, 40, .72);--line: rgba(255, 255, 255, .14);font:14px/1.4 ui-sans-serif,-apple-system,SF Pro Text,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root,.app{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);overscroll-behavior:none}.map{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg)}.splash{display:grid;place-items:center;height:100%;color:var(--mute);letter-spacing:.04em}.glass{background:var(--glass);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);border:1px solid var(--line);box-shadow:0 8px 28px #00000061}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--sky);outline-offset:2px}.top{position:fixed;top:calc(14px + env(safe-area-inset-top));left:50%;transform:translate(-50%);width:min(440px,calc(100vw - 24px));z-index:5}.pill{display:flex;align-items:center;gap:10px;height:48px;padding:0 8px 0 16px;border-radius:24px}.pill svg{flex:none;color:var(--mute)}.pill input{flex:1;min-width:0;height:100%;border:0;outline:0;background:none;color:var(--ink);font-size:16px}.pill input::placeholder{color:var(--mute)}.pill input::-webkit-search-cancel-button{display:none}kbd{padding:1px 7px;border:1px solid var(--line);border-radius:5px;color:var(--mute);font:12px ui-monospace,Menlo,monospace}.ibtn{display:grid;place-items:center;width:34px;height:34px;flex:none;border:0;border-radius:50%;background:#ffffff17}.ibtn svg{color:var(--ink)}.ibtn:hover{background:#ffffff2e}.results{list-style:none;margin:8px 0 0;padding:6px;border-radius:16px;max-height:60vh;overflow:auto}.results button{display:flex;justify-content:space-between;align-items:baseline;gap:12px;width:100%;padding:9px 11px;border:0;border-radius:10px;background:none;text-align:left}.results button.on,.results button:hover{background:#ffffff1c}.results .sub{flex:none;color:var(--mute);font-size:12px}.results .none{padding:10px 12px;color:var(--mute)}.pins{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:2}.pin{position:absolute;left:0;top:0;padding:0;border:0;background:none;pointer-events:auto;will-change:transform}.pin span{position:absolute;left:0;bottom:18px;transform:translate(-50%);padding:4px 9px;border-radius:999px;background:var(--glass);border:1px solid var(--line);white-space:nowrap;font-size:12px;font-weight:600;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.pin i{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:var(--pin, var(--ink));border:2px solid #101828}.pin i:before{content:"";position:absolute;left:1px;bottom:8px;width:2px;height:11px;background:#101828d9}.pin:hover span{background:#1d2a44}.pin.on span{background:var(--red);border-color:var(--red);color:#fff}.cat-landmark{--pin: #ffd166}.cat-culture{--pin: #f28482}.cat-history{--pin: #c9a227}.cat-bridge{--pin: #7bdff2}.cat-park{--pin: #3ddc84}.cat-square{--pin: #f4f1ea}.cat-transport{--pin: #a0c4ff}.cat-viewpoint{--pin: #7bdff2}.quarter{position:absolute;left:0;top:0}.quarter span{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;font-size:13px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;text-shadow:0 0 3px #101828,0 0 8px rgba(16,24,40,.95),0 1px 3px #000}.card{position:fixed;left:16px;bottom:calc(44px + env(safe-area-inset-bottom));width:min(320px,calc(100vw - 96px));padding:13px 44px 13px 16px;border-radius:16px;z-index:4}.card b{font-size:15px}.card p{margin:4px 0 0;color:#d6d8df;font-size:13px}.close{position:absolute;top:8px;right:8px;width:28px;height:28px;font-size:18px;line-height:1}.tools{position:fixed;right:16px;bottom:calc(44px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;z-index:4}.round{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-size:22px;line-height:1}.share{border:0;background:var(--red);color:#fff;box-shadow:0 6px 18px #ef334073}.round:hover{filter:brightness(1.15)}.foot{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:6px 12px calc(6px + env(safe-area-inset-bottom));font-size:12px;color:var(--mute);pointer-events:none;z-index:3;text-shadow:0 1px 2px #000}.foot>*{pointer-events:auto}.badge{margin-right:auto;padding:2px 9px;border-radius:999px;background:#101828bf;color:#ffd166;text-shadow:none}.link{padding:0;border:0;background:none;text-decoration:underline;color:inherit}.toast{position:fixed;bottom:54px;left:50%;transform:translate(-50%);padding:9px 16px;border-radius:999px;z-index:6;white-space:nowrap}.about-wrap{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:16px;background:#060a1280;z-index:7}.about{position:relative;width:min(520px,100%);max-height:86vh;overflow:auto;padding:24px;border-radius:20px;background:#101828f0}.about h1{margin:0 34px 8px 0;font-size:22px}.about h2{margin:18px 0 6px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}.about ul{margin:0;padding-left:18px}.about a{color:#7bdff2}@media(max-width:640px){kbd,.tools .glass{display:none}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:1}.layers{position:fixed;left:16px;bottom:calc(44px + env(safe-area-inset-bottom));display:flex;gap:4px;padding:4px;border-radius:999px;z-index:4}.layers button{border:0;background:transparent;color:inherit;font:600 13px/1 system-ui,sans-serif;padding:8px 14px;border-radius:999px;cursor:pointer}.layers button.on{background:#ef3340;color:#fff}.layers button:focus-visible{outline:2px solid #ef3340;outline-offset:2px}.landmark{position:fixed;top:76px;right:16px;bottom:calc(96px + env(safe-area-inset-bottom));width:min(420px,calc(100vw - 32px));border-radius:18px;z-index:6;display:flex;flex-direction:column;overflow:hidden}.landmark .close{position:absolute;top:10px;right:10px;z-index:2}.lm-hero{height:150px;background-size:cover;background-position:center;flex:none}.landmark header{padding:12px 18px 0}.landmark h2{margin:0;font-size:20px}.lm-local{margin:2px 0 0;opacity:.7;font-size:13px}.lm-tabs{display:flex;gap:4px;padding:10px 14px 6px}.lm-tabs button{border:0;background:transparent;color:inherit;font:600 13px/1 system-ui,sans-serif;padding:7px 12px;border-radius:999px;cursor:pointer}.lm-tabs button.on{background:#ef3340;color:#fff}.lm-tabs button:focus-visible{outline:2px solid #ef3340;outline-offset:2px}.lm-body{padding:6px 18px 18px;overflow:auto;font-size:14px;line-height:1.5}.lm-body dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px}.lm-body dt{font-weight:600;opacity:.75}.lm-body dd{margin:0}.lm-body .muted{opacity:.7;font-size:13px}.lm-body a{color:#ff7b85}.lm-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.lm-grid figure{margin:0}.lm-grid img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:8px;display:block}.lm-grid figcaption{font-size:12px;opacity:.85;margin-top:4px}.credit{display:block;opacity:.7;font-size:11px}.lm-cutaway{width:100%;border-radius:10px;margin-bottom:8px}.model3d{width:100%;height:300px;border-radius:12px;background:radial-gradient(#2a3348,#121826);overflow:hidden}.graded{position:fixed;top:0;right:0;bottom:0;left:0;transition:filter .8s ease}.scene{position:fixed;left:50%;transform:translate(-50%);bottom:calc(14px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:6px;padding:8px 12px;border-radius:16px;z-index:4}.scene-row{display:flex;align-items:center;gap:6px;justify-content:center}.scene input[type=range]{width:min(320px,46vw);accent-color:#ef3340}.scene-time{font:600 13px/1 system-ui,sans-serif;font-variant-numeric:tabular-nums;min-width:42px}.scene button{border:0;background:transparent;color:inherit;font:600 12px/1 system-ui,sans-serif;padding:6px 10px;border-radius:999px;cursor:pointer}.scene button.on{background:#ef3340;color:#fff}.scene button.xmas.on{background:#1f7a3d}.scene button:focus-visible{outline:2px solid #ef3340;outline-offset:2px}@media(max-width:640px){.scene{bottom:calc(60px + env(safe-area-inset-bottom))}}
