:root{--bg: #0b1120;--surface: #0f172a;--surface-2: #131c31;--border: #1e293b;--text: #e2e8f0;--muted: #94a3b8;--accent: #38bdf8;--ok: #34d399;--warn: #fbbf24;--danger: #f87171;--info: #a78bfa}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Segoe UI,Inter,system-ui,-apple-system,sans-serif;font-size:14px}code{font-family:Cascadia Code,Consolas,monospace;font-size:12px}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% 20%,#15213b 0%,var(--bg) 60%)}.login-card{width:360px;padding:36px 32px;background:var(--surface);border:1px solid var(--border);border-radius:16px;text-align:center;box-shadow:0 20px 60px #00000073}.login-logo{font-size:34px;color:var(--accent)}.login-card h1{margin:8px 0 4px;font-size:20px}.login-sub{margin:0 0 24px;color:var(--muted);font-size:13px}.otp-input{width:100%;padding:14px;font-size:28px;letter-spacing:12px;text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:10px;color:var(--text);outline:none}.otp-input:focus{border-color:var(--accent)}.login-error{margin-top:14px;padding:10px;background:#f871711f;border:1px solid rgba(248,113,113,.35);border-radius:8px;color:var(--danger);font-size:13px}.login-debug{margin-top:24px;padding:12px;background:var(--surface-2);border:1px dashed var(--border);border-radius:10px;font-size:12px;text-align:left;color:var(--muted)}.login-debug code{color:var(--accent)}.login-debug p{margin:6px 0}.app{min-height:100vh}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:24px;padding:12px 20px;background:#0f172aeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:8px;font-weight:600;white-space:nowrap}.brand-logo{color:var(--accent);font-size:18px}.tabs{display:flex;gap:4px;flex:1}.tabs button{padding:8px 14px;background:transparent;border:none;border-radius:8px;color:var(--muted);cursor:pointer;font-size:13px}.tabs button:hover{background:var(--surface-2);color:var(--text)}.tabs button.active{background:var(--surface-2);color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}.topbar-right{display:flex;align-items:center;gap:12px}.user{color:var(--muted);font-size:13px}.content{padding:20px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-8{grid-column:span 8}.span-12{grid-column:span 12}@media(max-width:1200px){.span-4,.span-6,.span-8{grid-column:span 12}}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.card-head h3{margin:0;font-size:14px;font-weight:600}.card-sub{margin:4px 0 0;color:var(--muted);font-size:12px;max-width:60ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-body{padding:16px;display:flex;flex-direction:column;gap:14px}.stat-row{display:flex;gap:10px;flex-wrap:nowrap}.stat-row.wrap{flex-wrap:wrap}.stat{flex:1 1 0;min-width:90px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;gap:4px}.stat-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:18px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-value small{font-size:12px;color:var(--muted);margin-left:3px}.stat-hint{font-size:11px;color:var(--muted)}.tone-ok .stat-value{color:var(--ok)}.tone-warn .stat-value{color:var(--warn)}.tone-danger .stat-value{color:var(--danger)}.tone-info .stat-value{color:var(--info)}.gauge{display:flex;flex-direction:column;gap:6px}.gauge-head{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.gauge-head strong{color:var(--text)}.gauge-caption{font-size:11px;color:var(--muted)}.bar{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.bar.small{height:6px}.bar-fill{height:100%;border-radius:999px;transition:width .4s ease}.bar-fill.ok{background:linear-gradient(90deg,#22d3ee,#34d399)}.bar-fill.warn{background:linear-gradient(90deg,#fbbf24,#f59e0b)}.bar-fill.danger{background:linear-gradient(90deg,#fb7185,#ef4444)}.core-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.core{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}.core .bar{flex:1}.table-wrap{overflow-x:auto;max-height:460px;overflow-y:auto}table{width:100%;border-collapse:collapse;font-size:12.5px}thead th{position:sticky;top:0;background:var(--surface-2);text-align:left;padding:8px 10px;color:var(--muted);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--border);white-space:nowrap}tbody td{padding:8px 10px;border-bottom:1px solid rgba(30,41,59,.6);white-space:nowrap}tbody tr:hover{background:#38bdf80d}.align-right{text-align:right}code.sql{color:#7dd3fc;white-space:nowrap}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;background:var(--surface-2);border:1px solid var(--border)}.badge-ok{color:var(--ok);border-color:#34d39966}.badge-warn{color:var(--warn);border-color:#fbbf2466}.badge-danger{color:var(--danger);border-color:#f8717166}.badge-info{color:var(--info);border-color:#a78bfa66}.status-dot{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.status-dot i{width:8px;height:8px;border-radius:50%;background:var(--danger);box-shadow:0 0 8px var(--danger)}.status-dot.ok i{background:var(--ok);box-shadow:0 0 8px var(--ok)}.notice{padding:14px 16px;border-radius:10px;border:1px solid var(--border);background:var(--surface);font-size:13px}.notice-warn{border-color:#fbbf2466;color:var(--warn)}.notice-danger{border-color:#f8717166;color:var(--danger)}.empty,.muted{color:var(--muted);font-size:12px;margin:0}.text-warn{color:var(--warn)}.text-danger{color:var(--danger)}.loader{padding:40px;text-align:center;color:var(--muted)}.chart{width:100%}.chip-list{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:4px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;font-size:11.5px;color:var(--muted)}.btn{padding:8px 16px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;font-size:13px}.btn.primary{width:100%;margin-top:16px;background:var(--accent);border-color:var(--accent);color:#06212f;font-weight:600}.btn.primary:disabled{opacity:.45;cursor:not-allowed}.btn.ghost:hover{border-color:var(--accent);color:var(--accent)}.toggle{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;overflow:hidden}.toggle button{padding:5px 10px;background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:12px}.toggle button.active{background:var(--accent);color:#06212f}.actions-row{display:flex;align-items:center;gap:8px}select{padding:6px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:12px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#1e293b;border-radius:8px}::-webkit-scrollbar-track{background:transparent}.geo-map{position:relative;width:100%}.geo-map svg{display:block;width:100%;height:auto;background:var(--bg);border:1px solid var(--border);border-radius:8px}.geo-map circle{cursor:pointer}.geo-tip{position:absolute;transform:translate(-50%,calc(-100% - 14px));display:flex;flex-direction:column;gap:2px;padding:6px 10px;background:var(--surface);border:1px solid var(--border);border-radius:6px;font-size:12px;white-space:nowrap;pointer-events:none}.geo-map svg{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.geo-map svg.dragging{cursor:grabbing}.geo-controls{position:absolute;top:8px;right:8px;display:flex;flex-direction:column;gap:4px}.geo-controls button{width:28px;height:28px;padding:0;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;font-size:16px;line-height:1;cursor:pointer}.geo-controls button:hover:not(:disabled){border-color:var(--accent)}.geo-controls button:disabled{opacity:.4;cursor:default}.row-expandable{cursor:pointer}.row-expandable:hover{background:var(--surface-2)}.stacktrace{margin:0;padding:12px;max-height:320px;overflow:auto;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--danger);font:12px/1.5 Consolas,Cascadia Mono,monospace;white-space:pre}.stack{display:flex;flex-direction:column;gap:8px}
