html,body{width:100%;height:100%}input::-ms-clear{display:none}input::-ms-reveal{display:none}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:#0000;font-family:sans-serif;line-height:1.15}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1em}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{text-align:left;caption-side:bottom;padding-top:.75em;padding-bottom:.3em}input,button,select,optgroup,textarea{color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner{border-style:none;padding:0}[type=reset]::-moz-focus-inner{border-style:none;padding:0}[type=submit]::-moz-focus-inner{border-style:none;padding:0}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical;overflow:auto}fieldset{border:0;min-width:0;margin:0;padding:0}legend{width:100%;max-width:100%;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal;margin-bottom:.5em;padding:0;display:block}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button{height:auto}[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}:root{color:#1e293b;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff;font:16px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#fff;min-width:320px;min-height:100svh;margin:0}button,input,textarea,select{font:inherit}#root{min-height:100svh}.control-shell{width:min(1800px,100vw - 40px);margin:0 auto;padding:32px 0 48px}.room-select-row{align-items:center;gap:8px;display:flex}.room-select-row .room-select{flex:auto;min-width:0}.spin-icon{animation:1s linear infinite room-scan-spin}@keyframes room-scan-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.save-mode-list{color:#475569;margin:0;padding-left:18px}.save-mode-list li{margin-bottom:6px}.control-hero{background:#fff;border:1px solid #94a3b838;border-radius:28px;flex-direction:column;align-items:stretch;gap:14px;margin-bottom:24px;padding:30px;display:flex;box-shadow:0 24px 70px #0f172a14}.env-status{flex-direction:column;gap:14px;min-width:0;display:flex}.env-status-loading{color:#94a3b8;justify-content:center;align-items:center;min-height:120px;font-size:15px;display:flex}.env-status-header{background:#f8fafc;border:1px solid #94a3b838;border-radius:16px;flex-wrap:wrap;align-items:center;gap:12px 24px;padding:12px 16px;display:flex}.env-room{color:#0f172a;align-items:center;gap:6px;font-size:17px;font-weight:800;display:inline-flex}.env-header-item{color:#475569;align-items:center;gap:6px;font-size:15px;font-weight:600;display:inline-flex}.env-header-item strong{color:#0f172a;font-variant-numeric:tabular-nums}.env-cycle-status{flex:620px;justify-content:center;align-items:center;gap:22px;min-width:500px;display:flex}.env-cycle-item{color:#64748b;white-space:nowrap;align-items:center;gap:6px;font-size:14px;font-weight:600;display:inline-flex}.env-cycle-item>svg{color:#94a3b8}.env-cycle-item strong{color:#0f172a;font-variant-numeric:tabular-nums;font-size:15px}.env-start-date .ant-picker{background:#fff;width:150px}.env-harvest{min-width:120px}.harvest-empty{color:#cbd5e1}.harvest-tag{border-color:var(--harvest-border);color:var(--harvest-text);background:var(--harvest-background);box-shadow:0 0 0 3px var(--harvest-ring), 0 0 14px var(--harvest-glow);margin-inline-end:0;font-weight:800;animation:2s ease-in-out infinite harvest-pulse}.harvest-tag-warning{--harvest-border:#fde68a;--harvest-text:#a16207;--harvest-background:#fef9c3;--harvest-ring:#eab30814;--harvest-glow:#eab30833;--harvest-pulse-ring:#eab30814;--harvest-pulse-glow:#eab30857}.harvest-tag-urgent{--harvest-border:#fdba74;--harvest-text:#c2410c;--harvest-background:#ffedd5;--harvest-ring:#f973161a;--harvest-glow:#f9731647;--harvest-pulse-ring:#f973161a;--harvest-pulse-glow:#f973166b}@keyframes harvest-pulse{50%{box-shadow:0 0 0 5px var(--harvest-pulse-ring), 0 0 20px var(--harvest-pulse-glow)}}.env-co2{color:#0f172a;font-variant-numeric:tabular-nums;flex-direction:column;gap:2px;font-size:15px;font-weight:700;display:flex}.env-co2 span{align-items:center;gap:2px;line-height:1.2;display:inline-flex}.env-valve{margin-left:auto}.env-valve-slots{gap:6px;display:inline-flex}.env-valve-slot{background:#ffffffb3;border:1.5px dashed #64748b80;border-radius:6px;width:22px;height:22px}.env-zone-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.env-zone{background:#ffffffdb;border:1px solid #94a3b838;border-radius:16px;flex-direction:column;padding:10px 14px 12px;display:flex}.env-zone-head{border-bottom:1px solid #94a3b82e;align-items:center;gap:12px;padding-bottom:8px;display:flex}.env-zone-name{color:#0f172a;font-size:16px;font-weight:800}.env-device{color:#64748b;align-items:center;gap:4px;font-size:15px;display:inline-flex}.env-device strong{color:#0f172a;font-variant-numeric:tabular-nums}.env-layer{grid-template-columns:36px 1fr;align-items:center;gap:10px;padding:10px 0 2px;display:grid}.env-layer+.env-layer{border-top:1px dashed #94a3b83d}.env-layer-label{color:#1d4ed8;font-size:15px;font-weight:800}.env-layer-groups{flex-direction:column;gap:8px;min-width:0;display:flex}.env-group{grid-template-columns:32px 1fr;align-items:center;gap:8px;display:grid}.env-group-label{color:#64748b;font-size:15px;font-weight:700}.env-metrics{flex-wrap:wrap;gap:4px 14px;display:flex}.env-metric{color:#64748b;white-space:nowrap;align-items:center;gap:4px;font-size:15px;display:inline-flex}.env-metric svg{color:#94a3b8}.env-metric strong{color:#0f172a;font-variant-numeric:tabular-nums;font-size:16px}.env-status-footnote{color:#94a3b8;font-size:15px}.device-card,.panel-card{border:1px solid #94a3b838;border-radius:22px;overflow:hidden;box-shadow:0 20px 50px #0f172a0f}.device-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffdb}.device-card.ant-collapse>.ant-collapse-item>.ant-collapse-header{align-items:center;padding:10px 16px}.device-card-title{color:#334155;align-items:center;gap:10px;font-weight:700;display:inline-flex}.device-card-title>span{color:#94a3b8;font-size:13px;font-weight:500}.device-card .ant-collapse-content-box>.ant-space{width:min(520px,100%)}.device-card .ant-input-number,.device-card .ant-space,.schedule-card .ant-select,.schedule-card .ant-picker,.schedule-card .ant-input,.schedule-card .ant-input-number{width:100%}.device-status{color:#64748b;justify-content:space-between;align-items:center;font-size:15px;display:flex}.command-response{color:#0f172a;white-space:pre-wrap;word-break:break-word;background:#0f172a0f;border-radius:12px;max-width:100%;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;margin-bottom:0!important}.panel-card{margin-bottom:24px}.row-count{color:#64748b;font-variant-numeric:tabular-nums;font-size:15px}.schedule-title-fields .ant-input-number-group-wrapper{width:178px;font-weight:400}.schedule-card .ant-table{color:#1e293b}.panel-card .ant-table-wrapper,.panel-card .ant-table-container{max-width:100%}.panel-card .ant-table-content{overflow-x:auto}.schedule-card .ant-table-content{padding-bottom:16px}.schedule-card .ant-table-thead>tr>th{color:#475569;white-space:nowrap;background:#f8fafc;font-size:15px;font-weight:700}.schedule-card .ant-table-thead>tr>th,.schedule-card .ant-table-tbody>tr>td{padding:8px}.schedule-card .ant-table-cell{vertical-align:middle}.schedule-card.is-double-line .ant-table-cell{padding-block:14px}.schedule-two-line-row{flex-direction:column;gap:12px;min-width:0;display:flex}.schedule-two-line-group{grid-template-columns:repeat(auto-fit,minmax(96px,1fr));align-items:end;gap:10px;display:grid}.schedule-two-line-field{min-width:0}.schedule-two-line-field.is-wide{grid-column:span 2}.schedule-two-line-field>span{color:#64748b;margin-bottom:4px;font-size:15px;font-weight:700;line-height:1;display:block}.schedule-two-line-field .ant-input,.schedule-two-line-field .ant-input-number,.schedule-two-line-field .ant-picker,.schedule-two-line-field .ant-select{width:100%}.schedule-card .spectrum-edit-button,.schedule-card .preset-edit-button{justify-content:flex-start;max-width:100%;overflow:hidden}.compact-number-field{font-variant-numeric:tabular-nums;align-items:center;gap:3px;width:100%;font-size:15px;display:inline-flex}.compact-number-unit{color:#64748b;font-size:15px;line-height:1}.schedule-card .compact-number-field .compact-number-input.ant-input-number{flex:auto;min-width:64px}.schedule-card .compact-number-field .compact-number-input .ant-input-number-input{text-align:center;padding-inline:6px}.schedule-card .ant-input-number-handler-wrap{display:none}.spectrum-drawer .ant-drawer-content,.preset-drawer .ant-drawer-content{background:#fff}.spectrum-drawer .ant-drawer-header,.spectrum-drawer .ant-drawer-footer,.preset-drawer .ant-drawer-header,.preset-drawer .ant-drawer-footer{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border-color:#94a3b838}.spectrum-drawer .ant-drawer-body,.preset-drawer .ant-drawer-body{padding:0}.drawer-footer{justify-content:flex-end;width:100%}.spectrum-page,.preset-editor-page{background:#fff;min-height:100%;padding:28px}.preset-switch-card .preset-switch-row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;display:flex}.preset-switch-card .preset-switch-select{flex:220px;min-width:200px}.row-index-cell{color:#64748b;font-variant-numeric:tabular-nums;font-weight:700}.day-range-cell{font-variant-numeric:tabular-nums;align-items:center;gap:2px;width:100%;display:inline-flex}.day-range-start{color:#0f172a;white-space:nowrap;font-weight:700}.day-range-cell .day-range-input.ant-input-number{flex:auto;min-width:56px}.day-range-cell .day-range-input .ant-input-number-input{text-align:center;padding-inline:4px}.spectrum-card{background:#ffffffdb;border:1px solid #94a3b838;border-radius:20px;margin-bottom:18px;box-shadow:0 18px 40px #0f172a0f}.spectrum-current-preset{border-radius:999px;margin:0 0 18px;padding:6px 12px;font-size:14px;font-weight:700}.irrigation-parameter-grid .ant-form-item,.irrigation-layer-summary-grid .ant-form-item{margin-bottom:0}.irrigation-parameter-grid{grid-template-columns:repeat(5,minmax(140px,1fr));gap:16px;display:grid}.irrigation-parameter-grid .ant-input-number,.irrigation-layer-summary-grid .ant-input-number,.irrigation-phase-grid .ant-input-number,.irrigation-phase-grid .ant-picker{width:100%}.irrigation-readonly-input.ant-input{cursor:not-allowed}.irrigation-validation-alert{margin-bottom:18px}.irrigation-validation-alert ul{margin:6px 0 0;padding-left:20px}.irrigation-layer-summary-grid{grid-template-columns:repeat(5,minmax(140px,1fr));gap:16px;margin-bottom:24px;display:grid}.irrigation-calculated-box{font-variant-numeric:tabular-nums;align-items:center;min-height:32px;font-weight:800;display:flex}.irrigation-phase-table{overflow-x:auto}.channel-grid{grid-template-columns:88px repeat(3,minmax(116px,1fr)) 64px;align-items:center;gap:12px;margin-bottom:12px;display:grid}.channel-grid .ant-input-number{width:100%}.channel-grid-header{color:#475569;margin-bottom:0;font-size:15px;font-weight:800}.irrigation-phase-grid{grid-template-columns:86px minmax(170px,1.2fr) minmax(105px,.75fr) minmax(130px,.9fr) minmax(120px,.9fr) minmax(120px,.85fr) minmax(140px,.95fr) minmax(110px,.8fr);align-items:center;gap:12px;min-width:1100px;margin-bottom:12px;display:grid}.irrigation-phase-grid>strong{color:#334155}.irrigation-chart-section{background:#ffffffdb;border:1px solid #94a3b838;border-radius:18px;margin:-2px 0 18px;padding:16px 18px 10px;box-shadow:0 14px 32px #0f172a0d}.irrigation-chart-title{color:#0f172a}.irrigation-chart-canvas{width:100%;height:132px}.irrigation-vent-bar{cursor:pointer}.irrigation-chart-legend{color:#475569;flex-wrap:wrap;gap:6px 18px;padding:6px 2px 2px;font-size:13px;display:flex}.irrigation-chart-legend-item{align-items:center;gap:6px;display:inline-flex}.irrigation-chart-legend-swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.irrigation-chart-legend-note{color:#94a3b8}.irrigation-grid-header{color:#475569;margin-bottom:0;font-size:15px;font-weight:800}@media (width<=1080px){.control-shell{width:min(100vw - 24px,960px);padding-top:16px}.control-hero{padding:22px}.env-cycle-status{flex:100%;justify-content:flex-start;min-width:0}.env-zone-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.irrigation-parameter-grid,.irrigation-layer-summary-grid,.channel-grid{grid-template-columns:1fr 1fr}.channel-grid-header{display:none}}@media (width<=680px){.control-shell{width:calc(100vw - 16px);padding:8px 0 24px}.control-hero{border-radius:20px;padding:18px}.env-zone-grid{grid-template-columns:1fr}.env-valve{margin-left:0}.env-cycle-status{flex-wrap:wrap;gap:10px 16px}.env-cycle-item{flex:auto}.env-start-date{flex-basis:100%}.panel-card,.device-card{border-radius:18px}.panel-card .ant-card-head{min-height:auto;padding:14px 16px}.panel-card .ant-card-head-wrapper{flex-wrap:wrap;align-items:flex-start;gap:10px}.panel-card .ant-card-head-title{flex:100%;padding:0}.schedule-title-fields{width:100%}.schedule-title-fields .ant-input-number-group-wrapper{width:min(100%,178px)}.panel-card .ant-card-extra{width:100%;margin-inline-start:0;padding:0}.panel-card .ant-card-extra .ant-space{justify-content:space-between;width:100%}.panel-card .ant-card-body{padding:14px 16px 16px}.schedule-card .ant-card-extra .ant-space{flex-wrap:wrap;gap:8px}.schedule-card .ant-card-extra .ant-segmented{flex:auto}.schedule-card .ant-card-extra .ant-btn{flex:120px}.panel-card .ant-table{font-size:15px}.panel-card .ant-table-thead>tr>th,.panel-card .ant-table-tbody>tr>td{padding:10px 8px}.irrigation-parameter-grid,.irrigation-layer-summary-grid{grid-template-columns:1fr}}
