:root{color:#15202b;background:#f5f8fa;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}.shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{background:#101820;color:#e9f7fb;padding:28px 20px;display:flex;flex-direction:column;gap:32px}.brand{display:flex;align-items:center;gap:12px}.brand-logo{display:block;object-fit:contain}.sidebar-logo{width:min(180px,100%);max-height:144px}.brand strong{display:block;font-size:22px}.brand span,.eyebrow{color:#8fc7d7;font-size:13px}nav{display:grid;gap:8px}nav button{width:100%;border:0;color:#d8e9ef;background:transparent;display:flex;align-items:center;gap:10px;padding:12px;border-radius:7px;cursor:pointer;text-align:left}nav button.active,nav button:hover{background:#21313c;color:#fff}main{min-width:0;padding:30px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}h1,h2{margin:0;letter-spacing:0}h1{font-size:34px}h2{font-size:20px;margin-bottom:16px}.operator{background:#e6f3f7;color:#235264;border:1px solid #c7e5ec;border-radius:7px;padding:10px 12px}.user-tools{display:flex;align-items:end;gap:12px}.user-tools label{min-width:150px}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,rgba(17,138,178,.16),transparent 45%),#f5f8fa}.login-panel{width:min(520px,calc(100vw - 32px));background:#fff;border:1px solid #d9e5ea;border-radius:8px;box-shadow:0 24px 70px #10182024;padding:28px;display:grid;gap:16px}.login-brand{color:#101820;justify-content:center;margin-bottom:8px}.login-logo{width:min(420px,100%)}.content-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric,.panel{background:#fff;border:1px solid #d9e5ea;border-radius:8px;box-shadow:0 12px 30px #1018200f}.metric{padding:18px}.metric span{display:block;color:#506576;margin-bottom:14px}.metric strong{font-size:30px}.metric.warning{border-color:#f5c66f}.metric.alarm{border-color:#ff9b8c}.panel{padding:20px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-title h2{margin:0}.actions{display:flex;flex-wrap:wrap;gap:8px}.wide{grid-column:1 / -1}.event-list,.table{display:grid;gap:10px}.event-row,.sensor-row,.list-row{width:100%;border:1px solid #dce8ec;background:#fbfdfe;color:#29485a;border-radius:7px;padding:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left}.event-row.warning{border-left:4px solid #d99100}.event-row.alarm{border-left:4px solid #d73a31}.event-row.clickable{cursor:pointer;transition:border-color .15s ease,background .15s ease}.event-row.clickable:hover{background:#eef8fb;border-color:#bfe4ee}.event-sensor-name{font-weight:400}.sensor-row{cursor:pointer;min-height:72px;justify-content:flex-start;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.sensor-row:hover{border-color:#a8d5e0;background:#f4fbfd}.sensor-list{display:grid;gap:10px}.status-dot{width:10px;height:10px;border-radius:999px;flex:0 0 auto;box-shadow:0 0 0 4px #29485a14}.status-dot.info{background:#1f9d55}.status-dot.warning{background:#d99100}.status-dot.alarm{background:#d73a31}.sensor-main{min-width:0;display:grid;gap:4px;flex:1}.sensor-main strong,.sensor-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensor-group-labels{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:260px;flex:0 1 auto}.sensor-group-label{color:#455d6e;background:#eef6f8;border:1px solid #d9e5ea;border-radius:999px;padding:5px 9px;font-size:12px;line-height:1;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensor-group-label.muted{background:#f7fafb;color:#637887}.battery-indicator{width:36px;height:28px;display:inline-grid;place-items:center;position:relative;flex:0 0 auto;color:#455d6e}.battery-indicator svg{grid-area:1 / 1;stroke-width:1.8}.battery-indicator span{grid-area:1 / 1;font-size:11px;font-weight:800;line-height:1;margin-right:4px}.battery-indicator.full{color:#1f9d55}.battery-indicator.good{color:#5f9f2d}.battery-indicator.low{color:#d99100}.battery-indicator.critical{color:#d73a31}.battery-indicator.unknown{color:#7a8b96}.sensor-actions{display:flex;align-items:center;gap:4px;margin-left:auto}.icon-button{width:34px;height:34px;padding:0;border:1px solid transparent;background:transparent;color:#29485a}.icon-button:hover{background:#e6f3f7;border-color:#c7e5ec}.sensor-main small,.list-row span,.event-row span{color:#637887}.sensor-layout{display:grid;grid-template-columns:minmax(380px,1fr) 0;gap:16px;overflow:hidden}.sensor-layout.with-detail{grid-template-columns:minmax(360px,.8fr) minmax(520px,1.2fr)}.detail-drawer{min-width:0;background:#fff;border:1px solid #d9e5ea;border-radius:8px;padding:0;transform:translate(100%);opacity:0;transition:transform .18s ease,opacity .18s ease}.with-detail .detail-drawer{padding:20px;transform:translate(0);opacity:1}.drawer-head,.time-row,.two-col{display:grid;gap:14px}.drawer-head{grid-template-columns:1fr auto;align-items:start;margin-bottom:18px}.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}.editor{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:16px}.sensor-insight{display:grid;gap:16px}.history-panel{display:grid;gap:10px}.compact-head{margin-bottom:0}.inline-select{width:auto;grid-template-columns:auto minmax(78px,96px);align-items:center}.data-table{border:1px solid #d9e5ea;border-radius:7px;overflow:hidden}.data-row{display:grid;grid-template-columns:minmax(150px,1.4fr) repeat(2,minmax(82px,.8fr));gap:10px;padding:10px 12px;border-top:1px solid #edf3f5;align-items:center}.data-row.with-door{grid-template-columns:minmax(150px,1.4fr) repeat(3,minmax(82px,.8fr))}.data-row:first-child{border-top:0}.data-row.head{background:#eef6f8;color:#455d6e;font-size:13px;font-weight:700}.toggle-row,.ack-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.event-body{display:grid;gap:5px;width:100%}.notification-list{display:grid;gap:3px;margin-top:4px}.ack-row{margin-top:6px}.ack-row input{min-width:min(320px,100%);flex:1}.history-panel h3,.settings-section h3{margin:0;font-size:15px}.settings-section{border-top:1px solid #d9e5ea;display:grid;gap:10px;padding-top:14px}.settings-section:first-child{border-top:0;padding-top:0}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.settings-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}label{display:grid;gap:6px;color:#455d6e;font-size:13px}input,select{border:1px solid #cbdce3;border-radius:6px;padding:9px 10px;color:#15202b;background:#fff}.check{grid-template-columns:auto 1fr;align-items:center}button{border:0;border-radius:7px;background:#0d6e89;color:#fff;padding:10px 12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}.ghost{color:#29485a;background:#eef6f8}.danger{background:#b42318}.panel-head,.form-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.stack{display:grid;gap:10px}.selectable{cursor:pointer}.selectable.active{border-color:#118ab2;background:#eef8fb}.list-row span:first-child,.event-row span:first-child{display:grid;gap:4px}.list-row small,.event-row small{color:#637887}.admin-form{border-top:1px solid #d9e5ea;display:grid;gap:12px;margin-top:18px;padding-top:18px}.admin-form h3{margin:0;font-size:16px}fieldset{border:1px solid #d9e5ea;border-radius:7px;display:grid;gap:10px;margin:0;padding:12px}legend{color:#455d6e;font-size:13px;padding:0 6px}.checkbox-list{display:grid;gap:8px}.empty-state{min-height:220px;display:grid;place-items:center;align-content:center;gap:10px;color:#637887;text-align:center}.wide-message{grid-column:1 / -1}.saved{color:#116149;align-self:center}.time-row{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.chart-wrap{width:100%;overflow-x:auto}.chart-wrap svg{width:100%;min-width:560px}.chart-bg{fill:#f7fbfc}.grid-line{stroke:#dbe8ed}.axis-label,.chart-label{fill:#5e7482;font-size:12px}.limit{stroke-dasharray:5 5;stroke-width:1.5}.limit.hysteresis{opacity:.45;stroke-dasharray:2 7}.limit.warning{stroke:#ca8504}.limit.alarm{stroke:#d73a31}.average-line{stroke:#5261d6;stroke-dasharray:8 4;stroke-width:2}.humidity-axis{fill:#7a4b00}.temp-line{fill:none;stroke:#118ab2;stroke-width:3}.humidity-line{fill:none;stroke:#b66a00;stroke-width:2.5}.event-marker line{stroke-width:2}.event-marker.warning line,.event-marker.warning circle{stroke:#ca8504;fill:#fff4d6}.event-marker.alarm line,.event-marker.alarm circle{stroke:#d73a31;fill:#ffe2de}.error{color:#b42318}.hint{color:#637887;font-size:13px;margin:0}.success{color:#087443}.debug-page{display:grid;gap:16px}.debug-form{display:grid;gap:12px}.checkbox-label{display:flex;align-items:center;gap:8px;padding-top:24px}.checkbox-label input{width:auto}.backfill-result{display:grid;gap:10px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.debug-grid{display:grid;gap:16px}.debug-panel{overflow:hidden}.debug-panel h2{display:flex;align-items:center;gap:8px;margin-top:0}.debug-table{display:grid;gap:6px;overflow-x:auto}.debug-row{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(120px,1fr) minmax(120px,1fr) minmax(90px,.7fr) minmax(150px,1fr);gap:10px;align-items:center;border:1px solid #dce8ec;border-radius:7px;min-width:820px;padding:10px}.debug-row.header{background:#eef6f8;color:#455d6e;font-size:12px;font-weight:700;text-transform:uppercase}.debug-row.warning{border-left:4px solid #d99100}.debug-row.alarm{border-left:4px solid #d73a31}.report-document header{display:grid;gap:8px;margin-bottom:18px}.report-meta-line{display:flex;align-items:center;justify-content:space-between;gap:16px;color:#455d6e}.report-table{display:grid;gap:6px;overflow-x:auto}.report-row{display:grid;grid-template-columns:minmax(150px,1.3fr) repeat(4,minmax(110px,1fr));gap:10px;align-items:center;border:1px solid #dce8ec;border-radius:7px;min-width:760px;padding:10px}.temperature-report-table .report-row{grid-template-columns:minmax(150px,1.3fr) minmax(90px,.7fr) repeat(2,minmax(180px,1fr)) minmax(90px,.8fr);min-width:820px}.sensor-health-table .report-row{grid-template-columns:minmax(160px,1.4fr) repeat(4,minmax(110px,1fr))}.alarm-report-table .report-row{grid-template-columns:minmax(140px,1.2fr) minmax(140px,1.1fr) minmax(90px,.8fr) minmax(150px,1fr) minmax(120px,.9fr) minmax(140px,1fr);min-width:880px}.report-row.header,.report-row.subheader{background:#eef6f8;color:#455d6e;font-size:12px;font-weight:700;text-transform:uppercase}.report-row.subheader{background:#f7fafb}.report-row.warning{border-left:4px solid #d99100}.report-row.alarm{border-left:4px solid #d73a31}.centered{text-align:center}.align-right{text-align:right}.split-left{border-left:2px solid #c7dbe3;padding-left:14px}.stacked-heading{display:grid;gap:3px}.stacked-heading small{color:#637887;font-size:11px;font-weight:600}.metric-triplet{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:8px;font-variant-numeric:tabular-nums;text-align:right}.metric-triplet span+span{border-left:1px solid #dce8ec;padding-left:8px}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:2;padding:14px}nav{grid-template-columns:repeat(5,minmax(0,1fr))}nav button{justify-content:center;font-size:0}.content-grid,.two-col,.sensor-layout.with-detail,.sensor-layout{grid-template-columns:1fr}.detail-drawer{transform:translateY(10px)}.editor,.data-row,.form-grid,.settings-grid,.settings-grid.compact,.time-row,.user-tools{grid-template-columns:1fr}.sensor-row{align-items:flex-start;flex-wrap:wrap}.sensor-actions{width:100%;justify-content:flex-end}.user-tools{display:grid;align-items:stretch}}
