*{box-sizing:border-box;font-family:Inter,ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial} :root{--bg:#0f1720;--card:#0b1220;--muted:#9aa3b2;--accent:#0ea5a4;--danger:#ef4444} body{margin:0;background:#f6f7f9;color:#0b1720} .container{max-width:1200px;margin:18px auto;padding:16px} .topbar .title-row{display:flex;justify-content:space-between;align-items:center} .brand{display:flex;gap:12px;align-items:center} .logo{font-size:28px;background:#eef2ff;padding:8px;border-radius:10px} h1{margin:0;font-size:18px} .subtitle{font-size:12px;color:#6b7280} .actions{display:flex;gap:8px;align-items:center} .actions button{padding:8px 12px;border-radius:10px;border:1px solid #e6e9ef;background:white;cursor:pointer} .switch{display:flex;gap:6px;align-items:center;font-size:13px} .filters{margin-top:12px;display:flex;flex-wrap:wrap;gap:12px;align-items:end} .filter-group label{font-size:12px;color:#6b7280} .filter-group select,input{padding:8px;border-radius:10px;border:1px solid #e6e9ef} .search input{width:220px} .meta{font-size:12px;color:#9aa3b2;margin-left:8px} .kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:18px} .kpi{background:white;border-radius:12px;padding:12px;border:1px solid #e6e9ef} .kpi .label{font-size:12px;color:#6b7280} .kpi .value{font-size:20px;font-weight:700;margin-top:6px} .kpi .hint{font-size:12px;color:#9aa3b2} .kpi.good{border-color:#dcfce7} .kpi.danger{border-color:#fee2e2} .tabs{display:flex;gap:8px;margin-top:18px} .tabs button{padding:8px 12px;border-radius:10px;border:1px solid #e6e9ef;background:white} .tabs button.active{background:linear-gradient(180deg,#f8fafc,#fff);box-shadow:0 1px 0 rgba(11,17,32,0.04)} main{margin-top:12px} .grid{display:grid;grid-template-columns:1fr 360px;gap:12px} .card{background:white;border-radius:12px;padding:12px;border:1px solid #e6e9ef} .map-card .map-placeholder{height:220px;border-radius:8px;background:linear-gradient(90deg,#f3f4f6,#fff);display:flex;align-items:center;justify-content:center;position:relative} .map-card .badge{position:absolute;top:10px;right:12px;background:#fff;padding:6px;border-radius:999px;border:1px solid #e6e9ef;font-size:12px} .small-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px} .small{background:#fafbff;padding:8px;border-radius:8px;font-size:13px} .card .note{margin-top:8px;font-size:12px;color:#9aa3b2} .hotspots .empty{padding:20px;text-align:center;color:#9aa3b2} .hotspot-btn{width:100%;text-align:left;padding:12px;border-radius:10px;border:1px solid #f1f5f9;background:#fff;margin-bottom:8px;cursor:pointer} .h-title{font-weight:600} .h-meta{font-size:12px;color:#9aa3b2;margin-top:6px} .h-stats{display:flex;gap:12px;font-size:12px;margin-top:8px;color:#4b5563} .badge{background:#f1f5f9;padding:6px;border-radius:999px;font-size:12px} .side-panel{position:fixed;right:20px;bottom:20px;width:420px;background:white;border-radius:12px;border:1px solid #e6e9ef;padding:12px;box-shadow:0 10px 30px rgba(11,17,32,0.08);transform:translateY(20px);opacity:0;pointer-events:none;transition:all .25s} .side-panel.open{transform:translateY(0);opacity:1;pointer-events:auto} .side-panel button{float:right} .detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px} .provider{display:flex;justify-content:space-between;align-items:center;padding:10px;border-radius:8px;border:1px solid #f1f5f9;margin-top:8px} .p-meta{font-size:12px;color:#9aa3b2} .p-actions .assign{padding:6px 10px;border-radius:8px;border:none;background:#eef2ff;cursor:pointer} .card .chart-placeholder{height:200px;border-radius:8px;background:#f8fafc;display:flex;align-items:center;justify-content:center;color:#9aa3b2} .small-grid{display:grid;gap:8px;margin-top:12px} .escalation{margin-top:12px;font-size:13px;color:#9aa3b2} .demand-item{padding:10px;border-radius:8px;background:#fff;margin-top:8px;border:1px solid #f1f5f9} .footer{margin-top:18px;color:#9aa3b2} .foot{margin-top:18px;font-size:12px;color:#9aa3b2} .hidden{display:none} @media(max-width:900px){.grid{grid-template-columns:1fr;}.actions{flex-wrap:wrap}.filters{gap:8px}}