:root{color:#17201b;background:#f5f7f6;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(90deg,rgba(23,32,27,.04) 1px,transparent 1px),linear-gradient(0deg,rgba(23,32,27,.035) 1px,transparent 1px),#f5f7f6;background-size:38px 38px}button,input{font:inherit}.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:20px;color:#eef5ef;background:#17201b;border-right:1px solid rgba(255,255,255,.08)}.brand{display:flex;align-items:center;gap:12px;min-height:48px;margin-bottom:28px}.brand-mark,.metric-icon{display:inline-grid;width:42px;height:42px;place-items:center;border-radius:8px}.brand-mark{color:#17201b;background:#9bdcbd}.brand strong{display:block;font-size:15px;letter-spacing:0}.brand small{color:#a9b6ae;font-size:12px}nav{display:grid;gap:8px}nav button,.icon-button{display:inline-flex;align-items:center;justify-content:flex-start;gap:10px;min-height:42px;border:0;border-radius:8px;cursor:pointer;color:inherit;background:transparent;transition:background .16s ease,transform .16s ease,color .16s ease}nav button{width:100%;padding:0 12px;color:#c9d3ce}nav button:hover,nav button.active{color:#fff;background:#ffffff1a}nav button:active,.icon-button:active{transform:translateY(1px)}main{width:100%;max-width:1480px;padding:28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.eyebrow{color:#5f6b63;font-size:13px;font-weight:700;text-transform:uppercase}h1,h2,p{margin:0}h1{margin-top:4px;font-size:32px;line-height:1.1;letter-spacing:0}h2{font-size:18px;letter-spacing:0}.topbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.last-update{min-width:116px;color:#5f6b63;font-size:13px;text-align:right}.icon-button{width:42px;justify-content:center;border:1px solid #d7ddd8;color:#17201b;background:#fff}.login-shell{display:grid;width:100%;max-width:none;min-height:100vh;padding:24px;place-items:center}.login-panel{display:grid;width:min(100%,420px);gap:16px;padding:24px;border:1px solid #d7ddd8;border-radius:8px;background:#fffffff5;box-shadow:0 18px 48px #17201b1a}.login-brand{display:flex;align-items:center;gap:12px}.login-brand h1{font-size:28px}.login-copy{color:#5f6b63;font-size:14px}.login-panel label{display:grid;gap:7px}.login-panel label span{color:#5f6b63;font-size:12px;font-weight:800;text-transform:uppercase}.login-panel input{min-height:44px;padding:0 12px;border:1px solid #d7ddd8;border-radius:8px;color:#17201b;background:#fff}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;border:0;border-radius:8px;color:#17201b;background:#9bdcbd;cursor:pointer;font-weight:800;transition:opacity .16s ease,transform .16s ease,background .16s ease}.primary-button:hover:not(:disabled){background:#88d4af}.primary-button:active:not(:disabled){transform:translateY(1px)}.primary-button:disabled{cursor:not-allowed;opacity:.58}.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:0 14px;border:1px solid #d7ddd8;border-radius:8px;color:#17201b;background:#fff;cursor:pointer;font-weight:800;transition:border-color .16s ease,transform .16s ease,background .16s ease,opacity .16s ease}.secondary-button:hover:not(:disabled){border-color:#8db7a0;background:#edf7f1}.secondary-button:active:not(:disabled){transform:translateY(1px)}.secondary-button:disabled{cursor:not-allowed;opacity:.58}.login-error{padding:11px 12px;border:1px solid #ffc9c3;border-radius:8px;color:#8b1d16;background:#fff0ee;font-size:13px}.status-pill{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.status-pill.normal{color:#0d5936;background:#dff5e9}.status-pill.attention{color:#795100;background:#fff0c2}.status-pill.alert{color:#8b1d16;background:#ffe0dd}.status-pill.unknown{color:#4d5660;background:#e8ecef}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:14px}.metric-card,.panel{border:1px solid #d7ddd8;border-radius:8px;background:#fffffff0;box-shadow:0 14px 40px #17201b12}.metric-card{min-height:176px;padding:18px;transition:transform .16s ease,box-shadow .16s ease}.metric-card:hover{transform:translateY(-2px);box-shadow:0 18px 44px #17201b1a}.metric-card.normal{border-top:3px solid #2f9e65}.metric-card.attention{border-top:3px solid #d99700}.metric-card.alert{border-top:3px solid #e0564a}.metric-card.unknown{border-top:3px solid #8b949e}.metric-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.metric-icon{color:#17201b;background:#edf2ee}.metric-label{color:#5f6b63;font-size:13px;font-weight:700}.metric-value{display:flex;align-items:baseline;gap:6px;margin-top:8px;font-size:34px;font-weight:850;line-height:1;letter-spacing:0}.metric-value span{color:#5f6b63;font-size:15px;font-weight:800}.metric-detail{margin-top:16px;color:#68756d;font-size:13px}.content-grid,.docs-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.8fr);gap:14px}.panel{padding:18px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.panel-heading p{margin-top:4px;color:#68756d;font-size:13px}.history-controls{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr)) minmax(260px,auto);gap:12px;align-items:end;margin:-2px 0 16px}.history-controls label{display:grid;gap:6px}.history-controls label span{color:#5f6b63;font-size:12px;font-weight:800;text-transform:uppercase}.history-controls select,.history-controls input{width:100%;min-height:40px;padding:0 12px;border:1px solid #d7ddd8;border-radius:8px;color:#17201b;background:#fff;font:inherit;font-size:14px}.history-controls select{padding-right:34px}.metric-toggles{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.metric-toggles button{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid #d7ddd8;border-radius:8px;color:#5f6b63;background:#fff;cursor:pointer;font-size:13px;font-weight:800;transition:border-color .16s ease,background .16s ease,color .16s ease,transform .16s ease}.metric-toggles button:hover,.metric-toggles button.active{border-color:#8db7a0;color:#17201b;background:#edf7f1}.metric-toggles button:active{transform:translateY(1px)}.metric-swatch{width:10px;height:10px;border-radius:999px;flex:0 0 auto}.metric-swatch.temperature{background:#e0564a}.metric-swatch.humidity{background:#147f8b}.metric-swatch.vpd{background:#7957d5}.custom-range{display:grid;grid-column:1 / -1;grid-template-columns:repeat(2,minmax(180px,260px));gap:12px;justify-content:start}.chart-shell{width:100%;height:330px;min-height:330px}.chart-shell.tall{height:520px;min-height:520px}.alert-list{display:grid;gap:10px}.alert-item{padding:14px;border-radius:8px;border:1px solid #e1e6e2;background:#fff}.alert-item.attention{border-left:4px solid #d99700}.alert-item.alert{border-left:4px solid #e0564a}.alert-item strong{display:block;margin-bottom:5px}.alert-item p{color:#68756d;font-size:13px}.full-panel{min-height:calc(100vh - 122px)}.device-table{display:grid;overflow:hidden;border:1px solid #d7ddd8;border-radius:8px}.device-row{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(140px,.8fr) minmax(110px,.6fr) minmax(100px,.6fr) minmax(130px,.7fr);gap:14px;align-items:center;min-height:64px;padding:10px 14px;border-bottom:1px solid #e5ebe6;background:#fff}.device-row:last-child{border-bottom:0}.device-row.head{min-height:42px;color:#5f6b63;font-size:12px;font-weight:800;text-transform:uppercase;background:#eef3ef}.device-row small{display:block;margin-top:3px;color:#68756d}.equipment-layout{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(420px,1.18fr);gap:14px;align-items:start}.equipment-grid{display:grid;gap:12px}.equipment-card{display:grid;gap:14px;padding:14px;border:1px solid #d7ddd8;border-left:4px solid #8b949e;border-radius:8px;background:#fff}.equipment-card.active{border-left-color:#2f9e65}.equipment-card.inactive{border-left-color:#8b949e}.equipment-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.equipment-card-top strong{display:block;font-size:16px}.equipment-card-top small{display:block;margin-top:3px;color:#68756d}.equipment-card p{color:#5f6b63;font-size:13px;line-height:1.45}.equipment-state{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:850;white-space:nowrap}.equipment-state.active{color:#0d5936;background:#dff5e9}.equipment-state.inactive{color:#4d5660;background:#e8ecef}.equipment-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.equipment-facts span{min-height:46px;padding:8px 10px;border:1px solid #e5ebe6;border-radius:8px;color:#68756d;background:#f7faf8;font-size:12px}.equipment-facts strong{display:block;margin-top:2px;color:#17201b}.equipment-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.equipment-actions button{min-height:40px;border:1px solid #d7ddd8;border-radius:8px;color:#5f6b63;background:#fff;cursor:pointer;font-weight:850;transition:border-color .16s ease,background .16s ease,color .16s ease,transform .16s ease,opacity .16s ease}.equipment-actions button:hover:not(:disabled),.equipment-actions button.active{border-color:#8db7a0;color:#17201b;background:#edf7f1}.equipment-actions button:active:not(:disabled){transform:translateY(1px)}.equipment-actions button:disabled{cursor:not-allowed;opacity:.6}.activation-table{display:grid;overflow:hidden;border:1px solid #d7ddd8;border-radius:8px}.activation-row{display:grid;grid-template-columns:minmax(150px,.85fr) minmax(110px,.55fr) minmax(130px,.65fr) minmax(120px,.55fr) minmax(220px,1.4fr);gap:12px;align-items:center;min-height:62px;padding:10px 14px;border-bottom:1px solid #e5ebe6;background:#fff;font-size:13px}.activation-row:last-child{border-bottom:0}.activation-row.head{min-height:42px;color:#5f6b63;font-size:12px;font-weight:800;text-transform:uppercase;background:#eef3ef}.activation-row small{display:block;margin-top:3px;color:#68756d}.settings-panel form{display:grid;gap:16px}.settings-meta{display:flex;flex-wrap:wrap;gap:10px;color:#5f6b63;font-size:13px}.settings-meta span{min-height:32px;padding:7px 10px;border:1px solid #d7ddd8;border-radius:8px;background:#f7faf8}.settings-meta strong{color:#17201b}.settings-grid{display:grid;gap:16px}.settings-section{display:grid;grid-template-columns:minmax(180px,.42fr) minmax(0,1fr);gap:18px;padding-top:16px;border-top:1px solid #e5ebe6}.settings-section h3{margin:0 0 5px;font-size:15px}.settings-section p{max-width:360px;color:#68756d;font-size:13px}.settings-fields{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px}.settings-fields label{display:grid;gap:6px}.settings-fields label>span{color:#5f6b63;font-size:12px;font-weight:800;text-transform:uppercase}.settings-fields em{color:#68756d;font-size:12px;font-style:normal}.number-field{display:grid;grid-template-columns:minmax(0,1fr) 50px;overflow:hidden;border:1px solid #d7ddd8;border-radius:8px;background:#fff}.number-field input{width:100%;min-height:42px;padding:0 12px;border:0;color:#17201b;background:transparent}.number-field small{display:inline-grid;place-items:center;border-left:1px solid #e5ebe6;color:#5f6b63;font-size:12px;font-weight:800}.settings-actions{display:flex;justify-content:flex-end;gap:10px}.form-message{padding:11px 12px;border-radius:8px;font-size:13px}.form-message.success{border:1px solid #bde8cf;color:#0d5936;background:#eaf8ef}.form-message.error{border:1px solid #ffc9c3;color:#8b1d16;background:#fff0ee}.online,.offline{display:inline-flex;align-items:center;gap:7px;font-weight:800}.online{color:#0d773f}.offline{color:#8b1d16}.docs-grid{align-items:start}pre{overflow:auto;min-height:254px;margin:0;padding:14px;border-radius:8px;color:#e8f2eb;background:#17201b;font-size:13px;line-height:1.55}.empty-state{display:grid;min-height:240px;place-items:center;align-content:center;gap:10px;color:#68756d;text-align:center}.empty-state strong{color:#17201b;font-size:16px}.empty-state span{max-width:360px;font-size:13px}.error-banner{margin-bottom:14px;padding:12px 14px;border:1px solid #ffc9c3;border-radius:8px;color:#8b1d16;background:#fff0ee}.loading-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.loading-grid span{height:180px;border-radius:8px;background:linear-gradient(90deg,#e8ede9,#fff,#e8ede9);background-size:220% 100%;animation:shimmer 1.2s infinite linear}.spin{animation:spin .8s linear infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1120px){.app-shell{grid-template-columns:88px minmax(0,1fr)}.sidebar{padding:16px}.brand{justify-content:center}.brand div,nav button span{display:none}nav button{justify-content:center;padding:0}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid,.docs-grid,.equipment-layout{grid-template-columns:1fr}.history-controls{grid-template-columns:repeat(4,minmax(0,1fr))}.metric-toggles{grid-column:1 / -1;justify-content:flex-start}.custom-range{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:12px}.brand{display:none}nav{grid-template-columns:repeat(6,minmax(0,1fr))}nav button{min-height:44px}main{padding:18px}.topbar{align-items:flex-start;flex-direction:column}.topbar-actions{width:100%;justify-content:space-between}h1{font-size:26px}.metric-grid,.history-controls,.settings-section,.settings-fields,.equipment-facts{grid-template-columns:1fr}.settings-actions{display:grid;grid-template-columns:1fr}.metric-toggles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.metric-toggles button{justify-content:center;padding:0 8px}.custom-range{grid-template-columns:1fr}.device-table,.activation-table{overflow-x:auto}.device-row,.activation-row{min-width:780px}.loading-grid{grid-template-columns:1fr}}
