:root{--green-900: #1b4332;--green-700: #2e7d32;--green-600: #388e3c;--green-100: #e8f5e9;--green-50: #f1f8e9;--lime: #9ccc65;--ink: #1c2b1c;--muted: #5a6b5a;--line: #c9d8c9;--error-bg: #fdecea;--error-line: #f0b8b2;--error-ink: #8f2d24;--info-bg: #eef6ee}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:linear-gradient(160deg,var(--green-50) 0%,#e3efe0 55%,#d7e8d2 100%);min-height:100vh}.auth-shell{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;gap:16px}.auth-card{width:100%;max-width:430px;background:#fff;border-radius:16px;padding:28px 28px 24px;box-shadow:0 12px 40px #1b433229}.brand-block{text-align:center;margin-bottom:18px}.brand-mark img{width:74%;height:74%;object-fit:contain;display:block}.brand-mark{display:inline-grid;place-items:center;width:52px;height:52px;font-size:28px;background:var(--green-100);border:2px solid var(--lime);border-radius:50%}.brand-block h1{margin:10px 0 2px;font-size:27px;letter-spacing:.2px;color:var(--green-900)}.auth-sub{margin:0;color:var(--muted);font-size:14px;line-height:1.45}.auth-footer{font-size:13px;color:var(--muted)}.auth-footer a{color:var(--green-700);text-decoration:none}.auth-footer a:hover{text-decoration:underline}.boot{color:var(--muted)}.auth-tabs{display:flex;gap:8px;margin-bottom:16px}.auth-tabs button{flex:1;padding:10px;border:1px solid var(--line);background:#fff;border-radius:9px;font-size:15px;cursor:pointer;color:var(--ink)}.auth-tabs button.active{background:var(--green-700);color:#fff;border-color:var(--green-700)}.screen-title{margin:0 0 6px;font-size:20px;color:var(--green-900)}.auth-card form{display:grid;gap:13px;margin-top:14px}.auth-card label,.label-text{display:grid;gap:6px;font-size:14px;font-weight:600}.label-text{margin-bottom:6px}.auth-card input{padding:11px 12px;border:1px solid var(--line);border-radius:9px;font-size:15px;font-weight:400;width:100%;background:#fff;color:var(--ink)}.auth-card input:focus{outline:2px solid var(--lime);border-color:var(--green-600)}.password-row{display:flex;gap:8px}.password-row input{flex:1}button.primary{padding:12px;border:0;border-radius:9px;background:var(--green-700);color:#fff;font-size:16px;font-weight:600;cursor:pointer;width:100%}button.primary:hover:not(:disabled){background:var(--green-600)}button.primary:disabled{opacity:.55;cursor:not-allowed}button.ghost{border:1px solid var(--line);background:#fff;border-radius:9px;padding:0 12px;cursor:pointer;color:var(--green-700);font-weight:600}.field-error{color:var(--error-ink);font-size:13px;font-weight:400}.auth-notice{border-radius:9px;padding:11px 12px;font-size:14px;line-height:1.45;margin:0 0 14px}.auth-notice.success{background:var(--green-100);border:1px solid var(--line)}.auth-notice.info{background:var(--info-bg);border:1px solid var(--line)}.auth-notice.error{background:var(--error-bg);border:1px solid var(--error-line);color:var(--error-ink)}.auth-links{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:16px}button.link{background:none;border:0;padding:0;cursor:pointer;color:var(--green-700);font-size:14px;font-weight:600}button.link:hover:not(:disabled){text-decoration:underline}button.link:disabled{color:var(--muted);cursor:not-allowed}.auth-link{font-size:13px;color:var(--muted);line-height:1.5;margin:14px 0 0}.auth-link a{color:var(--green-700)}.code-input{display:flex;gap:8px;justify-content:space-between}.code-input input{width:48px;height:56px;text-align:center;font-size:24px;font-weight:700;border:1px solid var(--line);border-radius:10px}.code-input input:focus{outline:2px solid var(--lime);border-color:var(--green-600)}.pending{text-align:center;display:grid;gap:10px;justify-items:center}.pending p{margin:0;line-height:1.55;font-size:15px}.pending-icon{font-size:40px}.pending .primary{margin-top:8px}.home{min-height:100vh;display:flex;flex-direction:column}.home-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:var(--green-900);color:#fff;padding:12px 20px}.home-bar .brand{display:flex;align-items:center;gap:10px}.home-bar .brand-mark{width:38px;height:38px;font-size:20px}.brand-name{font-size:19px;font-weight:700}.user-chip{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.bar-actions{display:flex;align-items:center;gap:10px;margin-left:auto;min-width:0}.user-name{font-weight:600}.role-badge{background:var(--lime);color:var(--green-900);font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px}button.logout{background:#c62828;color:#fff;border:0;border-radius:8px;padding:8px 14px;font-weight:600;cursor:pointer}button.logout:disabled{opacity:.6;cursor:not-allowed}.home-main{width:100%;max-width:760px;margin:0 auto;padding:28px 16px}.home-main h2{color:var(--green-900);margin:0 0 6px}.home-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;margin-top:18px;box-shadow:0 4px 18px #1b433212}.home-card h3{margin:0 0 8px;color:var(--green-900)}.home-card p{margin:0;line-height:1.55;color:var(--ink)}.home-main.wide{max-width:1080px}.farm-data h3{margin:0 0 12px;color:var(--green-900)}.farm-data h4{margin:22px 0 8px;color:var(--green-900)}.farm-toolbar{display:flex;gap:14px;flex-wrap:wrap;align-items:end;margin-bottom:6px;width:100%;max-width:100%;min-width:0}.farm-toolbar label,.inline-label{display:grid;gap:4px;font-size:13px;font-weight:600;color:var(--muted);min-width:0;max-width:100%}.farm-toolbar select{width:100%;min-width:0;max-width:100%}.farm-toolbar select,.inline-label select,.farm-data input,.farm-data select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:14px;background:#fff;color:var(--ink)}@media (max-width: 640px){.farm-toolbar label{flex:1 1 100%}}.inline-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0}.farm-limit-note{flex:1 1 100%;margin:0}.inline-form input{flex:1 1 220px}.grid-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0 12px;padding:12px;background:var(--green-50);border:1px solid var(--line);border-radius:10px}.grid-form input,.grid-form select{flex:1 1 150px}.grid-form button.ghost{padding:8px 12px}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th,.data-table td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:top}.data-table th{color:var(--green-900);font-size:13px}.data-table tr.alert-critical td{color:var(--error-ink);font-weight:600}button.link.danger{color:var(--error-ink)}.one-time{display:block;margin:8px 0;padding:10px;background:#fff;border:1px dashed var(--green-600);border-radius:8px;font-size:16px;letter-spacing:1px;word-break:break-all}@media (max-width: 480px){.auth-card{padding:22px 18px 18px}.code-input input{width:42px;height:50px;font-size:21px}}.farm-chips{display:flex;gap:10px;flex-wrap:nowrap;justify-content:center;margin:0 0 14px}.farm-chip{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;flex:1 1 0;min-width:0;max-width:180px;font:inherit;font-size:14px;font-weight:600;color:var(--green-900);background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 14px 6px 10px}.farm-chip svg{width:17px;height:17px;flex:none}.farm-chip:hover{border-color:var(--green-600)}.farm-chip.active{background:var(--green-700);border-color:var(--green-700);color:#fff}.farm-chip-name{white-space:nowrap}.farm-chip-code{font-size:11.5px;font-weight:700;opacity:.75}.area-chip-photo{width:26px;height:26px;border-radius:50%;object-fit:cover;flex:none}.demo-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.demo-head h3{margin:0}.demo-sub{color:var(--muted);font-size:13px;margin-top:4px!important}.demo-chip{display:inline-flex;align-items:center;gap:7px;background:var(--green-50);border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600;color:var(--green-900);white-space:nowrap}.demo-chip svg{width:14px;height:14px}.demo-dot{width:8px;height:8px;border-radius:50%;background:#2e9e5b;animation:demo-pulse 2s ease-in-out infinite}@keyframes demo-pulse{0%,to{opacity:1}50%{opacity:.35}}.demo-group{margin-top:22px}.demo-group h4{margin:0 0 10px;color:var(--green-900)}.demo-empty{color:var(--muted);font-size:14px}.sensor-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.sensor-card{display:grid;gap:3px;text-align:left;cursor:pointer;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font:inherit;color:var(--ink)}.sensor-card:hover{border-color:var(--green-600)}.sensor-card.selected{border-color:var(--green-600);box-shadow:0 0 0 2px var(--green-50)}.sensor-name{font-size:13px;font-weight:600;color:var(--muted)}.sensor-value{font-size:24px;font-weight:700;color:var(--green-900);line-height:1.15}.sensor-unit{font-size:14px;font-weight:600;color:var(--muted)}.sensor-meta{font-size:12px;color:var(--muted)}.demo-chart-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.demo-chart-head h4{margin:0}.nav-wrap{background:var(--green-900, #123c2a);position:sticky;top:0;z-index:20}.nav-groups{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;padding:10px 16px 0;scrollbar-width:none}.nav-groups::-webkit-scrollbar{display:none}.nav-group-btn{display:inline-flex;align-items:center;gap:7px;border:1px solid transparent;background:transparent;color:#cfe3d4;padding:8px 14px;border-radius:10px 10px 0 0;font:inherit;font-size:14.5px;white-space:nowrap;cursor:pointer}.nav-group-btn:hover{background:#ffffff1a;color:#fff}.nav-group-btn.active{background:#ffffff24;color:#fff;font-weight:700}.nav-icon{width:18px;height:18px;flex:none}.nav-subtabs{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;padding:8px 16px 10px;scrollbar-width:none;background:#ffffff0f;border-top:1px solid rgba(255,255,255,.12)}.nav-subtabs::-webkit-scrollbar{display:none}.nav-subtab{display:inline-flex;align-items:center;gap:7px;border:1px solid rgba(255,255,255,.35);background:transparent;color:#e8f3ec;padding:7px 14px;border-radius:999px;font:inherit;font-size:13.5px;white-space:nowrap;cursor:pointer}.nav-subtab:hover{background:#ffffff1f}.nav-subtab.active{background:#fff;color:var(--green-900, #123c2a);font-weight:700;border-color:#fff}.nav-subtab .nav-icon{width:16px;height:16px}.mobile-bar,.more-sheet{display:none}@media (min-width: 641px){.more-sheet{display:grid;gap:4px;position:fixed;top:122px;right:16px;z-index:41;width:264px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px #123c2a47;padding:8px}.more-sheet-item{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:0;border-radius:10px;padding:12px;font:inherit;font-size:15px;color:var(--green-900);cursor:pointer;text-align:left}.more-sheet-item svg{width:19px;height:19px}.more-sheet-item.active{background:var(--green-100);font-weight:700}}.group-tiles-bar{display:flex;flex-wrap:nowrap;justify-content:center;gap:10px;margin-bottom:18px}.group-tile{display:grid;justify-items:center;align-content:center;gap:7px;flex:1 1 0;min-width:0;max-width:180px;padding:15px 10px 12px;text-align:center;font:inherit;font-size:15.5px;font-weight:700;color:var(--green-900);background:#fff;border:1px solid var(--line);border-radius:14px;cursor:pointer}.group-tile span{line-height:1.15}.group-tile:hover{border-color:var(--green-600)}.group-tile.active{background:var(--green-100);border-color:var(--green-600)}.group-tile svg{width:26px;height:26px}@media (max-width: 640px){.group-tiles-bar{gap:8px}.group-tile{padding:10px 4px 9px;font-size:12.5px;border-radius:12px}.group-tile svg{width:22px;height:22px}.farm-chips{gap:8px}.farm-chip{padding:6px;font-size:13px;border-radius:16px;flex-wrap:wrap;row-gap:0;column-gap:5px}.farm-chip svg{width:15px;height:15px}}.range-tabs{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.range-tab{border:0;background:#fff;padding:6px 12px;font:inherit;font-size:13px;cursor:pointer;color:var(--muted)}.range-tab.active{background:var(--green-600);color:#fff;font-weight:600}.trend-chart{width:100%;height:auto;display:block}.trend-band{fill:#2e9e5b26;stroke:none}.trend-line{fill:none;stroke:#2e7d4f;stroke-width:2}.trend-axis{font-size:11px;fill:var(--muted)}.gh-list{display:flex;gap:10px;flex-wrap:wrap}.gh-card{display:grid;gap:2px;border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:13.5px;color:var(--muted);background:#fff}.gh-card strong{color:var(--green-900);font-size:14.5px}.alert-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.alert-row{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:14px;background:#fff}.level-badge{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;border-radius:999px;padding:2px 9px;background:var(--green-50);color:var(--green-900)}.level-badge.level-warning{background:#fdf3e0;color:#8a5a12}.level-badge.level-critical{background:#fdecea;color:var(--error-ink)}.alert-msg{flex:1 1 260px}.alert-time{color:var(--muted);font-size:12.5px}@media (max-width: 640px){.sensor-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.sensor-value{font-size:20px}}.filter-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin:12px 0}.filter-bar label{display:grid;gap:6px;font-size:13.5px;font-weight:600}.filter-bar input,.filter-bar select,.note-form input,.note-form textarea{font:inherit;font-weight:400;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.filter-bar input:focus,.filter-bar select:focus,.note-form input:focus,.note-form textarea:focus{outline:2px solid var(--lime);border-color:var(--green-600)}.export-group{display:inline-flex;gap:8px;margin-left:auto}.export-group button{font:inherit;font-size:13.5px;padding:8px 14px;cursor:pointer;border:1px solid var(--green-600);border-radius:8px;background:var(--green-50);color:var(--green-900);font-weight:600}.export-group button:hover:not(:disabled){background:var(--green-100)}.export-group button:disabled{opacity:.55;cursor:not-allowed}.pager{display:flex;gap:14px;align-items:center;justify-content:center;margin-top:12px;font-size:14px;color:var(--muted)}.pager button{font:inherit;font-size:13.5px;padding:6px 14px;cursor:pointer;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.pager button:disabled{opacity:.5;cursor:not-allowed}.rep-title{margin:16px 0 4px}.rep-title-main{margin:0;font-size:24px;line-height:1.2;color:var(--green-900);text-transform:capitalize}.rep-title-sub{margin:4px 0 0;font-size:14px;color:var(--muted)}.summary-strip{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-start;margin:14px 0}.summary-table{flex:1 1 340px;width:auto}.donut-wrap{display:flex;gap:14px;align-items:center}.donut{width:120px;height:120px;flex:none}.donut-total{font-size:19px;font-weight:700;fill:var(--green-900)}.donut-label{font-size:10.5px;fill:var(--muted)}.donut-legend{list-style:none;margin:0;padding:0;display:grid;gap:5px;font-size:13.5px}.donut-swatch{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:7px}.note-form{display:grid;gap:10px;margin:12px 0 18px}.note-form label{display:grid;gap:6px;font-size:14px;font-weight:600}.note-form textarea{resize:vertical}.note-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.note-row{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:14.5px;background:#fff}.note-date{font-weight:700;color:var(--green-900);white-space:nowrap;font-size:13.5px}.note-text{flex:1 1 280px;white-space:pre-wrap}.note-meta{color:var(--muted);font-size:12.5px;white-space:nowrap}.status-chip{font-size:11.5px;font-weight:700;letter-spacing:.3px;border-radius:999px;padding:2px 10px;white-space:nowrap}.status-chip.status-ok{background:var(--green-50);color:var(--green-900)}.status-chip.status-low{background:#fdf3e0;color:#8a5a12}.status-chip.status-out{background:#fdecea;color:var(--error-ink)}@media (max-width: 640px){.export-group{margin-left:0}.summary-strip{flex-direction:column}}.bell-wrap{position:relative;display:inline-flex}.bell-button{position:relative;border:1px solid var(--line);background:#fff;border-radius:999px;width:38px;height:38px;font-size:17px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.bell-button:hover{border-color:var(--green-600)}.home-bar .bell-button{width:32px;height:32px;font-size:14px;background:#ffffff24;border-color:#ffffff59}.home-bar .bell-button:hover{border-color:#ffffffb3}.bell-badge{position:absolute;top:-5px;right:-5px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:#c62828;color:#fff;font-size:11px;font-weight:700;line-height:19px;text-align:center}.user-menu-wrap{position:relative;display:inline-flex}.user-menu-icon{display:none}@media (max-width: 640px){.bar-actions{display:contents}.home-bar .bell-wrap{margin-left:auto}.home-bar .user-menu-wrap{margin-left:0}.user-menu-button{padding:6px 10px}.user-menu-button .user-avatar,.user-menu-button .user-menu-name{display:none}.user-menu-icon{display:inline-flex;font-size:16px;line-height:1}}.user-menu-button{display:inline-flex;align-items:center;gap:8px;cursor:pointer;background:#ffffff1a;color:#fff;font:inherit;border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:3px 12px 3px 3px}.user-menu-button:hover{border-color:#ffffffb3}.user-avatar{width:28px;height:28px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--lime);color:var(--green-900);font-size:13px;font-weight:700}.user-menu-name{font-size:14px;font-weight:600;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-caret{font-size:11px;opacity:.85}.user-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:min(240px,86vw);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px #1b433238;padding:8px;text-align:left;cursor:default;color:var(--ink);display:grid;gap:2px}.user-panel-head{display:grid;gap:1px;padding:6px 8px 8px;border-bottom:1px solid var(--line);margin-bottom:4px}.user-panel-name{font-weight:700;color:var(--green-900);overflow-wrap:anywhere}.user-panel-role{font-size:12.5px;color:var(--muted)}.user-panel-item{display:block;width:100%;text-align:left;font:inherit;font-size:14.5px;background:none;border:0;border-radius:8px;padding:9px 8px;cursor:pointer;color:var(--ink)}.user-panel-item:hover{background:var(--green-50)}.user-panel-item.danger{color:var(--error-ink);font-weight:600}.user-panel-item:disabled{opacity:.6;cursor:not-allowed}.bell-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:min(360px,90vw);max-height:70vh;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px #1b433238;padding:10px;text-align:left;cursor:default}.bell-panel-head{display:flex;justify-content:space-between;align-items:center;padding:2px 4px 8px;color:var(--green-900)}.bell-empty{margin:0;padding:6px 4px 10px;color:var(--muted);font-size:14px;line-height:1.5}.bell-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.bell-item{display:grid;gap:2px;width:100%;text-align:left;font:inherit;background:#fff;border:1px solid transparent;border-radius:8px;padding:8px;cursor:pointer}.bell-item:hover{background:var(--green-50)}.bell-item.unread{background:var(--info-bg);border-color:var(--line)}.bell-item-title{font-size:14px;font-weight:600;color:var(--ink);display:flex;gap:7px;align-items:center}.bell-dot{width:8px;height:8px;border-radius:50%;background:var(--green-600);flex:none}.bell-item-body{font-size:13px;color:var(--muted);line-height:1.45}.bell-item-time{font-size:12px;color:var(--muted)}@media (max-width: 640px){.bell-panel{position:fixed;top:68px;right:12px;left:auto;width:min(360px,calc(100vw - 24px))}}.admin-add-farm{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:14px;display:grid;gap:8px}.admin-add-farm h4,.admin-add-farm .auth-sub{margin:0}.admin-add-farm-row{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.admin-add-farm-row label{display:grid;gap:4px;font-size:13px;font-weight:600;color:var(--muted);flex:1 1 180px}.admin-add-farm-row .primary{flex:0 0 auto}.admin-panel .data-table,.admin-panel .auth-notice{margin-top:12px}.settings-list{display:grid;gap:10px;margin-top:12px;max-width:640px}.setting-row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:14px;cursor:pointer}.setting-row .auth-sub{display:block;margin-top:3px;font-weight:400}.setting-row input[type=checkbox]{width:20px;height:20px;flex:none;margin-top:2px;accent-color:var(--green-700)}.plant-check-body{margin-top:12px}.plant-upload{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}.plant-upload .label-text{flex:1 1 220px}.plant-preview{width:160px;height:160px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:var(--green-50)}.plant-results{margin-top:16px}.plant-results h4{margin:0 0 10px;color:var(--green-900);display:flex;gap:10px;align-items:center;flex-wrap:wrap}.plant-top3{list-style:none;margin:0;padding:0;display:grid;gap:8px;max-width:560px}.plant-top3 li{display:grid;grid-template-columns:1fr 130px 56px;gap:10px;align-items:center;font-size:14px}.conf-bar{display:block;height:10px;border-radius:999px;background:var(--green-100);overflow:hidden}.conf-fill{display:block;height:100%;background:var(--green-600);border-radius:999px}.plant-top3-value{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}.plant-note{margin-top:16px;font-size:13px;color:var(--muted);line-height:1.55}.plant-guard{margin-top:14px;display:grid;gap:10px;justify-items:start}.plant-guard p{margin:0;line-height:1.55}.plant-example{margin:16px 0}.plant-example>h4{margin:0 0 10px;color:var(--green-900)}.plant-example-body{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}.plant-example-img{width:180px;height:180px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:var(--green-50)}.plant-example .plant-results{margin-top:0;flex:1 1 300px}@media (max-width: 560px){.plant-example-img{width:140px;height:140px}}.plant-upload-locked{align-items:center}.plant-upload-state{display:inline-flex;align-items:center;padding:6px 11px;border:1px solid var(--line);border-radius:999px;background:var(--green-50);color:var(--muted);font-size:13px;font-weight:600;white-space:nowrap}.plant-unavailable-note{margin-top:22px;padding-top:16px;border-top:1px solid var(--line);max-width:780px}.plant-unavailable-note h4{margin:0 0 6px;color:var(--green-900)}.plant-unavailable-note p{margin:0;color:var(--muted);line-height:1.6}.subscribe .auth-notice{margin-top:12px}.sub-banner{line-height:1.55}.sub-status{margin-top:10px;display:grid;gap:10px}.sub-status p{margin:0;line-height:1.55}.plan-cards{display:grid;gap:14px;margin-top:12px;max-width:420px}.plan-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;display:grid;gap:10px}.plan-card h4{margin:0;color:var(--green-900);font-size:17px}.plan-card .price{margin:0;font-size:28px;font-weight:700;color:var(--green-900)}.plan-card .price-per{font-size:15px;font-weight:400;color:var(--muted)}.plan-features{margin:0;padding-left:18px;display:grid;gap:5px;font-size:14px;line-height:1.5}.invoice-box{background:var(--green-50);border:1px solid var(--line);border-radius:10px;padding:14px 16px;display:grid;gap:8px}.invoice-box p{margin:0;line-height:1.55}.steps{margin:6px 0 0;padding-left:20px;display:grid;gap:6px;font-size:14px;line-height:1.55}.pay-section{margin-top:16px;max-width:560px;display:grid;gap:12px}.pay-online-btn{padding:13px 16px;border:none;border-radius:10px;font-size:16px;font-weight:700;background:var(--green-900);color:#fff;opacity:.45;cursor:not-allowed;width:100%}.pay-note{margin:0}.country-switch{display:grid;grid-template-columns:1fr 1fr;gap:10px}.country-btn{display:grid;gap:2px;text-align:left;padding:12px 14px;cursor:pointer;background:#fff;border:2px solid var(--line);border-radius:12px;font:inherit}.country-btn.active{border-color:var(--green-700);background:var(--green-100)}.country-name{font-size:16px;font-weight:700;color:var(--green-900)}.country-price{font-size:13px;color:var(--muted)}.pay-panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;display:grid;gap:10px;justify-items:start}.pay-amount{margin:0;font-size:26px;font-weight:700;color:var(--green-900)}.pay-amount .price-per{font-size:15px;font-weight:400;color:var(--muted)}.pay-line{margin:0;line-height:1.55}.pay-phone{font-size:20px;font-weight:700;color:var(--green-900);text-decoration:none}.copy-chip{display:inline-flex;align-items:center;gap:10px;padding:8px 8px 8px 14px;border:1.5px dashed var(--green-600);border-radius:999px;background:var(--green-50);cursor:pointer;font:inherit;max-width:100%}.copy-chip-value{font-weight:700;color:var(--green-900);overflow-wrap:anywhere}.copy-chip-action{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#fff;background:var(--green-700);border-radius:999px;padding:4px 10px;white-space:nowrap}.pay-footer{margin:0}@media (max-width: 560px){.country-switch{grid-template-columns:1fr}}.subscribe h4{margin:18px 0 6px;color:var(--green-900)}.billing-form{display:grid;gap:12px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px}.billing-form h4{margin:0;color:var(--green-900)}.billing-form label{display:grid;gap:6px;font-size:14px;font-weight:600}.billing-form input{padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-weight:400}.billing-form input:focus{outline:2px solid var(--lime);border-color:var(--green-600)}.billing-form .primary{justify-self:start}.control-now{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 4px}.now-chip{display:inline-flex;align-items:center;gap:7px;background:var(--green-50);border:1px solid var(--line);border-radius:999px;padding:6px 13px;font-size:13px;color:var(--muted)}.now-chip strong{color:var(--green-900);font-size:14px}.now-chip.warn{background:#fdf3e0;border-color:#ecd9ae;color:#8a5a12}.now-chip.warn strong{color:#8a5a12}.ctl-row{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--line)}.ctl-label{font-weight:600;color:var(--green-900);font-size:14.5px}.ctl-target-label{font-size:19px;font-weight:700;display:flex;align-items:center;gap:8px}.ctl-state{font-size:15.5px;font-weight:600;color:var(--green-700)}.ctl-state .ctl-big-unit{font-size:12.5px}.ctl-hint{display:block;font-weight:400;font-size:13px;color:var(--muted);margin-top:2px}.ctl-inputs{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ctl-inputs input[type=range]{width:150px;accent-color:var(--green-700)}.ctl-value{min-width:76px;font-weight:700;color:var(--green-900)}.control-panel select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:14px;background:#fff;color:var(--ink)}.control-panel .primary{max-width:320px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.summary-strip .table-scroll{flex:1 1 340px;min-width:0}.summary-strip .table-scroll .summary-table{width:100%}@media (max-width: 640px){.table-scroll{margin:0 -4px;padding:0 4px}.table-scroll .data-table:not(.card-table){min-width:540px}.data-table th{white-space:nowrap}.data-table td{overflow-wrap:break-word}.home-bar{padding:10px 14px;gap:8px}.home-bar .brand-mark{width:34px;height:34px}.brand-name{font-size:17px}.user-chip{gap:8px}.role-badge{font-size:11px;padding:2px 8px}button.logout{padding:7px 12px}.home-main{padding:18px 10px}.home-card{padding:16px 14px;margin-top:14px}.nav-groups{display:none}.nav-subtabs{padding:8px 10px 10px}.nav-subtab{padding:9px 14px}.home{padding-bottom:74px}.mobile-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--green-900, #123c2a);border-top:1px solid rgba(255,255,255,.18);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.mobile-bar-btn{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:2px;background:transparent;border:0;color:#cfe3d4;font:inherit;font-size:11px;padding:6px 2px;border-radius:10px;cursor:pointer;min-height:48px}.mobile-bar-btn .nav-icon{width:21px;height:21px}.mobile-bar-btn.active{background:#ffffff29;color:#fff;font-weight:700}.more-sheet{display:grid;gap:4px;position:fixed;left:10px;right:10px;z-index:41;bottom:calc(74px + env(safe-area-inset-bottom));background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px #123c2a47;padding:8px}.more-sheet-item{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:0;border-radius:10px;padding:12px;font:inherit;font-size:15px;color:var(--green-900);cursor:pointer;text-align:left}.more-sheet-item.active{background:var(--green-100);font-weight:700}.range-tab{padding:9px 12px}.pager button{padding:9px 16px}.farm-data input,.farm-data select{padding:10px}.grid-form input,.grid-form select{flex:1 1 130px}.inline-form input{flex:1 1 160px}.filter-bar label{flex:1 1 150px}.filter-bar input,.filter-bar select,.export-group{width:100%}.export-group button{flex:1;padding:10px 14px}.plant-top3 li{grid-template-columns:1fr 76px 46px;gap:8px;font-size:13.5px}.plant-preview{width:120px;height:120px}.donut-wrap{flex-wrap:wrap}.ctl-inputs{width:100%}.ctl-inputs input[type=range]{flex:1;width:auto}.control-panel .primary{max-width:none}.control-panel select{max-width:100%}}.demo-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:12px auto 0;max-width:1080px;padding:10px 16px;background:#eef7ee;border:1px solid #bcd8bc;border-radius:10px;color:#22402a;font-size:14px}.demo-banner-btn{background:#2e7d32;color:#fff;border:none;border-radius:8px;padding:8px 14px;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}.demo-banner-btn:hover{background:#27682b}@media (max-width: 640px){.demo-banner{margin:10px 10px 0}.demo-banner-btn{width:100%}}.weather-widget{margin-top:18px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px}.weather-quiet{margin:0;color:var(--muted);font-size:14px}.wxc-strip{display:grid;align-items:stretch;gap:0;grid-template-columns:minmax(105px,150px) minmax(150px,200px) 1fr}.wxc-place{display:flex;flex-direction:column;justify-content:center;gap:1px;padding-right:12px;border-right:1px solid var(--line);min-width:0}.wxc-loc{font-size:16px;font-weight:700;color:var(--green-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wxc-day{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.wxc-date{font-size:12px;color:var(--muted)}.wxc-meta{font-size:11.5px;color:var(--muted);margin-top:3px}.wxc-now{display:flex;align-items:center;gap:10px;padding:0 14px;border-right:1px solid var(--line);min-width:0}.wxc-icon{font-size:40px;line-height:1}.wxc-temp{font-size:34px;font-weight:700;color:var(--green-900);line-height:1;white-space:nowrap}.wxc-desc{display:flex;flex-direction:column;gap:1px;font-size:12.5px;font-weight:600;color:var(--ink)}.wxc-hilo{font-size:11.5px;font-weight:400;color:var(--muted);white-space:nowrap}.wxc-days{list-style:none;margin:0;padding:0 0 0 6px;display:grid;grid-template-columns:repeat(5,1fr)}.wxc-daycell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px 2px;border-radius:8px;min-width:0}.wxc-daycell.is-today{background:var(--green-100)}.wxc-dow{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.wxc-daycell.is-today .wxc-dow{color:var(--green-900)}.wxc-dicon{font-size:19px;line-height:1.15}.wxc-dtemps{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.wxc-dtemps strong{color:var(--ink);font-size:13.5px}.wxc-dprecip{font-size:10.5px;color:#1976d2;min-height:13px;white-space:nowrap}@media (max-width: 640px){.wxc-strip{grid-template-columns:1fr auto}.wxc-now{border-right:0;padding-right:0}.wxc-icon{font-size:32px}.wxc-temp{font-size:28px}.wxc-days{grid-column:1 / -1;padding:8px 0 0;margin-top:8px;border-top:1px solid var(--line)}}.water-summary{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.water-stat{display:grid;gap:2px;border:1px solid var(--line);border-radius:12px;background:var(--green-50);padding:10px 16px}.water-stat-label{font-size:12.5px;font-weight:600;color:var(--muted)}.water-stat-value{font-size:24px;font-weight:700;color:var(--green-900);line-height:1.15}.water-grid{display:grid;gap:12px;margin-top:14px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.water-card{border:1px solid var(--line);border-radius:12px;background:#fff;padding:14px 16px}.water-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}.water-card-head h4{margin:0;color:var(--green-900)}.water-card-total{font-size:13px;font-weight:600;color:var(--muted)}.water-today{margin:8px 0 4px;font-size:22px;font-weight:700;color:var(--green-900)}.water-chart{width:100%;height:auto;display:block}.water-bar{fill:#7fb996}.water-bar.today{fill:#2e7d4f}.water-baseline{stroke:var(--line);stroke-width:1}.water-note{margin-top:12px;font-size:12.5px;color:var(--muted)}@media (max-width: 640px){.water-grid{grid-template-columns:1fr}}.cost-price-card{margin-top:14px}.cost-price-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}.cost-price-field{display:inline-flex;gap:6px;align-items:center;font-weight:600;color:var(--muted)}.cost-price-field input{width:110px}.cost-price-readonly{margin:8px 0 4px;font-size:22px;font-weight:700;color:var(--green-900)}.cost-card-usage{margin:2px 0 0;font-size:13.5px;color:var(--muted)}.harvest-summary{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 4px}.harvest-stat{display:grid;gap:2px;border:1px solid var(--line);border-radius:12px;background:var(--green-50);padding:10px 16px}.harvest-stat-label{font-size:12.5px;font-weight:600;color:var(--muted)}.harvest-stat-value{font-size:22px;font-weight:700;color:var(--green-900);line-height:1.15}.harvest-sub{margin-top:16px}.harvest-note{margin-top:12px;font-size:12.5px;color:var(--muted)}.yield-range{margin-top:12px;font-size:13px;font-weight:600;color:var(--muted)}.yield-dot{fill:#2e7d4f}.overview-heading{margin:0}.overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px}.overview-card{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;padding:10px 12px;min-height:104px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;color:var(--ink);font:inherit}.overview-card:hover{border-color:var(--green-600);background:var(--green-50)}.overview-card-title{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--green-700);margin-bottom:2px}.overview-big{font-size:22px;font-weight:700;color:var(--green-900);line-height:1.15}.overview-line{font-size:13px;color:var(--ink);line-height:1.35}.overview-empty{font-size:13px;color:var(--muted)}.overview-spark{margin-top:4px}.overview-spark-bar{fill:var(--green-600)}.overview-bar-row{display:flex;align-items:center;gap:6px;width:100%;font-size:12.5px}.overview-bar-label{flex:0 0 64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overview-bar-track{flex:1;height:8px;border-radius:4px;background:var(--green-100);overflow:hidden}.overview-bar-fill{display:block;height:100%;background:var(--green-600);border-radius:4px}.overview-bar-value{flex:0 0 auto;color:var(--muted)}@media (max-width: 1100px){.overview-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 760px){.overview-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.overview-grid{grid-template-columns:1fr}.overview-card{min-height:0}}.account-form{display:grid;gap:10px;max-width:420px;margin-top:8px}.account-form label{display:grid;gap:4px}.ov-status-banner{border-radius:12px;padding:12px 16px;font-weight:700;margin:14px 0 0}.ov-status-banner.ok{background:#e6f4ea;color:var(--green-900);border:1px solid #bfe3c8}.ov-status-banner.bad{background:#fdf0e4;color:#8a4d00;border:1px solid #f3d3a7}.ov-attention{margin-top:10px}.ov-attention-row{width:100%;font:inherit;text-align:left;cursor:pointer;background:none;border:0}.ov-attention-farm{font-size:12px;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 8px;white-space:nowrap}.ov-farm-light{width:13px;height:13px;border-radius:50%;flex:none;background:#2e9e5b;box-shadow:0 0 0 3px #e6f4ea}.ov-farm-light.warning{background:#e8a13a;box-shadow:0 0 0 3px #fdf0e4}.ov-farm-light.critical{background:#d64545;box-shadow:0 0 0 3px #fbe9e9}.ov-farm-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));margin-top:14px}.ov-farm-card{display:grid;gap:10px;text-align:left;font:inherit;cursor:pointer;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px}.ov-farm-card:hover{border-color:var(--green-600)}.ov-farm-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ov-farm-name{font-weight:700;font-size:16px;color:var(--green-900)}.ov-farm-code{font-size:11.5px;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 8px}.ov-farm-demo{font-size:11.5px;font-weight:700;color:var(--green-900);background:var(--green-50);border-radius:999px;padding:1px 8px}.ov-farm-readings{display:flex;gap:8px 14px;flex-wrap:wrap;font-size:14.5px;font-weight:600;color:var(--ink)}.ov-farm-none{color:var(--muted);font-weight:400}.ov-farm-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13px}.ov-farm-alerts{font-weight:700;color:#b26a00}.ov-farm-alerts.level-critical{color:#c62828}.ov-farm-ok{color:var(--green-700);font-weight:600}.ov-farm-water{color:var(--muted)}.ov-hero{margin-top:14px}.ov-hero .weather-widget{margin:0}.weather-icon{font-size:32px;line-height:1.1}.weather-day-icon{font-size:15px}.ov-tiles{display:grid;gap:10px;margin-top:12px;grid-template-columns:repeat(auto-fit,minmax(118px,1fr))}.ov-tile{display:grid;gap:2px;justify-items:start;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font:inherit;cursor:pointer;min-height:92px}.ov-tile.selected{border-color:var(--green-700);box-shadow:0 0 0 2px var(--green-100, #dcefe2)}.ov-chart{margin-top:14px}.ov-tile:hover{border-color:var(--green-600);background:var(--green-50)}.ov-tile-top{display:flex;justify-content:space-between;align-items:center;width:100%}.ov-tile-glyph{font-size:17px;font-weight:700;color:var(--green-700)}.ov-fresh{width:9px;height:9px;border-radius:999px;flex:none}.ov-fresh-fresh{background:#43a047}.ov-fresh-stale{background:#f9a825}.ov-fresh-old{background:#c62828}.ov-tile-value{font-size:21px;font-weight:700;color:var(--green-900);line-height:1.15}.ov-tile-unit{font-size:13px;font-weight:600;color:var(--muted)}.ov-tile-label{font-size:12px;color:var(--muted)}.ov-daybars{width:100%;max-width:300px;height:auto;margin-top:6px}.ov-daybar{fill:var(--green-600)}.ov-daybar-val{font-size:9.5px;fill:var(--muted);text-anchor:middle;font-variant-numeric:tabular-nums}.ov-daybar-day{font-size:9.5px;fill:var(--muted);text-anchor:middle}.ov-alert-num{font-size:26px;font-weight:700;color:var(--green-700);line-height:1.1}.ov-alert-num.has-open{color:#c62828}.ov-alert-word{font-size:15px;font-weight:600}.ov-ctl-chips{display:flex;gap:8px;flex-wrap:wrap}.ov-ctl-chip{display:inline-flex;align-items:center;gap:6px;background:var(--green-50);border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:13px;font-weight:600;color:var(--green-900)}.ov-dot{width:9px;height:9px;border-radius:999px}.ov-dot-auto{background:#1e88e5}.ov-dot-on{background:#43a047}.ov-dot-off{background:#9e9e9e}.ov-warn{color:#b26a00;font-weight:600}.ov-sub-status{align-self:flex-start;font-size:15px;font-weight:700;text-transform:capitalize;padding:3px 12px;border-radius:999px;background:var(--green-100);color:var(--green-900)}.ov-sub-active{background:#c8e6c9}.ov-sub-pending_payment{background:#fff3e0;color:#b26a00}.ov-sub-expired,.ov-sub-canceled{background:#f3e5e5;color:#b03030}.overview-card{gap:8px;min-height:152px}.ov-card-head{display:flex;align-items:center;gap:9px;width:100%}.ov-card-head .overview-card-title{margin:0}.ov-card-icon{width:34px;height:34px;flex:none;border-radius:10px;display:grid;place-items:center;background:var(--green-100);color:var(--green-900)}.ov-card-icon .nav-icon{width:20px;height:20px}.ov-card-alert .ov-card-icon{background:#fdecec;color:#b03030}.ov-card-water .ov-card-icon{background:#e3f2fd;color:#14507e}.ov-card-costs .ov-card-icon{background:#fff3e0;color:#8a5a12}.ov-card-control .ov-card-icon{background:#e8f5e9;color:var(--green-700)}.ov-card-stock .ov-card-icon{background:#fff8e1;color:#8a5a12}.ov-card-notes .ov-card-icon{background:#f1f8e9;color:var(--green-700)}.ov-card-sub .ov-card-icon{background:#e3f0fb;color:#14507e}.ov-status-pill{align-self:flex-start;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.ov-status-pill.is-danger{background:#fdecec;color:#b03030}.ov-status-pill.is-ok{background:#e6f4ea;color:var(--green-700)}.ov-meter{display:block;width:100%;height:8px;border-radius:999px;background:#edf2ed;overflow:hidden}.ov-meter>span{display:block;height:100%;border-radius:999px}.ov-meter>span.is-danger{background:#d64545}.ov-meter>span.is-ok{background:var(--green-600)}.ov-clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;width:100%}.ov-money-row{display:flex;align-items:center;gap:9px}.ov-money-symbol{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--green-100);color:var(--green-900);font-size:17px;font-weight:700}.ov-muted-line{color:var(--muted)}.ov-systems{display:grid;grid-template-columns:1fr 1fr;gap:6px;width:100%}.ov-system-row{display:flex;justify-content:space-between;align-items:center;gap:6px;background:#f7faf7;border:1px solid var(--line);border-radius:9px;padding:6px 8px;font-size:12px;min-width:0}.ov-system-name{display:inline-flex;align-items:center;gap:5px;font-weight:600;white-space:nowrap;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.ov-state{text-transform:capitalize;font-size:11px;font-weight:700;flex:none;padding:2px 7px;border-radius:999px;background:#eceff1;color:#455a64}.ov-state-auto{background:#e3f0fb;color:#14507e}.ov-state-on{background:#c8e6c9;color:#1b5e20}.ov-target-row{display:flex;gap:6px;width:100%}.ov-target-row>span{flex:1;text-align:center;background:var(--green-50);border-radius:8px;padding:5px 4px;font-size:12.5px;font-weight:600;color:var(--green-900)}.ov-stockbar{display:flex;width:100%;height:12px;border-radius:999px;overflow:hidden;background:#eceff1}.ov-stockbar>span{display:block;height:100%}.ov-stockbar>span.is-ok{background:#43a047}.ov-stockbar>span.is-attention{background:#ef8f2f}.ov-stock-legend{display:flex;flex-direction:column;gap:2px;font-size:12.5px}.ov-note-layout{display:flex;gap:10px;width:100%;align-items:flex-start}.ov-date-badge{flex:0 0 50px;display:flex;flex-direction:column;align-items:center;background:var(--green-100);color:var(--green-900);border-radius:10px;padding:6px 0}.ov-date-badge strong{font-size:20px;line-height:1}.ov-date-badge small{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.ov-sub-demo{background:#e3f0fb;color:#14507e}.ov-sub-none{background:#f1f1f1;color:#666}.overview-bar-label{flex-basis:92px}@media (max-width: 520px){.overview-card{min-height:0}.ov-systems{grid-template-columns:1fr}}.harvest-bar{display:block;width:100%;margin-top:6px}.area-section{margin-top:18px}.area-banner{position:relative;border-radius:14px;overflow:hidden;margin-bottom:12px;min-height:108px;display:flex;align-items:flex-end;background:var(--green-100)}.area-photo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.area-banner-text{position:relative;width:100%;padding:26px 14px 10px;background:linear-gradient(transparent,#102e1ec7);display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.area-banner-text h4{margin:0;color:#fff;font-size:19px}.area-meta{display:inline-flex;gap:8px;align-items:center}.area-crop-chip{background:#ffffffeb;color:var(--green-900);font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px}.area-size{color:#e8f3ec;font-size:12.5px;font-weight:600}.farm-form{display:grid;gap:10px;margin:10px 0 4px;max-width:420px}.farm-form .label-text{display:grid;gap:5px;font-size:13.5px;font-weight:600;color:var(--green-900)}.farm-form input,.farm-form select{padding:10px;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff}.stat-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:14px 0}.stat-tile{display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font:inherit}button.stat-tile{cursor:pointer}button.stat-tile:hover{border-color:var(--green-600);background:var(--green-50)}.stat-tile-label{font-size:12.5px;font-weight:600;color:var(--muted)}.stat-tile-value{font-size:22px;font-weight:700;color:var(--green-900);line-height:1.15}.stat-tile-sub{font-size:12.5px;color:var(--muted)}.stat-tile.warn{border-color:#f0c36d;background:#fffaf0}.stat-tile.warn .stat-tile-value{color:#8a5a12}.filter-chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.filter-chip{border:1.5px solid var(--line);background:#fff;color:var(--green-900);border-radius:999px;padding:7px 14px;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}.filter-chip.active{background:var(--green-700);border-color:var(--green-700);color:#fff}.admin-search{width:100%;max-width:420px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font:inherit;margin-top:10px}.tab-badge{background:var(--green-100);color:var(--green-900);border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700}.range-tab.active .tab-badge{background:#fff;color:var(--green-700)}.admin-tab-btn{display:inline-flex;align-items:center;gap:6px}.admin-tab-btn .nav-icon{width:15px;height:15px}.card-block{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:14px 0}.card-block>h4{margin-top:2px}.seg{display:flex;border:1.5px solid var(--line);border-radius:10px;overflow:hidden}.seg-btn{flex:1;border:0;background:#fff;padding:11px 8px;font:inherit;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;min-height:44px}.seg-btn+.seg-btn{border-left:1px solid var(--line)}.seg-btn:disabled{cursor:default;opacity:.8}.seg-btn.is-auto{background:#e3f0fb;color:#14507e}.seg-btn.is-on{background:var(--green-600);color:#fff}.seg-btn.is-off{background:#eceff1;color:#455a64}.ctl-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin:10px 0 4px}.ctl-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.ctl-card .seg{margin-top:auto}@media (max-width: 640px){.ctl-cards{grid-template-columns:1fr 1fr}.ctl-card{padding:12px}.ctl-big{font-size:24px}}.ctl-big{font-size:30px;font-weight:700;color:var(--green-900);line-height:1.1}.ctl-big-unit{font-size:16px;font-weight:600;color:var(--muted)}.identity-card{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center;background:var(--green-50);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:12px 0}.identity-main{display:flex;flex-direction:column;gap:1px}.identity-name{font-size:17px;font-weight:700;color:var(--green-900)}.note-month{list-style:none;font-weight:700;color:var(--green-900);padding:12px 2px 2px;font-size:14px}@media (max-width: 640px){.card-table thead{display:none}.card-table,.card-table tbody,.card-table tr,.card-table td{display:block;width:100%}.card-table tr{border:1px solid var(--line);border-radius:10px;margin:0 0 10px;padding:8px 12px;background:#fff}.card-table td{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:5px 0;border:0;text-align:right}.card-table td:before{content:attr(data-label);font-weight:600;color:var(--muted);font-size:12.5px;text-align:left}}.claim-form input{font-size:17px;padding:12px;letter-spacing:1px;flex:1;min-width:220px}.farm-chip .ov-farm-light{width:10px;height:10px;flex:none}.locked-fieldset{border:0;margin:0;padding:0;min-width:0}.add-farm-btn{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:15px 16px;margin:4px 0 16px;border:2px dashed var(--green-600);border-radius:14px;background:var(--green-100);color:var(--green-900);font:inherit;font-size:18px;font-weight:800;cursor:pointer}.add-farm-btn:hover:not(:disabled){background:#e0eed7}.add-farm-btn:disabled{opacity:.55;cursor:not-allowed}.add-farm-plus{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex:none;border-radius:50%;background:var(--green-700);color:#fff;font-size:25px;font-weight:800;line-height:1}.ov-farm-card[aria-pressed=true]{border-color:var(--green-700);box-shadow:0 0 0 2px var(--green-100, #dcefe2)}.ovn-farms{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.ovn-row{display:flex;align-items:center;gap:8px;background:#fff;border:1.5px solid var(--line);border-radius:14px;height:58px;padding:0 10px 0 16px;box-shadow:0 1px 3px #1b433214}.ovn-row.sel{border-color:var(--green-700);background:#f4f9f1;box-shadow:0 0 0 2px var(--green-100),0 1px 3px #1b433214}.ovn-row-main{flex:1;min-width:0;height:100%;display:flex;align-items:center;gap:9px;background:none;border:none;padding:0;cursor:pointer;font:inherit;color:inherit;text-align:left}.ovn-dot{width:11px;height:11px;border-radius:50%;flex:none;background:#2e9e5b;box-shadow:0 0 0 3px #e6f4ea}.ovn-dot.recent{background:#e8a13a;box-shadow:0 0 0 3px #fdf0e4}.ovn-dot.breach{background:#d8483b;box-shadow:0 0 0 3px #fbe9e7}.ovn-name{font-weight:700;font-size:16.5px;color:var(--green-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ovn-right{margin-left:auto;display:flex;gap:6px;align-items:center;flex:none}.ovn-code{font-size:11px;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 8px;line-height:18px;white-space:nowrap}.ovn-demo{font-size:11px;font-weight:700;color:var(--green-900);background:var(--green-100);border-radius:999px;padding:0 8px;line-height:18px;white-space:nowrap}.ovn-badge{display:inline-flex;align-items:center;gap:4px;flex:none;font-size:12px;font-weight:800;border:none;cursor:pointer;border-radius:999px;padding:1px 9px;line-height:18px;white-space:nowrap;font-family:inherit}.ovn-badge.bad{background:#fbe9e7;color:#b3352a}.ovn-badge.warn{background:#fdf0e4;color:#9a6718}.ovn-box{margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px}.ovn-weather{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:10px;padding:7px 12px;background:#fbfcf7}.ovn-wx-icon{color:#e8a13a;display:inline-flex}.ovn-wx-temp{font-size:19px;font-weight:700;color:var(--green-900)}.ovn-wx-cond{font-size:13px;color:var(--muted)}.ovn-wx-tag{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 7px}.ovn-crops{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.ovn-crop{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:8px 14px 8px 10px;font-size:15px;font-weight:700;background:#eef4ea;color:var(--green-900)}.ovn-crop svg{color:var(--green-700)}.ovn-crop.tomato{background:#fdeeee;border-color:#f0c1c1;color:#5f2121}.ovn-crop.tomato svg{color:#d64545}.ovn-crop.strawberry{background:#fdeeee;border-color:#f0c1c1;color:#5f2121}.ovn-crop.strawberry svg{color:#d64545}.ovn-crop.cucumber{background:#eef7ea;border-color:#bcd8ae;color:#23402a}.ovn-crop.cucumber svg{color:#43a047}.ovn-crop.pepper{background:#f2f8e6;border-color:#cfdfae;color:#33451f}.ovn-crop.pepper svg{color:#7cb342}.ovn-crop.lettuce{background:#eaf7ee;border-color:#bfe3cc;color:#1e4630}.ovn-crop.lettuce svg{color:#34a853}.ovn-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:10px;margin-top:12px}.ovn-tile{position:relative;border:1px solid var(--line);border-radius:12px;padding:12px;min-width:0;overflow:hidden;background:#fff;font:inherit;color:inherit;text-align:left;cursor:pointer}.ovn-tile.bad{border-color:#eec5c1;background:#fdf4f3}.ovn-tile-label{font-size:15px;font-weight:600;display:flex;align-items:center;gap:6px;line-height:20px;white-space:nowrap;min-width:0}.ovn-tile-label svg{flex:none;color:var(--green-700)}.ovn-tile-text{overflow:hidden;text-overflow:ellipsis}.ovn-tile-dot{position:absolute;top:13px;right:12px;width:10px;height:10px;border-radius:50%;background:#2e9e5b}.ovn-tile-dot.bad{background:#d8483b}.ovn-tile-value{display:block;font-size:24px;font-weight:700;margin-top:7px;line-height:1.1;white-space:nowrap}.ovn-tile-unit{font-size:13px;color:var(--muted);font-weight:400}.ovn-sys{margin-top:12px;border-top:1px solid var(--line);padding-top:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.ovn-pill{height:52px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:999px;font-size:15px;font-weight:600;color:var(--ink);font-family:inherit;min-width:0;padding:0 10px;cursor:pointer}.ovn-pill.on{background:var(--green-100);border-color:#cfe3c8}.ovn-pill svg{flex:none;color:var(--green-700)}.ovn-pill-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ovn-pill-light{width:10px;height:10px;border-radius:50%;flex:none}.ovn-pill-light.on{background:#2e9e5b;box-shadow:0 0 0 3px #dff0e2}.ovn-pill-light.off{background:#d8483b;box-shadow:0 0 0 3px #fbe9e7}@media (max-width: 619px){.ovn-tiles>:last-child:nth-child(odd){grid-column:1 / -1;justify-self:center;width:calc((100% - 10px)/2)}.ovn-sys>:last-child:nth-child(odd){grid-column:1 / -1;justify-self:center;width:calc((100% - 9px)/2)}}@media (min-width: 620px){.ovn-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}.ovn-sys{display:flex;flex-wrap:wrap;justify-content:center}.ovn-pill{flex:0 0 calc((100% - 18px) / 3)}}.ctl-card.ctl-focus{box-shadow:0 0 0 3px var(--lime);transition:box-shadow .3s}.manual-tag{display:inline-block;margin-left:7px;vertical-align:1px;font-size:10.5px;font-weight:700;line-height:16px;background:var(--green-100);color:var(--green-900);border-radius:999px;padding:0 7px;white-space:nowrap}.import-file{font:inherit;font-size:14px;max-width:100%}.import-preview{border-top:1px solid var(--line);margin-top:12px;padding-top:4px}
