:root{--bg:#0f1220;--card:#171c31;--ink:#eaf1ff;--muted:#92a0c6;--accent:#26d07c;--warn:#ffcb4d;--danger:#ff6171;--border:#283050}*{box-sizing:border-box}body,html{margin:0;padding:0;background:radial-gradient(circle at top right,#243360,#0f1220 55%);color:var(--ink);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;overflow-x:hidden;width:100%;max-width:100%}a{color:inherit;text-decoration:none}.container{width:min(1200px,100%);max-width:1200px;margin:0 auto}.card,.container{padding:1rem;min-width:0}.card{background:linear-gradient(160deg,#1a2242,#141b34);border:1px solid var(--border);border-radius:14px;overflow:hidden}.grid{display:grid;grid-gap:1rem;gap:1rem}.grid,.grid>*{min-width:0}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.list-scroll{max-height:min(56vh,480px);overflow-y:auto}.list-scroll .table thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:#172043}.table{width:100%;border-collapse:collapse;table-layout:fixed}.table--wide{min-width:720px}.table td,.table th{border-bottom:1px solid var(--border);padding:.65rem;text-align:left;overflow-wrap:anywhere;vertical-align:top}.table td code{white-space:pre-wrap;word-break:break-word}.table-actions{display:flex;gap:.4rem;flex-wrap:wrap}.input{padding:.6rem;background:#10162d}.btn,.input{border-radius:8px;border:1px solid #2a3053;color:#eaf1ff}.btn{padding:.6rem .9rem;background:#1f2a4f;cursor:pointer}.btn:disabled{opacity:.65;cursor:not-allowed}.btn-muted{background:#27345f}.btn-warn{background:#5a3d22}.live-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#26d07c;box-shadow:0 0 0 rgba(38,208,124,.7);animation:pulse 1.8s infinite}.traffic-row{display:grid;grid-template-columns:minmax(200px,1.3fr) 3fr;grid-gap:.7rem;gap:.7rem;align-items:center}.traffic-label{min-width:0}.traffic-label strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.traffic-bar-track{background:rgba(24,31,58,.8);border:1px solid #283050;border-radius:999px;overflow:hidden;height:18px}.traffic-bar{height:100%;border-radius:999px;background:linear-gradient(90deg,#23b8ff,#26d07c);animation:sweep 2.2s ease-in-out infinite alternate}.ticker-shell{overflow:hidden;border:1px solid #283050;border-radius:10px;background:rgba(20,28,52,.7);padding:.5rem 0}.ticker-track{display:flex;gap:.65rem;width:max-content;animation:ticker 32s linear infinite;padding:0 .75rem}.ticker-chip{border:1px solid #2a3053;border-radius:999px;padding:.2rem .6rem;font-size:.84rem;color:#d9e7ff;background:rgba(15,22,45,.85);white-space:nowrap}.form-grid-5{display:grid;grid-gap:.6rem;gap:.6rem;grid-template-columns:repeat(5,minmax(0,1fr))}.form-grid-3{display:grid;grid-gap:.6rem;gap:.6rem;grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid-4{display:grid;grid-gap:.6rem;gap:.6rem;grid-template-columns:repeat(4,minmax(0,1fr))}.grid-span-2{grid-column:span 2}.chart-card{display:grid;grid-gap:.9rem;gap:.9rem}.line-chart{width:100%;height:220px;border:1px solid var(--border);border-radius:12px;background:rgba(16,22,45,.7)}.donut-wrap{display:grid;grid-template-columns:minmax(170px,220px) 1fr;grid-gap:.8rem;gap:.8rem;align-items:center}.donut-svg{width:100%;max-width:220px}.legend{display:grid;grid-gap:.4rem;gap:.4rem}.legend-item{display:flex;align-items:center;gap:.45rem;font-size:.9rem;color:#cedbff}.legend-swatch{width:10px;height:10px;border-radius:2px}.pill{display:inline-block;padding:.2rem .5rem;border-radius:999px;font-size:.8rem}.pill-ok{background:rgba(38,208,124,.15);color:#84ffbe}.pill-warn{background:rgba(255,203,77,.16);color:#ffd873}.pill-danger{background:rgba(255,97,113,.2);color:#ff9ca7}@media (max-width:900px){.grid-3,.traffic-row{grid-template-columns:1fr}.form-grid-5{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid-3{grid-template-columns:1fr}.form-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-span-2{grid-column:span 1}.donut-wrap{grid-template-columns:1fr}.table--wide{min-width:640px}}@media (max-width:640px){.form-grid-4,.form-grid-5{grid-template-columns:1fr}.line-chart{height:180px}.list-scroll{max-height:min(52vh,380px)}}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(38,208,124,.7)}70%{box-shadow:0 0 0 14px rgba(38,208,124,0)}to{box-shadow:0 0 0 0 rgba(38,208,124,0)}}@keyframes sweep{0%{filter:saturate(.8)}to{filter:saturate(1.25)}}@keyframes ticker{0%{transform:translateX(0)}to{transform:translateX(-50%)}}