:root{--radius-sm:4px;--radius:6px;--radius-lg:10px;--radius-xl:14px}body:not([data-theme]),body[data-theme=light]{--bg-0:#ffffff;--bg-1:#ffffff;--bg-2:#f6f8fb;--bg-3:#eef1f6;--bg-4:#e4e8ef;--line:#ebeef3;--line-strong:#d8dde5;--ink-0:#0a2540;--ink-1:#1a2b42;--ink-2:#425466;--ink-3:#697386;--ink-4:#8b94a3;--ink-5:#aab1bd;--accent:#2e9cff;--accent-hover:#1b7fdb;--accent-dim:#87c3ff;--accent-fog:rgba(46,156,255,0.1);--accent-fog-strong:rgba(46,156,255,0.16);--accent-ink:#ffffff;--live:#18a957;--live-fog:rgba(24,169,87,0.1);--live-fog-strong:rgba(24,169,87,0.18);--success:#18a957;--success-fog:rgba(24,169,87,0.1);--warn:#c78500;--warn-fog:rgba(199,133,0,0.1);--danger:#df1b41;--danger-fog:rgba(223,27,65,0.08);--info:#1e6ee8;--map-base:#ffffff;--map-grid:#f1f4f9;--map-street-halo:#ffffff;--map-street:#d8dee7;--map-street-minor:#e8ecf2;--map-water:#dce8f4;--map-park:#e2edda;--map-building:#f2f4f8;--map-building-stroke:#e4e8ef;--shadow-xs:0 1px 2px rgba(10,37,64,0.04);--shadow-sm:0 2px 4px rgba(10,37,64,0.04),0 1px 2px rgba(10,37,64,0.03);--shadow-md:0 4px 12px rgba(10,37,64,0.06),0 1px 3px rgba(10,37,64,0.04);--shadow-lg:0 12px 40px rgba(10,37,64,0.12),0 4px 12px rgba(10,37,64,0.06);--shadow-xl:0 24px 60px rgba(10,37,64,0.18);--overlay:rgba(255,255,255,0.92);--overlay-strong:rgba(255,255,255,0.98);--scrim:rgba(10,37,64,0.35);--nav-bg:rgba(255,255,255,0.82);--pill-bg:rgba(255,255,255,0.92);--pill-bg-strong:rgba(255,255,255,0.98);--vignette:radial-gradient(ellipse at center,transparent 60%,rgba(10,37,64,0.08) 130%);--hero-glow-a:rgba(46,156,255,0.08);--hero-glow-b:rgba(24,169,87,0.05);--logo-light:#18a957}body[data-theme=dark]{--bg-0:#07090d;--bg-1:#0c1016;--bg-2:#10151d;--bg-3:#171e28;--bg-4:#222b38;--line:#1a222d;--line-strong:#2a3545;--ink-0:#f2f5f9;--ink-1:#cdd6e0;--ink-2:#8a94a3;--ink-3:#5b6674;--ink-4:#3b4552;--ink-5:#2b3340;--accent:#2e9cff;--accent-hover:#5ab5ff;--accent-dim:#1a5c99;--accent-fog:rgba(46,156,255,0.12);--accent-fog-strong:rgba(46,156,255,0.22);--accent-ink:#04111f;--live:#3eff9a;--live-fog:rgba(62,255,154,0.14);--live-fog-strong:rgba(62,255,154,0.26);--success:#3eff9a;--success-fog:rgba(62,255,154,0.14);--warn:#ffb547;--warn-fog:rgba(255,181,71,0.14);--danger:#ff5a5f;--danger-fog:rgba(255,90,95,0.14);--info:#2e9cff;--map-base:#050810;--map-grid:#0e1620;--map-street-halo:#1a2432;--map-street:#2b394d;--map-street-minor:#15202d;--map-water:#030912;--map-park:#0b1a17;--map-building:#111a24;--map-building-stroke:#1c2836;--shadow-xs:0 1px 2px rgba(0,0,0,0.4);--shadow-sm:0 2px 6px rgba(0,0,0,0.45);--shadow-md:0 8px 24px rgba(0,0,0,0.55);--shadow-lg:0 20px 60px rgba(0,0,0,0.7);--shadow-xl:0 32px 80px rgba(0,0,0,0.8);--overlay:rgba(12,16,22,0.92);--overlay-strong:rgba(12,16,22,0.98);--scrim:rgba(3,5,8,0.75);--nav-bg:rgba(7,9,13,0.78);--pill-bg:rgba(12,16,22,0.78);--pill-bg-strong:rgba(12,16,22,0.94);--vignette:radial-gradient(ellipse at center,transparent 50%,#000 130%);--hero-glow-a:rgba(46,156,255,0.1);--hero-glow-b:rgba(62,255,154,0.06);--logo-light:#3eff9a}body[data-accent=blue]{--accent:#2e9cff;--accent-hover:#5ab5ff;--accent-fog:rgba(46,156,255,0.12);--accent-fog-strong:rgba(46,156,255,0.22);--accent-dim:#1a5c99;--accent-ink:#04111f}body[data-accent=green]{--accent:#10b981;--accent-hover:#34d399;--accent-fog:rgba(16,185,129,0.14);--accent-fog-strong:rgba(16,185,129,0.26);--accent-dim:#065f46;--accent-ink:#ffffff}body[data-accent=amber]{--accent:#ffb547;--accent-hover:#ffc870;--accent-fog:rgba(255,181,71,0.14);--accent-fog-strong:rgba(255,181,71,0.24);--accent-dim:#b37b1e;--accent-ink:#1a1000}body[data-accent=indigo]{--accent:#6e8bff;--accent-hover:#8fa7ff;--accent-fog:rgba(110,139,255,0.14);--accent-fog-strong:rgba(110,139,255,0.24);--accent-dim:#3d52ab;--accent-ink:#050b1f}.btn,button{font-family:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 14px;height:34px;background:#ffffff;color:var(--ink-0);border:1px solid var(--line-strong);border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;box-shadow:var(--shadow-xs);transition:background .12s,border-color .12s,box-shadow .12s,transform .12s,color .12s;white-space:nowrap;letter-spacing:-.005em}body[data-theme=dark] .btn{background:var(--bg-3);color:var(--ink-0)}.btn:hover{background:var(--bg-2);border-color:var(--ink-4);box-shadow:var(--shadow-sm)}body[data-theme=dark] .btn:hover{background:var(--bg-4)}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:disabled:hover{background:inherit;border-color:var(--line-strong);box-shadow:var(--shadow-xs)}.btn.primary,body[data-theme] .btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600;box-shadow:0 1px 2px rgba(46,156,255,.25),0 0 0 1px rgba(46,156,255,.08)}.btn.primary:hover,body[data-theme] .btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2);box-shadow:none}.btn.ghost:hover{background:var(--bg-2);color:var(--ink-0)}body[data-theme=dark] .btn.ghost{background:transparent}body[data-theme=dark] .btn.ghost:hover{background:var(--bg-3)}.btn.danger,body[data-theme] .btn.danger{background:var(--danger-fog);color:var(--danger);border-color:transparent}.btn.danger:hover,body[data-theme] .btn.danger:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.btn.icon{padding:0;width:34px}.btn.sm{padding:5px 10px;font-size:12px;height:28px}.btn.sm.icon{width:28px;padding:0}.btn.lg{height:40px;padding:10px 18px;font-size:14px}.btn.xl{height:44px;padding:12px 22px;font-size:14px}.input{background:#ffffff;border:1px solid var(--line-strong);border-radius:var(--radius);padding:8px 12px;height:34px;color:var(--ink-0);font-family:inherit;font-size:13px;outline:none;transition:border-color .12s,box-shadow .12s;width:100%;box-shadow:var(--shadow-xs);letter-spacing:-.005em}body[data-theme=dark] .input{background:var(--bg-1)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-fog)}.input::-moz-placeholder{color:var(--ink-4)}.input::placeholder{color:var(--ink-4)}.input.lg{height:40px;padding:10px 14px;font-size:14px}