:root{color:#16202a;background:#f4f7fa;font-family:Inter,Segoe UI,Microsoft YaHei,PingFang SC,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--surface: rgba(255, 255, 255, .92);--surface-strong: #ffffff;--surface-soft: #f7fafc;--line: #d9e3ec;--line-strong: #c4d2df;--muted: #647789;--text: #16202a;--teal: #0f8b8d;--green: #26865d;--amber: #c78016;--red: #c64b43;--indigo: #5367b1;--cyan: #247ca3;--shadow: 0 18px 42px rgba(22, 32, 42, .09);--soft-shadow: 0 10px 26px rgba(22, 32, 42, .07)}*{box-sizing:border-box}body{min-width:320px;margin:0;background:linear-gradient(180deg,#f9fbfd,#f1f5f8 52%,#edf3f7),#f4f7fa}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.62}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;gap:22px;height:100vh;padding:22px 16px;color:#18324a;background:linear-gradient(180deg,#eaf6ff,#d8ecfb 58%,#cce5f7),#dceffc;border-right:1px solid #b8d7ec}.brand{display:flex;align-items:center;gap:12px;min-height:52px}.brand-mark{display:grid;width:42px;height:42px;place-items:center;color:#fff;background:#3b82b8;border-radius:8px;box-shadow:0 10px 22px #3b82b838}.brand strong{display:block;font-size:17px;line-height:1.35}.brand span{display:block;margin-top:3px;color:#5f7890;font-size:12px}.nav-list{display:grid;gap:7px}.nav-item{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 12px;color:#46657f;background:transparent;border:1px solid transparent;border-radius:8px;text-align:left}.nav-item:hover,.nav-item.active{color:#0f3d5e;background:#ffffffad;border-color:#acd1e9;box-shadow:0 8px 18px #3b82b81f}.sidebar-status{display:grid;gap:10px;margin-top:auto;padding:13px;background:#ffffff94;border:1px solid #b8d7ec;border-radius:8px}.status-row{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#5f7890;font-size:13px}.status-row strong{overflow:hidden;max-width:132px;color:#18324a;text-overflow:ellipsis;white-space:nowrap}.main-panel{display:flex;flex-direction:column;gap:18px;min-width:0;padding:24px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px;background:#ffffffb8;border:1px solid var(--line);border-radius:8px;box-shadow:var(--soft-shadow)}.eyebrow{margin:0 0 6px;color:var(--teal);font-size:13px;font-weight:700}h1,h2,p{margin-top:0}h1{max-width:780px;margin-bottom:0;color:var(--text);font-size:24px;line-height:1.28;letter-spacing:0}h2{margin-bottom:0;font-size:18px;line-height:1.3;letter-spacing:0}.top-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.device-picker,.connection-pill,.icon-button{display:inline-flex;align-items:center;min-height:38px;border:1px solid var(--line);border-radius:8px;background:var(--surface-strong);box-shadow:0 8px 20px #16202a0d}.device-picker{gap:8px;padding:0 10px;color:var(--muted)}.device-picker select{max-width:170px;border:0;color:var(--text);background:transparent;outline:0}.connection-pill{gap:8px;padding:0 12px;color:var(--amber);font-weight:700}.connection-pill.online{color:var(--green)}.icon-button{justify-content:center;width:38px;color:var(--muted)}.icon-button:hover{color:var(--teal)}.spinning{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.notice{display:flex;align-items:center;gap:8px;padding:10px 12px;color:#7b520a;background:#fff8e7;border:1px solid #efd29a;border-radius:8px}.content-area{min-width:0}.dashboard-modern{display:grid;grid-template-columns:minmax(420px,1.12fr) minmax(330px,.88fr);gap:16px;align-items:stretch}.hero-status{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(300px,.92fr);gap:18px;min-height:210px;padding:24px;overflow:hidden;background:linear-gradient(135deg,#fffffff5,#f5fafce6),var(--surface-strong)}.hero-status-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:0}.hero-status-copy h2{margin:16px 0 10px;font-size:30px;line-height:1.15}.hero-status-copy p{max-width:520px;margin:0;color:var(--muted);line-height:1.7}.hero-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.hero-kpi{display:grid;grid-template-rows:auto minmax(0,1fr);align-items:center;min-height:86px;padding:14px;background:#ffffffc2;border:1px solid var(--line);border-radius:8px;text-align:center}.hero-kpi span{color:var(--muted);font-size:13px}.hero-kpi strong{overflow:hidden;color:var(--text);font-size:28px;line-height:1.05;text-overflow:ellipsis;white-space:nowrap;align-self:center;justify-self:center;max-width:100%}.gauge-strip{display:grid;grid-column:1 / -1;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.gauge-dial{min-height:245px;padding:17px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.gauge-head,.gauge-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}.gauge-head span,.gauge-foot span{color:var(--muted);font-size:13px;font-weight:700}.gauge-foot b{color:var(--text);font-size:13px}.gauge-icon{display:grid;width:34px;height:34px;place-items:center;color:var(--gauge-color);background:var(--gauge-soft);border:1px solid var(--gauge-line);border-radius:8px}.gauge-ring{display:grid;width:min(158px,78%);aspect-ratio:1;margin:18px auto;place-items:center;border-radius:50%;background:radial-gradient(circle at center,#ffffff 0 56%,transparent 57%),conic-gradient(var(--gauge-color) var(--gauge-value),#e7edf2 0);box-shadow:inset 0 0 0 1px #ffffffeb}.gauge-core{display:grid;width:74%;aspect-ratio:1;place-items:center;align-content:center;background:#fff;border:1px solid var(--line);border-radius:50%;box-shadow:inset 0 8px 18px #16202a0d}.gauge-core strong{color:var(--text);font-size:30px;line-height:1}.gauge-core em{color:var(--muted);font-size:13px;font-style:normal}.gauge-dial.teal{--gauge-color: var(--teal);--gauge-soft: #e8f7f7;--gauge-line: #b9e1e1}.gauge-dial.red{--gauge-color: var(--red);--gauge-soft: #fff0ef;--gauge-line: #efc3bf}.gauge-dial.indigo{--gauge-color: var(--indigo);--gauge-soft: #f0f2ff;--gauge-line: #cdd3f3}.gauge-dial.green{--gauge-color: var(--green);--gauge-soft: #edf8f2;--gauge-line: #bee5cf}.cabinet-card{display:grid;grid-template-columns:minmax(210px,.95fr) minmax(190px,1.05fr);gap:18px;min-height:210px;padding:20px;background:linear-gradient(140deg,#fffffff2,#f7fafceb),var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.cabinet-panel{display:grid;place-items:center}.cabinet-door{position:relative;width:min(230px,100%);min-height:260px;overflow:hidden;background:linear-gradient(180deg,#d9eefc,#c7e3f7),#d9eefc;border:1px solid #a9d4f0;border-radius:8px;box-shadow:inset 0 0 0 1px #ffffff14,0 18px 34px #16202a29}.door-strip{position:absolute;top:0;left:28px;width:12px;height:100%;background:#ffffff14}.cabinet-core{position:absolute;right:22px;bottom:24px;display:grid;width:82px;height:82px;place-items:center;color:#d9fbff;background:#0f8b8d2e;border:1px solid rgba(144,222,226,.32);border-radius:8px}.cabinet-core span{font-size:12px;font-weight:800}.sensor-node{position:absolute;display:grid;min-width:92px;padding:9px 10px;background:#ffffffe6;border:1px solid rgba(255,255,255,.5);border-radius:8px;box-shadow:0 10px 22px #0a121a2e}.sensor-node span{color:var(--muted);font-size:12px}.sensor-node strong{color:var(--text);font-size:20px}.node-temp{top:28px;left:52px}.node-humidity{top:116px;left:78px}.airflow{position:absolute;left:55px;bottom:35px;width:62px;height:62px;border:1px dashed rgba(255,255,255,.28);border-radius:50%}.airflow.active{border-color:#9fe8ebcc;animation:pulse-ring 1.8s ease-in-out infinite}@keyframes pulse-ring{0%,to{transform:scale(.94);opacity:.7}50%{transform:scale(1.06);opacity:1}}.cabinet-info{display:grid;gap:12px;align-content:center}.cabinet-info>div:not(.actuator-mini-grid):not(.cabinet-safe){display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.cabinet-info span{color:var(--muted);font-size:13px}.cabinet-info strong{color:var(--text);font-size:18px}.actuator-mini-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.mini-actuator{display:grid;min-height:70px;place-items:center;color:var(--muted);background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.mini-actuator.active{color:var(--teal);background:#e9f7f7;border-color:#b9e1e1}.cabinet-safe{display:flex;align-items:center;gap:9px;padding:12px;color:var(--green);background:#edf8f2;border:1px solid #bee5cf;border-radius:8px;font-weight:800}.modern-panel{min-height:256px}.modern-actuators .actuator-item{min-height:104px;transition:border-color .2s ease,transform .2s ease,background .2s ease}.modern-actuators .actuator-item.active{color:var(--teal);background:#e9f7f7;border-color:#b9e1e1;transform:translateY(-1px)}.meter-stack{display:grid;gap:13px;margin-top:18px}.linear-meter{display:grid;gap:7px}.meter-label{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:13px}.meter-label strong{color:var(--text)}.meter-track{height:9px;overflow:hidden;background:#e7edf2;border-radius:999px}.meter-fill{height:100%;background:var(--meter-color);border-radius:inherit}.linear-meter.indigo{--meter-color: var(--indigo)}.linear-meter.amber{--meter-color: var(--amber)}.linear-meter.green{--meter-color: var(--green)}.linear-meter.teal{--meter-color: var(--teal)}.dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.metric-tile,.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.metric-tile{display:flex;align-items:center;gap:13px;min-height:126px;padding:18px}.tile-icon{display:grid;flex:0 0 auto;width:42px;height:42px;place-items:center;border-radius:8px}.metric-tile span,.metric-tile small{display:block;color:var(--muted)}.metric-tile strong{display:block;margin:7px 0 4px;color:var(--text);font-size:28px;line-height:1.05;letter-spacing:0}.metric-tile.temperature .tile-icon{color:#fff;background:var(--red)}.metric-tile.humidity .tile-icon{color:#fff;background:var(--teal)}.metric-tile.risk .tile-icon{color:#fff;background:var(--indigo)}.metric-tile.mode .tile-icon{color:#fff;background:var(--green)}.panel{padding:18px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.status-chip{display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:0 9px;color:var(--muted);background:var(--surface-soft);border:1px solid var(--line);border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.chip-dot{width:7px;height:7px;background:currentColor;border-radius:50%}.status-chip.success{color:var(--green);background:#edf8f2;border-color:#bee7d0}.status-chip.warning{color:var(--amber);background:#fff8e8;border-color:#f3d494}.status-chip.danger{color:var(--red);background:#fff0ef;border-color:#efc0bd}.status-chip.info{color:var(--indigo);background:#f0f2ff;border-color:#ccd2f5}.actuator-panel{grid-column:span 2}.state-panel,.raw-panel{grid-column:span 1}.actuator-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.actuator-item{display:grid;min-height:112px;padding:13px;color:var(--muted);background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.actuator-item strong{align-self:end;color:var(--text);font-size:20px}.state-list{display:grid;gap:10px;margin:0}.state-list div{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}.state-list div:last-child{border-bottom:0}.state-list dt{color:var(--muted)}.state-list dd{max-width:58%;margin:0;overflow:hidden;color:var(--text);font-weight:700;text-align:right;text-overflow:ellipsis;white-space:nowrap}pre{max-height:238px;margin:0;overflow:auto;padding:12px;color:#1f2933;background:#f3f6f8;border:1px solid var(--line);border-radius:8px;font-size:12px;line-height:1.55}.history-layout,.control-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:14px}.control-layout{grid-template-columns:minmax(320px,.95fr) minmax(260px,.62fr) minmax(340px,1.05fr);align-items:start}.history-main{display:grid;gap:14px;min-width:0}.settings-layout,.logs-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.85fr);gap:14px}.report-layout{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.device-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.42fr);gap:14px}.weather-layout{display:grid;grid-template-columns:minmax(0,.95fr) minmax(320px,.55fr);gap:14px}.device-hero,.weather-hero{display:flex;grid-column:1 / -1;align-items:center;justify-content:space-between;gap:18px;min-height:178px;background:linear-gradient(135deg,#fffffff5,#f4f9fcf0),var(--surface)}.device-hero h2,.weather-hero h2{margin:14px 0 8px;font-size:28px}.device-hero p,.weather-hero p{max-width:720px;margin:0;color:var(--muted);line-height:1.7}.weather-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.weather-card{display:grid;gap:10px;min-height:190px;padding:18px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);text-align:left}.weather-card:hover,.weather-card.active{background:#eef8f8;border-color:#b9e1e1}.weather-card svg{color:var(--teal)}.weather-card span{color:var(--muted)}.weather-card strong{font-size:22px}.weather-card em{color:var(--muted);font-style:normal;line-height:1.6}.weather-impact-panel{align-self:start}.weather-impact-grid{display:grid;gap:10px}.weather-impact-grid div{display:grid;gap:6px;padding:13px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.weather-impact-grid strong{color:var(--text)}.weather-impact-grid span{color:var(--muted);line-height:1.6}.weather-log-panel{grid-column:1 / -1}.weather-timeline{display:grid;gap:10px}.weather-timeline article{display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;padding:12px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.timeline-dot{width:10px;height:10px;margin-top:5px;background:var(--teal);border-radius:50%}.weather-timeline header{display:flex;align-items:center;justify-content:space-between;gap:10px}.weather-timeline strong{color:var(--text)}.weather-timeline time,.weather-timeline span{color:var(--muted);font-size:13px}.device-hero-kpis{display:grid;grid-template-columns:repeat(3,minmax(105px,1fr));gap:10px;min-width:min(450px,100%)}.device-hero-kpis div{display:grid;gap:6px;min-height:104px;padding:14px;background:#ffffffc7;border:1px solid var(--line);border-radius:8px}.device-hero-kpis svg,.device-metric-grid svg{color:var(--teal)}.device-hero-kpis span,.device-id-card span,.device-metric-grid span{color:var(--muted)}.device-hero-kpis strong{align-self:end;color:var(--text);font-size:28px}.device-table-panel{min-height:520px}.device-table tbody tr{cursor:pointer}.device-table tbody tr.selected{background:#edf8f8}.device-table .tiny-button{display:inline-flex;align-items:center;gap:6px}.device-detail-panel{align-self:start;min-height:520px}.device-detail{display:grid;gap:14px}.device-id-card{display:grid;gap:8px;padding:16px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.device-id-card svg{color:var(--teal)}.device-id-card strong{overflow:hidden;color:var(--text);font-size:20px;text-overflow:ellipsis;white-space:nowrap}.device-metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.device-metric-grid div{display:grid;gap:6px;min-height:104px;padding:13px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.device-metric-grid strong{align-self:end;overflow:hidden;color:var(--text);font-size:20px;text-overflow:ellipsis;white-space:nowrap}.report-hero{display:flex;grid-column:1 / -1;align-items:center;justify-content:space-between;gap:18px;min-height:178px;background:linear-gradient(135deg,#fffffff5,#eff8f8f0),var(--surface)}.report-hero h2{margin:14px 0 8px;font-size:28px}.report-hero p{max-width:720px;margin:0;color:var(--muted);line-height:1.7}.report-kpi-grid{display:grid;grid-column:1 / -1;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.report-kpi{display:grid;gap:9px;min-height:126px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.report-kpi svg{color:var(--teal)}.report-kpi span,.report-kpi em,.report-metric-list span,.report-metric-list em,.quality-grid span,.quality-grid em,.actuator-report-grid span,.compact-list span{color:var(--muted)}.report-kpi strong{align-self:end;color:var(--text);font-size:28px;line-height:1.05}.report-analysis{grid-column:span 2}.report-metric-list,.quality-grid,.actuator-report-grid{display:grid;gap:10px}.report-metric-list{grid-template-columns:repeat(2,minmax(0,1fr))}.quality-grid,.actuator-report-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.actuator-report-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.report-metric-list div,.quality-grid div,.actuator-report-grid div{display:grid;gap:6px;min-height:104px;padding:13px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.actuator-report-grid svg{color:var(--teal)}.report-metric-list strong,.quality-grid strong,.actuator-report-grid strong{align-self:end;color:var(--text);font-size:24px}.recommendation-list{display:grid;gap:10px}.recommendation-list div{display:grid;grid-template-columns:22px minmax(0,1fr);gap:9px;align-items:start;padding:12px;color:var(--text);background:var(--surface-soft);border:1px solid var(--line);border-radius:8px;line-height:1.6}.recommendation-list svg{margin-top:2px;color:var(--green)}.report-table-panel{grid-column:span 3}.report-side-panel{grid-column:span 1}.compact-list{display:grid;gap:10px}.compact-list div{display:grid;gap:5px;padding:11px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.compact-list strong{overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap}.compact-empty{min-height:88px;place-items:center;color:var(--muted)}.chart-canvas{width:100%;height:430px}.panel-actions{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.row-actions{display:inline-flex;flex-wrap:nowrap;gap:8px}.history-table-panel{min-height:280px}.data-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:8px}.data-table{width:100%;min-width:760px;border-collapse:collapse;color:var(--text);font-size:13px}.data-table th,.data-table td{padding:12px 13px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.data-table th{color:var(--muted);background:#f4f8fb;font-weight:800}.data-table tbody tr:hover{background:#f8fbfd}.data-table tbody tr:last-child td{border-bottom:0}.history-side{display:grid;gap:14px}.stat-block{display:grid;min-height:128px;padding:18px;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.stat-block svg{color:var(--teal)}.stat-block strong{align-self:end;color:var(--text);font-size:30px}.control-main{min-height:430px}.control-main,.threshold-panel,.strategy-simulator,.chart-panel,.log-panel{background:linear-gradient(180deg,#fffffff5,#f9fbfdeb),var(--surface)}.segmented{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:5px;background:#edf3f7;border:1px solid var(--line);border-radius:8px}.control-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}.control-summary div{display:grid;gap:6px;padding:12px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.control-summary span{color:var(--muted);font-size:12px}.control-summary strong{color:var(--text);font-size:24px}.segmented button{min-height:38px;color:var(--muted);background:transparent;border:0;border-radius:6px;font-weight:700}.segmented button.active{color:#fff;background:var(--teal)}.switch-list{display:grid;gap:12px;margin:18px 0}.switch-row{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:10px;min-height:54px;padding:0 14px;color:var(--text);background:var(--surface-soft);border:1px solid var(--line);border-radius:8px;transition:border-color .18s ease,background .18s ease}.switch-row input{width:44px;height:24px;accent-color:var(--teal)}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-width:146px;min-height:42px;padding:0 18px;color:#fff;background:var(--teal);border:0;border-radius:8px;font-weight:800;box-shadow:0 12px 26px #0f8b8d38}.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:42px;margin-left:10px;padding:0 16px;color:var(--teal);background:#e9f7f7;border:1px solid #b9e1e1;border-radius:8px;font-weight:800}.full-width{width:100%;margin-left:0}.form-message{min-height:20px;margin:12px 0 0;color:var(--muted)}.threshold-panel{display:grid;align-content:start;gap:14px}.strategy-simulator{display:grid;align-content:start;gap:14px;min-height:430px}.simulator-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.range-card{display:grid;gap:9px;min-width:0;padding:14px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.range-card span,.risk-meter-head span,.decision-card span{color:var(--muted);font-size:12px;font-weight:700}.range-card strong{color:var(--text);font-size:26px}.range-card input{width:100%;accent-color:var(--teal)}.weather-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.weather-tabs button{min-height:38px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:8px;font-weight:800}.weather-tabs button.active{color:#f8fcff;background:#2f8ed8;border-color:#2f8ed8}.risk-meter{display:grid;gap:8px;padding:13px;background:#f7fbfb;border:1px solid var(--line);border-radius:8px}.risk-meter-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.risk-meter-head strong{color:var(--text);font-size:24px}.risk-track{height:10px;overflow:hidden;background:#e4edf3;border-radius:999px}.risk-track span{display:block;height:100%;background:linear-gradient(90deg,var(--green),var(--teal),var(--amber),var(--red));border-radius:inherit;transition:width .22s ease}.decision-card{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:76px;padding:14px;color:var(--teal);background:#edf8f8;border:1px solid #b9e1e1;border-radius:8px}.decision-card div{display:grid;gap:6px}.decision-card strong{color:var(--text);font-size:21px}.actuator-result-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.actuator-result{display:grid;gap:7px;min-height:86px;padding:12px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:8px}.actuator-result.active{color:var(--teal);background:#eef8f8;border-color:#b9e1e1}.actuator-result span{font-size:12px;font-weight:700}.actuator-result strong{color:var(--text)}.reason-list{display:grid;gap:8px}.reason-list article{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:9px;min-height:42px;padding:10px 12px;color:var(--muted);background:var(--surface-soft);border:1px solid var(--line);border-radius:8px;line-height:1.45}.reason-list svg{color:var(--amber);margin-top:2px}.settings-panel{min-height:520px}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;margin-bottom:18px}.setting-switch{margin-bottom:16px}.settings-help{align-self:start}.strategy-list{display:grid;gap:12px}.strategy-list div{display:grid;gap:6px;padding:13px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.strategy-list strong{color:var(--text)}.strategy-list span{color:var(--muted);line-height:1.6}.number-field{display:grid;grid-template-columns:1fr 82px 24px;align-items:center;gap:10px}.number-field span{color:var(--muted)}.number-field input{width:100%;min-height:38px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:#fff}.number-field em{color:var(--muted);font-style:normal}.log-panel{min-height:520px}.alarm-log-panel{grid-row:span 2}.runtime-log-panel{grid-column:1 / -1;min-height:320px}.log-list{display:grid;gap:10px}.log-item{display:grid;grid-template-columns:38px minmax(0,1fr);gap:12px;padding:12px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.log-icon{display:grid;width:38px;height:38px;place-items:center;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:8px}.log-icon.warning{color:var(--amber)}.log-icon.success{color:var(--green)}.log-icon.info{color:var(--indigo)}.log-item header{display:flex;align-items:center;justify-content:space-between;gap:10px}.log-meta{margin:5px 0 8px;color:var(--muted);font-size:12px}.tiny-button{min-height:30px;padding:0 10px;color:var(--teal);background:#e9f7f7;border:1px solid #b9e1e1;border-radius:8px;font-weight:800}.tiny-button.danger-button{color:var(--red);background:#fff1f0;border-color:#f2c6c2}.log-item time{flex:0 0 auto;color:var(--muted);font-size:12px}.log-item pre{max-height:150px;margin-top:8px}.empty-state{display:grid;min-height:260px;place-items:center;color:var(--muted)}.footer-line{display:flex;align-items:center;gap:7px;margin-top:auto;color:var(--muted);font-size:13px}@media(max-width:1080px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.nav-list{grid-template-columns:repeat(3,minmax(0,1fr))}.sidebar-status{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-modern,.hero-status{grid-template-columns:1fr}.gauge-strip,.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cabinet-card{grid-template-columns:minmax(220px,.8fr) minmax(260px,1.2fr)}.state-panel,.raw-panel{grid-column:span 1}.history-layout,.control-layout,.settings-layout,.logs-layout,.device-layout,.weather-layout,.report-layout{grid-template-columns:1fr}.device-detail-panel{min-height:auto}.report-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.report-analysis,.report-table-panel,.report-side-panel{grid-column:auto}.history-side{grid-template-columns:repeat(3,minmax(0,1fr))}.runtime-log-panel,.alarm-log-panel{grid-column:auto;grid-row:auto}}@media(max-width:720px){.main-panel{padding:16px}.topbar{align-items:stretch;flex-direction:column}.top-actions{justify-content:flex-start}.nav-list,.hero-kpi-grid,.gauge-strip,.cabinet-card,.dashboard-grid,.simulator-metrics,.weather-tabs,.actuator-result-grid,.report-kpi-grid,.report-metric-list,.quality-grid,.actuator-report-grid,.actuator-list,.history-side,.control-summary,.settings-grid{grid-template-columns:1fr}.report-hero,.device-hero,.weather-hero{align-items:stretch;flex-direction:column}.device-hero-kpis,.device-metric-grid,.weather-card-grid{grid-template-columns:1fr}.actuator-panel,.state-panel,.raw-panel{grid-column:span 1}h1{font-size:21px}.hero-status-copy h2{font-size:25px}.hero-kpi strong{font-size:24px}.cabinet-door{min-height:240px}.metric-tile strong{font-size:24px}.segmented{grid-template-columns:1fr}.secondary-button{width:100%;margin:10px 0 0}}:root{color:#16446a;background:#fff;--surface: #ffffff;--surface-strong: #ffffff;--surface-soft: #f1f9ff;--line: #d5eaf8;--line-strong: #a9d4f0;--muted: #5f84a6;--text: #16446a;--teal: #2f8ed8;--green: #168568;--amber: #a66f00;--red: #b42318;--indigo: #4f7ddb;--cyan: #2c93d2;--shadow: none;--soft-shadow: none}body,.app-shell{background:#fff}.sidebar{color:var(--text);background:#fff;border-right:1px solid var(--line)}.brand-mark{color:#f8fcff;background:#2f8ed8;box-shadow:none}.brand span,.nav-item,.status-row,.hero-status-copy p,.device-hero p,.weather-hero p,.report-hero p{color:var(--muted)}.nav-item:hover,.nav-item.active{color:var(--text);background:#e6f4ff;border-color:#b7daf2;box-shadow:none}.sidebar-status,.topbar,.metric-tile,.panel,.gauge-dial,.cabinet-card,.report-kpi,.stat-block,.weather-card{background:var(--surface-strong);border-color:var(--line);box-shadow:none}.topbar,.hero-status,.device-hero,.weather-hero,.report-hero,.control-main,.threshold-panel,.strategy-simulator,.chart-panel,.log-panel,.cabinet-card{background:#fff}.eyebrow{color:var(--muted);font-weight:600}h1{font-size:23px;font-weight:600}h2{font-size:17px;font-weight:600}.hero-status-copy h2,.device-hero h2,.weather-hero h2,.report-hero h2{font-size:26px;font-weight:600}.hero-kpi,.cabinet-info>div:not(.actuator-mini-grid):not(.cabinet-safe),.device-hero-kpis div,.device-id-card,.device-metric-grid div,.weather-impact-grid div,.weather-timeline article,.report-metric-list div,.quality-grid div,.actuator-report-grid div,.recommendation-list div,.compact-list div,.control-summary div,.switch-row,.range-card,.risk-meter,.actuator-result,.reason-list article,.strategy-list div,.log-item,.weather-card,pre{background:var(--surface-soft);border-color:var(--line);box-shadow:none}.status-chip{color:#4f7898;background:#eaf6ff;border-color:var(--line)}.status-chip.success,.status-chip.info{color:var(--green);background:#eef8f4;border-color:#d7eee5}.status-chip.warning{color:var(--amber);background:#fff8e6;border-color:#f1dfad}.status-chip.danger{color:var(--red);background:#fff1f0;border-color:#f2c6c2}.connection-pill,.device-picker,.icon-button,.tiny-button,.secondary-button,.weather-tabs button{background:#fff;border-color:var(--line);box-shadow:none}.connection-pill.online,.icon-button:hover,.weather-card svg,.report-kpi svg,.stat-block svg,.device-hero-kpis svg,.device-metric-grid svg,.actuator-report-grid svg{color:var(--cyan)}.primary-button,.segmented button.active,.weather-tabs button.active{color:#f8fcff;background:#2f8ed8;border-color:#2f8ed8;box-shadow:none}.secondary-button,.tiny-button{color:var(--text);background:#f1f9ff}.secondary-button:hover,.tiny-button:hover,.icon-button:hover{border-color:var(--line-strong)}.segmented{background:#e6f4ff;border-color:var(--line)}.weather-card:hover,.weather-card.active,.device-table tbody tr.selected,.modern-actuators .actuator-item.active,.mini-actuator.active,.actuator-result.active,.decision-card{color:#1f6fa8;background:#e6f6ff;border-color:#b5daf4;transform:none}.gauge-ring{background:radial-gradient(circle at center,#f8fcff 0 56%,transparent 57%),conic-gradient(var(--gauge-color) var(--gauge-value),#dbeefa 0)}.cabinet-door{background:linear-gradient(180deg,#d9eefc,#c7e3f7),#d9eefc;border-color:#a9d4f0;box-shadow:none}.data-table th{background:#eaf6ff}.data-table tbody tr:hover{background:#f5fbff}pre{color:var(--text)}.notice{color:#7a4d00;background:#fff8e6;border-color:#f1dfad}
