:root{color-scheme:light;--bg: #eef4fa;--ink: #13222d;--dim: #45606f;--faint: #7c8fa0;--glass: rgba(255, 255, 255, .72);--glass-strong: rgba(255, 255, 255, .92);--line: rgba(19, 34, 45, .12);--accent: #0f766e;--accent2: #7c3aed;--gold: #b45309;--mono: "JetBrains Mono", ui-monospace, "Cascadia Mono", monospace;--sans: "Space Grotesk", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);overflow:hidden}canvas{display:block}h1,h2,h3{margin:0;font-weight:600;letter-spacing:.01em}::selection{background:#0f766e33}.status-pill{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);border:1px solid var(--line);border-radius:999px;padding:4px 10px;background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.glass{background:var(--glass-strong);border:1px solid var(--line);border-radius:14px;-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2);box-shadow:0 8px 40px #13222d1f,inset 0 1px #fffc}.hud-btn{font-family:var(--sans);font-size:12px;color:var(--dim);background:var(--glass);border:1px solid var(--line);border-radius:10px;padding:7px 13px;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all .18s ease}.hud-btn:hover{color:var(--ink);border-color:#0f766e66;box-shadow:0 0 18px #0f766e1f}.mono-key{font-family:var(--mono)}.scroll-slim::-webkit-scrollbar{width:6px}.scroll-slim::-webkit-scrollbar-thumb{background:#13222d2e;border-radius:999px}.city-center-note{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:10px;z-index:50;color:var(--dim);font-family:var(--mono);font-size:13px;letter-spacing:.06em;pointer-events:none}.city-pulse{width:10px;height:10px;border-radius:50%;background:#2fbf71;animation:city-blink 1.2s ease-in-out infinite}@keyframes city-blink{0%,to{opacity:.25}50%{opacity:1}}.city-label{border:1px solid var(--line);background:#ffffffd1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:10px;padding:4px 9px;display:flex;flex-direction:column;align-items:center;gap:1px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.city-label:hover,.city-label.is-focused{border-color:#0f766e73;box-shadow:0 4px 18px #0f766e24}.city-label-name{font-size:12px;font-weight:600;color:var(--ink)}.city-label.is-focused .city-label-name{color:#0f766e}.city-label-meta{font-family:var(--mono);font-size:9px;color:var(--faint)}.city-landmark-label{border:1px solid rgba(180,83,9,.35);background:#fffaf0eb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:12px;padding:6px 12px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.city-landmark-label:hover{transform:translateY(-2px);box-shadow:0 8px 24px #b4530933}.city-bridge-label{border:1px solid rgba(245,185,66,.6);background:#fffcf0f0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:10px;padding:4px 10px;display:flex;flex-direction:column;align-items:center;gap:1px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.city-bridge-label:hover{transform:translateY(-2px);box-shadow:0 8px 20px #f5b94259}.city-landmark-name{font-size:13px;font-weight:700;color:var(--ink)}.city-landmark-meta{font-family:var(--mono);font-size:9.5px;color:var(--dim)}.city-arrival{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse 60% 45% at 50% 120%,rgba(245,185,66,.25),transparent 70%),radial-gradient(ellipse 55% 40% at 20% 20%,rgba(124,58,237,.1),transparent 70%),linear-gradient(180deg,#cfe4f7,#eef4fa 55%,#f7f3e8);pointer-events:auto}.city-arrival-inner{max-width:640px;text-align:center;padding:24px}.city-arrival-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-bottom:18px}.city-arrival-title{font-size:clamp(38px,7vw,72px);line-height:1.02;letter-spacing:-.02em;color:var(--ink)}.city-arrival-title em{font-style:normal;background:linear-gradient(90deg,#0f766e,#7c3aed);-webkit-background-clip:text;background-clip:text;color:transparent}.city-arrival-body{font-size:17px;color:var(--dim);line-height:1.55;margin:18px auto 0;max-width:480px}.city-arrival-stats{display:flex;justify-content:center;gap:26px;margin-top:26px;flex-wrap:wrap}.city-arrival-stats span{font-family:var(--mono);font-size:12px;color:var(--faint)}.city-arrival-stats b{color:var(--ink);font-size:15px}.city-arrival-hint{margin:20px auto 0;max-width:520px;font-size:12.5px;color:var(--faint);line-height:1.6}.city-enter-btn{margin-top:30px;padding:15px 38px;border-radius:14px;border:none;cursor:pointer;font-family:var(--sans);font-size:16px;font-weight:700;color:#fff;background:linear-gradient(90deg,#0f766e,#7c3aed);box-shadow:0 12px 34px #0f766e59;transition:box-shadow .2s ease}.city-enter-btn:hover{box-shadow:0 16px 44px #7c3aed59}.city-breadcrumb{position:fixed;top:64px;left:16px;z-index:52;font-family:var(--mono);font-size:12px;color:var(--dim);background:var(--glass);border:1px solid var(--line);border-radius:10px;padding:7px 12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.city-breadcrumb-domain{text-transform:uppercase;letter-spacing:.12em;font-size:10px;color:var(--faint)}.city-breadcrumb-sep{margin:0 6px;color:var(--faint)}.city-district-card{position:fixed;top:64px;right:16px;z-index:52;width:320px;padding:16px;border-radius:16px;background:var(--glass-strong);border:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 12px 40px #13222d24}.city-district-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.city-district-dot{width:12px;height:12px;border-radius:4px}.city-district-name{font-size:17px;font-weight:700}.city-district-family{font-family:var(--mono);font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.08em}.city-beacon{font-family:var(--mono);font-size:10px;padding:2px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.08em}.city-beacon-healthy{background:#2fbf7124;color:#1c7a48}.city-beacon-healing{background:#f5a74229;color:#a3691a}.city-beacon-failed{background:#ff6e6e24;color:#c23737}.city-beacon-stale{background:#7c8fa024;color:#5c7183}.city-district-blurb{font-size:13px;color:var(--dim);line-height:1.5;margin:10px 0 12px}.city-district-meters{display:flex;flex-direction:column;gap:8px}.city-meter{display:flex;align-items:center;gap:8px}.city-meter-k{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);width:84px}.city-meter-bar{flex:1;height:6px;border-radius:999px;background:#13222d14;overflow:hidden}.city-meter-bar span{display:block;height:100%;border-radius:999px;transition:width .5s ease}.city-meter-v{font-family:var(--mono);font-size:11px;color:var(--dim);width:64px;text-align:right}.city-district-actions{display:flex;align-items:center;justify-content:space-between;margin-top:14px}.city-action{border:1px solid var(--line);background:var(--glass);border-radius:9px;padding:6px 12px;font-size:12px;color:var(--dim);cursor:pointer}.city-action:hover{color:var(--ink);border-color:#0f766e66}.city-district-evidence{font-family:var(--mono);font-size:11px;color:var(--faint)}.city-drawer{position:fixed;top:64px;right:16px;width:380px;z-index:62;padding:18px;border-radius:16px;background:var(--glass-strong);border:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 12px 40px #13222d29}.city-drawer-tab{display:flex;justify-content:space-between;align-items:center}.city-drawer-tab-k{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.city-drawer-close{border:none;background:none;font-size:14px;cursor:pointer;color:var(--faint)}.city-drawer-title{font-size:19px;margin:8px 0;line-height:1.25}.city-drawer-meta{display:flex;flex-wrap:wrap;gap:6px 12px;font-family:var(--mono);font-size:10.5px;color:var(--dim);align-items:center}.city-drawer-excerpt{margin:12px 0;padding:12px 14px;border-left:3px solid rgba(15,118,110,.5);background:#0f766e0d;border-radius:8px;font-size:13px;line-height:1.55;color:var(--dim)}.city-drawer-foot{display:flex;justify-content:space-between;align-items:center;gap:10px}.city-source-link{font-size:13px;font-weight:600;color:#0f766e;text-decoration:none}.city-source-link:hover{text-decoration:underline}.city-drawer-footnote{font-family:var(--mono);font-size:10px;color:var(--faint)}.city-health{position:fixed;bottom:16px;left:16px;z-index:52;padding:12px 14px;border-radius:14px;background:var(--glass-strong);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);max-width:300px}.city-health-head{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:7px}.city-health-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.city-health-item{display:inline-flex;gap:5px;align-items:center;font-family:var(--mono);font-size:10.5px;color:var(--dim)}.city-health-item b{color:var(--ink)}.city-health-foot{margin-top:6px;font-size:10px;color:var(--faint)}.city-route{position:fixed;left:16px;bottom:92px;z-index:52;padding:12px 14px;border-radius:14px;background:var(--glass-strong);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);max-width:360px}.city-route-head{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}.city-route-kicker{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}.city-route-headline{font-size:14.5px;font-weight:700;color:var(--ink)}.city-route-steps{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.city-route-step{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--line);background:var(--glass);border-radius:999px;padding:5px 12px;font-size:12px;color:var(--dim);cursor:pointer;transition:all .15s ease}.city-route-step:hover{border-color:#0f766e73;color:var(--ink)}.city-route-step.is-target{background:#0f766e1a;border-color:#0f766e80;color:#0f766e;font-weight:600}.city-route-idx{font-family:var(--mono);font-size:9px;color:var(--faint)}.city-route-cta{font-size:10px;color:var(--faint);font-style:italic}.city-scrub{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:52;display:flex;gap:10px;align-items:center;padding:10px 16px;pointer-events:auto;background:var(--glass-strong);border:1px solid var(--line);border-radius:999px;box-shadow:0 8px 32px #13222d29;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.city-scrub input[type=range]{width:300px;accent-color:#0f766e;cursor:pointer}.city-scrub-play{width:34px;height:34px;border-radius:999px;border:1px solid rgba(15,118,110,.4);background:#0f766e12;color:#0f766e;cursor:pointer;font-size:13px;transition:all .18s ease}.city-scrub-play:hover,.city-scrub-play.is-playing{background:#0f766e2e}.city-scrub-label{font-family:var(--mono);font-size:11px;color:var(--dim);white-space:nowrap}.city-legend{position:fixed;bottom:16px;right:16px;z-index:52;pointer-events:none;padding:12px 14px;border-radius:12px;background:var(--glass-strong);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);max-width:250px}.city-legend-head{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:8px}.city-legend-items{display:flex;flex-direction:column;gap:6px}.city-legend-item{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--dim)}.city-swatch{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0}.city-swatch-ico{width:12px;font-style:normal;font-size:12px;color:var(--dim)}.city-hoverpill{position:fixed;top:64px;left:50%;transform:translate(-50%);z-index:52;padding:9px 16px;border-radius:12px;background:var(--glass-strong);border:1px solid rgba(180,83,9,.3);display:flex;flex-direction:column;gap:3px;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.city-hoverpill-title{font-size:13px;font-weight:600;color:var(--ink)}.city-hoverpill-meta{font-family:var(--mono);font-size:10px;color:var(--faint)}.city-construction{position:fixed;top:64px;left:16px;z-index:52;max-width:360px;display:flex;gap:12px;align-items:flex-start;padding:13px 16px;border-radius:13px;background:#fffaeef0;border:1px solid rgba(180,83,9,.35);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.city-construction-ico{font-size:20px;animation:city-swing 2.6s ease-in-out infinite;transform-origin:50% 0}@keyframes city-swing{0%,to{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}.city-construction-head{font-size:13px;font-weight:600;color:#8a5a14}.city-construction-body{margin-top:3px;font-size:12px;color:var(--dim);line-height:1.5}.city-construction-link{border:none;background:none;padding:0;margin:0;cursor:pointer;color:#b45309;font:inherit;text-decoration:underline}.city-crane-note{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px;border-radius:10px;background:#fffdf5f2;border:1px solid rgba(180,83,9,.35);font-family:var(--mono);font-size:10.5px;color:var(--dim);white-space:nowrap}.city-rising{color:#0f766e;border-color:#0f766e59;background:#0f766e0f}.city-hero{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;overflow-y:auto;scroll-snap-type:y proximity;pointer-events:auto;background:radial-gradient(ellipse 65% 50% at 50% 118%,rgba(245,185,66,.3) 0%,transparent 70%),radial-gradient(ellipse 55% 42% at 82% 8%,rgba(124,58,237,.12) 0%,transparent 70%),linear-gradient(180deg,#cfe4f7f0,#eef4faf5 60%,#f7f3e8f7);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.city-hero-skip{position:fixed;top:22px;right:24px;z-index:75;font-family:var(--mono);font-size:12.5px;color:var(--dim);background:var(--glass-strong);border:1px solid var(--line);border-radius:999px;padding:9px 16px;cursor:pointer;transition:all .18s ease}.city-hero-skip:hover{color:var(--ink);border-color:#0f766e80;transform:translateY(-1px)}.city-hero-section{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:90px 24px 140px;scroll-snap-align:start}.city-hero-section>div{max-width:760px;text-align:center}.city-hero-kicker{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin-bottom:20px}.city-hero-title{font-size:clamp(30px,5.4vw,56px);line-height:1.08;letter-spacing:-.02em;color:var(--ink);margin-bottom:20px}.city-hero-title em{font-style:normal;background:linear-gradient(90deg,#0f766e,#7c3aed);-webkit-background-clip:text;background-clip:text;color:transparent}.city-hero-body{font-size:16.5px;color:var(--dim);line-height:1.65;max-width:620px;margin:0 auto}.city-hero-chips{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:26px}.city-hero-chip{font-family:var(--mono);font-size:12px;color:var(--dim);background:var(--glass-strong);border:1px solid var(--line);border-radius:999px;padding:9px 16px}.city-hero-scrollhint{margin-top:40px;font-size:12px;color:var(--faint);font-family:var(--mono);animation:city-floaty 2.4s ease-in-out infinite}@keyframes city-floaty{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.city-hero-legend-row{display:flex;justify-content:center;flex-wrap:wrap;gap:12px 22px;margin-top:26px;font-size:13.5px;color:var(--dim)}.city-hero-legend-row span{display:inline-flex;align-items:center;gap:8px}.city-hero-swatch{width:12px;height:12px;border-radius:4px;display:inline-block}.city-hero-ctabar{position:sticky;bottom:0;display:flex;flex-direction:column;align-items:center;gap:10px;padding:22px 24px 30px;background:linear-gradient(180deg,transparent 0%,rgba(238,244,250,.94) 45%)}.city-hero-cta-hint{font-family:var(--mono);font-size:11px;color:var(--faint)}.city-label{padding:7px 13px;min-width:96px;gap:2px;box-shadow:0 4px 16px #13222d14}.city-label-name{font-size:14px}.city-label-meta{font-size:10px}.city-label:hover,.city-label.is-focused{transform:translateY(-2px) scale(1.05)}.city-landmark-label{padding:8px 16px}.city-landmark-name{font-size:15px}.city-landmark-meta{font-size:10.5px}.city-bridge-label{padding:6px 13px}.city-enter-btn{font-size:18px;padding:17px 46px}.city-scrub-play{width:40px;height:40px;font-size:15px}
