@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&display=swap";:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}#root{width:100%;height:100vh;margin:0;padding:0}.app-container{display:flex;width:100%;height:100vh}.main-content{flex:1;padding:52px 0 0;overflow-y:auto;transition:margin-left .3s ease}.app-container:has(.sidebar.open) .main-content{margin-left:220px}.app-container:has(.sidebar.closed) .main-content{margin-left:72px}.app-container:has(.sidebar.open) .topbar{left:220px}.app-container:has(.sidebar.closed) .topbar{left:72px}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}:root{--sidebar-bg: #1f7a35;--sidebar-active: #155c27;--sidebar-hover: rgba(255, 255, 255, .1);--sidebar-border: rgba(255, 255, 255, .12);--sidebar-text: rgba(255, 255, 255, .8);--sidebar-text-muted: rgba(255, 255, 255, .5);--sidebar-accent: #6fcf87;--sidebar-width-open: 220px;--sidebar-width-closed: 72px}.sidebar{position:fixed;left:0;top:0;height:100vh;width:var(--sidebar-width-open);background:var(--sidebar-bg);display:flex;flex-direction:column;padding:0;transition:width .3s ease;z-index:1000;font-family:DM Sans,sans-serif}.sidebar.closed{width:var(--sidebar-width-closed)}.sidebar-header{height:52px;display:flex;align-items:center;justify-content:center;padding:0 16px 0 18px;cursor:pointer;flex-shrink:0}.sidebar-header:hover .sidebar-logo{opacity:1}.sidebar-logo{font-size:13px;font-weight:600;margin:0;color:#ffffffb3;letter-spacing:.05em;-webkit-user-select:none;user-select:none;transition:opacity .2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar.closed .sidebar-logo{font-size:12px;letter-spacing:0}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:4px 10px}.sidebar-nav::-webkit-scrollbar{width:4px}.sidebar-nav::-webkit-scrollbar-track{background:transparent}.sidebar-nav::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.sidebar-menu{list-style:none;margin:0;padding:0}.sidebar-menu-item{margin:0 0 2px}.sidebar-divider{height:1px;background:var(--sidebar-border);margin:6px 4px}.sidebar-menu-title{display:flex;align-items:center;padding:10px 12px;cursor:pointer;border-radius:10px;gap:10px;color:var(--sidebar-text);font-weight:500;font-size:13px;-webkit-user-select:none;user-select:none;transition:background .15s}.sidebar-menu-title:hover{background:var(--sidebar-hover)}.sidebar-menu-link{text-decoration:none;color:var(--sidebar-text)}.sidebar-menu-link.active{background:var(--sidebar-active);color:#fff}.menu-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;opacity:.9}.menu-icon svg{width:18px;height:18px}.menu-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-arrow{font-size:.6rem;transition:transform .25s;color:var(--sidebar-text-muted);flex-shrink:0}.menu-arrow.open{transform:rotate(180deg)}.sidebar.closed .menu-text,.sidebar.closed .menu-arrow{display:none}.sidebar.closed .sidebar-menu-title{justify-content:center;padding:10px}.sidebar-submenu{list-style:none;margin:0;padding:2px 0;background:transparent}.sidebar-submenu-item{margin:0 0 2px}.sidebar-submenu-link{display:flex;align-items:center;padding:8px 12px 8px 40px;color:var(--sidebar-text);text-decoration:none;border-radius:10px;font-size:12px;font-weight:500;gap:8px;transition:background .15s}.sidebar-submenu-link:hover{background:var(--sidebar-hover)}.sidebar-submenu-link.active{background:var(--sidebar-active);color:#fff}.submenu-bullet{font-size:1rem;color:var(--sidebar-accent);flex-shrink:0}.sidebar.closed .sidebar-submenu{display:none}.sidebar-farm-item{margin:0 0 1px}.sidebar-farm-row{display:flex;align-items:center;padding:0 6px 0 32px;border-radius:10px;transition:background .15s}.sidebar-farm-row:hover,.sidebar-farm-row.active{background:var(--sidebar-hover)}.sidebar-farm-row.active{background:var(--sidebar-active)}.sidebar-farm-link{flex:1;display:flex;align-items:center;padding:7px 0;text-decoration:none;color:var(--sidebar-text);font-size:12px;font-weight:500;min-width:0;background:none;border:none;cursor:pointer;text-align:left;font-family:DM Sans,sans-serif;transition:color .15s}.sidebar-farm-row.active .sidebar-farm-link{color:#fff}.farm-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expand-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:none;cursor:pointer;color:var(--sidebar-text-muted);font-size:.5rem;transition:color .15s,transform .25s;border-radius:4px;padding:0}.expand-btn:hover{color:#fff;background:#ffffff1a}.expand-btn.open{transform:rotate(90deg);color:var(--sidebar-accent)}.sidebar-zones-list{list-style:none;margin:0;padding:2px 0}.sidebar-zone-item{margin:0 0 1px}.sidebar-zone-row{display:flex;align-items:center;padding:0 6px 0 44px;border-radius:10px;transition:background .15s}.sidebar-zone-row:hover,.sidebar-zone-row.active{background:var(--sidebar-hover)}.sidebar-zone-row.active{background:var(--sidebar-active)}.sidebar-zone-link{flex:1;display:flex;align-items:center;gap:6px;padding:6px 0;text-decoration:none;color:var(--sidebar-text-muted);font-size:11px;font-weight:500;min-width:0;transition:color .15s}.sidebar-zone-row:hover .sidebar-zone-link,.sidebar-zone-row.active .sidebar-zone-link{color:#fff}.zone-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-farms-error{padding:6px 12px 6px 32px;font-size:11px;color:#fca5a5;font-style:italic;list-style:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-loading,.sidebar-empty{padding:5px 0 5px 44px;font-size:11px;color:var(--sidebar-text-muted);font-style:italic;list-style:none}.sidebar-clock{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 10px;border-top:1px solid var(--sidebar-border);gap:2px;flex-shrink:0}.clock-time{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:#ffffffe6;letter-spacing:1px}.clock-date{font-size:10px;color:var(--sidebar-text-muted);text-align:center;text-transform:capitalize}.sidebar-version{display:flex;flex-direction:column;align-items:center;gap:1px;margin-top:4px;font-size:11px;color:#ffffff73;letter-spacing:.3px}body.dark-mode{--sidebar-bg: #155c27;--sidebar-active: #1f7a35}@media(max-width:768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}}.topbar{position:fixed;top:0;left:220px;right:0;height:52px;background:#fff;border-bottom:1px solid #e2e6e9;display:flex;align-items:center;padding:0 20px;gap:12px;z-index:999;transition:left .3s ease;font-family:DM Sans,sans-serif}.topbar-search{flex:1;max-width:280px;background:#f4f5f6;border:1px solid #e2e6e9;border-radius:8px;padding:6px 12px;font-size:12px;color:#5a6472;outline:none;font-family:DM Sans,sans-serif;transition:border-color .15s}.topbar-search:focus{border-color:#2e8b47}.topbar-spacer{flex:1}.notif-wrapper{position:relative}.notif-dropdown{position:absolute;top:calc(100% + 10px);right:0;width:300px;background:#fff;border:1px solid #e2e6e9;border-radius:10px;box-shadow:0 4px 20px #0000001f;overflow:hidden;animation:dropdownSlide .15s ease;z-index:1000}.notif-dropdown-header{padding:10px 14px;font-size:11px;font-weight:700;color:#9ba3ab;text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid #e2e6e9}.notif-toast{display:flex;align-items:stretch;gap:10px;padding:10px 14px;border-bottom:1px solid #f0f2f4;transition:background .15s}.notif-toast:last-child{border-bottom:none}.notif-toast:hover{background:#f8f9fa}.notif-toast-bar{width:3px;border-radius:999px;flex-shrink:0}.notif-toast--success .notif-toast-bar{background:#22c55e}.notif-toast--warning .notif-toast-bar{background:#f97316}.notif-toast--error .notif-toast-bar{background:#ef4444}.notif-toast-body{display:flex;flex-direction:column;gap:2px;min-width:0}.notif-toast-title{font-size:12px;font-weight:700;color:#1a2228}.notif-toast--success .notif-toast-title{color:#16a34a}.notif-toast--warning .notif-toast-title{color:#ea6c00}.notif-toast--error .notif-toast-title{color:#dc2626}.notif-toast-msg{font-size:11px;color:#5a6472;line-height:1.4}.notif-toast-time{font-size:10px;color:#9ba3ab;margin-top:2px}.notif-dismiss{flex-shrink:0;align-self:flex-start;background:none;border:none;cursor:pointer;font-size:18px;line-height:1;color:#c0c7ce;margin-left:auto;padding:0 0 0 12px;transition:color .15s}.notif-dismiss:hover{color:#5a6472}.notif-empty{padding:16px 14px;font-size:12px;color:#9ba3ab;text-align:center}.notif-badge{min-width:16px;height:16px;padding:0 4px;background:#ef4444;color:#fff;border-radius:999px;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;margin-left:2px}.topbar-icon-btn{display:flex;align-items:center;justify-content:center;cursor:pointer;color:#1a2228;background:none;border:none;padding:0}.topbar-icon-btn svg{width:18px;height:18px}.user-profile{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:8px;cursor:pointer;transition:background .15s;-webkit-user-select:none;user-select:none;position:relative}.user-profile:hover{background:#f4f5f6}.user-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#2e8b47,#1a6b2e);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0;letter-spacing:.5px}.user-name{font-size:12px;font-weight:600;color:#1a2228;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-arrow{font-size:.55rem;color:#9ba3ab;transition:transform .2s}.topbar-right{position:relative}.user-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:190px;background:#fff;border-radius:10px;box-shadow:0 4px 20px #0000001f;border:1px solid #e2e6e9;overflow:hidden;animation:dropdownSlide .15s ease;z-index:1000}@keyframes dropdownSlide{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{display:flex;align-items:center;gap:10px;padding:10px 14px;color:#1a2228;text-decoration:none;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s;font-family:DM Sans,sans-serif}.dropdown-item:hover{background:#f4f5f6}.dropdown-item.logout:hover{background:#fef2f2;color:#dc2626}.dropdown-item.logout:hover .dropdown-icon svg{color:#dc2626}.dropdown-icon{display:flex;align-items:center;justify-content:center;color:#5a6472;flex-shrink:0}.dropdown-icon svg{width:15px;height:15px}.theme-icon{width:15px;height:15px;display:block}.dropdown-divider{height:1px;background:#e2e6e9;margin:2px 0}body.dark-mode .topbar{background:#1e1e1e;border-bottom-color:#ffffff14}body.dark-mode .topbar-search{background:#2a2a2a;border-color:#ffffff1a;color:#e0e0e0}body.dark-mode .topbar-icon-btn{color:#aaa}body.dark-mode .topbar-icon-btn svg{stroke:#aaa;fill:#aaa}body.dark-mode .user-profile:hover{background:#ffffff12}body.dark-mode .user-name{color:#e0e0e0}body.dark-mode .user-dropdown{background:#2a2a2a;border-color:#ffffff1a}body.dark-mode .dropdown-item{color:#e0e0e0}body.dark-mode .dropdown-item:hover{background:#ffffff12}body.dark-mode .dropdown-item.logout:hover{background:#dc262626;color:#fca5a5}body.dark-mode .dropdown-divider{background:#ffffff14}body.dark-mode .main-content{background-color:#141414;color:#fff}body.dark-mode .sidebar{background:var(--sidebar-bg)}@media(max-width:768px){.topbar{left:0}}.main-view{width:100%;height:100%;padding:12px 14px 10px;display:flex;flex-direction:column;box-sizing:border-box;overflow:hidden;background:#f4f5f6;font-family:DM Sans,sans-serif;font-size:13px;color:#1a2228;gap:10px}.main-view-content{flex:1;display:grid;grid-template-columns:50% 50%;gap:10px;min-height:0;min-width:0;overflow:hidden}.cartography-section,.control-panel-section{min-height:0;min-width:0;overflow:hidden}.breadcrumb{display:flex;align-items:center;gap:6px;flex-shrink:0;font-size:12px;color:#9ba3ab;font-weight:400}.breadcrumb-item{color:#9ba3ab;cursor:default}.breadcrumb-link{text-decoration:none;cursor:pointer;transition:color .15s}.breadcrumb-link:hover{color:#2e8b47}.breadcrumb-item.active{color:#5a6472;font-weight:500}.breadcrumb-separator{color:#e2e6e9;-webkit-user-select:none;user-select:none}.page-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:10px;color:#9ba3ab;font-family:DM Sans,sans-serif;font-size:13px}.page-state--error{color:#ef4444}.page-state__btn{padding:6px 16px;border:1.5px solid #e2e6e9;border-radius:8px;background:#fff;cursor:pointer;font-size:12px;font-family:DM Sans,sans-serif;color:#1a2228;transition:border-color .15s}.page-state__btn:hover{border-color:#2e8b47}.welcome-message{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;gap:8px}.welcome-message h1{font-size:2rem;font-weight:700;color:#1a2228;margin:0;background:linear-gradient(135deg,#2e8b47,#1a6b2e);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.welcome-message p{font-size:13px;color:#9ba3ab;margin:0}body.dark-mode .main-view{background:#141414;color:#e0e0e0}body.dark-mode .breadcrumb-item{color:#5a6472}body.dark-mode .breadcrumb-link:hover{color:#2e8b47}body.dark-mode .breadcrumb-item.active{color:#9ba3ab}body.dark-mode .breadcrumb-separator{color:#2a2a2a}body.dark-mode .page-state{color:#5a6472}body.dark-mode .page-state__btn{background:#1e1e1e;border-color:#333;color:#e0e0e0}body.dark-mode .page-state__btn:hover{border-color:#2e8b47}body.dark-mode .welcome-message p{color:#5a6472}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.cartography{display:flex;flex-direction:column;height:100%;overflow:hidden;font-family:DM Sans,sans-serif;font-size:13px}.cartography-header{padding:.5rem 1rem .25rem;border-bottom:none;background:transparent}.cartography-header h2{margin:0;font-size:.85rem;font-weight:500;color:#666;text-align:left}.cartography-content{flex:1;display:flex;flex-direction:column;align-items:stretch;padding:15px 1rem 1rem;overflow:hidden;min-height:0}.map-wrapper{position:relative;flex:1;min-height:0;width:100%;border-radius:8px;overflow:hidden}.satellite-map{width:100%;height:100%;border-radius:8px;background:#1a1a1a}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:#999;font-size:1.1rem}.no-sensors-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#fffffff2;padding:1.5rem 2rem;border-radius:12px;box-shadow:0 4px 20px #00000026;text-align:center;pointer-events:none}.no-sensors-overlay p{margin:0;color:#666;font-size:1rem;font-weight:500}.context-menu{position:fixed;z-index:1000;background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 4px 16px #00000026;padding:4px 0;min-width:170px}.context-menu-item{display:block;width:100%;padding:8px 14px;background:none;border:none;text-align:left;font-size:.82rem;color:#333;cursor:pointer;transition:background .12s}.context-menu-item:hover{background:#f0f0f0}.context-menu-item--save{color:#2e7d32;font-weight:600}.context-menu-item--cancel{color:#c62828}body.dark-mode .cartography{background:transparent}body.dark-mode .cartography-header{background:transparent;border-bottom:none}body.dark-mode .cartography-header h2{color:#aaa}body.dark-mode .empty-state{color:#888}body.dark-mode .no-sensors-overlay{background:#2a2a2af2;border:1px solid rgba(255,255,255,.1)}body.dark-mode .no-sensors-overlay p{color:#ccc}body.dark-mode .context-menu{background:#2a2a2a;border-color:#ffffff1f}body.dark-mode .context-menu-item{color:#ddd}body.dark-mode .context-menu-item:hover{background:#3a3a3a}.gateway-marker-icon{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));cursor:pointer}.gateway-marker-icon--editing{filter:brightness(0) invert(1) drop-shadow(0 2px 4px rgba(0,0,0,.5));cursor:grab}.leaflet-marker-draggable.gateway-marker-icon--editing:active{cursor:grabbing}.gateway-tooltip-leaflet{border-radius:8px;padding:.5rem;min-width:210px;white-space:nowrap}.tooltip-header{display:flex;justify-content:center;font-size:.7rem;color:#333}.tooltip-divider{border:none;border-top:1px solid #e0e0e0;margin:.4rem 0}.tooltip-info{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}.tooltip-row{display:flex;align-items:center;gap:.1rem;font-size:.7rem;font-weight:500;color:#333}body.dark-mode .gateway-tooltip-leaflet{background:#2a2a2a;border-color:#2a2a2a;color:#eee}body.dark-mode .leaflet-tooltip-top.gateway-tooltip-leaflet:before{border-top-color:#2a2a2a}body.dark-mode .leaflet-tooltip-bottom.gateway-tooltip-leaflet:before{border-bottom-color:#2a2a2a}.sensor-marker-icon{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));cursor:pointer}.sensor-marker-icon--editing{filter:brightness(0) invert(1) drop-shadow(0 2px 4px rgba(0,0,0,.5));cursor:grab}.leaflet-marker-draggable.sensor-marker-icon--editing:active{cursor:grabbing}.sensor-tooltip-leaflet{border-radius:8px;padding:.5rem;min-width:220px}.tooltip-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;font-size:.7rem;width:100%;gap:8px}.tooltip-type{font-size:.65rem;color:#888;background:#f0f0f0;border-radius:4px;padding:1px 5px}.tooltip-datetime{display:flex;flex-direction:row;justify-content:center;gap:4px;font-size:.65rem;color:#888;margin-top:3px}.tooltip-header-metrics{display:flex;flex-direction:row;gap:12px;margin-top:6px}.tooltip-divider{border:none;border-top:1px solid #e0e0e0;margin:.5rem 0}.tooltip-info{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.tooltip-row{display:flex;align-items:center;justify-content:flex-start;gap:.5rem;font-size:.7rem;color:#333}.tooltip-icon{width:16px;height:16px;flex-shrink:0}.tooltip-row--center{justify-content:center;width:100%}.tooltip-npk{gap:10px;margin-left:4px}.battery-low{color:#dc3545!important;font-weight:600}.battery-icon-low{filter:brightness(0) saturate(100%) invert(27%) sepia(98%) saturate(3116%) hue-rotate(346deg) brightness(90%) contrast(92%)}body.dark-mode .sensor-tooltip-leaflet{background:#2a2a2a;border-color:#2a2a2a;color:#eee}body.dark-mode .leaflet-tooltip-top.sensor-tooltip-leaflet:before{border-top-color:#2a2a2a}body.dark-mode .leaflet-tooltip-bottom.sensor-tooltip-leaflet:before{border-bottom-color:#2a2a2a}body.dark-mode .tooltip-header strong{color:#fff}body.dark-mode .tooltip-type{background:#3a3a3a;color:#aaa}body.dark-mode .tooltip-datetime{color:#888}body.dark-mode .tooltip-date{color:#ccc}body.dark-mode .tooltip-divider{border-top-color:#ffffff1a}body.dark-mode .tooltip-row{color:#ccc}body.dark-mode .tooltip-icon{filter:brightness(0) invert(1)}body.dark-mode .battery-low{color:#ff6b6b!important}body.dark-mode .battery-icon-low{filter:brightness(0) saturate(100%) invert(53%) sepia(77%) saturate(2445%) hue-rotate(329deg) brightness(101%) contrast(101%)}.modal-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:2000;padding:1rem}.modal{background:#fff;border-radius:14px;width:100%;max-width:500px;box-shadow:0 8px 40px #0000002e;display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(0,0,0,.08)}.modal-header h2{margin:0;font-size:1.15rem;font-weight:700;color:#1a1a1a}.modal-close{background:none;border:none;font-size:1.25rem;color:#888;cursor:pointer;padding:.25rem;line-height:1;border-radius:4px}.modal-close:hover{color:#333;background:#0000000f;border-color:transparent}.modal-body{overflow-y:auto;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid rgba(0,0,0,.08)}.modal .form-group{display:flex;flex-direction:column;gap:.35rem}.modal .form-group label{font-size:.85rem;font-weight:600;color:#444}.modal .form-group input,.modal .form-group select{padding:.7rem .9rem;border:1.5px solid #e0e0e0;border-radius:8px;font-size:.95rem;color:#333;outline:none;transition:border-color .2s;background:#fff}.modal .form-group input:focus,.modal .form-group select:focus{border-color:#0bca4a}.modal .form-group input.error,.modal .form-group select.error{border-color:#dc3545}.modal .field-error{font-size:.8rem;color:#dc3545;margin:0}.modal .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.modal .form-group--switch{flex-direction:row;align-items:center;justify-content:space-between}.modal .form-group--switch label{font-size:.9rem}.switch{position:relative;width:44px;height:24px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch-slider{position:absolute;inset:0;background:#ccc;border-radius:24px;cursor:pointer;transition:background .2s}.switch-slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s}.switch input:checked+.switch-slider{background:#0bca4a}.switch input:checked+.switch-slider:before{transform:translate(20px)}.switch input:disabled+.switch-slider{opacity:.5;cursor:not-allowed}.modal-meta{margin:0;font-size:.88rem;color:#666;padding:.5rem .75rem;background:#f5f5f5;border-radius:7px;border-left:3px solid #0bca4a}body.dark-mode .modal-meta{background:#252525;color:#aaa}.modal-error{padding:.75rem 1rem;background:#dc354514;border:1px solid rgba(220,53,69,.3);border-radius:8px;color:#dc3545;font-size:.875rem;margin:0}.modal-warning{padding:.75rem 1rem;background:#f59e0b1a;border:1px solid rgba(245,158,11,.4);border-radius:8px;color:#92400e;font-size:.875rem;margin:0}.btn{padding:.65rem 1.25rem;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:opacity .2s,transform .1s;border:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:hover:not(:disabled){opacity:.88;transform:translateY(-1px)}.btn-primary{background:linear-gradient(135deg,#0bca4a,#08a03d);color:#fff}.btn-secondary{background:#f0f0f0;color:#444}.btn-secondary:hover:not(:disabled){background:#e4e4e4}.btn-danger{background:linear-gradient(135deg,#dc3545,#b02a37);color:#fff}body.dark-mode .modal{background:#1e1e1e;color:#eee}body.dark-mode .modal-header h2{color:#eee}body.dark-mode .modal .form-group label{color:#ccc}body.dark-mode .modal .form-group input,body.dark-mode .modal .form-group select{background:#2a2a2a;border-color:#444;color:#eee}body.dark-mode .btn-secondary{background:#333;color:#ccc}.modal-image-section{border-top:1px solid rgba(0,0,0,.08);padding-top:1rem;display:flex;flex-direction:column;gap:.5rem}.modal-image-title{font-size:.85rem;font-weight:600;color:#444}.modal-image-preview{width:100%;max-height:200px;object-fit:contain;border-radius:8px;border:1px solid #e0e0e0;background:#f9f9f9}.modal-image-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.modal-image-upload-btn{padding:.65rem 1.25rem;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;background:#f0f0f0;color:#444;transition:opacity .2s,background .2s;border:none;display:inline-block;line-height:1}.modal-image-upload-btn:hover:not(.disabled){background:#e4e4e4}.modal-image-upload-btn.disabled{opacity:.55;cursor:not-allowed}.modal-image-spinner{font-size:.85rem;color:#666}.modal-image-error{font-size:.85rem;color:#dc3545;margin:0}.modal-header-thumb{width:48px;height:48px;object-fit:cover;border-radius:6px;cursor:pointer;border:2px solid transparent;transition:border-color .2s;flex-shrink:0}.modal-header-thumb:hover{border-color:#0bca4a}.modal-lightbox{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:3000;cursor:pointer}.modal-lightbox-img{max-width:90vw;max-height:90vh;border-radius:8px;object-fit:contain;cursor:default}.modal-lightbox-close{position:absolute;top:1rem;right:1rem;background:#ffffff26;border:none;color:#fff;font-size:1.25rem;width:2.5rem;height:2.5rem;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.modal-lightbox-close:hover{background:#ffffff4d;border-color:transparent}body.dark-mode .modal-image-title{color:#ccc}body.dark-mode .modal-image-preview{border-color:#444;background:#252525}body.dark-mode .modal-image-upload-btn{background:#333;color:#ccc}body.dark-mode .modal-image-upload-btn:hover:not(.disabled){background:#444}body.dark-mode .modal-image-section{border-top-color:#ffffff14}.modal-toggle-row{display:flex;align-items:center;gap:10px;padding:4px 0}.modal-toggle{position:relative;display:inline-block;width:38px;height:22px;flex-shrink:0;cursor:pointer}.modal-toggle input{opacity:0;width:0;height:0;position:absolute}.modal-toggle-slider{position:absolute;inset:0;background:#d1d5db;border-radius:22px;transition:background .18s}.modal-toggle-slider:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .18s;box-shadow:0 1px 3px #0003}.modal-toggle input:checked+.modal-toggle-slider{background:#2e8b47}.modal-toggle input:checked+.modal-toggle-slider:before{transform:translate(16px)}.modal-toggle-desc{font-size:.83rem;color:#374151}.modal-toggle-desc--disabled{color:#ef4444;font-weight:600}body.dark-mode .modal-toggle-desc{color:#d1d5db}body.dark-mode .modal-toggle-slider{background:#4b5563}.gw-info-modal{max-width:640px}.gw-info-state{text-align:center;padding:24px 0;color:#9ca3af;font-style:italic;margin:0}.gw-info-error{color:#dc2626;font-style:normal}.gw-info-section{display:flex;flex-direction:column;gap:8px}.gw-info-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6b7280;margin:0;padding-bottom:4px;border-bottom:1px solid #f3f4f6}.gw-info-grid{display:grid;grid-template-columns:120px 1fr;gap:6px 12px;align-items:baseline}.gw-info-label{font-size:12px;font-weight:600;color:#6b7280;white-space:nowrap}.gw-info-value{font-size:13px;color:#111827}.gw-info-badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600;background:#f3f4f6;color:#374151;text-transform:capitalize}.gw-info-badge--on{background:#d1fae5;color:#065f46}.gw-info-badge--off{background:#fee2e2;color:#991b1b}.gw-info-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:0 5px;background:#e5e7eb;color:#374151;border-radius:9px;font-size:11px;font-weight:600;vertical-align:middle;margin-left:6px}.gw-info-devices-table{width:100%;border-collapse:collapse;font-size:12px;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.gw-info-devices-table thead tr{background:#f9fafb}.gw-info-devices-table th{padding:7px 12px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;border-bottom:1px solid #e5e7eb}.gw-info-devices-table td{padding:7px 12px;color:#374151;border-bottom:1px solid #f3f4f6}.gw-info-devices-table tbody tr:last-child td{border-bottom:none}.gw-info-mono{font-family:monospace;font-size:12px;color:#374151}.control-panel{display:flex;flex-direction:column;height:100%;overflow:hidden;font-family:DM Sans,sans-serif;font-size:13px;color:#1a2228}.control-panel-header{padding:12px 14px 0;flex-shrink:0}.control-panel-header h2{margin:0 0 10px;font-size:13px;font-weight:600;color:#1a2228;letter-spacing:.03em}.control-panel-content{flex:1;padding:0 14px 14px;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.disconnection-warning{font-size:11px;font-weight:600;color:#ef4444;text-align:center;padding:6px 10px;background:#fef2f2;border-radius:6px;margin-bottom:8px}.last-update-text{font-size:11px;color:#9ba3ab;margin:6px 0 0;text-align:right}.main-accordion-container{display:flex;flex-direction:column;gap:16px}.accordion-section{width:100%}.accordion-header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:#fff;border:1px solid #e2e6e9;border-radius:8px;cursor:pointer;font-size:12px;font-weight:600;color:#1a2228;transition:background .15s;font-family:DM Sans,sans-serif}.accordion-header:hover{background:#f4f5f6}.accordion-header.open{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}.accordion-arrow{font-size:.6rem;color:#9ba3ab;transition:transform .2s}.accordion-arrow.open{transform:rotate(180deg)}.accordion-content{max-height:0;overflow:hidden;transition:max-height .35s ease;border:1px solid transparent;border-top:none;border-bottom-left-radius:8px;border-bottom-right-radius:8px}.accordion-content.open{max-height:5000px;border-color:#e2e6e9}.accordion-panel{padding:16px;background:#fff;border-bottom-left-radius:8px;border-bottom-right-radius:8px}.pill-tabs{display:flex;gap:4px;background:#f4f5f6;border-radius:8px;padding:4px}.pill-tab{flex:1;padding:8px 0;background:transparent;border:none;border-radius:6px;font-size:11px;font-weight:500;color:#9ba3ab;cursor:pointer;transition:all .15s;font-family:DM Sans,sans-serif;text-align:center}.pill-tab:hover{color:#1a2228}.pill-tab.active{background:#fff;color:#1a2228;font-weight:600;box-shadow:0 1px 3px #00000014}.sensor-selector{position:relative;width:100%;margin-bottom:8px}.sensor-selector-header{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;background:#f4f5f6;border:1px solid #e2e6e9;border-radius:8px;cursor:pointer;transition:border-color .15s;font-family:DM Sans,sans-serif}.sensor-selector-header:hover{border-color:#2e8b47}.sensor-count{font-size:12px;font-weight:500;color:#1a2228}.dropdown-arrow{font-size:.6rem;color:#9ba3ab;transition:transform .2s}.dropdown-arrow.open{transform:rotate(180deg)}.sensor-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #e2e6e9;border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:1000;max-height:260px;overflow:hidden;display:flex;flex-direction:column}.dropdown-header{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-bottom:1px solid #e2e6e9;background:#f4f5f6}.dropdown-title{font-size:11px;font-weight:600;color:#5a6472;text-transform:uppercase;letter-spacing:.04em}.select-all-btn{background:#2e8b47;border:none;border-radius:5px;padding:3px 8px;cursor:pointer;transition:background .15s;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px}.select-all-btn:hover{background:#1a6b2e}.list-icon{color:#fff;font-size:12px}.sensor-list{overflow-y:auto;max-height:200px}.sensor-item{display:flex;align-items:center;padding:6px 10px;cursor:pointer;transition:background .15s;gap:6px}.sensor-item:hover{background:#f4f5f6}.sensor-item input[type=checkbox]{width:13px;height:13px;cursor:pointer;accent-color:#2e8b47;flex-shrink:0}.sensor-label{flex:1;font-size:12px;color:#1a2228;font-weight:500}.sensor-temp{font-size:11px;color:#9ba3ab}.offline-only-display{display:flex;flex-direction:column;align-items:center;gap:10px;padding:24px 16px}.offline-status-label{display:inline-block;background:#fef2f2;color:#ef4444;font-size:13px;font-weight:700;letter-spacing:.04em;padding:5px 18px;border-radius:20px;border:1px solid #fecaca}.sensor-disconnected-message{font-size:11px;color:#ef4444;font-weight:500;margin:4px 0}.low-battery-warning{font-size:11px;color:#f59e0b;font-weight:500;margin:4px 0}.disabled-status-label{display:inline-block;background:#f3f4f6;color:#6b7280;font-size:13px;font-weight:700;letter-spacing:.04em;padding:5px 18px;border-radius:20px;border:1px solid #d1d5db}body.dark-mode .disabled-status-label{background:#6b728026;color:#9ca3af;border-color:#6b72804d}.sensor-disabled-message{font-size:11px;color:#6b7280;font-weight:500;margin:4px 0}.gw-cards-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.gw-card{background:#f4f5f6;border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:5px}.gw-card-icon-box{width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}.gw-card-value{font-size:14px;font-weight:700;color:#1a2228;line-height:1}.gw-card-label{font-size:9px;font-weight:500;color:#9ba3ab;text-transform:uppercase;letter-spacing:.04em}.gw-card-bar-track{height:3px;background:#e2e6e9;border-radius:2px;overflow:hidden}.gw-card-bar-fill{height:100%;border-radius:2px}.tab-panel{padding:0;margin-top:12px}.tab-panel h3{margin:0 0 10px;font-size:12px;font-weight:600;color:#5a6472;text-transform:uppercase;letter-spacing:.04em}.stats-section-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#888;margin:10px 0 6px}.stats-section-label:first-of-type{margin-top:0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.stat-card{background:#f4f5f6;border-radius:8px;padding:14px 12px;display:flex;align-items:center;gap:12px;position:relative}.stat-card-empty{opacity:.5}.sensor-count-badge{position:absolute;top:5px;right:6px;background:#d4f0dc;color:#1a6b2e;border:none;font-size:9px;font-weight:700;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center}.stat-icon{font-size:1.2rem;line-height:1;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon img{width:26px;height:26px;object-fit:contain}.stat-icon-label{font-size:14px;font-weight:700;color:#5a6472}.stat-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.stat-label{font-size:10px;font-weight:500;color:#9ba3ab;line-height:1.2}.stat-value{font-size:15px;font-weight:600;color:#1a2228;line-height:1.1}.battery-report-row{display:flex;justify-content:flex-end;margin-top:8px}.pdf-report-btn{display:flex;align-items:center;gap:5px;padding:5px 10px;background:#f0fdf4;border:1px solid #86efac;border-radius:6px;font-size:11px;font-weight:600;color:#166534;cursor:pointer;font-family:DM Sans,sans-serif;transition:background .15s,border-color .15s}.pdf-report-btn:hover:not(:disabled){background:#dcfce7;border-color:#4ade80}.pdf-report-btn:disabled{opacity:.6;cursor:not-allowed}body.dark-mode .pdf-report-btn{background:#2e8b4726;border-color:#2e8b4766;color:#6fcf87}body.dark-mode .pdf-report-btn:hover:not(:disabled){background:#2e8b4740}.loading-message{font-size:12px;color:#9ba3ab;text-align:center;padding:20px 0}.no-sensors-message{display:flex;align-items:center;justify-content:center;min-height:120px;text-align:center}.no-sensors-message p{font-size:12px;color:#9ba3ab;margin:0}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:#9ba3ab;font-size:12px}body.dark-mode .control-panel{background:transparent}body.dark-mode .control-panel-header h2{color:#e0e0e0}body.dark-mode .disconnection-warning{background:#ef444426}body.dark-mode .accordion-header{background:#252525;border-color:#ffffff14;color:#e0e0e0}body.dark-mode .accordion-header:hover{background:#2a2a2a}body.dark-mode .accordion-header.open{border-bottom-color:transparent}body.dark-mode .accordion-content{border-color:#ffffff14}body.dark-mode .accordion-panel{background:#1e1e1e}body.dark-mode .pill-tabs{background:#252525}body.dark-mode .pill-tab{color:#5a6472}body.dark-mode .pill-tab:hover{color:#e0e0e0}body.dark-mode .pill-tab.active{background:#2e2e2e;color:#e0e0e0;box-shadow:0 1px 3px #0000004d}body.dark-mode .gw-card{background:#252525}body.dark-mode .gw-card-value{color:#e0e0e0}body.dark-mode .gw-card-bar-track{background:#333}body.dark-mode .sensor-selector-header{background:#252525;border-color:#ffffff14}body.dark-mode .sensor-selector-header:hover{border-color:#2e8b47}body.dark-mode .sensor-count{color:#e0e0e0}body.dark-mode .sensor-dropdown{background:#1e1e1e;border-color:#ffffff14;box-shadow:0 4px 16px #0006}body.dark-mode .dropdown-header{background:#252525;border-bottom-color:#ffffff14}body.dark-mode .sensor-item:hover{background:#252525}body.dark-mode .sensor-label{color:#e0e0e0}body.dark-mode .sensor-temp{color:#5a6472}body.dark-mode .tab-panel h3{color:#9ba3ab}body.dark-mode .stat-card{background:#252525}body.dark-mode .stat-value{color:#e0e0e0}body.dark-mode .stat-label{color:#5a6472}body.dark-mode .sensor-count-badge{background:#2e8b4733;color:#6fcf87}body.dark-mode .last-update-text,body.dark-mode .no-sensors-message p,body.dark-mode .empty-state,body.dark-mode .loading-message{color:#5a6472}.soil-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:0}.soil-section-header .stats-section-label{margin-bottom:0}.log-irr-btn{padding:4px 12px;border:1.5px solid #1565C0;background:#fff;color:#1565c0;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;font-family:DM Sans,sans-serif;transition:background .15s,color .15s;white-space:nowrap}.log-irr-btn:hover{background:#e3f2fd}body.dark-mode .log-irr-btn{background:#1e1e1e;border-color:#4fc3f7;color:#4fc3f7}body.dark-mode .log-irr-btn:hover{background:#4fc3f71a}.irr-modal-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000}.irr-modal{background:#fff;border-radius:14px;padding:28px 28px 22px;width:320px;box-shadow:0 8px 32px #0000002e;display:flex;flex-direction:column;gap:14px;font-family:DM Sans,sans-serif}.irr-modal-title{font-size:16px;font-weight:700;color:#1565c0;margin:0}.irr-modal-sub{font-size:12px;color:#9ca3af;margin:-8px 0 0}.irr-modal-label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:#374151}.irr-modal-input{padding:8px 10px;border:1.5px solid #d1d5db;border-radius:7px;font-size:13px;font-family:DM Sans,sans-serif;color:#111827;outline:none;transition:border-color .15s}.irr-modal-input:focus{border-color:#1565c0}.irr-modal-error{font-size:12px;color:#dc2626;margin:0}.irr-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.irr-modal-cancel{padding:7px 16px;border:1px solid #d1d5db;background:#fff;color:#6b7280;border-radius:7px;font-size:13px;font-family:DM Sans,sans-serif;cursor:pointer}.irr-modal-submit{padding:7px 18px;border:none;background:#1565c0;color:#fff;border-radius:7px;font-size:13px;font-weight:600;font-family:DM Sans,sans-serif;cursor:pointer;transition:opacity .15s}.irr-modal-submit:hover:not(:disabled){opacity:.88}.irr-modal-submit:disabled{opacity:.5;cursor:not-allowed}body.dark-mode .irr-modal{background:#1e1e1e;box-shadow:0 8px 32px #00000080}body.dark-mode .irr-modal-title{color:#4fc3f7}body.dark-mode .irr-modal-label{color:#d1d5db}body.dark-mode .irr-modal-input{background:#252525;border-color:#333;color:#f3f4f6}body.dark-mode .irr-modal-input:focus{border-color:#4fc3f7}body.dark-mode .irr-modal-cancel{background:#252525;border-color:#333;color:#9ca3af}body.dark-mode .irr-modal-submit{background:#1565c0}.soil-status-widget{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;margin-bottom:10px;font-size:12px;border-left:4px solid transparent}.soil-status-loading{color:#999;font-size:11px;background:transparent}.soil-status-ok{background:#f0fdf4;border-color:#22c55e}.soil-status-warning{background:#fff7ed;border-color:#f97316}.soil-status-critical{background:#fef2f2;border-color:#ef4444}.soil-status-overdue{background:#fef2f2;border-color:#dc2626}.soil-status-wet{background:#eff6ff;border-color:#3b82f6}.soil-status-badge{font-size:10px;font-weight:700;letter-spacing:.04em;padding:3px 7px;border-radius:4px;white-space:nowrap;flex-shrink:0}.soil-status-ok .soil-status-badge{background:#dcfce7;color:#15803d}.soil-status-warning .soil-status-badge{background:#ffedd5;color:#c2410c}.soil-status-critical .soil-status-badge{background:#fee2e2;color:#b91c1c}.soil-status-overdue .soil-status-badge{background:#dc2626;color:#fff}.soil-status-wet .soil-status-badge{background:#dbeafe;color:#1d4ed8}.soil-status-body{display:flex;flex-direction:column;gap:3px;flex:1}.soil-status-row{display:flex;align-items:center;gap:10px}.soil-status-moisture{font-size:16px;font-weight:700;color:#1a2228}.soil-status-trend{font-size:11px;color:#888}.soil-status-meta{font-size:11px;color:#666}.soil-status-meta strong{color:#1a2228}body.dark-mode .soil-status-ok{background:#22c55e14;border-color:#22c55e}body.dark-mode .soil-status-warning{background:#f973161a;border-color:#f97316}body.dark-mode .soil-status-critical{background:#ef44441a;border-color:#ef4444}body.dark-mode .soil-status-overdue{background:#dc262626;border-color:#dc2626}body.dark-mode .soil-status-wet{background:#3b82f61a;border-color:#3b82f6}body.dark-mode .soil-status-moisture{color:#f1f5f9}body.dark-mode .soil-status-meta{color:#9ca3af}body.dark-mode .soil-status-meta strong{color:#f1f5f9}.irr-logs-list{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow-y:auto;margin-bottom:4px}.irr-log-row{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;background:#f0f7ff;font-size:12px}.irr-log-date{color:#555;flex-shrink:0}.irr-log-vol{font-weight:600;color:#1565c0;flex-shrink:0}.irr-log-notes{color:#777;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.irr-log-delete{background:none;border:none;cursor:pointer;font-size:14px;opacity:.5;padding:0 2px;flex-shrink:0;line-height:1}.irr-log-delete:hover{opacity:1}.irr-logs-empty{font-size:12px;color:#aaa;margin:2px 0 6px}.irr-modal-divider{border:none;border-top:1px solid #e5e7eb;margin:8px 0 12px}body.dark-mode .irr-log-row{background:#1565c026}body.dark-mode .irr-log-date{color:#9ca3af}body.dark-mode .irr-log-vol{color:#4fc3f7}body.dark-mode .irr-log-notes{color:#6b7280}body.dark-mode .irr-modal-divider{border-color:#374151}.sensor-graphs{display:flex;flex-direction:column;gap:6px;padding:0}.graph-container{background:#f4f5f6;border-radius:8px;padding:10px 12px;transition:background .15s;font-family:DM Sans,sans-serif}.graph-container.is-collapsed{padding:10px 12px}.graph-container.clickable{cursor:pointer}.graph-container:hover{background:#eaecee}.graph-header{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid transparent;transition:all .2s ease}.graph-header.is-expanded{padding-bottom:8px;border-bottom:1.5px solid #e2e6e9;margin-bottom:10px}.graph-content{padding-top:4px}.graph-title{margin:0;font-size:.8rem;font-weight:600;color:#5a6472;text-transform:uppercase;letter-spacing:.04em}.graph-fullscreen-btn{background:transparent;border:1.5px solid #2e8b47;color:#2e8b47;font-size:1rem;width:26px;height:26px;border-radius:6px;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;padding:0}.graph-fullscreen-btn:hover{background:#2e8b47;color:#fff}.graph-accordion-header{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease}.graph-accordion-header:hover{background-color:transparent}.graph-header-actions{display:flex;align-items:center;gap:8px}.graph-accordion-icon{color:#9ba3ab;font-size:.6rem;transition:transform .2s ease;display:inline-block}.gateway-id-text{margin-bottom:8px;color:#9ba3ab;font-size:.8rem}.no-sensors-message{display:flex;align-items:center;justify-content:center;min-height:300px;text-align:center}.no-sensors-message p{font-size:1.1rem;color:#999;margin:0}body.dark-mode .graph-container{background:#252525}body.dark-mode .graph-container:hover{background:#2a2a2a}body.dark-mode .graph-header{border-bottom:1.5px solid transparent}body.dark-mode .graph-header.is-expanded{border-bottom-color:#333}body.dark-mode .graph-title{color:#fff}body.dark-mode .graph-fullscreen-btn{border-color:#2e8b47;color:#2e8b47}body.dark-mode .graph-fullscreen-btn:hover{background:#2e8b47;color:#2a2a2a}body.dark-mode .graph-accordion-header:hover{background-color:#0bca4a1a}body.dark-mode .graph-accordion-icon{color:#2e8b47}body.dark-mode .no-sensors-message p{color:#888}body.dark-mode .gateway-id-text{color:#aaa}@media(max-width:768px){.graph-container{padding:1rem}.graph-title{font-size:1rem}.graph-fullscreen-btn{width:32px;height:32px;font-size:1.1rem}}.graph-modal-overlay{position:fixed;inset:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:9999;padding:2rem;animation:fadeIn .2s ease-in-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.graph-modal-content{background:#fff;border-radius:16px;width:95%;height:90%;max-width:1400px;max-height:900px;padding:2rem;position:relative;box-shadow:0 10px 40px #0000004d;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.graph-modal-close{position:absolute;top:1rem;right:1rem;background:transparent;border:2px solid #2e8b47;color:#2e8b47;font-size:1.5rem;font-weight:700;width:36px;height:36px;border-radius:6px;cursor:pointer;transition:all .2s ease;z-index:10;padding:0;line-height:1;display:flex;align-items:center;justify-content:center}.graph-modal-close:hover{background:#2e8b47;color:#fff;transform:scale(1.05)}.graph-modal-title{margin:0 0 1.5rem;font-size:1.5rem;font-weight:600;color:#333;padding-bottom:1rem;border-bottom:3px solid #2e8b47}body.dark-mode .graph-modal-content{background:#2a2a2a}body.dark-mode .graph-modal-title{color:#fff}@media(max-width:768px){.graph-modal-overlay{padding:1rem}.graph-modal-content{width:100%;height:95%;padding:1.5rem}.graph-modal-title{font-size:1.2rem}.graph-modal-close{width:32px;height:32px;font-size:1.3rem}}.date-range-picker{margin-bottom:8px;padding:8px 10px;background:#fff;border-radius:8px;border:1px solid #e2e6e9}.date-range-inputs{display:flex;align-items:flex-end;gap:.75rem;flex-wrap:wrap}.date-range-field{display:flex;flex-direction:column;gap:.3rem}.date-range-label{font-size:10px;font-weight:600;color:#5a6472;text-transform:uppercase;letter-spacing:.04em}.date-range-input{padding:5px 8px;border:1px solid #e2e6e9;border-radius:7px;font-size:12px;color:#1a2228;background:#fff;cursor:pointer;transition:border-color .15s;outline:none;font-family:DM Sans,sans-serif}.date-range-input:focus{border-color:#2e8b47;box-shadow:0 0 0 3px #0bca4a26}.date-range-input.has-error{border-color:#e53e3e;box-shadow:0 0 0 3px #e53e3e1f}.date-range-separator{color:#aaa;font-size:1.1rem;padding-bottom:.45rem;font-weight:300}.date-range-apply-btn{padding:5px 12px;background:#2e8b47;color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s;white-space:nowrap;align-self:flex-end;font-family:DM Sans,sans-serif}.date-range-apply-btn:hover:not(:disabled){background:#1a6b2e;transform:translateY(-1px)}.date-range-apply-btn:active:not(:disabled){transform:translateY(0)}.date-range-apply-btn:disabled{opacity:.45;cursor:not-allowed}.date-range-error{margin:.5rem 0 0;font-size:.8rem;color:#e53e3e;font-weight:500}body.dark-mode .date-range-picker{background:#333;border-color:#444}body.dark-mode .date-range-label{color:#aaa}body.dark-mode .date-range-input{background:#2a2a2a;color:#eee;border-color:#555}body.dark-mode .date-range-input:focus{border-color:#2e8b47;box-shadow:0 0 0 3px #0bca4a33}body.dark-mode .date-range-input.has-error{border-color:#fc8181}body.dark-mode .date-range-separator{color:#666}body.dark-mode .date-range-error{color:#fc8181}@media(max-width:600px){.date-range-inputs{flex-direction:column;align-items:stretch}.date-range-separator{display:none}.date-range-apply-btn{width:100%;padding:.6rem}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f0f9f4,#e8f5e9)}.login-card{background:#fff;border-radius:16px;padding:2.5rem;width:100%;max-width:400px;box-shadow:0 8px 32px #0000001a}.login-card h1{margin:0 0 .25rem;font-size:1.8rem;font-weight:700;color:#0bca4a;text-align:center}.login-subtitle{margin:0 0 2rem;font-size:.9rem;color:#888;text-align:center}.login-form{display:flex;flex-direction:column;gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group label{font-size:.875rem;font-weight:600;color:#444}.form-group input[type=email],.form-group input[type=password]{padding:.75rem 1rem;border:1.5px solid #e0e0e0;border-radius:8px;font-size:.95rem;color:#333;transition:border-color .2s;outline:none}.form-group input[type=email]:focus,.form-group input[type=password]:focus{border-color:#0bca4a}.form-group--checkbox{flex-direction:row;align-items:center}.form-group--checkbox label{display:flex;align-items:center;gap:.5rem;font-weight:500;cursor:pointer}.form-group--checkbox input[type=checkbox]{width:16px;height:16px;accent-color:#0bca4a;cursor:pointer}.login-error{margin:0;padding:.75rem 1rem;background:#dc354514;border:1px solid rgba(220,53,69,.3);border-radius:8px;color:#dc3545;font-size:.875rem}.login-button{padding:.875rem;background:linear-gradient(135deg,#0bca4a,#08a03d);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .2s,transform .1s}.login-button:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.login-button:disabled{opacity:.6;cursor:not-allowed}.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;display:flex;flex-direction:column;gap:.75rem;z-index:9999;pointer-events:none}.toast{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;border-radius:10px;box-shadow:0 4px 20px #00000026;font-size:.9rem;font-weight:500;min-width:280px;max-width:420px;pointer-events:all;animation:toast-in .25s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.toast--success{background:#fff;border-left:4px solid #0bca4a;color:#1a1a1a}.toast--error{background:#fff;border-left:4px solid #dc3545;color:#1a1a1a}.toast--warning{background:#fff;border-left:4px solid #f59e0b;color:#1a1a1a}.toast--info{background:#fff;border-left:4px solid #3b82f6;color:#1a1a1a}.toast-icon{font-size:1rem;flex-shrink:0}.toast--success .toast-icon{color:#0bca4a}.toast--error .toast-icon{color:#dc3545}.toast--warning .toast-icon{color:#f59e0b}.toast--info .toast-icon{color:#3b82f6}.toast-message{flex:1}.toast-close{background:none;border:none;padding:0;font-size:.8rem;color:#999;cursor:pointer;flex-shrink:0;line-height:1}.toast-close:hover{color:#333;border-color:transparent}body.dark-mode .toast{background:#2a2a2a;color:#eee}.users-page{padding:20px 24px;height:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:14px;font-family:DM Sans,sans-serif;font-size:13px;color:#1a2228;background:#f4f5f6;overflow-y:auto}.users-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}.users-title{margin:0 0 2px;font-size:15px;font-weight:700;color:#1a2228;letter-spacing:.01em}.users-subtitle{margin:0;font-size:12px;color:#9ba3ab;font-weight:400}.users-filters{display:flex;gap:8px;flex-shrink:0;flex-wrap:wrap}.filter-search{flex:1;min-width:180px;padding:7px 10px;border:1px solid #e2e6e9;border-radius:8px;font-size:12px;font-family:DM Sans,sans-serif;outline:none;color:#1a2228;background:#fff;transition:border-color .15s}.filter-search::placeholder{color:#9ba3ab}.filter-search:focus{border-color:#2e8b47;box-shadow:0 0 0 3px #2e8b471f}.filter-select{padding:7px 10px;border:1px solid #e2e6e9;border-radius:8px;font-size:12px;font-family:DM Sans,sans-serif;outline:none;color:#1a2228;background:#fff;cursor:pointer;transition:border-color .15s}.filter-select:focus{border-color:#2e8b47;box-shadow:0 0 0 3px #2e8b471f}.users-table-wrapper{background:#fff;border-radius:10px;border:1px solid #e2e6e9;overflow:hidden;flex:1;min-height:0;overflow-y:auto}.users-table{width:100%;border-collapse:collapse;font-size:12px}.users-table th{padding:10px 14px;text-align:left;font-size:10px;font-weight:600;color:#9ba3ab;text-transform:uppercase;letter-spacing:.05em;background:#f4f5f6;border-bottom:1px solid #e2e6e9;position:sticky;top:0}.users-table td{padding:10px 14px;border-bottom:1px solid #f0f2f4;color:#1a2228;vertical-align:middle}.users-table tr:last-child td{border-bottom:none}.users-table tbody tr:hover{background:#fafbfc}.users-row--self{background:#2e8b4708}.users-cell-email{font-weight:500;display:flex;align-items:center;gap:6px}.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600;line-height:1.5}.badge--self{background:#2e8b471f;color:#2e8b47}.badge--role.badge--admin{background:#3b82f61a;color:#1d4ed8}.badge--role.badge--operator_ft{background:#f59e0b1a;color:#92400e}.badge--role.badge--operator_cr{background:#14b8a61a;color:#0f766e}.badge--role.badge--visitor{background:#6b72801a;color:#374151}.badge--role.badge--owner{background:#8b5cf61a;color:#6d28d9}.badge--role.badge--manager{background:#2e8b471a;color:#2e8b47}.badge--role.badge--agri_engineer{background:#84cc161a;color:#4d7c0f}.badge--active{background:#2e8b471a;color:#2e8b47}.badge--inactive{background:#dc354514;color:#b02a37}.text-muted{color:#9ba3ab}.users-actions{display:flex;gap:4px}.action-btn{background:none;border:none;padding:5px;border-radius:6px;cursor:pointer;font-size:14px;transition:background .15s;line-height:1}.action-btn:hover:not(:disabled){background:#f4f5f6}.action-btn:disabled{opacity:.25;cursor:not-allowed}.users-pagination{display:flex;align-items:center;justify-content:center;gap:12px;flex-shrink:0;padding-bottom:4px}.pagination-info{font-size:12px;color:#9ba3ab}.users-loading,.users-empty{padding:48px;text-align:center;color:#9ba3ab;font-size:12px}.btn{padding:7px 14px;border-radius:8px;font-size:12px;font-weight:600;font-family:DM Sans,sans-serif;cursor:pointer;transition:background .15s,transform .1s;border:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn-primary{background:#2e8b47;color:#fff}.btn-primary:hover:not(:disabled){background:#1a6b2e}.btn-secondary{background:#f4f5f6;color:#1a2228;border:1px solid #e2e6e9}.btn-secondary:hover:not(:disabled){background:#eaecee}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}body.dark-mode .users-page{background:#141414;color:#e0e0e0}body.dark-mode .users-title{color:#e0e0e0}body.dark-mode .users-subtitle{color:#5a6472}body.dark-mode .users-table-wrapper{background:#1e1e1e;border-color:#2a2a2a}body.dark-mode .users-table th{background:#252525;color:#5a6472;border-bottom-color:#333}body.dark-mode .users-table td{color:#ddd;border-bottom-color:#252525}body.dark-mode .users-table tbody tr:hover{background:#252525}body.dark-mode .filter-search,body.dark-mode .filter-select{background:#1e1e1e;border-color:#333;color:#e0e0e0}body.dark-mode .btn-secondary{background:#252525;border-color:#333;color:#e0e0e0}body.dark-mode .btn-secondary:hover:not(:disabled){background:#2a2a2a}body.dark-mode .action-btn:hover:not(:disabled){background:#252525}body.dark-mode .pagination-info{color:#5a6472}.main-content:has(.devices-page){overflow:hidden}.devices-page{display:flex;flex-direction:column;height:100%;padding:24px;gap:0;font-family:DM Sans,sans-serif;overflow:hidden}.devices-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:16px}.devices-filters{display:flex;align-items:center;gap:10px}.devices-filter-chip{display:flex;align-items:center;gap:7px;padding:6px 14px 6px 10px;border:1.5px solid #e5e7eb;border-radius:20px;cursor:pointer;font-size:13px;font-weight:500;color:#374151;background:#fff;transition:border-color .15s,background .15s;-webkit-user-select:none;user-select:none}.devices-filter-chip:has(input:checked){border-color:#1f7a35;background:#f0fdf4;color:#1f7a35}.devices-filter-chip input[type=checkbox]{accent-color:#1f7a35;width:14px;height:14px;cursor:pointer}.devices-filter-icon{width:16px;height:16px}.devices-add-group{display:flex;gap:8px}.devices-add-btn{padding:7px 14px;background:linear-gradient(135deg,#1f7a35,#16612a);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:DM Sans,sans-serif;white-space:nowrap;transition:opacity .15s,transform .1s}.devices-add-btn:hover{opacity:.88;transform:translateY(-1px)}.devices-section{margin-bottom:28px}.devices-section-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px}.devices-section-icon{width:16px;height:16px}.devices-tab-icon{width:22px;height:22px;flex-shrink:0}.devices-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 6px;background:#d1fae5;color:#065f46;font-size:11px;font-weight:600;border-radius:10px}.devices-tab.active .devices-tab-count{background:#1f7a35;color:#fff}.devices-content{flex:1;overflow:auto;min-height:0}.devices-loading,.devices-empty{color:#9ca3af;font-style:italic;padding:32px 0;text-align:center}.devices-error{color:#ef4444;padding:16px 0}.devices-table-wrapper{overflow-x:auto;border-radius:10px;border:1px solid #e5e7eb}.devices-table{width:100%;border-collapse:collapse;font-size:13px}.devices-table thead tr{background:#f9fafb;border-bottom:1px solid #e5e7eb}.devices-table th{padding:10px 14px;text-align:left;font-weight:600;color:#374151;white-space:nowrap;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.devices-table td{padding:10px 14px;color:#374151;border-bottom:1px solid #f3f4f6;white-space:nowrap}.devices-table tbody tr:last-child td{border-bottom:none}.devices-table tbody tr:hover td{background:#f9fafb}.devices-mono{font-family:monospace;font-size:12px;color:#6b7280}.devices-date{font-size:12px;color:#9ca3af}.devices-badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600;text-transform:capitalize}.badge-online{background:#d1fae5;color:#065f46}.badge-offline{background:#fee2e2;color:#991b1b}.badge-disconnected{background:#fef3c7;color:#92400e}.badge-disabled{background:#f3f4f6;color:#6b7280}.devices-pagination{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid #e5e7eb;background:#f9fafb;border-radius:0 0 10px 10px}.devices-pagination-info{font-size:13px;color:#6b7280}.devices-pagination-controls{display:flex;align-items:center;gap:10px}.devices-pagination-page{font-size:13px;color:#374151;font-weight:500}.devices-pagination-btn{padding:5px 12px;border:1px solid #d1d5db;background:#fff;border-radius:6px;font-size:13px;font-family:DM Sans,sans-serif;color:#374151;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.devices-pagination-btn:hover:not(:disabled){background:#f0fdf4;border-color:#1f7a35;color:#1f7a35}.devices-pagination-btn:disabled{opacity:.4;cursor:not-allowed}.devices-row-actions{display:flex;gap:6px}.devices-info-btn{padding:3px 10px;border:1px solid #d1d5db;background:#fff;color:#374151;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;font-family:DM Sans,sans-serif;transition:background .15s,border-color .15s;white-space:nowrap}.devices-info-btn:hover{background:#f9fafb;border-color:#9ca3af}.devices-edit-btn{padding:3px 10px;border:1px solid #93c5fd;background:#fff;color:#1d4ed8;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;font-family:DM Sans,sans-serif;transition:background .15s,color .15s;white-space:nowrap}.devices-edit-btn:hover{background:#eff6ff;border-color:#1d4ed8}.devices-delete-btn{padding:3px 10px;border:1px solid #fca5a5;background:#fff;color:#dc2626;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;font-family:DM Sans,sans-serif;transition:background .15s,color .15s;white-space:nowrap}.devices-delete-btn:hover{background:#fee2e2;border-color:#dc2626}.devices-table tbody tr.row-offline td{background:#fff5f5;color:inherit}.devices-table tbody tr.row-offline:hover td{background:#fce8e8}.devices-table tbody tr.row-warning td{background:#fff7ed;color:#c2410c}.devices-table tbody tr.row-warning:hover td{background:#ffedd5}.devices-table tbody tr.row-ok td{background:#f0fdf4;color:inherit}.devices-table tbody tr.row-ok:hover td{background:#dcfce7}.devices-table tbody tr.row-disabled td{background:#f3f4f6;color:#9ca3af}.devices-table tbody tr.row-disabled:hover td{background:#e5e7eb}.devices-debug-wrap{position:relative;display:inline-flex}.devices-debug-btn{padding:3px 10px;border:1px solid #fbbf24;background:#fff;color:#b45309;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;font-family:DM Sans,sans-serif;transition:background .15s,color .15s;white-space:nowrap}.devices-debug-btn:hover{background:#fffbeb;border-color:#f59e0b}.devices-debug-btn:disabled{opacity:.5;cursor:not-allowed}.devices-debug-dropdown{position:absolute;top:calc(100% + 4px);bottom:auto;left:0;z-index:200;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 12px #0000001f;min-width:140px;padding:4px 0}.devices-debug-dropdown--up{top:auto;bottom:calc(100% + 4px);box-shadow:0 -4px 12px #0000001f}.devices-debug-dropdown--fixed{position:fixed;top:auto;bottom:auto;left:auto}.devices-debug-option{display:block;width:100%;padding:8px 14px;border:none;background:none;text-align:left;font-size:13px;font-family:DM Sans,sans-serif;color:#374151;cursor:pointer;transition:background .12s}.devices-debug-option:hover{background:#f9fafb;color:#b45309}body.dark-mode .devices-page{background:#141414;color:#e0e0e0}body.dark-mode .devices-filter-chip{background:#1e1e1e;border-color:#333;color:#9ba3ab}body.dark-mode .devices-filter-chip:has(input:checked){border-color:#1f7a35;background:#1f7a351a;color:#4caf72}body.dark-mode .devices-section-title{color:#5a6472}body.dark-mode .devices-tab-count{background:#1f7a3526;color:#4caf72}body.dark-mode .devices-table-wrapper{border-color:#2a2a2a}body.dark-mode .devices-table thead tr{background:#252525;border-bottom-color:#333}body.dark-mode .devices-table th{background:#252525;color:#5a6472}body.dark-mode .devices-table td{color:#ddd;border-bottom-color:#252525}body.dark-mode .devices-table tbody tr:hover td{background:#252525}body.dark-mode .devices-mono,body.dark-mode .devices-date{color:#5a6472}body.dark-mode .badge-online{background:#05966926;color:#34d399}body.dark-mode .badge-offline{background:#ef444426;color:#f87171}body.dark-mode .badge-disconnected{background:#f59e0b26;color:#fbbf24}body.dark-mode .badge-disabled{background:#6b728026;color:#9ca3af}body.dark-mode .devices-pagination{background:#252525;border-top-color:#333}body.dark-mode .devices-pagination-info{color:#5a6472}body.dark-mode .devices-pagination-page{color:#ddd}body.dark-mode .devices-pagination-btn{background:#1e1e1e;border-color:#333;color:#ddd}body.dark-mode .devices-pagination-btn:hover:not(:disabled){background:#1f7a351a;border-color:#1f7a35;color:#4caf72}body.dark-mode .devices-info-btn{background:#1e1e1e;border-color:#333;color:#ddd}body.dark-mode .devices-info-btn:hover{background:#252525;border-color:#5a6472}body.dark-mode .devices-edit-btn{background:#1e1e1e;border-color:#1d4ed8;color:#93c5fd}body.dark-mode .devices-edit-btn:hover{background:#1d4ed826}body.dark-mode .devices-delete-btn{background:#1e1e1e;border-color:#dc2626;color:#f87171}body.dark-mode .devices-delete-btn:hover{background:#dc262626}body.dark-mode .devices-table tbody tr.row-offline td{background:#dc262614;color:#fff}body.dark-mode .devices-table tbody tr.row-offline:hover td{background:#dc262624}body.dark-mode .devices-table tbody tr.row-warning td{background:#f973161a;color:#fed7aa}body.dark-mode .devices-table tbody tr.row-warning:hover td{background:#f973162e}body.dark-mode .devices-table tbody tr.row-ok td{background:#22c55e12;color:inherit}body.dark-mode .devices-table tbody tr.row-ok:hover td{background:#22c55e21}body.dark-mode .devices-table tbody tr.row-disabled td{background:#6b72801a;color:#6b7280}body.dark-mode .devices-table tbody tr.row-disabled:hover td{background:#6b72802e}body.dark-mode .devices-debug-btn{background:#1e1e1e;border-color:#b45309;color:#fbbf24}body.dark-mode .devices-debug-btn:hover{background:#b4530926}body.dark-mode .devices-debug-dropdown{background:#1e1e1e;border-color:#333;box-shadow:0 4px 12px #0006}body.dark-mode .devices-debug-option{color:#ddd}body.dark-mode .devices-debug-option:hover{background:#252525;color:#fbbf24}body.dark-mode .devices-loading,body.dark-mode .devices-empty{color:#5a6472}body.dark-mode .devices-error{color:#f87171}.soil-badge{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;letter-spacing:.03em;padding:2px 7px;border-radius:4px;white-space:nowrap}.soil-badge-sub{font-weight:400;opacity:.85}.soil-badge-none{color:#aaa;font-size:12px}.soil-badge-ok{background:#dcfce7;color:#15803d}.soil-badge-warning{background:#ffedd5;color:#c2410c}.soil-badge-critical{background:#fee2e2;color:#b91c1c}.soil-badge-overdue{background:#dc2626;color:#fff}.soil-badge-wet{background:#dbeafe;color:#1d4ed8}.soil-badge-stale{background:#f3f4f6;color:#6b7280}body.dark-mode .soil-badge-ok{background:#22c55e26;color:#4ade80}body.dark-mode .soil-badge-warning{background:#f9731626;color:#fb923c}body.dark-mode .soil-badge-critical{background:#ef444426;color:#f87171}body.dark-mode .soil-badge-overdue{background:#dc2626;color:#fff}body.dark-mode .soil-badge-wet{background:#3b82f626;color:#60a5fa}body.dark-mode .soil-badge-stale{background:#374151;color:#9ca3af}.zone-page{padding:2rem;max-width:1100px}.zone-breadcrumb{display:flex;align-items:center;gap:.5rem;margin-bottom:1.5rem;font-size:.88rem}.bc-link{color:#0bca4a;text-decoration:none}.bc-link:hover{text-decoration:underline}.bc-sep{color:#ccc}.bc-current{color:#555;font-weight:600}.zone-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem;gap:1rem;padding-bottom:1.5rem;border-bottom:1px solid #f0f0f0}.zone-title{margin:0 0 .3rem;font-size:1.8rem;font-weight:700;color:#1a1a1a}.zone-desc{margin:0;color:#777;font-size:.95rem}.zone-stats{display:flex;gap:.5rem;align-items:center;flex-shrink:0;padding-top:.3rem}.stat-badge{padding:.3rem .75rem;background:#f0f0f0;border-radius:20px;font-size:.8rem;color:#666;font-weight:500;white-space:nowrap}.stat-badge.online{background:#0bca4a1f;color:#0bca4a}.zone-section{margin-bottom:2.5rem}.zone-section-title{margin:0 0 1rem;font-size:1rem;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.05em}.zone-empty{color:#bbb;font-size:.9rem}.gateways-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.gw-card{display:flex;align-items:center;gap:1rem;padding:1.25rem 1rem 1.25rem 1.25rem;background:#fff;border:1.5px solid #e8e8e8;border-radius:12px;text-decoration:none;color:inherit;transition:border-color .2s,box-shadow .2s,transform .15s}.gw-card:hover{border-color:#0bca4a;box-shadow:0 4px 14px #0bca4a1f;transform:translateY(-2px)}.gw-card-icon{font-size:1.75rem;flex-shrink:0}.gw-card-body{flex:1;display:flex;flex-direction:column;gap:.3rem;min-width:0}.gw-card-id{margin:0;font-size:.95rem;font-weight:600;color:#1a1a1a;font-family:Courier New,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gw-status-badge{display:inline-block;padding:.18rem .55rem;border-radius:10px;font-size:.75rem;font-weight:600;width:fit-content}.gw-status-badge.online{background:#0bca4a26;color:#0bca4a}.gw-status-badge.offline{background:#ff4d4d1a;color:#ff4d4d}.gw-card-date{font-size:.76rem;color:#bbb}.gw-card-arrow{font-size:1.1rem;color:#ccc;flex-shrink:0;transition:color .2s,transform .2s}.gw-card:hover .gw-card-arrow{color:#0bca4a;transform:translate(3px)}.zone-gateway-tabs{display:flex;gap:.5rem;padding:.75rem 1rem 0;border-bottom:1px solid #eee;background:#fff;flex-wrap:wrap}.zone-gateway-tab{padding:.4rem 1rem;border:1.5px solid #ddd;border-bottom:none;border-radius:8px 8px 0 0;background:#f7f7f7;color:#666;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}.zone-gateway-tab:hover{background:#f0fef4;border-color:#0bca4a;color:#0bca4a}.zone-gateway-tab--active{background:#fff;border-color:#0bca4a;color:#0bca4a;font-weight:600}body.dark-mode .zone-gateway-tabs{background:#1a1a1a;border-bottom-color:#2a2a2a}body.dark-mode .zone-gateway-tab{background:#222;border-color:#333;color:#aaa}body.dark-mode .zone-gateway-tab:hover,body.dark-mode .zone-gateway-tab--active{background:#1e2e20;border-color:#0bca4a;color:#0bca4a}.page-state.error{color:#ff4d4d}.page-state button{padding:.5rem 1.25rem;border:1.5px solid #ddd;border-radius:8px;background:#fff;cursor:pointer;font-size:.9rem;transition:border-color .2s}.page-state button:hover{border-color:#0bca4a}body.dark-mode .zone-header{border-bottom-color:#2a2a2a}body.dark-mode .zone-title,body.dark-mode .gw-card-id{color:#f0f0f0}body.dark-mode .zone-desc{color:#aaa}body.dark-mode .bc-current{color:#ccc}body.dark-mode .zone-section-title{color:#aaa}body.dark-mode .gw-card{background:#1e1e1e;border-color:#333}body.dark-mode .gw-card:hover{border-color:#0bca4a}body.dark-mode .stat-badge{background:#2a2a2a;color:#bbb}body.dark-mode .stat-badge.online{background:#0bca4a26;color:#0bca4a}body.dark-mode .page-state button{background:#2a2a2a;border-color:#444;color:#ddd}.modal-hint{font-size:.8rem;color:#6b7280;margin:0;line-height:1.4}.zone-info-grid{display:grid;grid-template-columns:auto 1fr;gap:.5rem 1.25rem;font-size:.875rem}.zone-info-grid dt{color:#6b7280;font-weight:500}.zone-info-grid dd{margin:0;color:#1f2937;font-weight:500}.zone-info-section-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;font-weight:600;margin:.25rem 0 0}.zone-info-gw-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.zone-info-gw-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.4rem .6rem;border:1px solid #e5e7eb;border-radius:6px;font-size:.85rem}.zone-info-gw-item .devices-mono{font-size:.8rem}body.dark-mode .modal-hint,body.dark-mode .zone-info-grid dt,body.dark-mode .zone-info-section-title{color:#5a6472}body.dark-mode .zone-info-grid dd{color:#e5e7eb}body.dark-mode .zone-info-gw-item{border-color:#333}.zones-search{padding:7px 12px;border:1.5px solid #e5e7eb;border-radius:8px;font-size:13px;font-family:DM Sans,sans-serif;color:#374151;background:#fff;min-width:240px;outline:none;transition:border-color .15s}.zones-search:focus{border-color:#1f7a35}.zones-page .devices-table{table-layout:fixed;width:100%;min-width:900px}.zones-page .devices-table th,.zones-page .devices-table td{vertical-align:middle;overflow:hidden;text-overflow:ellipsis}.zones-page .devices-table th:nth-child(1),.zones-page .devices-table td:nth-child(1){width:auto}.zones-page .devices-table th:nth-child(2),.zones-page .devices-table td:nth-child(2){width:20%}.zones-page .devices-table th:nth-child(3),.zones-page .devices-table td:nth-child(3),.zones-page .devices-table th:nth-child(4),.zones-page .devices-table td:nth-child(4){width:90px}.zones-page .devices-table th:nth-child(5),.zones-page .devices-table td:nth-child(5){width:110px}.zones-page .devices-table th:nth-child(6),.zones-page .devices-table td:nth-child(6){width:160px}.zones-page .devices-table th:nth-child(7),.zones-page .devices-table td:nth-child(7){width:264px;white-space:nowrap;overflow:visible}.zones-page .devices-table td.zones-actions-cell{text-align:right}.zones-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:nowrap}.zones-name{font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zones-desc{font-size:12px;color:#9ca3af;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zones-farm-link{color:#1d4ed8;text-decoration:none;font-weight:500}.zones-farm-link:hover{text-decoration:underline}.zones-count{font-variant-numeric:tabular-nums;font-weight:600;font-size:13px}.zones-count-sep,.zones-count--empty{color:#9ca3af;font-weight:400}.zones-count--ok{color:#15803d}.zones-count--partial{color:#c2410c}.zones-count--offline{color:#b91c1c}body.dark-mode .zones-search{background:#1e1e1e;border-color:#333;color:#ddd}body.dark-mode .zones-search:focus{border-color:#1f7a35}body.dark-mode .zones-name{color:#f3f4f6}body.dark-mode .zones-desc{color:#5a6472}body.dark-mode .zones-farm-link{color:#93c5fd}body.dark-mode .zones-count--ok{color:#4ade80}body.dark-mode .zones-count--partial{color:#fb923c}body.dark-mode .zones-count--offline{color:#f87171}body.dark-mode .zones-count--empty{color:#5a6472}.farms-settings-page{display:flex;flex-direction:column;height:100%;padding:1.5rem 1.5rem 0;box-sizing:border-box;overflow:hidden}.page-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;gap:1rem;color:#888}.fs-body{display:grid;grid-template-columns:1fr 1fr;flex:1;gap:1rem;overflow:hidden;padding-bottom:1.5rem;min-height:0;min-width:0}.fs-map-section{min-width:0;min-height:0;display:flex;flex-direction:column;gap:.5rem}.fs-map-wrapper{flex:1;min-height:0;position:relative;border-radius:10px;overflow:hidden}.fs-map-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#aaa;font-size:.9rem;background:#f4f4f4;border-radius:10px}.fs-panel{min-width:0;min-height:0;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto}.fs-panel-head{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;margin-bottom:.25rem}.fs-panel-label,.panel-label{margin:0 0 .5rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#999}.panel-empty{font-size:.82rem;color:#bbb;margin:0}.panel-add-btn{display:flex;align-items:center;gap:.3rem;padding:.3rem .65rem;border-radius:6px;border:1.5px solid #0bca4a;background:#0bca4a14;color:#0bca4a;font-size:.78rem;font-weight:700;cursor:pointer;line-height:1;flex-shrink:0;white-space:nowrap;transition:background .15s,color .15s}.panel-add-btn:before{content:"+";font-size:1rem;font-weight:400;line-height:1}.panel-add-btn:hover{background:#0bca4a2e;color:#08a03d}.fs-farm-tree{list-style:none;margin:0 0 1.5rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.fs-farm-item{display:flex;flex-direction:column}.fs-farm-node{display:flex;align-items:center;gap:.55rem;padding:.7rem .85rem;background:#fff;border:1.5px solid #eee;border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color .15s,box-shadow .15s}.fs-farm-node:hover{border-color:#0bca4a;box-shadow:0 2px 8px #0000000f}.fs-farm-node--selected{border-color:#0bca4a;box-shadow:0 0 0 2px #0bca4a33}.fs-chevron{font-size:.7rem;color:#bbb;flex-shrink:0;transition:transform .2s ease;line-height:1}.fs-chevron--open{transform:rotate(90deg)}.fs-farm-glyph{width:17px;height:17px;flex-shrink:0;color:#0bca4a}.fs-farm-node-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.fs-farm-node-name{font-size:.88rem;font-weight:600;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fs-farm-node-meta{font-size:.74rem;color:#999;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fs-badge{font-size:.62rem;font-weight:700;letter-spacing:.04em;padding:.15rem .4rem;border-radius:8px;flex-shrink:0}.fs-badge--set{background:#e3f9ec;color:#0a8a3a}.fs-badge--unset{background:#f0f0f0;color:#aaa}.fs-node-add{width:22px;height:22px;border:1.5px solid #0bca4a;border-radius:6px;background:#0bca4a14;color:#0bca4a;font-size:.95rem;font-weight:700;line-height:1;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:background .15s}.fs-node-add:hover{background:#0bca4a33}.fs-zone-wrap{padding:.5rem 0 .25rem 1.4rem}.fs-tree-state{margin:.25rem 0;font-size:.78rem;color:#aaa}.fs-tree-state--error{color:#e57373}.zone-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.zone-card{display:flex;align-items:center;gap:.75rem;padding:.7rem .85rem;background:#fff;border:1.5px solid #eee;border-left:4px solid var(--zone-color);border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color .15s,box-shadow .15s;position:relative}.zone-card:hover{border-color:var(--zone-color);border-left-color:var(--zone-color);box-shadow:0 2px 8px #0000000f}.zone-card--editing{border-color:var(--zone-color);border-left-color:var(--zone-color);box-shadow:0 0 0 2px color-mix(in srgb,var(--zone-color) 25%,transparent);background:color-mix(in srgb,var(--zone-color) 6%,#fff);cursor:context-menu}.zone-card--expanded{border-bottom-left-radius:0;border-bottom-right-radius:0}.zone-card-icon{width:17px;height:17px;flex-shrink:0;color:var(--zone-color)}.zone-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.zone-card-name{font-size:.88rem;font-weight:600;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zone-card-desc{font-size:.76rem;color:#999;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zone-editing-badge{font-size:.68rem;font-weight:600;color:var(--zone-color);background:color-mix(in srgb,var(--zone-color) 12%,transparent);padding:.2rem .5rem;border-radius:10px;white-space:nowrap;flex-shrink:0}.zone-nav-link{display:flex;align-items:center;gap:.3rem;font-size:1rem;color:#ccc;text-decoration:none;flex-shrink:0;transition:color .15s;line-height:1}.zone-nav-link-text{font-size:.72rem;font-weight:500;white-space:nowrap}.zone-card:hover .zone-nav-link{color:var(--zone-color)}.zone-chevron{font-size:.85rem;color:#ccc;flex-shrink:0;transition:transform .2s ease,color .15s;line-height:1}.zone-chevron--open{transform:rotate(180deg)}.zone-card:hover .zone-chevron{color:var(--zone-color)}.zone-accordion{background:#fafafa;border:1.5px solid #eee;border-top:none;border-left:4px solid var(--zone-color);border-bottom-left-radius:8px;border-bottom-right-radius:8px;padding:.6rem .85rem .75rem;animation:accordionFadeIn .15s ease}@keyframes accordionFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.zone-accordion-state{margin:0;font-size:.78rem;color:#aaa}.zone-accordion-state--error{color:#e57373}.device-check-all{display:flex;align-items:center;gap:.4rem;margin-bottom:.5rem;font-size:.76rem;font-weight:700;color:#444;cursor:pointer;-webkit-user-select:none;user-select:none}.device-check-all input[type=checkbox]{accent-color:var(--zone-color);width:13px;height:13px;cursor:pointer;flex-shrink:0}.device-item-check{accent-color:var(--zone-color);width:12px;height:12px;cursor:pointer;flex-shrink:0;margin-right:.25rem}.device-tree{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}.device-tree-gw{display:flex;flex-direction:column;gap:.2rem}.device-tree-gw-header{display:flex;align-items:center;gap:.45rem}.device-tree-actions{margin-left:auto;display:flex;align-items:center;gap:.15rem;opacity:0;transition:opacity .15s;flex-shrink:0}.device-tree-gw-header:hover .device-tree-actions{opacity:1}.device-sensor-actions{margin-left:auto;display:flex;align-items:center;opacity:0;transition:opacity .15s;flex-shrink:0}.device-tree-sensor:hover .device-sensor-actions{opacity:1}.device-action-btn{width:20px;height:20px;border:none;background:none;cursor:pointer;font-size:.68rem;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:0;line-height:1;color:#aaa;transition:background .12s,color .12s}.device-action-btn:hover:not(:disabled){background:#0000000f}.device-action-btn--unlink:hover:not(:disabled){background:#f59e0b1f;color:#b45309}.device-action-btn--delete:hover:not(:disabled){background:#dc35451a;color:#dc3545}.device-action-btn--add:hover:not(:disabled){background:#0bca4a1f;color:#0bca4a;font-weight:700}.device-action-btn:disabled{opacity:.5;cursor:wait}.device-tree-gw-icon{width:16px;height:16px;flex-shrink:0;object-fit:contain}.device-tree-gw-name{font-size:.83rem;font-weight:600;color:#222}.device-tree-sensors{list-style:none;margin:0;padding:0 0 0 1.1rem;display:flex;flex-direction:column;gap:.15rem}.device-tree-sensor{display:flex;align-items:center;gap:.35rem}.device-tree-branch{font-size:.78rem;color:#ccc;flex-shrink:0;width:.6rem}.device-tree-sensor-icon{width:13px;height:13px;flex-shrink:0;object-fit:contain;opacity:.8}.device-tree-sensor-name{font-size:.78rem;color:#555}.device-tree-sensor-id{color:#aaa;font-size:.72rem}.zone-context-menu{position:fixed;z-index:1000;background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 4px 18px #00000024;padding:4px 0;min-width:190px}.zcm-item{display:block;width:100%;padding:9px 16px;background:none;border:none;text-align:left;font-size:.84rem;color:#333;cursor:pointer;transition:background .12s}.zcm-item:hover:not(:disabled){background:#f4f4f4}.zcm-item:disabled{opacity:.6;cursor:wait}.zcm-item--save{color:#1a6e30;font-weight:600}.zcm-item--cancel,.zcm-item--danger{color:#c62828}.zcm-separator{height:1px;background:#eee;margin:4px 0}body.dark-mode .fs-map-empty{background:#1c1c1c;color:#666}body.dark-mode .panel-label,body.dark-mode .fs-panel-label{color:#666}body.dark-mode .fs-farm-node,body.dark-mode .zone-card{background:#1e1e1e;border-color:#333}body.dark-mode .fs-farm-node:hover,body.dark-mode .fs-farm-node--selected,body.dark-mode .zone-card:hover,body.dark-mode .zone-card--editing{border-color:var(--zone-color, #0bca4a)}body.dark-mode .zone-card--editing{background:color-mix(in srgb,var(--zone-color) 8%,#1e1e1e)}body.dark-mode .fs-farm-node-name,body.dark-mode .zone-card-name{color:#e8e8e8}body.dark-mode .fs-farm-node-meta,body.dark-mode .zone-card-desc{color:#777}body.dark-mode .fs-badge--set{background:#0bca4a26;color:#4cd07a}body.dark-mode .fs-badge--unset{background:#2a2a2a;color:#666}body.dark-mode .zone-accordion{background:#181818;border-color:#2e2e2e}body.dark-mode .device-tree-gw-name{color:#ddd}body.dark-mode .device-tree-sensor-name{color:#888}body.dark-mode .zone-context-menu{background:#2a2a2a;border-color:#3a3a3a}body.dark-mode .zcm-item{color:#ddd}body.dark-mode .zcm-item:hover:not(:disabled){background:#333}body.dark-mode .zcm-item--save{color:#4caf50}body.dark-mode .zcm-item--danger{color:#ef5350}body.dark-mode .zcm-separator{background:#3a3a3a}body.dark-mode .panel-add-btn{background:#0bca4a1a;border-color:#0bca4a80;color:#4cd07a}body.dark-mode .panel-add-btn:hover{background:#0bca4a33;color:#6ddc93}body.dark-mode .fs-node-add{background:#0bca4a1a;border-color:#0bca4a80;color:#4cd07a}body.dark-mode .device-action-btn{color:#555}body.dark-mode .device-action-btn:hover:not(:disabled){background:#ffffff0f}.farm-map-container{position:relative;width:100%;height:100%;overflow:hidden;border-radius:10px}.farm-satellite-map{width:100%;height:100%;border-radius:10px;background:#1a1a1a}.farm-map-zone-label{background:transparent;border:none;box-shadow:none;font-weight:700;font-size:.75rem;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.8);white-space:nowrap;pointer-events:none}.farm-map-zone-label:before{display:none}.farm-map-boundary-label{font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;opacity:.85}.farm-map-corner-marker{background:transparent;border:none}.farm-map-corner-dot{width:14px;height:14px;border-radius:50%;background:#fff;border-width:2.5px;border-style:solid;box-shadow:0 2px 6px #0000004d;cursor:grab}.leaflet-marker-draggable .farm-map-corner-dot:active{cursor:grabbing}.farmmap-marker-icon{filter:drop-shadow(0 2px 5px rgba(0,0,0,.4))}.farmmap-marker-tooltip{font-size:.68rem;font-weight:600;padding:2px 8px}.farm-map-disclaimer{position:absolute;top:.6rem;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.4rem;padding:.3rem .75rem;background:#00000080;border-radius:20px;font-size:.7rem;color:#fffc;white-space:nowrap;pointer-events:none;z-index:500}.farm-map-disclaimer-icon{filter:drop-shadow(0 0 2px rgba(255,152,0,.6))}.modal--wizard{max-width:640px}.wizard-header-left{display:flex;flex-direction:column;gap:.3rem}.wizard-steps{display:flex;align-items:center;gap:0}.wizard-step{display:flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:500;color:#bbb}.wizard-step.active{color:#0bca4a}.wizard-step.done{color:#0bca4a;opacity:.65}.wizard-step-dot{width:20px;height:20px;border-radius:50%;background:#e4e4e4;display:flex;align-items:center;justify-content:center;font-size:.68rem;font-weight:700;flex-shrink:0}.wizard-step.active .wizard-step-dot,.wizard-step.done .wizard-step-dot{background:#0bca4a;color:#fff}.wizard-step-sep{margin:0 .35rem;color:#ccc;font-size:.85rem}.wizard-zone-label{margin:0;font-size:.88rem;color:#555;padding:.55rem .85rem;background:#f5f5f5;border-radius:7px;border-left:3px solid #0bca4a}.wizard-add-row{display:flex;align-items:flex-end;gap:.5rem}.wizard-add-btn{flex-shrink:0;padding:.7rem 1rem;align-self:flex-end}.wizard-device-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.wizard-device-item{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;background:#f7f7f7;border-radius:7px;font-size:.875rem}.wizard-device-id{font-weight:600;color:#1a1a1a;flex:1}.wizard-badge{padding:.2rem .5rem;border-radius:4px;font-size:.73rem;font-weight:600;flex-shrink:0;letter-spacing:.01em}.wizard-badge--disconnected{background:#7878781a;color:#777}.wizard-badge--online{background:#0bca4a1f;color:#0a9938}.wizard-badge--offline{background:#dc35451a;color:#b02a37}.wizard-sensor-type-tag{font-size:.73rem;color:#888;padding:.18rem .45rem;background:#ebebeb;border-radius:4px;flex-shrink:0}.wizard-hint{margin:0;font-size:.85rem;color:#aaa;text-align:center;padding:.75rem 0}.wizard-gw-card{border:1.5px solid #ebebeb;border-radius:10px;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.wizard-gw-card-header{display:flex;align-items:center;gap:.5rem}.wizard-sensor-num{width:110px;flex-shrink:0}.wizard-sensor-type-field{width:150px;flex-shrink:0}.wizard-create-gw{margin-top:1.25rem;padding-top:1rem;border-top:1.5px dashed #e8e8e8;display:flex;flex-direction:column;gap:.5rem}body.dark-mode .wizard-create-gw{border-top-color:#333}body.dark-mode .wizard-zone-label{background:#252525;color:#aaa;border-left-color:#0bca4a}body.dark-mode .wizard-device-item{background:#272727}body.dark-mode .wizard-device-id{color:#eee}body.dark-mode .wizard-gw-card{border-color:#3a3a3a}body.dark-mode .wizard-sensor-type-tag{background:#333;color:#aaa}body.dark-mode .wizard-step-dot{background:#3a3a3a;color:#ccc}.modal--wide{max-width:640px}.btn.btn-sm{padding:.35rem .75rem;font-size:.8rem}.gw-search{width:100%;padding:.6rem .9rem;border:1.5px solid #e0e0e0;border-radius:8px;font-size:.9rem;outline:none;box-sizing:border-box;transition:border-color .2s;background:#fff;color:#333}.gw-search:focus{border-color:#0bca4a}.gw-section-label{margin:0 0 .5rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#999}.gw-list{list-style:none;margin:0 0 .75rem;padding:0;display:flex;flex-direction:column;gap:.4rem}.gw-item{display:flex;align-items:center;gap:.6rem;padding:.65rem .8rem;background:#fafafa;border:1.5px solid #eee;border-radius:8px;transition:border-color .15s}.gw-item--assigned{background:#0bca4a0a;border-color:#0bca4a4d}.gw-item-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.gw-item-name{font-size:.87rem;font-weight:600;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gw-item-id{font-size:.72rem;color:#aaa;font-family:monospace}.gw-badge{font-size:.68rem;font-weight:600;padding:.15rem .45rem;border-radius:8px;white-space:nowrap;flex-shrink:0}.gw-badge--assigned{background:#0bca4a1f;color:#0d9e3c}.gw-item--taken{opacity:.5;background:#f5f5f5;border-color:#e0e0e0}.gw-badge--taken{background:#96969626;color:#888}body.dark-mode .gw-search{background:#2a2a2a;border-color:#444;color:#eee}body.dark-mode .gw-item{background:#1e1e1e;border-color:#2e2e2e}body.dark-mode .gw-item--assigned{background:#0bca4a0f;border-color:#0bca4a33}body.dark-mode .gw-item-name{color:#e0e0e0}body.dark-mode .gw-badge--assigned{background:#0bca4a2e;color:#4cd07a}body.dark-mode .gw-item--taken{background:#1a1a1a;border-color:#2a2a2a}body.dark-mode .gw-badge--taken{background:#9696961f;color:#666}.farm-polygon-editor{display:flex;flex-direction:column;gap:.5rem}.farm-polygon-goto{display:flex;gap:.5rem}.farm-polygon-goto-input{flex:1;min-width:0;padding:.4rem .6rem;border-radius:7px;border:1px solid #d7dbde;font-size:.8rem}.farm-polygon-goto-input:focus{outline:none;border-color:#0bca4a}.farm-polygon-goto-error{margin:0;font-size:.75rem;color:#b02a37}.farm-polygon-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.farm-polygon-hint{font-size:.78rem;color:#888}.farm-polygon-actions{display:flex;gap:.5rem}.farm-polygon-btn{padding:.4rem .8rem;border-radius:7px;border:1.5px solid #0bca4a;background:#0bca4a14;color:#0bca4a;font-size:.78rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .15s}.farm-polygon-btn:hover{background:#0bca4a2e}.farm-polygon-btn--clear{border-color:#e0e0e0;background:#f4f5f6;color:#b02a37}.farm-polygon-btn--clear:hover{background:#eaecee}.farm-polygon-map-wrap{width:100%;height:320px;border-radius:10px;overflow:hidden;border:1px solid #e2e6e9}.farm-polygon-map{width:100%;height:100%;background:#1a1a1a}.farm-polygon-marker{background:transparent;border:none}.farm-polygon-dot{width:20px;height:20px;border-radius:50%;background:#0bca4a;color:#fff;font-size:.68rem;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:0 2px 6px #00000059;cursor:pointer}.leaflet-marker-draggable .farm-polygon-dot{cursor:grab}.leaflet-marker-draggable .farm-polygon-dot:active{cursor:grabbing}.farm-polygon-dot--closable{animation:farm-polygon-pulse 1.1s ease-in-out infinite}@keyframes farm-polygon-pulse{0%,to{box-shadow:0 2px 6px #00000059,0 0 #0bca4a8c}50%{box-shadow:0 2px 6px #00000059,0 0 0 6px #0bca4a00}}body.dark-mode .farm-polygon-hint{color:#777}body.dark-mode .farm-polygon-goto-input{background:#1c1c1c;border-color:#333;color:#eee}body.dark-mode .farm-polygon-goto-error{color:#ef5350}body.dark-mode .farm-polygon-btn--clear{background:#252525;border-color:#333;color:#ef5350}body.dark-mode .farm-polygon-map-wrap{border-color:#2a2a2a}.modal.modal--farm{max-width:560px}body.dark-mode .modal.modal--farm .farm-corners-hint{color:#888}.dashboard{display:flex;flex-direction:column;height:100%;padding:12px 14px 10px;background:#fff;font-family:DM Sans,sans-serif;font-size:13px;color:#1a2228;overflow:hidden;box-sizing:border-box;gap:10px}.dash-topbar{display:flex;align-items:baseline;gap:10px;flex-shrink:0}.dash-heading{font-size:15px;font-weight:600;color:#1a2228;margin:0}.dash-date{font-size:11px;color:#9ba3ab}.dash-card{background:#e8eaed;border-radius:14px;padding:14px;box-shadow:0 1px 4px #00000012;display:flex;flex-direction:column;min-height:0;overflow:hidden}.dash-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;flex-shrink:0}.dash-card-title{font-size:13px;font-weight:600;color:#1a2228;margin:0}.dash-dots-btn{background:none;border:none;cursor:pointer;font-size:16px;color:#9ba3ab;line-height:1;padding:0 2px;letter-spacing:1px;transition:color .15s}.dash-dots-btn:hover{color:#1a2228}.dash-card-dots{color:#9ba3ab;font-size:16px;cursor:pointer;letter-spacing:1px;line-height:1}.dash-toggle{width:38px;height:21px;background:#2e8b47;border-radius:99px;position:relative;cursor:pointer;flex-shrink:0;border:none;padding:0}.dash-toggle:after{content:"";position:absolute;width:15px;height:15px;background:#fff;border-radius:50%;top:3px;right:3px;transition:right .2s}.dash-toggle--off{background:#e2e6e9}.dash-toggle--off:after{right:20px}.dash-legend{display:flex;gap:10px;margin-bottom:6px;flex-shrink:0}.dash-legend-item{display:flex;align-items:center;gap:4px;font-size:10px;color:#5a6472}.dash-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dashboard-grid{flex:1;min-height:0;width:100%;max-width:1900px;display:grid;grid-template-columns:minmax(0,1fr) clamp(420px,44%,560px);gap:10px;overflow:hidden}.dash-left{display:flex;flex-direction:column;gap:8px;min-height:0;overflow:hidden}.dash-left .dash-card{flex:1}.dash-rail-label{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#9ba3ab;flex-shrink:0;padding:0 2px}.zone-rail-card{flex-shrink:0;border-radius:10px;border:1.5px solid #e5e7eb;padding:9px 11px;background:#fff;cursor:pointer;transition:box-shadow .15s,transform .1s}.zone-rail-card:hover{box-shadow:0 2px 8px #00000017;transform:translateY(-1px)}.zone-rail-card--ok{border-color:#86efac;background:#f0fdf4}.zone-rail-card--warning{border-color:#fdba74;background:#fff7ed}.zone-rail-card--critical{border-color:#fca5a5;background:#fff5f5}.zone-rail-card--offline{border-color:#d1d5db;background:#f9fafb}.zrc-header{display:flex;align-items:center;gap:6px;margin-bottom:6px}.zrc-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.zrc-dot--ok{background:#22c55e}.zrc-dot--warning{background:#f97316}.zrc-dot--critical{background:#ef4444}.zrc-dot--offline{background:#9ca3af}.zrc-name{font-size:.76rem;font-weight:700;color:#1a2228;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zrc-farm{font-size:.62rem;color:#9ca3af;flex-shrink:0}.zrc-overdue{font-size:.6rem;font-weight:600;color:#c2410c;background:#fff7ed;border:1px solid #fdba74;border-radius:5px;padding:1px 5px;flex-shrink:0}.zrc-moisture{display:flex;align-items:center;gap:7px;margin-bottom:5px}.zrc-moisture-bar{flex:1;height:5px;background:#e5e7eb;border-radius:3px;overflow:hidden}.zrc-moisture-fill{height:100%;border-radius:3px}.zrc-moisture-fill--ok{background:#22c55e}.zrc-moisture-fill--warning{background:#f97316}.zrc-moisture-fill--critical{background:#ef4444}.zrc-moisture-fill--offline{background:#9ca3af}.zrc-moisture-val{font-size:.72rem;font-weight:700;color:#1a2228;flex-shrink:0;font-variant-numeric:tabular-nums;width:32px;text-align:right}.zrc-stats-row{display:flex;align-items:center;justify-content:space-between}.zrc-stat{font-size:.65rem;color:#6b7280}.zrc-stat strong{color:#1a2228;font-weight:700}.zrc-health-badge{font-size:.58rem;font-weight:700;padding:1px 6px;border-radius:8px;text-transform:uppercase;letter-spacing:.04em}.zrc-health-badge--ok{background:#dcfce7;color:#15803d}.zrc-health-badge--warning{background:#ffedd5;color:#c2410c}.zrc-health-badge--critical{background:#fee2e2;color:#991b1b}.zrc-health-badge--offline{background:#f3f4f6;color:#6b7280}.dash-center{display:flex;flex-direction:column;gap:10px;min-height:0}.dash-chart-area{flex:1;min-height:0}.dash-chart-area-sm{flex:1;min-height:90px;background:#fff;border-radius:8px;padding:4px 2px 2px}.dash-map-card{flex:1}.dash-zone-iot-bar{display:flex;align-items:stretch;gap:12px;height:clamp(100px,15vh,150px);flex-shrink:0;overflow:hidden}.dash-zone-carousel-card{flex:1 1 0%;min-width:0;gap:3px}.dash-zone-carousel-header{display:flex;align-items:center;justify-content:center;gap:5px;flex-shrink:0}.dash-carousel-nav{display:flex;align-items:center;justify-content:center;width:13px;height:13px;flex-shrink:0;border:none;border-radius:50%;background:#0000000f;color:#5a6472;font-size:9px;line-height:1;cursor:pointer}.dash-carousel-nav:hover{background:#0000001f}.dash-carousel-dots{display:flex;align-items:center;gap:4px}.dash-carousel-dot{width:4px;height:4px;border-radius:50%;background:#00000026;cursor:pointer;transition:background .15s,transform .15s}.dash-carousel-dot.active{background:#2e8b47;transform:scale(1.3)}.dash-zone-carousel-track{display:flex;align-items:stretch;gap:6px;flex:1;min-height:0;overflow:hidden}.dash-zone-carousel-track .zone-health-card{flex:1 1 160px;animation:zone-card-slide-in .35s ease}@keyframes zone-card-slide-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}.dash-map-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;flex-shrink:0}.dash-map-header .dash-card-title{margin:0}.dash-farm-select{font-size:11px;border:1px solid #e2e6e9;border-radius:6px;padding:3px 8px;outline:none;cursor:pointer;background:#f4f5f6;color:#5a6472;font-family:DM Sans,sans-serif}.dash-farm-select:focus{border-color:#2e8b47}.dash-farm-badge{font-size:11px;color:#2e8b47;font-weight:600}.dash-map-wrapper{position:relative;flex:1;min-height:0;max-width:100%;border-radius:10px;overflow:hidden}.dash-map-fullscreen-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:6px;background:transparent;color:#5a6472;cursor:pointer;flex-shrink:0}.dash-map-fullscreen-btn:hover{background:#dde1e4;color:#1a2228}.dash-map-fullscreen-backdrop{position:fixed;inset:0;background:#00000080;z-index:1999}.dash-map-card--fullscreen{position:fixed;inset:16px;z-index:2000;box-shadow:0 8px 40px #0006}.dash-map-loading{display:flex;align-items:center;justify-content:center;height:100%;color:#9ba3ab;font-size:12px}.dash-right{display:flex;flex-direction:column;gap:10px;min-height:0}.dash-env-hbar{display:flex;flex-direction:column;gap:8px;padding:10px 12px;min-height:115px;justify-content:space-between}.dash-env-hbar-title{font-size:.62rem;font-weight:700;color:#9ba3ab;text-transform:uppercase;letter-spacing:.07em}.dash-iot-cluster{display:flex;gap:8px;flex:1 1 0%;min-width:0;align-items:stretch}.dash-iot-card{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:6px 9px;border-radius:10px;background:#f4f5f6;transition:background .12s;flex:1 1 0%;min-width:0}.dash-iot-card:hover{background:#eaecee}.dash-iot-card--ok{background:#f0fdf4}.dash-iot-card--warn{background:#fff7ed}.dash-iot-card--danger{background:#fef2f2}.dash-iot-card--battery{background:#fefce8}.dash-iot-card-top{display:flex;align-items:center;gap:5px}.dash-iot-card-sub{display:flex;flex-wrap:wrap;gap:2px 5px;padding-left:19px}.dash-iot-sub--ok{font-size:.67rem;color:#9ca3af}.dash-iot-sub--danger{font-size:.67rem;color:#ef4444;font-weight:600}.dash-iot-sub--battery{font-size:.67rem;color:#d97706;font-weight:600}.dash-iot-sub--disabled{font-size:.67rem;color:#6b7280;font-weight:600}.dash-iot-h{flex:1;display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:9px;background:#f4f5f6;transition:background .12s}.dash-iot-h:hover{background:#eaecee}.dash-iot-h--ok{background:#f0fdf4}.dash-iot-h--warn{background:#fff7ed}.dash-iot-h--danger{background:#fef2f2}.dash-iot-h--battery{background:#fefce8}.dash-iot-h-img,.dash-iot-h-svg{width:13px;height:13px;flex-shrink:0}.dash-iot-h-lbl{font-size:.7rem;color:#6b7280;flex:1;white-space:nowrap}.dash-iot-h-val{font-size:.88rem;font-weight:700;color:#111;white-space:nowrap}.dash-right .dash-card:not(.dash-env-hbar){flex:1}.dash-env-hbar{flex:none}.dash-env-pills{display:flex;flex-direction:row;flex-wrap:wrap;gap:5px;flex:1;align-items:stretch}.dep{background:#fff;border-radius:7px;padding:6px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;flex:1 1 70px;min-width:60px}.dep-val{font-size:.82rem;font-weight:700;color:#2e8b47;font-variant-numeric:tabular-nums;white-space:nowrap}.dep-lbl{font-size:.58rem;color:#9ba3ab;text-transform:uppercase;letter-spacing:.05em}.dash-alert-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:#d1d5db transparent}.dash-alert-list::-webkit-scrollbar{width:3px}.dash-alert-list::-webkit-scrollbar-track{background:#f0f1f2;border-radius:99px}.dash-alert-list::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:99px}.dash-alert-list::-webkit-scrollbar-thumb:hover{background:#9ba3ab}.dash-alert-list::-webkit-scrollbar-button{display:none}.dash-alert-item{display:flex;align-items:center;gap:7px;padding:7px 0;border-bottom:1px solid #e2e6e9}.dash-alert-item:last-child{border-bottom:none}.dash-alert-chip{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}.dash-alert-chip--danger{background:#fee2e2;color:#991b1b}.dash-alert-chip--warning{background:#fef3c7;color:#92400e}.dash-alert-chip--info{background:#e0f2fe;color:#075985}.dash-alert-msg{flex:1;font-size:11px;color:#1a2228;line-height:1.3;min-width:0}.dash-alert-time{font-size:9px;color:#9ba3ab;white-space:nowrap;flex-shrink:0}.dash-alert-dismiss{background:none;border:none;cursor:pointer;font-size:14px;color:#9ba3ab;line-height:1;padding:0 2px;flex-shrink:0;transition:color .15s}.dash-alert-dismiss:hover{color:#dc2626}.dash-alert-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#2e8b47;font-size:12px;font-weight:500}.dash-stats-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;flex:1;align-content:start}.dash-stat{display:flex;flex-direction:column;padding:6px 8px;background:#f4f5f6;border-radius:8px;gap:2px}.dash-stat-value{font-size:13px;font-weight:600;line-height:1.1}.dash-stat-unit{font-size:9px;font-weight:400;color:#9ba3ab;margin-left:2px}.dash-stat-label{font-size:10px;color:#9ba3ab}.dash-env-weather{overflow:hidden}.dash-env-body{display:flex;flex-direction:column;flex:1;min-height:0;gap:10px}.dash-env-gauges{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;align-items:center}.dash-env-weather .gauge-svg{width:60px;height:60px}.dash-env-weather .gauge-label{font-size:11px;font-weight:600}.dash-env-vsep{display:none}.dash-env-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;flex:1;align-content:start}.dash-env-stat{display:flex;flex-direction:column;padding:5px 7px;background:#f4f5f6;border-radius:8px;gap:1px;border-left:2px solid transparent;transition:border-color .15s}.dash-env-stat:hover{border-left-color:#2e8b47}.dash-env-stat-value{font-size:12px;font-weight:600;line-height:1.2}.dash-env-stat-unit{font-size:8px;font-weight:400;color:#9ba3ab;margin-left:2px}.dash-env-stat-label{font-size:9px;color:#9ba3ab;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gauge-wrap{display:flex;flex-direction:column;align-items:center;gap:4px}.gauge-svg{width:68px;height:68px}.gauge-label{font-size:10px;color:#5a6472;font-weight:500;text-align:center}.iot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;flex:1}.iot-device{border-radius:10px;padding:10px 4px;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;transition:opacity .15s}.iot-device:hover{opacity:.85}.iot-device.iot-clickable:hover{opacity:1;transform:translateY(-2px);box-shadow:0 4px 12px #0000001f;transition:transform .15s,box-shadow .15s}.iot-device svg{width:18px;height:18px}.iot-img{width:18px;height:18px}.iot-dark .iot-img{filter:brightness(0) invert(1)}.iot-label{font-size:8px;font-weight:600;line-height:1}.iot-dark{background:#1a6b2e}.iot-dark svg{color:#fff}.iot-dark .iot-label{color:#a8e6bb}.iot-light{background:#eaf7ee}.iot-light svg{color:#2e8b47}.iot-light .iot-label{color:#2e8b47}.iot-offline{background:#fee2e2}.iot-offline svg{color:#dc2626}.iot-offline .iot-label{color:#991b1b}.iot-battery{background:#fef3c7}.iot-battery svg{color:#d97706}.iot-battery .iot-label{color:#92400e}.iot-badge{font-size:9px;font-weight:700;padding:2px 6px;border-radius:4px;line-height:1.3}.iot-dark .iot-badge{background:#3da85c;color:#fff}.iot-light .iot-badge{background:#d4f0dc;color:#1a6b2e}.iot-offline .iot-badge{background:#fca5a5;color:#7f1d1d}.iot-battery .iot-badge{background:#fcd34d;color:#78350f}body.dark-mode .dashboard{background:#141414;color:#e0e0e0}body.dark-mode .dash-heading{color:#e0e0e0}body.dark-mode .dashboard{background:#141618}body.dark-mode .dash-card{background:#1e1e1e;box-shadow:0 1px 4px #0000004d}.dash-chart-area-sm .recharts-cartesian-grid line,.dash-chart-area-sm .recharts-cartesian-grid-horizontal line,.dash-chart-area-sm .recharts-cartesian-grid-vertical line{stroke:#374151!important}body.dark-mode .dash-chart-area-sm .recharts-cartesian-grid line,body.dark-mode .dash-chart-area-sm .recharts-cartesian-grid-horizontal line,body.dark-mode .dash-chart-area-sm .recharts-cartesian-grid-vertical line{stroke:#9ca3af!important}body.dark-mode .dash-chart-area-sm{background:#252525}body.dark-mode .dash-card-title{color:#e0e0e0}body.dark-mode .dash-stat{background:#252525}body.dark-mode .dash-stat-value{color:#e0e0e0}body.dark-mode .dash-env-stat{background:#252525}body.dark-mode .dash-env-stat-value{color:#e0e0e0}body.dark-mode .dash-env-vsep{background:#ffffff14}body.dark-mode .dash-alert-item{border-color:#ffffff14}body.dark-mode .dash-alert-msg{color:#e0e0e0}body.dark-mode .dash-alert-chip--danger{background:#450a0a;color:#fca5a5}body.dark-mode .dash-alert-chip--warning{background:#451a03;color:#fcd34d}body.dark-mode .dash-alert-chip--info{background:#0c2a3d;color:#7dd3fc}body.dark-mode .dash-alert-empty{color:#6fcf87}body.dark-mode .dash-legend-item,body.dark-mode .gauge-label{color:#9ba3ab}body.dark-mode .gauge-svg text{fill:#e0e0e0}body.dark-mode .dash-toggle--off{background:#333}body.dark-mode .dash-farm-select{background:#252525;color:#ccc;border-color:#444}body.dark-mode .dash-farm-badge{color:#6fcf87}body.dark-mode .dash-map-fullscreen-btn{color:#ccc}body.dark-mode .dash-carousel-nav{background:#ffffff14;color:#ccc}body.dark-mode .dash-carousel-nav:hover{background:#ffffff29}body.dark-mode .dash-carousel-dot{background:#ffffff2e}body.dark-mode .dash-carousel-dot.active{background:#6fcf87}body.dark-mode .dash-map-fullscreen-btn:hover{background:#333;color:#fff}.zone-health-strip{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 20px}.zone-health-card{flex:1 1 160px;min-width:140px;max-width:240px;border-radius:12px;border:1.5px solid #e5e7eb;padding:6px 9px;cursor:pointer;transition:box-shadow .15s,transform .1s;background:#fff}.zone-health-card:hover{box-shadow:0 4px 16px #0000001a;transform:translateY(-1px)}.zone-health-card--ok{border-color:#86efac;background:#f0fdf4}.zone-health-card--warning{border-color:#fdba74;background:#fff7ed}.zone-health-card--critical{border-color:#fca5a5;background:#fff5f5}.zone-health-card--offline{border-color:#d1d5db;background:#f9fafb}.zone-health-card--no_data{border-color:#d1d5db;background:#f3f4f6}.zhc-header{display:flex;align-items:center;gap:3px;margin-bottom:2px}.zhc-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.zhc-dot--ok{background:#22c55e}.zhc-dot--warning{background:#f97316}.zhc-dot--critical{background:#ef4444}.zhc-dot--offline{background:#9ca3af}.zhc-dot--no_data{background:#d1d5db}.zhc-name{font-weight:600;font-size:.7rem;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zhc-farm{font-size:.57rem;color:#6b7280;margin-left:auto;flex-shrink:0}.zhc-body{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.zhc-stat{display:flex;flex-direction:column;line-height:1.1}.zhc-stat-val{font-size:.8rem;font-weight:700;color:#111}.zhc-stat-lbl{font-size:.55rem;color:#9ca3af;text-transform:uppercase;letter-spacing:.03em}.zhc-overdue{font-size:.6rem;font-weight:600;color:#c2410c;background:#fff7ed;border:1px solid #fdba74;border-radius:5px;padding:1px 5px;margin-left:auto}.zhc-disabled{font-size:.6rem;font-weight:600;color:#6b7280;background:#f3f4f6;border:1px solid #d1d5db;border-radius:5px;padding:1px 5px;margin-left:auto}body.dark-mode .zone-health-card{background:#1e1e1e;border-color:#333}body.dark-mode .zone-health-card--ok{background:#22c55e12;border-color:#22c55e4d}body.dark-mode .zone-health-card--warning{background:#f9731614;border-color:#f973164d}body.dark-mode .zone-health-card--critical{background:#ef444414;border-color:#ef44444d}body.dark-mode .zone-health-card--offline{background:#9ca3af0f;border-color:#444}body.dark-mode .zone-health-card--no_data{background:#9ca3af0a;border-color:#333}body.dark-mode .zhc-name{color:#e5e7eb}body.dark-mode .zhc-stat-val{color:#f3f4f6}body.dark-mode .zhc-overdue{background:#f9731626;border-color:#f9731666;color:#fb923c}body.dark-mode .zhc-disabled{background:#6b72801f;border-color:#6b72804d;color:#9ca3af}.dash-zone-toggles{display:flex;flex-wrap:wrap;gap:6px;padding:0 4px 8px}.dash-zone-toggle{display:flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;border:1.5px solid var(--ztc, #ccc);background:transparent;color:#555;font-size:.7rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s;opacity:.45}.dash-zone-toggle.active{background:color-mix(in srgb,var(--ztc, #ccc) 12%,transparent);color:var(--ztc, #333);opacity:1}.dash-zone-toggle-dot{width:8px;height:8px;border-radius:50%;background:var(--ztc, #ccc);flex-shrink:0}body.dark-mode .dash-zone-toggle{color:#aaa}body.dark-mode .dash-zone-toggle.active{color:var(--ztc);background:color-mix(in srgb,var(--ztc, #ccc) 18%,transparent)}body.dark-mode .dash-rail-label{color:#5a7080}body.dark-mode .zone-rail-card{background:#1e1e1e;border-color:#333}body.dark-mode .zone-rail-card--ok{background:#22c55e12;border-color:#22c55e4d}body.dark-mode .zone-rail-card--warning{background:#f9731614;border-color:#f973164d}body.dark-mode .zone-rail-card--critical{background:#ef444414;border-color:#ef44444d}body.dark-mode .zone-rail-card--offline{background:#9ca3af0f;border-color:#444}body.dark-mode .zrc-name{color:#e5e7eb}body.dark-mode .zrc-stat{color:#8097ab}body.dark-mode .zrc-stat strong,body.dark-mode .zrc-moisture-val{color:#e5e7eb}body.dark-mode .zrc-moisture-bar{background:#333}body.dark-mode .zrc-overdue{background:#f9731626;border-color:#f9731666;color:#fb923c}body.dark-mode .zrc-health-badge--ok{background:#22c55e26;color:#86efac}body.dark-mode .zrc-health-badge--warning{background:#f9731626;color:#fdba74}body.dark-mode .zrc-health-badge--critical{background:#ef444426;color:#fca5a5}body.dark-mode .zrc-health-badge--offline{background:#9ca3af1a;color:#9ca3af}body.dark-mode .dep{background:#2a2d32}body.dark-mode .dep-val{color:#6fcf87}body.dark-mode .dash-iot-h{background:#2a2d32}body.dark-mode .dash-iot-h:hover{background:#32363d}body.dark-mode .dash-iot-h--ok{background:#1a2e1e}body.dark-mode .dash-iot-h--warn{background:#2a2010}body.dark-mode .dash-iot-h--danger{background:#2a1515}body.dark-mode .dash-iot-h--battery{background:#252214}body.dark-mode .dash-iot-h-lbl{color:#9ba3ab}body.dark-mode .dash-iot-h-val{color:#e5e7eb}body.dark-mode .dash-iot-card{background:#2a2d32}body.dark-mode .dash-iot-card:hover{background:#32363d}body.dark-mode .dash-iot-card--ok{background:#1a2e1e}body.dark-mode .dash-iot-card--warn{background:#2a2010}body.dark-mode .dash-iot-card--danger{background:#2a1515}body.dark-mode .dash-iot-card--battery{background:#252214}body.dark-mode .dash-iot-sub--ok{color:#4b5563}
