
:root{
  --bg:#06111b;--bg2:#081824;--panel:#0b1c29;--panel2:#0e2332;
  --line:#213848;--text:#e9f1f7;--muted:#9eb0bf;--blue:#2388ff;
  --green:#35dc5d;--yellow:#ffd21f;--cyan:#18d7dc;--purple:#a85cf7;
  --orange:#ff9c22;--danger:#ff5151;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:radial-gradient(circle at top,#0c2130,#040b12 65%);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif}
button,input{font:inherit}
.app-shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}
.sidebar{position:sticky;top:0;height:100vh;padding:14px 12px;border-right:1px solid #173040;background:linear-gradient(180deg,#07131d,#081924);display:flex;flex-direction:column}
.brand-block{display:grid;grid-template-columns:42px 1fr;gap:8px;align-items:center;padding:6px 5px 18px;border-bottom:1px solid var(--line)}
.brand-mark{grid-column:1/-1;color:#f22;font-size:22px;font-style:italic;font-weight:800}
.drive-mini{height:44px;width:30px;background:linear-gradient(#9ba4a8,#30383d);border-radius:3px}
.brand-block h1{font-size:13px;margin:0}.brand-block small{color:var(--muted)}
.nav{padding-top:12px;display:flex;flex-direction:column;gap:7px}
.nav-item{display:flex;gap:12px;align-items:center;width:100%;padding:12px 14px;color:#d9e3eb;background:transparent;border:1px solid transparent;border-radius:7px;text-align:left;text-decoration:none;cursor:pointer}
.nav-item:hover,.nav-item.active{background:#123254;border-color:#1e65a4}
.terminal-nav{border-color:#1c9d46}
.comm-card{margin-top:auto;padding:14px;border:1px solid var(--line);border-radius:9px;background:#0b1c28}
.comm-card h3{margin:0 0 12px;color:var(--green);font-size:14px}
dl{margin:0}dl div{display:flex;justify-content:space-between;gap:10px;margin:8px 0;color:var(--muted)}dd{margin:0;color:#fff}
.main{min-width:0;padding:0 16px 20px}
.topbar{height:92px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 370px 170px;gap:18px;align-items:center}
.topbar h2{font-size:24px;margin:0}.topbar p{margin:4px 0;color:var(--muted)}
.connection-pill,.clock{border:1px solid var(--line);background:#0b1c28;border-radius:8px;padding:13px 16px;display:flex;align-items:center;gap:12px}
.connection-pill i{width:15px;height:15px;border-radius:50%;background:#7c8790;box-shadow:0 0 12px #7c8790}
.connection-pill strong{display:block;color:var(--green)}.connection-pill span,.clock span{display:block;color:var(--muted);font-size:13px}
.clock{justify-content:center;flex-direction:column;gap:2px}.clock strong{font-size:20px}
.section{display:none;padding-top:14px}.section.active{display:block}
.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(160px,1fr));gap:12px}
.metric,.panel{border:1px solid var(--line);background:linear-gradient(145deg,var(--panel),#0a1823);border-radius:8px;box-shadow:inset 0 1px rgba(255,255,255,.02)}
.metric{min-height:145px;padding:16px;position:relative}
.metric span{font-size:13px;color:#d5e0e8;display:block}.metric strong{font-size:42px;display:inline-block;margin-top:20px}.metric em{font-style:normal;color:var(--muted);margin-left:6px}.metric small{display:block;color:var(--muted);position:absolute;bottom:14px}
.accent-yellow strong{color:var(--yellow)}.accent-purple strong{color:var(--purple)}.accent-orange strong{color:var(--orange)}.accent-cyan strong{color:var(--cyan)}
.status-card strong,.alarm-card strong{font-size:20px;color:var(--green);margin-top:30px}
.middle-grid{display:grid;grid-template-columns:minmax(500px,1fr) 210px 270px;gap:12px;margin-top:12px}
.panel{padding:16px}.panel h3{margin:0 0 14px;font-size:14px}.panel-head{display:flex;justify-content:space-between;align-items:center}.panel-head span{color:var(--muted);font-size:12px}
.chart-panel canvas{width:100%;height:310px;background:linear-gradient(#081725,#07131c);border-radius:5px}
.legend{display:flex;gap:24px;padding-top:10px;color:var(--muted);font-size:12px}.legend span:before{content:"";display:inline-block;width:18px;height:3px;margin-right:7px;vertical-align:middle}.legend .blue:before{background:var(--blue)}.legend .green:before{background:var(--green)}.legend .yellow:before{background:var(--yellow)}.legend .cyan:before{background:var(--cyan)}
.control-panel{display:flex;flex-direction:column;gap:12px}.btn{border:1px solid var(--line);background:#102434;color:#fff;border-radius:7px;padding:13px 16px;cursor:pointer}.btn:hover{filter:brightness(1.15)}.btn-reset{background:linear-gradient(90deg,#18a644,#25c959);border-color:#27cf5d;font-weight:700}.btn.small{padding:7px 10px}
.control-note{color:var(--muted);font-size:12px;line-height:1.5}
.drive-card img{display:block;height:180px;max-width:100%;object-fit:contain;margin:auto}
.bottom-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:12px;margin-top:12px}.bottom-grid .panel{min-height:190px}
.empty-state{height:125px;display:grid;place-items:center;color:var(--muted)}
.event-rows{display:flex;flex-direction:column}.event-row{display:grid;grid-template-columns:90px 1fr;gap:10px;padding:9px 0;border-bottom:1px solid #183241;color:#c8d4dd}.event-row time{color:var(--muted)}
.terminal-panel{min-height:70vh}.terminal-status{display:flex;gap:30px;padding:12px;background:#07131d;border:1px solid var(--line);border-radius:6px;color:var(--muted)}.terminal-status b{color:var(--green)}
#terminalLog{height:52vh;overflow:auto;background:#02080d;color:#56e47c;border:1px solid #1b5731;border-radius:6px;padding:18px;line-height:1.5;white-space:pre-wrap}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.72);display:grid;place-items:center;z-index:10}.modal.hidden{display:none}.modal-card{max-width:500px;padding:25px;border:1px solid var(--line);background:#0b1c29;border-radius:10px}.modal-card p{color:var(--muted);line-height:1.6}.modal-actions{display:flex;justify-content:flex-end;gap:10px}
.login-page{display:grid;place-items:center;min-height:100vh}.login-card{width:min(420px,92vw);padding:30px;border:1px solid var(--line);background:#0b1c29;border-radius:12px}.login-brand{font-size:24px;font-weight:800}.login-card p{color:var(--muted)}.login-card label{display:block;margin-top:14px;color:var(--muted)}.login-card input{width:100%;margin-top:6px;padding:12px;border-radius:6px;border:1px solid var(--line);background:#07131d;color:#fff}.login-card button{width:100%;margin-top:20px;padding:13px;background:#1cae4d;color:#fff;border:0;border-radius:6px}.login-error{padding:10px;background:#4a1616;border:1px solid #8f3030;border-radius:6px}
@media(max-width:1150px){.app-shell{grid-template-columns:80px 1fr}.sidebar .brand-block>div:not(.drive-mini),.brand-mark,.nav-item:not(.active){font-size:0}.nav-item span{font-size:18px}.comm-card{display:none}.metric-grid{grid-template-columns:repeat(2,1fr)}.middle-grid{grid-template-columns:1fr}.topbar{grid-template-columns:1fr 280px}.clock{display:none}}
@media(max-width:700px){.app-shell{display:block}.sidebar{position:static;width:100%;height:auto}.nav{display:grid;grid-template-columns:repeat(3,1fr)}.nav-item{justify-content:center}.main{padding:0 8px}.topbar{grid-template-columns:1fr;height:auto;padding:12px 0}.connection-pill{display:none}.metric-grid{grid-template-columns:1fr}.bottom-grid{grid-template-columns:1fr}.metric strong{font-size:34px}}

.drive-mini-image{height:52px;width:38px;object-fit:contain;filter:drop-shadow(0 0 5px rgba(255,255,255,.2))}
.metric-body{display:flex;align-items:center;justify-content:space-between;gap:10px}
.metric-body .metric-icon{margin-top:14px}
.metric-icon{width:56px;height:56px;display:grid;place-items:center;flex:0 0 auto}
.metric-icon svg{width:100%;height:100%}
.metric-icon.blue{color:var(--blue)}.metric-icon.green{color:var(--green)}.metric-icon.yellow{color:var(--yellow)}
.metric-icon.purple{color:var(--purple)}.metric-icon.orange{color:var(--orange)}.metric-icon.cyan{color:var(--cyan)}
.metric-icon.large{width:52px;height:52px}
.status-main{display:flex;align-items:center;gap:14px;margin-top:22px}.status-main strong{margin-top:0!important}
.control-button{display:flex;align-items:center;justify-content:center;gap:12px;min-height:52px}
.control-button span{display:grid;place-items:center;width:24px;height:24px}.control-button span svg{width:100%;height:100%}
.reference-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.small-control{padding:10px 6px;font-size:11px}
.drive-card img{height:220px;width:100%;object-fit:contain;filter:drop-shadow(0 12px 20px rgba(0,0,0,.45))}
.drive-card dl{margin-top:10px}
@media(max-width:700px){.metric-icon{width:46px;height:46px}.reference-buttons{grid-template-columns:1fr}}
