@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Fustat:wght@400;500;600;700&display=swap";:root{--bg: #ffffff;--surface: #ffffff;--surface-soft: #fcfcfc;--ink: #020202;--muted: #565553;--faint: #9a9996;--border: #e7e7e4;--lavender: #cbb2ff;--lavender-strong: #b99cff;--success: #0f8f45;--warning: #c47a00;--danger: #d94848;--danger-dark: #8f1d1d;--shadow: 0 18px 50px rgba(0,0,0,.06), 0 1px 0 rgba(0,0,0,.04);font-family:Fustat,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--muted)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--ink);letter-spacing:-.045em}h1{font-size:clamp(34px,5vw,56px);line-height:1}h2{font-size:26px;line-height:1.08}p{line-height:1.5}.mono,code,pre{font-family:DM Mono,monospace}.small-text{font-size:12px;word-break:break-all}.eyebrow{color:var(--muted);font-family:DM Mono,monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(100%,430px);display:grid;gap:16px;border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:clamp(22px,4vw,34px);box-shadow:var(--shadow)}.auth-card h1{font-size:34px}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{border-right:1px solid var(--border);padding:24px;display:flex;flex-direction:column;gap:24px;position:sticky;top:0;height:100vh;background:#ffffffeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand{display:grid;gap:4px}.brand b{color:var(--ink);font-size:22px;letter-spacing:-.04em}.brand small{font-family:DM Mono,monospace;font-size:12px;text-transform:uppercase}nav{display:grid;gap:8px}nav button,.ghost{border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--ink);padding:10px 12px;text-align:left;text-transform:capitalize}nav button.active,nav button:hover,.ghost:hover{background:var(--ink);border-color:var(--ink);color:#fff}.logout{margin-top:auto}.main{max-width:1240px;width:100%;padding:32px min(5vw,56px)}.topbar{display:grid;gap:8px;margin-bottom:28px}.stack,.grid{display:grid;gap:18px}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.card,.mini-card{background:var(--surface-soft);border:1px solid var(--border);border-radius:14px;padding:20px;box-shadow:var(--shadow)}.mini-card{box-shadow:none;display:grid;gap:8px}.metric{display:grid;gap:8px}.metric strong{color:var(--ink);font-size:44px;line-height:1;letter-spacing:-.05em}.metric.danger strong{color:var(--danger)}.card-row,.section-head,.button-row,.pager{display:flex;align-items:center;justify-content:space-between;gap:12px}.button-row{justify-content:flex-start;margin-top:auto;flex-wrap:wrap}.dash-card{min-height:220px;display:flex;flex-direction:column;gap:14px}.pill{display:inline-flex;width:fit-content;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--ink);padding:3px 8px;font-family:DM Mono,monospace;font-size:12px}.status-dot{width:10px;height:10px;border-radius:50%;background:var(--faint);box-shadow:0 0 0 4px #9a999624}.status-dot.on{background:var(--success);box-shadow:0 0 0 4px #0f8f4524}.primary,.danger{border:0;border-radius:9px;padding:10px 14px;font-weight:700}.primary{background:var(--lavender);color:var(--ink)}.primary:hover{background:var(--lavender-strong)}.danger{background:var(--danger);color:#fff}.small-button{padding:6px 9px;font-size:12px}.alert{border:1px solid rgba(217,72,72,.35);background:#d9484814;color:var(--danger-dark);padding:12px;border-radius:10px}label{display:grid;gap:6px;color:var(--ink);font-size:14px}input,select{width:100%;border:1px solid var(--border);background:#fff;color:var(--ink);border-radius:9px;padding:10px 12px}input:focus,select:focus{outline:2px solid var(--lavender);outline-offset:1px}.form-grid,.filters{display:grid;gap:14px}.form-grid{grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end}.form-grid h2{grid-column:1 / -1}.compact-form{grid-template-columns:1fr 1fr auto}.filters{grid-template-columns:2fr 1fr 1fr 1fr auto;align-items:end;margin:16px 0}.chart-card{display:grid;gap:18px}.chart-bars{height:190px;display:grid;grid-template-columns:repeat(auto-fit,minmax(28px,1fr));align-items:end;gap:10px}.bar-wrap{height:100%;display:grid;grid-template-rows:1fr auto auto;gap:6px;align-items:end;text-align:center;font-family:DM Mono,monospace;font-size:11px;color:var(--muted)}.bar{width:100%;background:var(--lavender);border-radius:7px 7px 2px 2px;min-height:4px}.table-card{overflow:hidden}.table-wrap{width:100%;overflow-x:auto;margin-top:12px}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;border-bottom:1px solid var(--border);padding:11px 10px;vertical-align:top}th{color:var(--ink);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.route-cell{max-width:260px;word-break:break-word}.status-badge{display:inline-flex;min-width:46px;justify-content:center;border-radius:999px;padding:4px 9px;font-family:DM Mono,monospace;font-size:12px;border:1px solid var(--border)}.s-2xx{color:var(--success);border-color:#0f8f4559;background:#0f8f4514}.s-3xx{color:#6b49a8;border-color:#cbb2ffcc;background:#cbb2ff38}.s-4xx{color:var(--danger);border-color:#d9484859;background:#d9484814}.s-5xx{color:#fff;border-color:var(--danger-dark);background:var(--danger-dark)}.s-other{color:var(--muted)}.model-card{max-width:720px}.model-list,.details-list{display:grid;gap:0;margin:16px 0 0}.model-list div,.details-list div{display:grid;grid-template-columns:170px 1fr;gap:16px;border-top:1px solid var(--border);padding:14px 0}dt{color:var(--muted);font-family:DM Mono,monospace;font-size:12px;text-transform:uppercase}dd{margin:0;color:var(--ink);word-break:break-word}.settings-card{max-width:760px;display:grid;gap:16px}.qr-grid{display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:start}.qr-grid img{width:220px;height:220px;border:1px solid var(--border);border-radius:12px;background:#fff}.codebox{display:grid;gap:12px;background:#fff;border:1px dashed var(--border);border-radius:12px;padding:14px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#02020257;display:grid;place-items:center;padding:18px}.modal{width:min(820px,100%);max-height:88vh;overflow:auto;display:grid;gap:16px;background:#fff;border-radius:16px;padding:22px;box-shadow:0 30px 100px #00000038}pre{white-space:pre-wrap;background:var(--surface-soft);border:1px solid var(--border);border-radius:10px;padding:12px}.traffic-layout{width:100%;min-width:0}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid var(--border)}nav{grid-template-columns:repeat(3,minmax(0,1fr))}.main{padding:22px}.grid.three,.grid.two,.form-grid,.compact-form,.filters,.qr-grid{grid-template-columns:1fr}.section-head,.card-row,.pager{align-items:flex-start;flex-direction:column}.model-list div,.details-list div{grid-template-columns:1fr;gap:6px}}@media(max-width:640px){body{overflow-x:hidden}.traffic-layout{gap:12px}.traffic-layout .card{padding:14px}.traffic-layout .table-wrap{overflow-x:auto;margin-inline:-2px}table{min-width:640px;font-size:12px}th,td{padding:9px 8px}.route-cell{max-width:180px}}
