:root{color:#17201b;background:#f5f7f6;color-scheme:light;--chart-tooltip-bg: #ffffff;--chart-tooltip-border: #d7ddd8;--chart-tooltip-text: #17201b;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}:root[data-theme=dark]{color:#e8f2eb;background:#0d1411;color-scheme:dark;--chart-tooltip-bg: #121c17;--chart-tooltip-border: #3a5548;--chart-tooltip-text: #f4fbf6}*{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}:root[data-theme=dark] body{background:radial-gradient(circle at top left,rgba(155,220,189,.12),transparent 32rem),linear-gradient(90deg,rgba(232,242,235,.035) 1px,transparent 1px),linear-gradient(0deg,rgba(232,242,235,.03) 1px,transparent 1px),#0d1411}button,input{font:inherit}:root[data-theme=dark] .login-panel,:root[data-theme=dark] .metric-card,:root[data-theme=dark] .panel,:root[data-theme=dark] .alert-item,:root[data-theme=dark] .equipment-card,:root[data-theme=dark] .device-row,:root[data-theme=dark] .activation-row,:root[data-theme=dark] .cultivation-month,:root[data-theme=dark] .cultivation-phase,:root[data-theme=dark] .calendar-day,:root[data-theme=dark] .icon-button,:root[data-theme=dark] .secondary-button,:root[data-theme=dark] .metric-toggles button,:root[data-theme=dark] .equipment-actions button,:root[data-theme=dark] .history-controls select,:root[data-theme=dark] .history-controls input,:root[data-theme=dark] .cultivation-form input,:root[data-theme=dark] .login-panel input,:root[data-theme=dark] .number-field{border-color:#2c4036;color:#e8f2eb;background:#121c17f0;box-shadow:0 18px 46px #00000047}:root[data-theme=dark] .sidebar,:root[data-theme=dark] pre{background:#09100d}:root[data-theme=dark] .eyebrow,:root[data-theme=dark] .last-update,:root[data-theme=dark] .login-copy,:root[data-theme=dark] .login-panel label span,:root[data-theme=dark] .metric-label,:root[data-theme=dark] .metric-value span,:root[data-theme=dark] .metric-detail,:root[data-theme=dark] .panel-heading p,:root[data-theme=dark] .history-controls label span,:root[data-theme=dark] .device-row small,:root[data-theme=dark] .equipment-card-top small,:root[data-theme=dark] .equipment-card p,:root[data-theme=dark] .equipment-facts span,:root[data-theme=dark] .activation-row small,:root[data-theme=dark] .settings-meta,:root[data-theme=dark] .cultivation-summary,:root[data-theme=dark] .cultivation-form label span,:root[data-theme=dark] .phase-days,:root[data-theme=dark] .month-weekdays span,:root[data-theme=dark] .calendar-grow-day,:root[data-theme=dark] .calendar-day small,:root[data-theme=dark] .cultivation-phase p,:root[data-theme=dark] .cultivation-phase small,:root[data-theme=dark] .settings-section p,:root[data-theme=dark] .settings-fields label>span,:root[data-theme=dark] .settings-fields em,:root[data-theme=dark] .number-field small,:root[data-theme=dark] .alert-item p,:root[data-theme=dark] .empty-state{color:#aebfb5}:root[data-theme=dark] h1,:root[data-theme=dark] h2,:root[data-theme=dark] h3,:root[data-theme=dark] .brand strong,:root[data-theme=dark] .metric-value,:root[data-theme=dark] .empty-state strong,:root[data-theme=dark] .equipment-facts strong,:root[data-theme=dark] .settings-meta strong,:root[data-theme=dark] .cultivation-summary strong,:root[data-theme=dark] .cultivation-phase strong,:root[data-theme=dark] .month-title,:root[data-theme=dark] .calendar-day-top strong,:root[data-theme=dark] .calendar-phase-label,:root[data-theme=dark] .equipment-card-top strong,:root[data-theme=dark] .alert-item strong{color:#f4fbf6}:root[data-theme=dark] nav button:hover,:root[data-theme=dark] nav button.active,:root[data-theme=dark] .secondary-button:hover:not(:disabled),:root[data-theme=dark] .metric-toggles button:hover,:root[data-theme=dark] .metric-toggles button.active,:root[data-theme=dark] .equipment-actions button:hover:not(:disabled),:root[data-theme=dark] .equipment-actions button.active{border-color:#5fa37c;color:#fff;background:#9bdcbd21}:root[data-theme=dark] .metric-icon,:root[data-theme=dark] .device-row.head,:root[data-theme=dark] .activation-row.head,:root[data-theme=dark] .settings-meta span,:root[data-theme=dark] .cultivation-summary span,:root[data-theme=dark] .equipment-facts span,:root[data-theme=dark] .number-field small{border-color:#2c4036;color:#d4e6db;background:#17251f}:root[data-theme=dark] .brand-mark,:root[data-theme=dark] .primary-button{color:#07100b;background:#9bdcbd}:root[data-theme=dark] .alert-item,:root[data-theme=dark] .device-row,:root[data-theme=dark] .activation-row,:root[data-theme=dark] .cultivation-month,:root[data-theme=dark] .cultivation-phase,:root[data-theme=dark] .calendar-day,:root[data-theme=dark] .settings-section{border-color:#24362e}:root[data-theme=dark] .loading-grid span{background:linear-gradient(90deg,#16231d,#22362c,#16231d);background-size:220% 100%}:root[data-theme=dark] .form-message.success,:root[data-theme=dark] .status-pill.normal,:root[data-theme=dark] .equipment-state.active{color:#9be7b8;background:#2f9e652e}:root[data-theme=dark] .form-message.error,:root[data-theme=dark] .login-error,:root[data-theme=dark] .error-banner,:root[data-theme=dark] .status-pill.alert{color:#ffb4aa;background:#e0564a29;border-color:#e0564a57}:root[data-theme=dark] .status-pill.attention{color:#ffd980;background:#d997002e}:root[data-theme=dark] .status-pill.unknown,:root[data-theme=dark] .equipment-state.inactive{color:#c8d0d7;background:#8b949e2e}:root[data-theme=dark] .number-field input,:root[data-theme=dark] .settings-fields input,:root[data-theme=dark] .history-controls input,:root[data-theme=dark] .cultivation-form input,:root[data-theme=dark] .history-controls select,:root[data-theme=dark] .login-panel input{color:#f4fbf6;background:transparent;caret-color:#9bdcbd}:root[data-theme=dark] .number-field input::placeholder,:root[data-theme=dark] .settings-fields input::placeholder,:root[data-theme=dark] .history-controls input::placeholder,:root[data-theme=dark] .login-panel input::placeholder{color:#7f9388}:root[data-theme=dark] .number-field input:focus,:root[data-theme=dark] .settings-fields input:focus,:root[data-theme=dark] .history-controls input:focus,:root[data-theme=dark] .cultivation-form input:focus,:root[data-theme=dark] .history-controls select:focus,:root[data-theme=dark] .login-panel input:focus{outline:2px solid rgba(155,220,189,.42);outline-offset:2px}:root[data-theme=dark] .month-title,:root[data-theme=dark] .month-weekdays span,:root[data-theme=dark] .calendar-day.outside{background:#17251f}:root[data-theme=dark] .month-title,:root[data-theme=dark] .month-weekdays span,:root[data-theme=dark] .calendar-day{border-color:#2c4036}:root[data-theme=dark] .calendar-day.today{color:#f4fbf6;background:#2f9e653d;outline-color:#9bdcbdb8}:root[data-theme=dark] .calendar-day.past{color:#d8e8dd;background:linear-gradient(135deg,#9bdcbd21,#121c17f5)}:root[data-theme=dark] .calendar-day.past .calendar-day-top strong,:root[data-theme=dark] .calendar-day.past .calendar-phase-label{color:#f4fbf6}:root[data-theme=dark] .calendar-day.past .calendar-grow-day,:root[data-theme=dark] .calendar-day.past small{color:#c7dbcf}:root[data-theme=dark] .calendar-day-top span{color:#07100b;background:#9bdcbd}:root[data-theme=dark] .calendar-day-top .past-badge{color:#d8e8dd;background:#9bdcbd38}:root[data-theme=dark] .calendar-day.outside .calendar-day-top strong,:root[data-theme=dark] .calendar-day.outside .calendar-grow-day,:root[data-theme=dark] .calendar-day.outside .calendar-phase-label,:root[data-theme=dark] .calendar-day.outside small{color:#8ea398}.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}.cultivation-form{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-bottom:14px}.cultivation-form label{display:grid;min-width:min(100%,280px);gap:6px}.cultivation-form label span{color:#5f6b63;font-size:12px;font-weight:800;text-transform:uppercase}.cultivation-form input{min-height:42px;padding:0 12px;border:1px solid #d7ddd8;border-radius:8px;color:#17201b;background:#fff}.cultivation-summary{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0;color:#5f6b63;font-size:13px}.cultivation-summary span{padding:8px 10px;border:1px solid #d7ddd8;border-radius:8px;background:#f7faf8}.cultivation-summary strong{color:#17201b}.cultivation-calendar{display:grid;gap:18px}.cultivation-month{overflow:hidden;border:1px solid #d7ddd8;border-radius:14px;background:#fff}.month-title{padding:14px 16px;border-bottom:1px solid #e5ebe6;color:#17201b;font-size:16px;font-weight:900;text-transform:capitalize;background:#f7faf8}.month-weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(112px,1fr))}.month-weekdays span{padding:9px 10px;color:#5f6b63;font-size:11px;font-weight:900;text-align:center;text-transform:uppercase;background:#eef3ef}.month-grid{overflow-x:auto}.calendar-day{display:grid;align-content:start;min-height:112px;gap:6px;padding:10px;border-top:1px solid #e5ebe6;border-right:1px solid #e5ebe6;color:#17201b;background:#fff}.calendar-day:nth-child(7n){border-right:0}.calendar-day.outside{color:#8a968e;background:#f7faf8}.calendar-day.germination{border-left:4px solid #54a76f}.calendar-day.seedling{border-left:4px solid #2f9e65}.calendar-day.vegetative{border-left:4px solid #167f56}.calendar-day.early_flower{border-left:4px solid #d99700}.calendar-day.mid_flower{border-left:4px solid #c7752b}.calendar-day.late_flower{border-left:4px solid #a65fcb}.calendar-day.past{background:linear-gradient(135deg,#eef8f2,#fff 68%)}.calendar-day.past .calendar-day-top strong:after{content:"";display:inline-block;width:6px;height:6px;margin-left:7px;border-radius:999px;background:#2f9e65;vertical-align:middle}.calendar-day.today{outline:3px solid rgba(47,158,101,.34);outline-offset:-3px;background:#effaf3}.calendar-day-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.calendar-day-top strong{color:#17201b;font-size:18px;line-height:1}.calendar-day-top span{padding:3px 7px;border-radius:999px;color:#0d5936;background:#dff4e7;font-size:11px;font-weight:900}.calendar-day-top .past-badge{color:#305a42;background:#e7f4ec}.calendar-grow-day,.calendar-phase-label,.calendar-day small{color:#4e5c54;font-size:12px;font-weight:700;line-height:1.25}.calendar-phase-label{color:#17201b;font-weight:900}.calendar-day small{color:#68756d;font-weight:700}.cultivation-phase-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:0 0 16px}.cultivation-phase{display:grid;gap:10px;padding:14px;border:1px solid #e5ebe6;border-left:5px solid #d7ddd8;border-radius:10px;background:#fff}.cultivation-phase.active{border-left-color:#2f9e65;box-shadow:0 12px 30px #2f9e651f}.phase-header,.phase-days{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.phase-days{justify-content:flex-start;color:#5f6b63;font-size:13px}.cultivation-phase p,.cultivation-phase small{margin:0;color:#68756d;font-size:13px}.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}}
