/* 관제 화면 한 가지 모습으로 고정한다. 어두운 바탕 위에 재배등(자홍)과 잎(초록) 두 색만 쓴다. */
:root{
  --bg:#0c1210;--panel:#121b17;--panel2:#18241e;--line:#26372e;--fg:#e4eee8;--muted:#8fa399;
  --leaf:#58d08f;--leaf-dim:#1e3b2c;--lamp:#f06fb6;--lamp-dim:#3a1f30;--warn:#f1b24b;--bad:#ff7f72;--cool:#59b7f0;
  --sans:system-ui,-apple-system,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--fg);font:14px/1.5 var(--sans);display:flex;flex-direction:column}
button,select,input{font:inherit;color:inherit}
button{background:var(--panel2);border:1px solid var(--line);border-radius:4px;padding:4px 10px;cursor:pointer}
button:hover{border-color:var(--leaf)}
button.primary,button.on{background:var(--leaf);border-color:var(--leaf);color:#06120c;font-weight:600}
select,input[type=number]{background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:3px 6px}
:focus-visible{outline:2px solid var(--lamp);outline-offset:1px}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--panel)}
.brand{display:flex;flex-direction:column;line-height:1.2}
.brand strong{font-size:16px;letter-spacing:.01em}
.brand span{font-size:11.5px;color:var(--muted)}
.presets{display:flex;gap:4px;flex-wrap:wrap}
.kpis{display:flex;flex-wrap:wrap;gap:4px 18px;margin-left:auto}
.kpi{display:flex;flex-direction:column;min-width:0}
.kpi b{font:600 15px var(--mono);font-variant-numeric:tabular-nums}
.kpi span{font-size:11px;color:var(--muted)}
.kpi.neg b{color:var(--bad)}.kpi.pos b{color:var(--leaf)}
main{flex:1;min-height:0;display:grid;grid-template-columns:300px minmax(0,1fr) 400px}
.panel{overflow:auto;background:var(--panel);min-width:0}
.left{border-right:1px solid var(--line);padding:8px}
.right{border-left:1px solid var(--line);display:flex;flex-direction:column}
.view{position:relative;min-height:320px;min-width:0;display:flex;flex-direction:column}
#gl{flex:1;width:100%;min-height:0;display:block}
.overlay{position:absolute;background:rgba(12,18,16,.82);border:1px solid var(--line);border-radius:4px;padding:6px 8px;font-size:12px}
.overlay.tl{top:8px;left:8px;display:flex;gap:6px;align-items:center}
.overlay.legend{top:8px;right:8px;display:flex;flex-direction:column;gap:3px;max-width:220px}
.overlay.msg{top:50%;left:50%;transform:translate(-50%,-50%);max-width:320px;text-align:center}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.timeline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 10px;border-top:1px solid var(--line);background:var(--panel)}
.timeline input[type=range]{flex:1 1 140px;accent-color:var(--leaf)}
.clock{font:600 15px var(--mono);min-width:5ch}
.now{font-size:12px;color:var(--muted)}
details.grp{border:1px solid var(--line);border-radius:4px;margin-bottom:6px;background:var(--panel2)}
details.grp>summary{cursor:pointer;padding:6px 10px;font-weight:600;list-style:none;display:flex;justify-content:space-between}
details.grp>summary::-webkit-details-marker{display:none}
details.grp>summary::after{content:"+";color:var(--muted);font-family:var(--mono)}
details.grp[open]>summary::after{content:"−"}
.grpbody{padding:2px 10px 10px;display:flex;flex-direction:column;gap:8px}
.fld{display:grid;grid-template-columns:minmax(0,1fr) 84px;gap:2px 8px;align-items:center}
.fld label{font-size:12.5px}
.fld .u{color:var(--muted);font-size:11px}
.fld input[type=number]{width:100%;text-align:right;font:500 12.5px var(--mono)}
.fld select{grid-column:1/-1;width:100%}
.fld input[type=range]{grid-column:1/-1;width:100%;margin:0;accent-color:var(--leaf)}
.fld .hint{grid-column:1/-1;font-size:11px;color:var(--muted)}
.tabs{display:flex;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel);z-index:2}
.tabs button{flex:1;border:0;border-radius:0;border-bottom:2px solid transparent;background:none;padding:9px 4px;color:var(--muted)}
.tabs button[aria-selected=true]{color:var(--fg);border-bottom-color:var(--leaf);font-weight:600}
.tabbody{padding:12px;display:flex;flex-direction:column;gap:14px}
.tabbody h3{font-size:13.5px;margin:0 0 6px}
.tabbody p{margin:0;color:var(--muted);font-size:12.5px}
.call{border:1px solid var(--line);border-radius:4px;padding:8px 10px;font-size:13px;background:var(--panel2)}
.call.warn{border-color:var(--warn)}.call.bad{border-color:var(--bad)}.call.ok{border-color:var(--leaf)}
.call b{font-weight:600}
table{border-collapse:collapse;width:100%;font-size:12.5px}
th,td{padding:4px 6px;border-bottom:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
th:first-child,td:first-child{text-align:left;white-space:normal}
th{color:var(--muted);font-weight:600;font-size:11.5px}
td.n{font-family:var(--mono)}
tr.total td{font-weight:700;border-top:1px solid var(--fg);border-bottom:0}
.scroll{overflow-x:auto}
.ubar{display:grid;grid-template-columns:96px minmax(0,1fr) 46px;gap:8px;align-items:center;font-size:12.5px;margin:3px 0}
.ubar .tr{height:12px;background:var(--bg);border-radius:2px;overflow:hidden}
.ubar .fi{height:100%;background:var(--leaf)}
.ubar .fi.hot{background:var(--warn)}.ubar .fi.max{background:var(--bad)}
.ubar .v{font-family:var(--mono);text-align:right}
svg{display:block;width:100%;height:auto}
svg text{font:10.5px var(--mono);fill:var(--muted)}
svg .t{font:11.5px var(--sans);fill:var(--fg)}
.row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.note{font-size:11.5px;color:var(--muted)}
@media (max-width:1100px){
  body{display:block}
  main{display:block}
  .view{height:62vh}
  .left,.right{border:0;border-top:1px solid var(--line)}
  .kpis{margin-left:0}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
