@import"https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&family=Orbitron:wght@500;600&display=swap";:root{font-family:Noto Sans SC,Microsoft YaHei,sans-serif;color:#dceaff;background:#071222;font-synthesis:none;--panel:#12223a;--line:#24517b;--muted:#7290ad;--cyan:#28a9ff;--green:#27ef9b;--red:#ff5c68;--orange:#ffb858}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 50% -10%,#102541 0,#071222 46%,#050e1b);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a{transition:.2s ease}.dashboard-shell{min-height:100vh;padding:20px 24px 36px}.dashboard-header{height:70px;display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #24415e}.brand{display:flex;gap:12px;align-items:center}.brand>svg{color:var(--cyan)}.brand h1{margin:0;color:#fff;font-family:Noto Sans SC,serif;font-size:29px;letter-spacing:2px}.brand p{margin:5px 0 0;color:#63819e;font-size:12px;letter-spacing:2px}.header-actions{display:flex;align-items:center;gap:10px}.clock{text-align:right;color:#72a5ce;font-size:12px}.clock strong{display:block;color:#39b7ff;font-family:Orbitron,monospace;font-size:20px;letter-spacing:1px}.admin-link,.icon-button{height:38px;border:1px solid #28567d;background:#102039;color:#bfe5ff;border-radius:8px;display:flex;align-items:center;gap:7px;padding:0 13px;text-decoration:none;cursor:pointer}.admin-link:hover,.icon-button:hover{border-color:#3caeff;color:#fff}.summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:20px 0}.summary-card{height:80px;border:1px solid var(--line);background:linear-gradient(145deg,#142640f2,#0e1d33f2);border-radius:10px;padding:14px;display:flex;align-items:center;gap:12px;box-shadow:inset 0 0 18px #1f76be0a}.summary-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:9px;background:#0c1d34;color:#47baff}.summary-label{font-size:13px;color:#9eb5cd}.summary-value{font-family:Orbitron,monospace;font-size:25px;color:#fff;line-height:1.1}.summary-value.green{color:var(--green)}.summary-value.red{color:var(--red)}.summary-value.blue{color:#2c9cff}.summary-value small{font-size:15px;margin-left:3px}.dashboard-content{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:20px}.section-title,.panel-title{height:42px;display:flex;align-items:center;gap:8px;color:#f5fbff}.section-title h2,.panel-title h2{font-size:16px;margin:0}.section-title span{margin-left:auto;color:#5f7d9c;font-size:12px}.rooms-grid{display:grid;grid-template-columns:repeat(5,minmax(180px,1fr));gap:14px}.room-card{border:1px solid #285981;background:linear-gradient(145deg,#142640fa,#0f1e33fa);border-radius:11px;padding:13px 13px 10px;min-height:190px;box-shadow:0 0 22px #006fc40d}.room-card.vacant{border-color:#596679;background:linear-gradient(145deg,#1c2738f5,#111d2ef5)}.room-heading{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid rgba(74,108,142,.38);padding-bottom:8px}.room-heading h3{font-size:14px;color:#fff;margin:0}.room-code{font:10px Orbitron;color:#507495;margin-top:3px}.vacant-tag{font-size:11px;color:#ffcc7c;background:#ffb8581f;border:1px solid rgba(255,184,88,.48);border-radius:999px;padding:3px 8px}.room-metrics{display:grid;grid-template-columns:1fr 1fr;gap:11px;padding-top:10px}.metric-row{min-width:0;position:relative}.point-name{display:flex;align-items:center;gap:4px;color:#a9bfd4;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.point-name svg{color:#ffc45e;flex:none}.temperature{font:22px/1.15 Orbitron,monospace;margin:3px 0;color:var(--green)}.temperature span{font:12px Noto Sans SC}.temperature.cold{color:#319cff}.temperature.hot{color:#ff5d68}.temperature.offline{color:#6c8298}.humidity{font-size:11px;color:#6688a8}.state-badge{font-size:10px;margin-top:4px;color:var(--green)}.state-badge.cold{color:#319cff}.state-badge.hot{color:#ff5d68}.state-badge.offline{color:#74879a}.room-foot{font-size:9px;color:#496782;margin-top:10px}.empty-sensor{grid-column:1/-1;color:#627f9a;font-size:12px;padding:28px 0;text-align:center}.trend-panel{border:1px solid #285981;background:#12223a;border-radius:11px;padding:14px;height:max-content;position:sticky;top:18px}.legend-list{display:grid;gap:7px;font-size:12px;color:#a6bdd3;padding:5px 0 14px}.legend-list span{display:flex;gap:8px;align-items:center}.legend-list i{width:10px;height:10px;border-radius:3px}.cold-dot{background:#319cff}.normal-dot{background:var(--green)}.hot-dot{background:#ff5d68}.vacant-dot{background:#ffb858}.sync-note{border-top:1px solid #294867;padding-top:14px;display:flex;gap:9px;color:var(--green)}.sync-note strong{font-size:12px}.sync-note p{margin:2px 0;color:#6888a5;font-size:10px}.error-strip,.success-notice{display:flex;align-items:center;gap:8px;background:#ff5c681f;border:1px solid rgba(255,92,104,.4);color:#ff9da5;padding:10px 13px;border-radius:8px;margin-bottom:14px}.full-state{height:100vh;display:flex;align-items:center;justify-content:center;color:#87a7c5;gap:10px}.pulse{width:10px;height:10px;border-radius:50%;background:#26a8ff;box-shadow:0 0 #26a8ffb3;animation:pulse 1.5s infinite}@keyframes pulse{70%{box-shadow:0 0 0 12px #26a8ff00}}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(420px,100%);background:#111f35;border:1px solid #28567d;border-radius:16px;padding:34px;box-shadow:0 28px 80px #00000061}.login-logo{width:58px;height:58px;border-radius:14px;background:#0c1b31;color:#35b5ff;display:grid;place-items:center}.login-card h1{margin:18px 0 6px}.login-card p{color:#718da8;font-size:13px;margin-bottom:24px}.login-card label,.editor-modal label{display:grid;gap:7px;color:#9fb7ce;font-size:12px;margin:13px 0}.login-card input,.editor-modal input,.editor-modal select{height:42px;border:1px solid #2b4d6e;background:#091729;color:#e6f3ff;border-radius:8px;padding:0 11px;outline:none}.login-card input:focus,.editor-modal input:focus,.editor-modal select:focus{border-color:#32aefe;box-shadow:0 0 0 3px #32aefe1a}.login-card>a{display:block;text-align:center;color:#70a7d2;font-size:12px;margin-top:18px}.primary-button,.secondary-button{border:0;border-radius:8px;height:40px;padding:0 18px;cursor:pointer}.primary-button{color:#fff;background:#168fe0;box-shadow:0 8px 18px #168fe02e}.primary-button:hover{background:#29a8fa}.login-card .primary-button{width:100%;margin-top:10px}.form-error{background:#ff5c681f;color:#ff9da5;border-radius:7px;padding:9px 11px;font-size:12px}.admin-shell{min-height:100vh;display:grid;grid-template-columns:230px 1fr;background:#071222}.admin-sidebar{border-right:1px solid #203c59;background:#0d1a2d;padding:22px 16px;display:flex;flex-direction:column}.admin-brand{display:flex;align-items:center;gap:10px;color:#e9f6ff;font-weight:600;padding:0 10px 24px}.admin-brand svg{color:#38aff5}.admin-sidebar nav{display:grid;gap:7px}.admin-sidebar nav a{height:44px;padding:0 12px;border-radius:8px;display:flex;align-items:center;gap:10px;color:#7694af;text-decoration:none;font-size:13px}.admin-sidebar nav a.active{background:#142c47;color:#e5f5ff}.admin-sidebar>button{margin-top:auto;border:0;background:transparent;color:#718ca5;display:flex;gap:9px;align-items:center;padding:12px;cursor:pointer}.admin-main{padding:30px}.admin-main>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.admin-main header p{margin:0;color:#32aefe;font:10px Orbitron;letter-spacing:2px}.admin-main header h1{font-size:25px;margin:5px 0}.admin-main header span{font-size:12px;color:#6e8ba6}.admin-table-wrap{border:1px solid #234665;border-radius:12px;overflow:auto;background:#0e1d31}table{border-collapse:collapse;width:100%;min-width:900px}th{text-align:left;color:#6f8ba5;font-size:11px;font-weight:500;background:#10233b;padding:13px 15px}td{border-top:1px solid #1d3b58;padding:14px 15px;color:#b6cadc;font-size:12px;vertical-align:top}td strong{display:block;color:#edf7ff;font-size:13px}td small{display:block;color:#587793;margin-top:3px;font-size:10px}.table-point+.table-point{margin-top:8px}.occupancy-pill{border:1px solid;border-radius:999px;padding:4px 10px;background:transparent;cursor:pointer;font-size:11px}.occupancy-pill.occupied{color:#31e89c;border-color:#31e89c80}.occupancy-pill.vacant{color:#ffbd68;border-color:#ffbd6880}.edit-button{border:0;background:#173453;color:#79c5f4;border-radius:7px;padding:7px 11px;cursor:pointer}.success-notice{background:#31e89c17;border-color:#31e89c59;color:#63edb3}.success-notice button{margin-left:auto;border:0;background:transparent;color:inherit}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#020810c2;display:grid;place-items:center;padding:20px;z-index:10;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.editor-modal{width:min(860px,100%);max-height:92vh;overflow:auto;background:#0f1f35;border:1px solid #2d577d;border-radius:15px;padding:22px}.modal-head{display:flex;justify-content:space-between}.modal-head h2{margin:0}.modal-head p{margin:4px 0 0;color:#718ca5;font-size:12px}.close-button{border:0;background:#162d47;color:#8eb1ce;width:34px;height:34px;border-radius:8px;display:grid;place-items:center}.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0 13px}.switch-label{align-content:end!important;display:flex!important;align-items:center;gap:9px;height:42px;margin-top:33px!important}.switch-label input{display:none}.switch-label span{width:36px;height:20px;border-radius:20px;background:#40566a;position:relative}.switch-label span:after{content:"";position:absolute;width:14px;height:14px;top:3px;left:3px;border-radius:50%;background:#fff;transition:.2s}.switch-label input:checked+span{background:#20b77a}.switch-label input:checked+span:after{transform:translate(16px)}.sensor-editor{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.sensor-block{border:1px solid #254968;background:#0b192b;border-radius:10px;padding:14px}.sensor-block h3{font-size:13px;margin:0 0 8px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.secondary-button{background:#1a3048;color:#a9bfd3}@media(max-width:1350px){.rooms-grid{grid-template-columns:repeat(4,1fr)}.dashboard-content{grid-template-columns:1fr 330px}}@media(max-width:1050px){.summary-grid{grid-template-columns:repeat(3,1fr)}.dashboard-content{grid-template-columns:1fr}.trend-panel{position:static}.rooms-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.dashboard-shell{padding:14px}.dashboard-header{height:auto;padding-bottom:14px;gap:12px}.brand h1{font-size:19px}.brand p,.clock{display:none}.admin-link{font-size:0}.summary-grid{grid-template-columns:1fr 1fr}.summary-card{height:72px}.rooms-grid{grid-template-columns:1fr 1fr}.admin-shell{display:block}.admin-sidebar{display:none}.admin-main{padding:18px}.form-grid,.sensor-editor{grid-template-columns:1fr 1fr}}@media(max-width:500px){.summary-grid,.rooms-grid,.form-grid,.sensor-editor{grid-template-columns:1fr}.dashboard-header{align-items:center}.room-card{min-height:180px}.admin-main>header{align-items:flex-end}.admin-main header span{display:none}}.care-info-section{margin-top:14px;padding:14px;border:1px solid #254968;border-radius:10px;background:#0b192b}.care-info-section h3{margin:0 0 4px;font-size:13px}.care-info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 13px}.care-info-wide{grid-column:span 2}@media(max-width:760px){.care-info-grid{grid-template-columns:1fr 1fr}.care-info-wide{grid-column:span 2}}@media(max-width:500px){.care-info-grid{grid-template-columns:1fr}.care-info-wide{grid-column:span 1}}.doorplate-modal{width:min(760px,100%)}.doorplate-modal .care-info-grid{margin-top:14px}.table-link{color:#5cbfff;text-decoration:none;white-space:nowrap}.table-link:hover{text-decoration:underline}.layout-workbench{display:grid;grid-template-columns:minmax(560px,1fr) minmax(360px,.8fr);gap:18px;align-items:start}.layout-fields,.layout-preview{border:1px solid #234665;border-radius:12px;background:#0e1d31;overflow:hidden}.layout-toolbar,.layout-preview>div{min-height:54px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #234665}.layout-toolbar strong,.layout-preview strong{font-size:14px;color:#eaf6ff}.layout-preview a{color:#62c2ff;text-decoration:none;font-size:12px}.layout-heading,.layout-row{display:grid;grid-template-columns:minmax(145px,1.6fr) repeat(4,minmax(72px,1fr));gap:9px;align-items:center;padding:8px 12px}.layout-heading{background:#10233b;color:#6f8ba5;font-size:11px}.layout-row{border-top:1px solid #1d3b58}.layout-row strong{font-size:12px;color:#dcecff}.layout-row strong small{display:block;color:#52738f;font-weight:400;font-size:9px}.layout-row input{width:100%;height:36px;border:1px solid #294d6d;background:#091729;color:#e7f4ff;border-radius:7px;padding:0 8px;outline:none}.layout-row input:focus{border-color:#32aefe;box-shadow:0 0 0 3px #32aefe1a}.layout-preview{position:sticky;top:22px}.layout-preview iframe{display:block;width:100%;aspect-ratio:9/16;max-height:calc(100vh - 155px);border:0;background:#fde0f6}.admin-main>.success-notice+header{margin-top:12px}@media(max-width:1150px){.layout-workbench{grid-template-columns:1fr}.layout-preview{position:static}.layout-preview iframe{height:760px;max-height:none}}@media(max-width:760px){.layout-heading,.layout-row{grid-template-columns:1.4fr repeat(4,1fr);gap:5px;padding:7px}.layout-row input{padding:0 4px;font-size:11px}}.layout-editor-stack{display:grid;gap:18px}.preview-settings{border:1px solid #234665;border-radius:12px;background:#0e1d31;overflow:hidden}.background-actions{display:flex;gap:8px;align-items:center}.upload-button{height:40px;padding:0 16px;border-radius:8px;background:#168fe0;color:#fff;display:flex;align-items:center;cursor:pointer;font-size:12px}.upload-button input{display:none}.setting-hint{margin:0;padding:11px 14px 14px;color:#6f8da7;font-size:11px}.sample-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 12px;padding:13px}.sample-grid label{display:grid;gap:6px;color:#91abc3;font-size:11px}.sample-grid input{width:100%;height:38px;border:1px solid #294d6d;background:#091729;color:#e7f4ff;border-radius:7px;padding:0 9px;outline:none}.sample-grid input:focus{border-color:#32aefe;box-shadow:0 0 0 3px #32aefe1a}.doorplate-table table{min-width:1250px}@media(max-width:760px){.background-actions{align-items:stretch;flex-direction:column}.sample-grid{grid-template-columns:1fr 1fr}.upload-button{justify-content:center}}@media(max-width:500px){.sample-grid{grid-template-columns:1fr}}.diet-rule-basics{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:13px;border-bottom:1px solid #1d3b58}.diet-rule-basics label{display:grid;gap:6px;color:#91abc3;font-size:11px}.diet-rule-basics input,.diet-rule-basics select,.diet-layout-row input{height:38px;border:1px solid #294d6d;background:#091729;color:#e7f4ff;border-radius:7px;padding:0 9px;outline:none}.diet-layout-heading,.diet-layout-row{display:grid;grid-template-columns:minmax(105px,1.35fr) repeat(4,minmax(68px,1fr));gap:9px;align-items:center;padding:8px 12px}.diet-layout-heading{background:#10233b;color:#6f8ba5;font-size:11px}.diet-layout-row{border-top:1px solid #1d3b58}.diet-layout-row strong{font-size:12px;color:#dcecff}.diet-layout-row input{width:100%}.layout-preview iframe{aspect-ratio:9/14}.clear-doorplate-button{margin-right:auto;height:40px;padding:0 18px;border:1px solid rgba(255,92,104,.55);border-radius:8px;background:#ff5c681a;color:#ff9da5;cursor:pointer}.clear-doorplate-button:hover{background:#ff5c682e;border-color:#ff7d87}.doorplate-admin-header{align-items:flex-end!important;gap:18px}.doorplate-type-filters{margin-left:auto;flex-wrap:wrap;justify-content:flex-end}.doorplate-table .occupancy-pill{display:inline-block;cursor:default}.admin-main .switch-label{pointer-events:none;opacity:.72}@media(max-width:1100px){.doorplate-admin-header{align-items:flex-start!important;flex-direction:column}.doorplate-type-filters{margin-left:0;justify-content:flex-start}}.doorplate-search{width:min(320px,100%);margin:0 0 12px auto;display:flex;align-items:center;gap:10px;color:#7896b1;font-size:12px}.doorplate-search span{white-space:nowrap}.doorplate-search input{width:100%;height:40px;padding:0 13px;border:1px solid #294d6d;border-radius:8px;background:#091729;color:#e7f4ff;outline:none}.doorplate-search input::placeholder{color:#56728d}.doorplate-search input:focus{border-color:#32aefe;box-shadow:0 0 0 3px #32aefe1a}@media(max-width:500px){.diet-rule-basics{grid-template-columns:1fr}.diet-layout-heading,.diet-layout-row{grid-template-columns:1.2fr repeat(4,1fr);gap:5px;padding:7px}.diet-layout-row input{padding:0 4px;font-size:11px}}.kitchen-screen-option{grid-column:1/-1;min-height:62px!important;height:auto!important;margin:4px 0 0!important;padding:11px 13px;border:1px solid #254968;border-radius:9px;background:#0a182a;pointer-events:auto!important;opacity:1!important;cursor:pointer}.kitchen-screen-option>div{display:grid;gap:3px}.kitchen-screen-option b{color:#dcecff;font-size:13px}.kitchen-screen-option small{color:#6686a2;font-size:10px;font-weight:400}.kitchen-screen-option input:disabled+span{opacity:.4}.kitchen-screen-pill{display:inline-block;padding:4px 10px;border:1px solid;border-radius:999px;font-size:11px;white-space:nowrap}.kitchen-screen-pill.visible{color:#31e89c;border-color:#31e89c80;background:#31e89c14}.kitchen-screen-pill.hidden{color:#8397aa;border-color:#8397aa61;background:#8397aa0f}.doorplate-table table{min-width:1520px}.editor-modal textarea{width:100%;min-height:82px;padding:10px 11px;border:1px solid #2b4d6e;border-radius:8px;background:#091729;color:#e6f3ff;font:inherit;line-height:1.5;outline:none;resize:vertical}.editor-modal textarea:focus{border-color:#32aefe;box-shadow:0 0 0 3px #32aefe1a}.doorplate-table table{min-width:1900px}.rooms-grid{grid-template-columns:repeat(var(--room-columns,5),minmax(0,1fr));gap:clamp(7px,1vw,14px)}.rooms-grid.is-compact .room-card{min-height:0;padding:7px 9px 6px;border-radius:8px;overflow:hidden}.rooms-grid.is-compact .room-heading{padding-bottom:4px}.rooms-grid.is-compact .room-heading h3{font-size:clamp(11px,1.8vh,14px);line-height:1.15}.rooms-grid.is-compact .room-code{margin-top:1px;font-size:clamp(8px,1.15vh,10px)}.rooms-grid.is-compact .occupied-tag,.rooms-grid.is-compact .vacant-tag{padding:2px 6px;font-size:clamp(9px,1.25vh,11px)}.rooms-grid.is-compact .room-metrics{gap:5px;padding-top:5px}.rooms-grid.is-compact .point-name{gap:2px;font-size:clamp(9px,1.35vh,11px)}.rooms-grid.is-compact .point-name svg{width:10px;height:10px}.rooms-grid.is-compact .temperature{margin:1px 0;font-size:clamp(17px,2.8vh,22px);line-height:1.08}.rooms-grid.is-compact .temperature span{font-size:clamp(9px,1.35vh,11px)}.rooms-grid.is-compact .humidity,.rooms-grid.is-compact .state-badge{font-size:clamp(8px,1.25vh,10px);line-height:1.1}.rooms-grid.is-compact .state-badge{margin-top:2px}.rooms-grid.is-compact .room-foot{display:none}@media(min-width:1051px){.dashboard-shell{height:100vh;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-bottom:20px}.dashboard-content{flex:1;min-height:0}.rooms-panel{min-height:0;display:flex;flex-direction:column}.rooms-grid{flex:1;min-height:0;overflow:hidden;grid-template-rows:repeat(var(--room-rows,1),minmax(0,1fr));align-content:stretch}.room-card{height:100%;min-height:0;overflow:hidden}.trend-panel{max-height:100%;overflow:hidden}}@media(max-width:1050px){.rooms-grid{grid-template-columns:repeat(var(--room-columns,4),minmax(0,1fr))}}@media(max-width:760px){.rooms-grid{grid-template-columns:repeat(var(--room-columns,2),minmax(0,1fr))}}@media(max-width:500px){.rooms-grid{grid-template-columns:1fr}.rooms-grid.is-compact .room-card{min-height:180px;padding:13px 13px 10px}.rooms-grid.is-compact .room-foot{display:block}}@media(min-width:1051px){.dashboard-content{grid-template-rows:minmax(0,1fr);overflow:hidden}.rooms-panel{overflow:hidden}.trend-panel{position:static;height:100%;min-height:0}}.rooms-grid:not(.is-compact) .room-card{container-type:size;position:relative;display:flex;flex-direction:column;padding-bottom:clamp(24px,8cqh,38px)}.rooms-grid:not(.is-compact) .room-heading{flex:none;padding-bottom:clamp(7px,2.8cqh,13px)}.rooms-grid:not(.is-compact) .room-heading h3{font-size:clamp(14px,min(7cqh,6cqw),22px);line-height:1.15}.rooms-grid:not(.is-compact) .room-code{margin-top:clamp(3px,1.5cqh,7px);font-size:clamp(10px,min(4cqh,3.2cqw),13px)}.rooms-grid:not(.is-compact) .occupied-tag,.rooms-grid:not(.is-compact) .vacant-tag{padding:clamp(3px,1.4cqh,6px) clamp(8px,2.8cqw,14px);font-size:clamp(11px,min(4.5cqh,3.5cqw),15px)}.rooms-grid:not(.is-compact) .room-metrics{flex:1;align-items:center;gap:clamp(8px,3cqw,18px);padding-top:0}.rooms-grid:not(.is-compact) .metric-row{display:flex;min-height:0;flex-direction:column;justify-content:center}.rooms-grid:not(.is-compact) .point-name{gap:clamp(4px,1.4cqw,8px);font-size:clamp(11px,min(5.5cqh,4.2cqw),18px)}.rooms-grid:not(.is-compact) .point-name svg{width:clamp(14px,min(5cqh,4cqw),20px);height:clamp(14px,min(5cqh,4cqw),20px)}.rooms-grid:not(.is-compact) .temperature{margin:clamp(3px,1.8cqh,8px) 0;font-size:clamp(22px,min(12cqh,12cqw),38px);line-height:1.05}.rooms-grid:not(.is-compact) .temperature span{font-size:clamp(12px,min(5cqh,4.2cqw),17px)}.rooms-grid:not(.is-compact) .humidity{font-size:clamp(11px,min(4.5cqh,3.8cqw),16px)}.rooms-grid:not(.is-compact) .state-badge{margin-top:clamp(4px,1.8cqh,8px);font-size:clamp(10px,min(4.2cqh,3.5cqw),15px)}.rooms-grid:not(.is-compact) .room-foot{position:absolute;left:13px;right:13px;bottom:clamp(7px,2.5cqh,12px);margin:0;font-size:clamp(9px,min(3.5cqh,3cqw),12px)}@container (max-width:220px){.rooms-grid:not(.is-compact) .room-metrics{grid-template-columns:1fr;gap:3px;margin-bottom:clamp(18px,9cqh,26px);padding:4px 0}.rooms-grid:not(.is-compact) .metric-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"point temp" "humidity state";align-content:center;border-bottom:1px solid rgba(74,108,142,.24);padding:3px 0}.rooms-grid:not(.is-compact) .metric-row:last-child{border-bottom:0}.rooms-grid:not(.is-compact) .point-name{grid-area:point;font-size:clamp(11px,5.5cqh,13px)}.rooms-grid:not(.is-compact) .temperature{grid-area:temp;margin:0;font-size:clamp(22px,12cqh,28px)}.rooms-grid:not(.is-compact) .humidity{grid-area:humidity;font-size:clamp(10px,4.5cqh,12px)}.rooms-grid:not(.is-compact) .state-badge{grid-area:state;margin:0;text-align:right;font-size:clamp(10px,4.2cqh,12px)}}.dashboard-shell{height:auto;min-height:100vh;overflow:visible;display:block;padding-bottom:36px}.dashboard-content{min-height:auto;overflow:visible;grid-template-rows:none}.rooms-panel{display:block;min-height:auto;overflow:visible}.rooms-grid{min-height:auto;overflow:visible;grid-template-rows:none;align-content:start}.room-card,.rooms-grid:not(.is-compact) .room-card{height:auto;min-height:clamp(260px,28vh,340px);overflow:hidden;padding:clamp(18px,2.2vh,26px);padding-bottom:clamp(42px,5vh,58px);border-radius:14px}.rooms-grid:not(.is-compact) .room-heading{padding-bottom:clamp(12px,1.8vh,20px)}.rooms-grid:not(.is-compact) .room-heading h3{font-size:clamp(22px,min(8cqh,6.5cqw),30px)}.rooms-grid:not(.is-compact) .room-code{font-size:clamp(15px,min(4.8cqh,3.8cqw),19px)}.rooms-grid:not(.is-compact) .occupied-tag,.rooms-grid:not(.is-compact) .vacant-tag{padding:5px 13px;font-size:clamp(16px,min(5cqh,4cqw),20px)}.rooms-grid:not(.is-compact) .point-name{font-size:clamp(18px,min(6cqh,4.8cqw),24px)}.rooms-grid:not(.is-compact) .point-name svg{width:clamp(20px,min(5.5cqh,4.5cqw),26px);height:clamp(20px,min(5.5cqh,4.5cqw),26px)}.rooms-grid:not(.is-compact) .temperature{font-size:clamp(36px,min(14cqh,13cqw),48px)}.rooms-grid:not(.is-compact) .temperature span{font-size:clamp(18px,min(5.5cqh,4.6cqw),23px)}.rooms-grid:not(.is-compact) .humidity{font-size:clamp(17px,min(5cqh,4.2cqw),22px)}.rooms-grid:not(.is-compact) .state-badge{font-size:clamp(17px,min(4.8cqh,4cqw),22px)}.rooms-grid:not(.is-compact) .room-foot{left:clamp(18px,2.2vh,26px);right:clamp(18px,2.2vh,26px);bottom:clamp(13px,1.8vh,20px);font-size:clamp(14px,min(4cqh,3.3cqw),18px)}.trend-panel{position:sticky;height:max-content;max-height:none;overflow:visible}@media(max-width:760px){.room-card,.rooms-grid:not(.is-compact) .room-card{min-height:240px;padding:14px 14px 38px}.rooms-grid:not(.is-compact) .room-heading h3{font-size:18px}.rooms-grid:not(.is-compact) .temperature{font-size:30px}.rooms-grid:not(.is-compact) .point-name{font-size:14px}.rooms-grid:not(.is-compact) .humidity,.rooms-grid:not(.is-compact) .state-badge{font-size:13px}}.rooms-grid:not(.floor-large) .room-card{min-height:190px;padding:13px 13px 36px;border-radius:11px}.rooms-grid:not(.floor-large) .room-heading{padding-bottom:8px}.rooms-grid:not(.floor-large) .room-heading h3{font-size:14px}.rooms-grid:not(.floor-large) .room-code{font-size:10px}.rooms-grid:not(.floor-large) .occupied-tag,.rooms-grid:not(.floor-large) .vacant-tag{padding:3px 8px;font-size:11px}.rooms-grid:not(.floor-large) .room-metrics{gap:11px;padding-top:10px}.rooms-grid:not(.floor-large) .point-name{font-size:11px}.rooms-grid:not(.floor-large) .point-name svg{width:14px;height:14px}.rooms-grid:not(.floor-large) .temperature{font-size:22px}.rooms-grid:not(.floor-large) .temperature span{font-size:12px}.rooms-grid:not(.floor-large) .humidity{font-size:11px}.rooms-grid:not(.floor-large) .state-badge{font-size:10px}.rooms-grid:not(.floor-large) .room-foot{left:13px;right:13px;bottom:10px;font-size:9px}.dashboard-shell.floor-dashboard{height:100vh;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-bottom:14px}.floor-dashboard .summary-grid{display:none}.floor-dashboard .dashboard-content{flex:1;min-height:0;display:block;overflow:hidden}.floor-dashboard .rooms-panel{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden}.floor-dashboard .section-title{flex:none}.floor-dashboard .trend-panel{display:none}.floor-dashboard .rooms-grid.floor-large{flex:1;min-height:0;overflow:hidden;display:grid;grid-template-columns:repeat(var(--room-columns),minmax(0,1fr));grid-template-rows:repeat(var(--room-rows),minmax(0,1fr));gap:clamp(6px,.8vw,12px);align-content:stretch}.floor-dashboard .floor-title-only{display:block;min-width:0}.floor-dashboard .floor-title-only h1{white-space:nowrap;font-size:clamp(18px,1.55vw,30px);letter-spacing:clamp(.5px,.1vw,2px)}.floor-brand-card{grid-column:span var(--brand-span);container-type:size;min-width:0;min-height:0;border:1px solid #2b79aa;border-radius:clamp(8px,5cqh,13px);background:radial-gradient(circle at 12% 18%,rgba(40,169,255,.18),transparent 38%),linear-gradient(135deg,#112b48fa,#09192dfa);box-shadow:inset 0 0 30px #28a9ff14,0 0 24px #006fc414;display:grid;grid-template-columns:auto auto;grid-template-rows:1fr 1fr;align-items:center;align-content:center;justify-content:center;column-gap:clamp(10px,3cqw,30px);padding:clamp(8px,7cqh,22px) clamp(12px,4cqw,34px);overflow:hidden;text-align:center}.floor-brand-card strong{grid-column:1/-1;color:#f4fbff;font-size:clamp(18px,min(24cqh,8cqw),40px);line-height:1.05;letter-spacing:clamp(1px,.5cqw,5px);white-space:nowrap;text-shadow:0 0 18px rgba(40,169,255,.35)}.floor-brand-card span,.floor-brand-card small{align-self:start;color:#54c8ff;font-size:clamp(13px,min(13cqh,4.2cqw),24px);font-weight:600;line-height:1.1;letter-spacing:clamp(.5px,.25cqw,2px);white-space:nowrap}.floor-brand-card small{color:#8fb6d3;font-weight:500}.rooms-grid.floor-large .room-card{container-type:size;height:100%;min-height:0;padding:clamp(7px,5cqh,16px);padding-bottom:clamp(24px,15cqh,40px);border-radius:clamp(8px,5cqh,13px)}.rooms-grid.floor-large .room-heading{padding-bottom:clamp(4px,3cqh,9px)}.rooms-grid.floor-large .room-heading h3{font-size:clamp(12px,min(11cqh,7cqw),28px);line-height:1.08;white-space:nowrap}.rooms-grid.floor-large .room-code{margin-top:clamp(1px,2cqh,4px);font-size:clamp(8px,min(6cqh,3.6cqw),15px)}.rooms-grid.floor-large .occupied-tag,.rooms-grid.floor-large .vacant-tag{padding:clamp(2px,2cqh,5px) clamp(6px,3cqw,12px);font-size:clamp(9px,min(7cqh,4cqw),17px)}.rooms-grid.floor-large .room-metrics{min-height:0;gap:clamp(5px,3cqw,14px);padding-top:0;align-items:center}.rooms-grid.floor-large .point-name{font-size:clamp(9px,min(8cqh,4.8cqw),20px)}.rooms-grid.floor-large .point-name svg{width:clamp(10px,min(8cqh,4.5cqw),20px);height:clamp(10px,min(8cqh,4.5cqw),20px)}.rooms-grid.floor-large .temperature{margin:clamp(1px,2cqh,5px) 0;font-size:clamp(18px,min(20cqh,13cqw),48px);line-height:1}.rooms-grid.floor-large .temperature span{font-size:clamp(9px,min(8cqh,4.8cqw),20px)}.rooms-grid.floor-large .humidity{font-size:clamp(9px,min(7cqh,4.2cqw),17px)}.rooms-grid.floor-large .state-badge{margin-top:clamp(1px,2cqh,4px);font-size:clamp(9px,min(7cqh,4cqw),17px)}.rooms-grid.floor-large .room-foot{left:clamp(7px,5cqh,16px);right:clamp(7px,5cqh,16px);bottom:clamp(5px,4cqh,11px);font-size:clamp(8px,min(5cqh,3.2cqw),13px)}@media(max-width:760px){.dashboard-shell.floor-dashboard{padding:8px}.floor-dashboard .dashboard-header{padding-bottom:8px}.floor-dashboard .section-title{padding-bottom:4px}.rooms-grid.floor-large .room-card{padding:6px 6px 22px}}.sample-grid select{width:100%;height:38px;border:1px solid #294d6d;background:#091729;color:#e7f4ff;border-radius:7px;padding:0 9px;outline:none}.sample-grid select:focus{border-color:#32aefe;box-shadow:0 0 0 3px #32aefe1a}.room-card{cursor:pointer;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.room-card:hover,.room-card:focus-visible{transform:translateY(-2px);border-color:#3c97d1;box-shadow:0 10px 30px #006fc426;outline:none}.history-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:22px;background:#020811d1;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.history-modal{width:min(1120px,100%);max-height:94vh;overflow:auto;padding:22px;border:1px solid #2d618d;border-radius:16px;background:#0d1d32;box-shadow:0 32px 90px #00000080}.history-head{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:16px;border-bottom:1px solid #24435f}.history-head p{margin:0 0 5px;color:#32aefe;font:10px Orbitron,monospace;letter-spacing:2px}.history-head h2{margin:0;color:#f1f8ff;font-size:23px}.history-head h2 span{display:inline-block;margin-left:10px;padding:3px 9px;border:1px solid #53708a;border-radius:999px;color:#a9c1d7;font-size:10px;font-weight:500;vertical-align:middle}.history-head small{color:#6686a3}.history-toolbar{display:flex;align-items:flex-end;gap:12px;padding:16px 0}.preset-group{display:flex;gap:6px;margin-right:auto}.preset-group button,.query-button{height:38px;padding:0 14px;border:1px solid #2b5274;border-radius:8px;background:#112842;color:#8fb0ca;cursor:pointer}.preset-group button.active{border-color:#2caaf5;background:#2caaf529;color:#dff4ff}.history-toolbar label{display:grid;gap:6px;color:#7f9db7;font-size:10px}.history-toolbar input{width:184px;height:38px;padding:0 9px;border:1px solid #2b5274;border-radius:8px;background:#091729;color:#cfe2f2;color-scheme:dark}.query-button{display:flex;align-items:center;gap:6px;border-color:#238fd0;background:#147dbd;color:#fff}.history-chart-wrap{min-height:390px;border:1px solid #234866;border-radius:11px;background:#10223a}.history-source-note{margin:-2px 0 10px;color:#7896b3;font-size:12px}.history-pagination{display:flex;align-items:center;gap:10px;color:#8eabc6;font-size:12px}.history-pagination button{padding:7px 12px;border:1px solid #2a5378;border-radius:7px;background:#10243e;color:#b9d3e9;cursor:pointer}.history-pagination button:disabled{cursor:not-allowed;opacity:.4}.chart-loading{height:390px;display:flex;align-items:center;justify-content:center;gap:10px;color:#7f9db8}.history-table-head{display:flex;align-items:center;justify-content:space-between;padding:18px 2px 10px}.history-table-head h3{margin:0;color:#eaf6ff;font-size:15px}.history-table-head p{margin:3px 0 0;color:#607f9a;font-size:10px}.history-table-head span{color:#6b91b0;font-size:11px}.history-table{max-height:230px;overflow:auto;border:1px solid #203f5b;border-radius:9px}.history-table table{min-width:600px}.history-table td.temperature{color:#27e99b;font:12px Noto Sans SC,sans-serif}.history-table td.humidity{color:#38aaff;font-size:12px}@media(max-width:850px){.history-backdrop{padding:8px}.history-modal{padding:15px;max-height:98vh}.history-toolbar{flex-wrap:wrap}.preset-group{width:100%;margin-right:0}.history-toolbar label{flex:1}.history-toolbar input{width:100%}}.room-display{width:100vw;min-width:320px;height:100vh;min-height:480px;overflow:hidden;padding:clamp(18px,4vh,42px) clamp(18px,3.6vw,58px) clamp(16px,3vh,32px);background:#081629;color:#eaf7ff;display:flex;flex-direction:column}.room-display-head{height:clamp(90px,18vh,140px);display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #28506f}.room-display-head p{margin:0 0 8px;color:#31aefd;font:clamp(10px,1.25vw,17px) Orbitron,monospace;letter-spacing:3px}.room-display-head h1{display:flex;align-items:center;gap:14px;margin:0;color:#fff;font-size:clamp(28px,3.6vw,58px);line-height:1.1}.room-display-head h1 span{border:1px solid #466681;border-radius:999px;padding:5px 12px;color:#a9c0d5;font-size:clamp(11px,1.25vw,18px);font-weight:500}.room-display.is-vacant .room-display-head h1 span{border-color:#806744;color:#ffc878}.room-display-head small{display:block;margin-top:8px;color:#527491;font:clamp(10px,1.2vw,17px) Orbitron,monospace;letter-spacing:1px}.room-display-clock{text-align:right;color:#7196b6;font-size:clamp(11px,1.2vw,17px)}.room-display-clock strong{display:block;margin-top:5px;color:#35b5ff;font:clamp(22px,3vw,46px) Orbitron,monospace;letter-spacing:2px}.room-display-points{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,2.2vw,34px);padding:clamp(14px,3vh,30px) 0}.room-display-point{min-width:0;border:1px solid #29577d;border-radius:18px;padding:clamp(18px,3vh,34px) clamp(18px,2.6vw,42px);background:#10233d;box-shadow:inset 0 0 28px #28a9ff09}.room-display-point-name{display:flex;align-items:center;gap:10px;color:#bed1e2;font-size:clamp(16px,2vw,30px)}.room-display-point-name>svg{color:#ffc45e}.room-display-status{margin-left:auto;border:1px solid currentColor;border-radius:999px;padding:5px 13px;font-size:clamp(11px,1.2vw,17px)}.room-display-status.normal{color:#24ee9b}.room-display-status.cold{color:#319cff}.room-display-status.hot{color:#ff5d68}.room-display-status.offline{color:#74879a}.room-display-temperature{margin:clamp(10px,2vh,22px) 0 7px;color:#27ef9b;font:clamp(52px,7.2vw,112px)/.95 Orbitron,monospace;letter-spacing:-3px}.room-display-temperature small{font:clamp(21px,2.8vw,42px) "Noto Sans SC";letter-spacing:0}.room-display-temperature.cold{color:#319cff}.room-display-temperature.hot{color:#ff5d68}.room-display-temperature.offline{color:#74879a}.room-display-humidity{display:flex;align-items:flex-end;justify-content:space-between;border-top:1px solid rgba(76,112,146,.34);padding-top:clamp(10px,2vh,18px);color:#7898b6;font-size:clamp(13px,1.6vw,24px)}.room-display-humidity strong{color:#41baff;font:clamp(28px,3.5vw,54px) Orbitron,monospace}.room-display-humidity small{font-size:.55em;margin-left:2px}.room-display-updated{margin-top:clamp(8px,1.8vh,18px);color:#4f708d;font-size:clamp(10px,1.2vw,17px)}.room-display-foot{height:clamp(30px,6vh,50px);border-top:1px solid #244765;display:flex;align-items:flex-end;justify-content:space-between;color:#587a98;font-size:clamp(10px,1.2vw,17px)}.room-display-foot div{display:flex;align-items:center;gap:8px;color:#2ce99d}.room-display-error{position:absolute;top:112px;right:38px;color:#ff8a94;font-size:13px}.room-display-state{display:grid;place-items:center;color:#88a8c5;font-size:22px}.point-threshold-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px;margin-top:10px;padding-top:10px;border-top:1px solid #254968}.point-threshold-grid label{margin:7px 0}.point-threshold-grid input{width:100%}.dashboard-header .clock strong{font-size:28px;letter-spacing:2px}.dashboard-header .clock{font-size:13px}.room-filters{display:flex;align-items:center;gap:6px;margin-left:16px}.room-filters button{height:28px;padding:0 12px;border:1px solid #28567d;border-radius:7px;background:#102039;color:#7fa2c0;font-size:12px;cursor:pointer}.room-filters button:hover{color:#dff4ff;border-color:#38aefe}.room-filters button.active{color:#fff;background:#168fe0;border-color:#35b5ff;box-shadow:0 0 12px #26a8ff29}.occupied-tag{font-size:11px;color:#2ce99d;background:#2ce99d1a;border:1px solid rgba(44,233,157,.45);border-radius:999px;padding:3px 8px}@media(max-width:900px){.section-title{height:auto;min-height:42px;flex-wrap:wrap;padding-bottom:8px}.room-filters{order:3;width:100%;margin-left:27px;overflow-x:auto}}@media(max-width:700px){.room-display{min-height:720px;overflow-y:auto}.room-display-head{height:105px}.room-display-clock{display:none}.room-display-points{grid-template-columns:1fr}.room-display-temperature{font-size:clamp(52px,18vw,82px)}.room-display-foot{gap:12px}}@media(max-height:520px)and (min-width:701px){.room-display{min-height:360px;padding-top:14px;padding-bottom:12px}.room-display-head{height:76px}.room-display-head p,.room-display-head small{display:none}.room-display-points{padding:12px 0}.room-display-point{padding-top:14px;padding-bottom:14px}.room-display-temperature{margin:8px 0 5px;font-size:clamp(46px,10vh,70px)}.room-display-updated{margin-top:6px}}
