html,body,#root{width:100%;height:100%;margin:0}html{overflow-x:hidden}body{-webkit-text-size-adjust:100%;color:#e6ebff;background:#070b18;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow-x:hidden}::selection{background:#5aa6ff66}:root{--ink:#1a1d24;--paper:#f6efe2;--accent:#ff5e3a;--hud-bg:#141a24c7;--hud-bg-strong:#141a24eb;--hud-fg:#f3ead2;--hud-dim:#9aa2b1}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--hud-fg);background:#0a0e1a;font-family:ui-sans-serif,-apple-system,SF Pro Text,Helvetica Neue,Arial,sans-serif;overflow:hidden}.root{width:100%;height:100%;position:relative;overflow:hidden}.canvas-mount{position:absolute;inset:0}canvas{touch-action:none;cursor:grab;display:block}canvas:active{cursor:grabbing}.hud{background:var(--hud-bg);font-feature-settings:"tnum" 1;-webkit-backdrop-filter:blur(8px);border:1px solid #ffffff14;border-radius:10px;padding:12px 14px;position:absolute;box-shadow:0 10px 30px #00000059}.hud-tl{min-width:180px;top:16px;left:16px}.hud-overlay-container .hud-debug{pointer-events:none;flex-shrink:0;width:100%;padding:8px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;position:static}.hud-row{justify-content:space-between;gap:14px;font-size:13px;line-height:1.8;display:flex}.hud-label{color:var(--hud-dim);letter-spacing:.12em;font-size:11px}.hud-value{color:var(--hud-fg);font-variant-numeric:tabular-nums}.scalebar{background:var(--hud-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #ffffff14;border-radius:8px;flex-direction:column;align-items:flex-start;gap:4px;padding:8px 12px;display:flex;position:absolute;bottom:22px;left:22px}.scalebar-track{background:linear-gradient(90deg,#f3ead2 50%,#1a1d24 50%) 0 0/30px 6px;border:1px solid #f3ead2;border-radius:1px;height:6px;transition:width .12s ease-out;position:relative}.scalebar-label{color:var(--hud-fg);font-variant-numeric:tabular-nums;font-size:12px}.panel{background:var(--hud-bg-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #ffffff14;border-radius:12px;width:220px;padding:12px;position:absolute;top:16px;right:16px}.panel-title{letter-spacing:.16em;color:var(--hud-dim);text-transform:uppercase;margin-bottom:8px;font-size:11px}.segmented{background:#ffffff0f;border:1px solid #ffffff14;border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:4px;margin-bottom:12px;padding:3px;display:grid}.panel button{width:100%;color:var(--hud-fg);text-align:left;font:inherit;cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:8px;margin-bottom:6px;padding:8px 10px;font-size:13px;transition:background .1s,border-color .1s,transform 80ms;display:block}.panel .segmented button{text-align:center;border-color:#0000;border-radius:6px;margin:0;padding:6px 8px}.panel .segmented button.is-active{background:#f3ead224;border-color:#f3ead247}.panel button:hover{background:#ffffff0f;border-color:#ffffff2e}.panel button:active{transform:translateY(1px)}.city-tip{pointer-events:none;background:var(--hud-bg-strong);color:var(--hud-fg);white-space:nowrap;border:1px solid #ffffff1a;border-radius:6px;padding:4px 8px;font-size:12px;position:fixed}.marker-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.marker-label{min-width:0;max-width:180px;color:var(--hud-fg);white-space:nowrap;-webkit-backdrop-filter:blur(8px);background:#0c121dc7;border:1px solid #ffffff24;border-radius:7px;align-items:center;gap:6px;padding:5px 8px;font-size:12px;line-height:1.2;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 14px));box-shadow:0 8px 24px #00000047}.marker-label-btn{pointer-events:auto;cursor:pointer;font:inherit;appearance:none;transition:border-color .15s,background .15s}.marker-label-btn:hover{background:#121a28eb;border-color:#ffffff47}.marker-swatch{border-radius:50%;flex:none;width:8px;height:8px;box-shadow:0 0 10px}.marker-text{text-overflow:ellipsis;overflow:hidden}.hint{color:var(--hud-dim);letter-spacing:.05em;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#141a2480;border-radius:999px;padding:5px 10px;font-size:12px;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.root.mode-cyberpunk{--hud-bg:#0a0518d9;--hud-bg-strong:#0f0624f0;--hud-fg:#00f5ff;--hud-dim:#ff2eea;--accent:#ff2eea}.mode-cyberpunk .hud,.mode-cyberpunk .panel,.mode-cyberpunk .scalebar{border:1px solid #ff2eea59;box-shadow:0 0 15px #ff2eea40,inset 0 0 8px #00f5ff1a}.mode-cyberpunk .panel:before{content:"";background:linear-gradient(90deg,#ff2eea 0%,#00f5ff 50%,#ffe600 100%);border-radius:12px 12px 0 0;height:4px;position:absolute;top:0;left:0;right:0}.mode-cyberpunk .hud-tl:before{content:"";background:linear-gradient(90deg,#00f5ff 0%,#ff2eea 100%);border-radius:10px 10px 0 0;height:3px;position:absolute;top:0;left:0;right:0}.mode-cyberpunk button{color:#00f5ff;text-shadow:0 0 4px #00f5ff4d;border:1px solid #00f5ff40}.mode-cyberpunk button:hover{color:#fff;background:#00f5ff1f;border-color:#00f5ff;box-shadow:0 0 8px #00f5ff66}.mode-cyberpunk .panel .segmented button.is-active{color:#fff;text-shadow:0 0 6px #ff2eea;background:#ff2eea40;border-color:#ff2eea;box-shadow:0 0 8px #ff2eea80}.mode-cyberpunk .segmented{background:#0006;border:1px solid #ff2eea33}.mode-cyberpunk .marker-label{color:#fff;letter-spacing:.05em;text-transform:uppercase;background:#0a0518e6;border:1px solid #ff2eea;font-size:11px;font-weight:600;box-shadow:0 0 10px #ff2eea59}.mode-cyberpunk .marker-swatch{box-shadow:0 0 8px}.mode-cyberpunk .scalebar-track{background:linear-gradient(90deg,#00f5ff 50%,#ff2eea1a 50%) 0 0/20px 6px;border:1px solid #00f5ff}.mode-cyberpunk .scalebar-label{color:#00f5ff;text-shadow:0 0 4px #00f5ff4d}.hud-overlay-container{pointer-events:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;z-index:5;flex-direction:column;gap:12px;width:250px;min-height:0;max-height:calc(100% - 32px);padding-right:4px;display:flex;position:absolute;top:16px;bottom:16px;right:16px;overflow:hidden auto}.panel{flex-shrink:0;width:100%;margin-bottom:0;position:static}.placing-toast{background:var(--hud-bg-strong);border:1px solid var(--accent);color:var(--hud-fg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;pointer-events:none;border-radius:999px;padding:8px 18px;font-size:13px;font-weight:500;animation:1.8s ease-in-out infinite pulse-glow;position:absolute;bottom:74px;left:50%;transform:translate(-50%);box-shadow:0 10px 25px #0000004d}@keyframes pulse-glow{0%,to{border-color:#ff5e3a66;box-shadow:0 0 10px #ff5e3a33}50%{border-color:#ff5e3a;box-shadow:0 0 25px #ff5e3a99}}.mode-cyberpunk .placing-toast{animation:1.8s ease-in-out infinite pulse-glow-cyber}@keyframes pulse-glow-cyber{0%,to{color:#00f5ff;border-color:#ff2eea66;box-shadow:0 0 10px #ff2eea33}50%{color:#fff;border-color:#ff2eea;box-shadow:0 0 25px #ff2eea99}}.marker-list{flex-direction:column;gap:6px;max-height:160px;margin-top:8px;padding-right:4px;display:flex;overflow-y:auto}.hud-overlay-container{scrollbar-width:thin;scrollbar-color:#ffffff1f transparent}.hud-overlay-container::-webkit-scrollbar{width:4px}.marker-list::-webkit-scrollbar{width:4px}.hud-overlay-container::-webkit-scrollbar-track{background:0 0}.marker-list::-webkit-scrollbar-track{background:0 0}.hud-overlay-container::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px}.marker-list::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px}.mode-cyberpunk .hud-overlay-container::-webkit-scrollbar-thumb{background:#00f5ff40}.mode-cyberpunk .marker-list::-webkit-scrollbar-thumb{background:#00f5ff40}.marker-item{background:#ffffff0a;border:1px solid #ffffff0f;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:11px;display:flex}.mode-cyberpunk .marker-item{background:#0000004d;border:1px solid #ff2eea26}.marker-item-info{align-items:center;gap:6px;display:flex;overflow:hidden}.marker-item-text{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.marker-item-coords{color:var(--hud-dim);margin-left:2px;font-size:9px}.marker-item-actions{align-items:center;gap:4px;display:flex}.marker-item-btn{cursor:pointer;text-align:center!important;background:0 0!important;border:1px solid #ffffff1a!important;border-radius:4px!important;width:auto!important;margin:0!important;padding:3px 6px!important;font-size:9px!important;display:inline-block!important}.marker-item-btn:hover{background:#ffffff14!important;border-color:#fff3!important}.marker-item-btn-delete{color:#ff5e3a!important;border-color:#ff5e3a33!important}.marker-item-btn-delete:hover{background:#ff5e3a1f!important;border-color:#ff5e3a!important}.mode-cyberpunk .marker-item-btn{color:#00f5ff!important;border-color:#00f5ff40!important}.mode-cyberpunk .marker-item-btn:hover{background:#00f5ff1f!important;border-color:#00f5ff!important}.mode-cyberpunk .marker-item-btn-delete{color:#ff2eea!important;border-color:#ff2eea40!important}.mode-cyberpunk .marker-item-btn-delete:hover{text-shadow:0 0 4px #ff2eea;box-shadow:0 0 6px #ff2eea66;background:#ff2eea26!important;border-color:#ff2eea!important}.marker-editor-card{background:var(--hud-bg-strong);border:1px solid #ffffff14;border-radius:10px;flex-direction:column;gap:8px;margin-top:4px;padding:10px;display:flex}.mode-cyberpunk .marker-editor-card{border:1px solid #ff2eea59;box-shadow:0 0 10px #ff2eea33}.marker-editor-title{letter-spacing:.1em;text-transform:uppercase;color:var(--hud-dim);font-size:10px;font-weight:700}.marker-editor-input{color:var(--hud-fg);background:#0003;border:1px solid #ffffff1a;border-radius:6px;outline:none;width:100%;padding:5px 8px;font-size:11px}.mode-cyberpunk .marker-editor-input{border-color:#00f5ff4d}.mode-cyberpunk .marker-editor-input:focus{border-color:#00f5ff;box-shadow:0 0 6px #00f5ff4d}.marker-editor-row{flex-direction:column;gap:4px;display:flex}.marker-editor-colors{gap:6px;display:flex}.color-swatch-btn{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;height:18px;transition:transform .1s;box-shadow:0 2px 6px #0000004d;margin:0!important;padding:0!important;display:inline-block!important}.color-swatch-btn:hover{transform:scale(1.15)}.color-swatch-btn.is-active{border-color:#fff;transform:scale(1.1)}.marker-editor-actions{gap:6px;margin-top:4px;display:flex}.marker-editor-btn{flex:1;text-align:center!important;justify-content:center!important;padding:6px 8px!important;font-size:11px!important}.marker-editor-btn-save{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.mode-cyberpunk .marker-editor-btn-save{text-shadow:0 0 4px #00f5ff;color:#00f5ff!important;background:#00f5ff26!important;border-color:#00f5ff!important}.mode-cyberpunk .marker-editor-btn-save:hover{box-shadow:0 0 8px #00f5ff80;background:#00f5ff4d!important}@media (width<=720px){.hud-tl{min-width:0;padding:8px 10px;top:8px;left:8px}.hud-row{gap:10px;font-size:11px;line-height:1.5}.hud-label{font-size:10px}.scalebar{padding:6px 10px;bottom:calc(min(36vh,260px) + 12px);left:8px}.scalebar-label{font-size:11px}.hint{display:none}.hud-overlay-container{top:auto;left:8px;right:8px;bottom:max(8px, env(safe-area-inset-bottom));background:var(--hud-bg-strong);border-top:1px solid #ffffff1a;border-radius:12px 12px 0 0;gap:8px;width:auto;max-height:min(36vh,260px);padding:8px 8px 4px;box-shadow:0 -8px 32px #00000059}.panel{border-radius:10px;padding:10px}.panel-title{margin-bottom:6px;font-size:10px}.panel button{margin-bottom:4px;padding:7px 8px;font-size:12px}.panel .segmented button{padding:5px 6px;font-size:11px}.marker-list{max-height:120px}.placing-toast{text-align:center;white-space:normal;max-width:calc(100% - 32px);padding:6px 14px;font-size:12px;bottom:calc(min(36vh,260px) + 48px)}.marker-label{max-width:140px;padding:4px 6px;font-size:11px}}:root{--demo-bg:#070b18;--demo-ink:#e6ebff;--demo-ink-dim:#e6ebff9e;--demo-ink-faint:#e6ebff80;--demo-line:#94b2ff29;--demo-glass:#070b18a8;--demo-glass-strong:#050814d6;--demo-accent:#5aa6ff;--demo-accent-2:#8b6cff;--demo-glow:#5aa6ff59}.demo-root{width:100%;max-width:100%;height:100dvh;color:var(--demo-ink);background:radial-gradient(120% 90% at 12% -10%, #4060ff29, transparent 55%), radial-gradient(110% 80% at 95% 0%, #9650ff1f, transparent 50%), radial-gradient(140% 110% at 50% 115%, #14a0dc1a, transparent 55%), var(--demo-bg);grid-template-rows:auto 1fr auto;display:grid;overflow:hidden}.demo-root--hide-app{grid-template-rows:1fr}.demo-view-controls{z-index:20;border:1px solid var(--demo-line);background:var(--demo-glass-strong);-webkit-backdrop-filter:blur(14px)saturate(1.3);border-radius:12px;align-items:center;gap:6px;padding:4px;display:flex;position:fixed;top:12px;right:12px;box-shadow:0 12px 32px #00000073,inset 0 1px #ffffff0f}.demo-view-fps{font-variant-numeric:tabular-nums;white-space:nowrap;border-right:1px solid #ffffff1f;align-items:baseline;gap:5px;padding:4px 8px 4px 6px;display:flex}.demo-view-fps-label{letter-spacing:.06em;text-transform:uppercase;color:var(--demo-ink-faint);font-size:10px;font-weight:600}.demo-view-fps-value{color:#9fdcff;text-align:right;text-shadow:0 0 12px #78c8ff73;min-width:1.25em;font-size:12px;font-weight:600}.demo-view-toggles{gap:6px;display:flex}.demo-view-toggle{color:#e6ebffb8;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff2e;border-radius:8px;padding:6px 10px;font-size:11px;font-weight:600;transition:background .16s,border-color .16s,color .16s,box-shadow .16s}.demo-view-toggle:hover{background:#ffffff1f}.demo-view-toggle[aria-pressed=true]{color:#f0f4ff;background:#3884ff47;border-color:#63b3ff8c;box-shadow:0 0 14px #5096ff40}.demo-toolbar{border-bottom:1px solid var(--demo-line);background:var(--demo-glass);-webkit-backdrop-filter:blur(12px)saturate(1.25);overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;align-items:center;gap:12px;padding:6px max(12px,min(240px,32vw)) 6px 12px;display:flex;position:relative;overflow-x:auto}.demo-toolbar:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#5aa6ff8c 30%,#8b6cff8c 70%,#0000);height:1px;position:absolute;bottom:-1px;left:0;right:0}.demo-toolbar-title{letter-spacing:.02em;white-space:nowrap;background:linear-gradient(90deg,#9fdcff,#5aa6ff 45%,#b18cff);color:#0000;-webkit-background-clip:text;background-clip:text;flex:none;margin:0;font-size:14px;font-weight:700}.demo-toolbar-groups{flex:auto;align-items:center;gap:10px;min-width:0;display:flex}.demo-group{border-right:1px solid #94b2ff24;flex:none;align-items:center;gap:6px;padding-right:10px;display:flex}.demo-group:last-child{border-right:none;padding-right:0}.demo-group-label{letter-spacing:.06em;text-transform:uppercase;color:var(--demo-ink-faint);white-space:nowrap;flex:none;font-size:10px;font-weight:600}.demo-group button{color:#f0f4ff;cursor:pointer;white-space:nowrap;background:#ffffff0d;border:1px solid #94b2ff38;border-radius:7px;padding:4px 8px;font-size:11px;font-weight:500;transition:background .16s,border-color .16s,box-shadow .16s,transform .16s}.demo-group button:hover{background:#78a0ff24;border-color:#94b2ff73;transform:translateY(-1px);box-shadow:0 4px 16px #285adc40}.demo-group button:active{transform:translateY(0)}.demo-group button:focus-visible,.demo-view-toggle:focus-visible{outline-offset:2px;outline:2px solid #78b4ffcc}.demo-group button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.demo-group button[aria-pressed=true]{background:#3884ff47;border-color:#63b3ff8c;box-shadow:0 0 14px #5096ff40}.demo-group button.demo-play-btn{min-width:4.5rem;box-shadow:0 0 18px var(--demo-glow);background:linear-gradient(135deg,#3884ff73,#8b6cff66);border-color:#63b3ff99;font-weight:600}.demo-group button.demo-play-btn:hover:not(:disabled){background:linear-gradient(135deg,#3884ffa6,#8b6cff99);box-shadow:0 0 26px #5aa6ff80}.demo-pad--inline{gap:3px;display:flex}.demo-group button.demo-pad-btn{place-items:center;width:26px;height:26px;padding:0;font-size:12px;line-height:1;display:grid}.demo-canvas{height:100%;min-height:0;position:relative;overflow:hidden}.demo-canvas:after{content:"";z-index:1;pointer-events:none;background:radial-gradient(130% 110% at 50% 45%,#0000 62%,#03050e61 100%);position:absolute;inset:0}.demo-marker-card{z-index:10;border:1px solid var(--demo-line);background:var(--demo-glass-strong);-webkit-backdrop-filter:blur(14px)saturate(1.3);border-radius:12px;align-items:center;gap:10px;max-width:min(92%,360px);padding:10px 12px;animation:.18s ease-out demo-marker-card-in;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #00000073,inset 0 1px #ffffff0f}@keyframes demo-marker-card-in{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.demo-marker-card-dot{border-radius:50%;flex:none;width:12px;height:12px;box-shadow:0 0 10px}.demo-marker-card-body{flex-direction:column;gap:2px;min-width:0;font-size:12px;display:flex}.demo-marker-card-body strong{color:#f0f4ff;white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.demo-marker-card-body span{color:var(--demo-ink-faint);font-variant-numeric:tabular-nums}.demo-marker-card-close{width:24px;height:24px;color:var(--demo-ink-dim);cursor:pointer;background:#ffffff0d;border:1px solid #94b2ff38;border-radius:8px;flex:none;place-items:center;padding:0;font-size:14px;line-height:1;display:grid}.demo-marker-card-close:hover{color:#f0f4ff;background:#78a0ff24}.demo-status{border-top:1px solid var(--demo-line);background:var(--demo-glass);-webkit-backdrop-filter:blur(12px)saturate(1.25);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:8px 14px;padding:9px 16px;font-size:12px;display:flex}.demo-stat{white-space:nowrap;background:#ffffff0a;border:1px solid #94b2ff29;border-radius:999px;align-items:baseline;gap:6px;padding:3px 10px;display:inline-flex}.demo-stat-label{letter-spacing:.06em;text-transform:uppercase;color:var(--demo-ink-faint);font-size:10px;font-weight:600}.demo-stat-value{color:#dce8ff;font-weight:600}@media (width<=720px){.demo-toolbar{padding:5px max(10px,min(220px,38vw)) 5px 10px;padding-top:max(5px, env(safe-area-inset-top));gap:8px}.demo-toolbar-title{font-size:12px}.demo-toolbar-groups{gap:8px}.demo-group{gap:5px;padding-right:8px}.demo-group button{padding:5px 7px;font-size:10px}.demo-group button.demo-pad-btn{width:24px;height:24px;font-size:11px}.demo-view-controls{top:max(8px, env(safe-area-inset-top));right:max(8px, env(safe-area-inset-right));flex-wrap:wrap;justify-content:flex-end;max-width:min(70vw,320px);bottom:auto;left:auto}.demo-view-toggles{flex-wrap:wrap;justify-content:flex-end}.demo-status{padding:8px 12px;padding-bottom:max(8px, env(safe-area-inset-bottom));gap:6px 8px;font-size:11px}.demo-root:not(.demo-root--hide-app) .demo-canvas .hud-overlay-container{bottom:calc(56px + env(safe-area-inset-bottom));max-height:min(30vh,220px)}.demo-root:not(.demo-root--hide-app) .demo-canvas .scalebar,.demo-root:not(.demo-root--hide-app) .demo-canvas .hint{bottom:calc(min(30vh, 220px) + 64px + env(safe-area-inset-bottom))}.demo-root:not(.demo-root--hide-app) .demo-canvas .placing-toast{bottom:calc(min(30vh, 220px) + 96px + env(safe-area-inset-bottom))}}
