
*{box-sizing:border-box} html,body{height:100%} body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#ffffff;color:#1f2937}
.shell{display:grid;grid-template-columns:272px 1fr;min-height:100vh}
.sidebar{position:sticky;top:0;align-self:start;min-height:100vh;background:#000000;color:#fff;padding:28px 20px 24px;border-right:1px solid rgba(255,255,255,.08);box-shadow:inset -1px 0 0 rgba(255,255,255,.03)}
.brand{margin-bottom:24px;padding-bottom:18px;border-bottom:1px solid rgba(148,163,184,.14)}
.brand h1{margin:0 0 6px 0;font-size:22px;line-height:1.1;letter-spacing:-.01em}
.brand p{margin:0;color:#d1d5db;font-size:13px}
.nav{display:grid;gap:6px}
.nav a{display:flex;align-items:center;min-height:46px;padding:11px 14px;color:#f3f4f6;text-decoration:none;border-radius:12px;font-weight:700;letter-spacing:.01em;transition:background-color .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease}
.nav a:hover{background:rgba(235,184,59,.14);color:#ffffff;transform:translateX(1px)}
.nav a.active{background:#EBB83B;color:#111827;box-shadow:0 10px 22px rgba(235,184,59,.28)}
.main{min-width:0;padding:18px 18px 0}
.topbar{position:static;display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:22px 24px;background:#000000;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.08);border-radius:20px;box-shadow:0 16px 40px rgba(15,23,42,.14)}
.topbar h2{margin:0 0 6px 0;font-size:28px;line-height:1.05;letter-spacing:-.02em}
.topbar h2{color:#ffffff}
.topbar p{margin:0;color:#d1d5db;max-width:62ch}
.topbar-right{display:flex;align-items:stretch;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.topbar-right>div{display:flex;flex-direction:column;justify-content:center;gap:6px;min-height:62px;padding:10px 12px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(255,255,255,.04);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.content{padding:18px 0}.panel{background:#fff;border-radius:14px;box-shadow:0 2px 10px rgba(0,0,0,.08);overflow:hidden;min-height:0}
.panel-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid #e5e7eb}
.panel-header h3{margin:0;font-size:19px}.panel-note{color:#64748b;font-size:12px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:14px;margin-bottom:16px}
.kpi-card{background:#fff;border-radius:14px;box-shadow:0 2px 10px rgba(0,0,0,.08);padding:16px}.kpi-label{color:#64748b;font-size:12px;margin-bottom:8px}.kpi-value{font-size:28px;font-weight:700}
.status-badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700;text-transform:capitalize}.status-normal{background:#dcfce7;color:#166534}.status-alarm{background:#fee2e2;color:#991b1b}.status-offline{background:#e5e7eb;color:#374151}
.grid-1{display:grid;grid-template-columns:1fr;gap:16px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:10px 8px;border-bottom:1px solid #e5e7eb;text-align:left;white-space:nowrap}thead{background:#e2e8f0}
.search-row{display:flex;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #e5e7eb}
.search-row input,.search-row select,.source-select,.text-input{padding:9px 12px;border:1px solid #cbd5e1;border-radius:10px;min-width:180px;background:#fff;min-height:40px}
.action-link,.button-link,.control-button{color:#111827;font-weight:700;text-decoration:none;cursor:pointer}.button-link{display:inline-block;padding:8px 12px;border:1px solid #d0a12a;background:#EBB83B;border-radius:8px}
.control-button{padding:9px 13px;border:1px solid #d0a12a;background:#EBB83B;color:#111827;border-radius:10px;min-height:40px;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,filter .16s ease}.control-button:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(15,23,42,.08);border-color:#b78d20;filter:brightness(.98)}.control-button.primary{background:#EBB83B;color:#111827;border-color:#d0a12a}.control-button.danger{color:#111827;border-color:#d0a12a;background:#EBB83B}
.chart-wrap{padding:16px;height:320px}.chart-wrap canvas{display:block;width:100%!important;height:100%!important}.list-card-wrap{padding:14px 16px 16px;display:grid;gap:10px}
.info-card{border:1px solid #e5e7eb;background:#f8fafc;border-radius:12px;padding:12px}.info-card-title{font-size:12px;color:#64748b;margin-bottom:8px}.info-card-value{font-size:20px;font-weight:700}
.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:10px;padding:14px 16px}.video-placeholder{min-height:240px;margin:16px;border:2px dashed #94a3b8;border-radius:12px;background:linear-gradient(135deg,#0f172a,#1e293b);color:white;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px}
.fault-list{padding:12px 16px 16px;display:grid;gap:10px}.fault-item{border:1px solid #e5e7eb;background:#f8fafc;border-radius:10px;padding:10px 12px}.fault-name{font-weight:700;margin-bottom:4px}.fault-time,.subtle{color:#64748b;font-size:12px}
.sortable{cursor:pointer;user-select:none}.sortable:hover{background:#d7dee8}.sort-indicator{font-size:11px;margin-left:4px;color:#64748b}.source-error{color:#b91c1c;font-size:12px;max-width:420px;text-align:right}
#map,#fleetMap{min-height:320px;height:100%}.map-wrap{padding:0;min-height:360px}
.mobile-nav-toggle{display:none}
@media (max-width:1250px){.kpi-grid,.detail-grid{grid-template-columns:repeat(2,minmax(140px,1fr))}.grid-2{grid-template-columns:1fr}}
@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:static;min-height:auto;padding:18px 16px 14px}.brand{padding-bottom:14px;margin-bottom:14px}.mobile-nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:44px;padding:11px 14px;border:1px solid rgba(148,163,184,.22);border-radius:12px;background:rgba(255,255,255,.08);color:#fff;font-weight:700;cursor:pointer}.nav{display:none;grid-template-columns:1fr}.sidebar.nav-open .nav{display:grid;margin-top:12px}.nav a{min-height:42px}.main{padding:12px 12px 0}.topbar{flex-direction:column;align-items:flex-start;padding:18px 16px}.topbar h2{font-size:24px}.topbar p{max-width:none}.topbar-right{width:100%;justify-content:flex-start}.topbar-right>div{width:100%}.topbar-right .source-select,.topbar-right .text-input,.topbar-right .control-button{width:100%;min-width:0}.search-row{flex-direction:column;align-items:stretch}.search-row input,.search-row select,.source-select,.text-input{width:100%;min-width:0}.panel-header{flex-direction:column;align-items:flex-start}.content{padding:14px 0}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}}
@media (max-width:640px){.main{padding:10px 10px 0}.content{padding:12px 0}.topbar{padding:16px 14px;border-radius:16px}.topbar h2{font-size:22px}.topbar-right>div{padding:10px}.kpi-grid,.detail-grid{grid-template-columns:1fr}.button-link{width:100%;text-align:center}}
