:root{--color-bg-primary: #131211;--color-bg-secondary: rgba(27, 25, 23, .4);--color-bg-tertiary: rgba(35, 33, 31, .45);--color-bg-card: rgba(23, 21, 20, .35);--color-border: #2A2725;--color-border-hover: #353230;--color-border-glow: #66BB6A;--color-text-primary: #ECECEA;--color-text-secondary: #9E9E9E;--color-text-muted: #757575;--color-primary: #66BB6A;--color-primary-hover: #81C784;--color-primary-dark: #4CAF50;--color-primary-glow: rgba(102, 187, 106, .25);--color-danger: #FF4444;--color-danger-hover: #FF6666;--color-danger-glow: rgba(255, 68, 68, .4);--color-warning: #FFB300;--color-warning-glow: rgba(255, 179, 0, .4);--color-info: #00B0FF;--color-info-glow: rgba(0, 176, 255, .4);--color-success: #66BB6A;--bg-primary: var(--color-bg-primary);--bg-secondary: var(--color-bg-secondary);--bg-card: var(--color-bg-card);--text-primary: var(--color-text-primary);--text-secondary: var(--color-text-secondary);--accent-green: var(--color-primary);--accent-green-dark: var(--color-primary-dark);--accent-red: var(--color-danger);--accent-yellow: var(--color-warning);--border-color: var(--color-border);--font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", "Consolas", monospace;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius: .5rem;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--glow-primary: 0 0 12px rgba(102, 187, 106, .15);--glow-danger: 0 0 20px var(--color-danger-glow);--glow-info: 0 0 20px var(--color-info-glow)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body{height:100%;overflow:hidden;overscroll-behavior:none;background-color:var(--color-bg-primary)}body{font-family:var(--font-family);font-size:16px;line-height:1.5;color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(ellipse 80% 60% at 10% 90%,rgba(102,187,106,.14) 0%,transparent 60%),radial-gradient(ellipse 70% 50% at 90% 15%,rgba(255,183,77,.11) 0%,transparent 55%)}#root{height:100%}h1,h2,h3,h4,h5,h6{line-height:1.25;font-weight:600}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1rem}a{color:var(--color-info);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary)}button{font-family:inherit;font-size:inherit;cursor:pointer}button:disabled{cursor:not-allowed}input,textarea,select{font-family:inherit;font-size:inherit}input[type=time]::-webkit-calendar-picker-indicator,input[type=date]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator{filter:invert(1);cursor:pointer;opacity:.85}input[type=time]::-webkit-calendar-picker-indicator:hover,input[type=date]::-webkit-calendar-picker-indicator:hover,input[type=datetime-local]::-webkit-calendar-picker-indicator:hover{opacity:1}input::placeholder,textarea::placeholder{color:var(--color-text-muted)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-primary)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}::selection{background:var(--color-primary);color:#1b1917}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.spinner{display:block;width:24px;height:24px;margin:1rem auto;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes glowPulse{0%,to{box-shadow:var(--glow-primary)}50%{box-shadow:0 0 30px var(--color-primary-glow),0 0 60px #66bb6a4d}}.glow-primary{box-shadow:var(--glow-primary)}.glow-danger{box-shadow:var(--glow-danger)}.glow-info{box-shadow:var(--glow-info)}.glow-pulse{animation:glowPulse 2s ease-in-out infinite}.font-mono{font-family:var(--font-mono)}.text-neon{color:var(--color-primary);text-shadow:0 0 10px var(--color-primary-glow),0 0 20px rgba(102,187,106,.3)}.text-neon-danger{color:var(--color-danger);text-shadow:0 0 10px var(--color-danger-glow)}.text-neon-info{color:var(--color-info);text-shadow:0 0 10px var(--color-info-glow)}.card-tech{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.card-tech:hover{border-color:var(--color-primary);box-shadow:0 0 15px #66bb6a26}.status-online{color:var(--color-primary);text-shadow:0 0 8px var(--color-primary-glow)}.status-offline{color:var(--color-danger);text-shadow:0 0 8px var(--color-danger-glow)}.data-value{font-family:var(--font-mono);font-weight:600;font-size:2rem;color:var(--color-primary);text-shadow:0 0 15px var(--color-primary-glow)}.data-value--danger{color:var(--color-danger);text-shadow:0 0 15px var(--color-danger-glow)}.data-value--warning{color:var(--color-warning);text-shadow:0 0 15px var(--color-warning-glow)}.data-value--info{color:var(--color-info);text-shadow:0 0 15px var(--color-info-glow)}.scanlines:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.1) 0px,rgba(0,0,0,.1) 1px,transparent 1px,transparent 2px);pointer-events:none;z-index:10}.skeleton{background:#ffffff14;animation:skeletonPulse 1.8s ease-in-out infinite;border-radius:.25rem}@keyframes skeletonPulse{0%,to{opacity:1}50%{opacity:.4}}.skeleton-text{height:1rem;width:100%}.skeleton-card{width:100%;height:100px;border-radius:.75rem}.skeleton-circle{border-radius:50%;width:48px;height:48px}.skeleton-card-wrapper{padding:1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:.75rem}.skeleton-table{display:flex;flex-direction:column;gap:.5rem}.skeleton-table-row{width:100%}.toast-container{position:fixed;top:80px;right:1rem;z-index:3000;display:flex;flex-direction:column;gap:.75rem;max-width:400px}.toast{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;background:#1b1917;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid;border-radius:.5rem;box-shadow:0 10px 20px -4px #0009,0 4px 8px -2px #0006;animation:slideIn .3s ease-out}.toast-success{border-color:var(--color-success)}.toast-error{border-color:var(--color-danger)}.toast-warning{border-color:var(--color-warning)}.toast-info{border-color:var(--color-info)}.toast-icon{font-size:1.25rem;flex-shrink:0}.toast-message{flex:1;color:var(--color-text-primary);font-size:.875rem}.toast-close{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:.25rem;color:var(--color-text-secondary);cursor:pointer;transition:all .2s;flex-shrink:0}.toast-close:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.toast-close:focus-visible{outline:2px solid currentColor;outline-offset:2px}@media(max-width:768px){.toast-container{right:.5rem;left:.5rem;max-width:none}}.side-nav{width:240px;background:#1b191766;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-right:1px solid rgba(42,39,37,.6);padding:32px 0;overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column;gap:16px}.nav-section-title{padding:0 24px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--color-text-muted);margin-bottom:4px}.side-nav-section{display:flex;flex-direction:column}.nav-item{display:flex;align-items:center;gap:12px;height:44px;padding:0 24px;color:var(--color-text-secondary);text-decoration:none;transition:all .15s;cursor:pointer;border-left:3px solid transparent;font-family:var(--font-family);font-size:14px;font-weight:500}.nav-item:hover{background:#66bb6a0a;color:var(--color-text-primary);border-left-color:#66bb6a40}.nav-item.active{background:#66bb6a0f;color:var(--color-primary);border-left-color:var(--color-primary);font-weight:600}.nav-icon{width:18px;height:18px;flex-shrink:0}.nav-label{font-size:14px}.super-admin-badge{display:flex;align-items:center;gap:10px;margin:4px 16px 8px;padding:10px 12px;border-radius:10px;background:linear-gradient(135deg,#ffd7821a,#ffaf500a);border:1px solid rgba(255,200,110,.28);box-shadow:0 0 0 1px #ffc86e0a inset,0 4px 14px -8px #ffb45059;position:relative;overflow:hidden}.super-admin-badge:before{content:"";position:absolute;top:-20px;right:-20px;width:60px;height:60px;background:radial-gradient(circle,rgba(255,215,130,.18) 0%,transparent 70%);pointer-events:none}.super-admin-crown{flex-shrink:0;color:#ffd27a;filter:drop-shadow(0 0 6px rgba(255,200,100,.4))}.super-admin-text{display:flex;flex-direction:column;gap:1px;min-width:0}.super-admin-title{font-size:11px;font-weight:700;letter-spacing:1.1px;background:linear-gradient(90deg,#ffe7a8,#ffc06a);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.super-admin-subtitle{font-size:10.5px;color:#ffdcaa8c;letter-spacing:.2px}@media(max-width:768px){.side-nav{display:none}}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:#171514bf;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid rgba(42,39,37,.5);padding:.5rem 0 calc(.5rem + env(safe-area-inset-bottom));z-index:100}@media(max-width:768px){.bottom-nav{display:flex;justify-content:space-around;align-items:center}}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding:.5rem 1rem;color:var(--color-text-muted);text-decoration:none;transition:all var(--transition-fast);border-radius:var(--radius);min-width:60px}.bottom-nav-item:active{transform:scale(.95)}.bottom-nav-item.active{color:var(--color-primary);background:#66bb6a14}.bottom-nav-icon{width:22px;height:22px}.bottom-nav-label{font-size:.6rem;font-weight:500;letter-spacing:.02em}@media(max-width:768px){.app-shell-content{padding-bottom:calc(70px + env(safe-area-inset-bottom))!important}}.user-menu-sheet{display:flex;flex-direction:column;gap:8px;padding:2px 0 4px;min-height:0}.user-menu-header{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:10px;color:inherit;cursor:pointer;text-align:left;transition:background .15s ease}.user-menu-header:hover,.user-menu-header:active{background:#ffffff0f}.user-menu-avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#ffd78240,#ffaf5026);color:#ffd27a;font-weight:700;font-size:.95rem;flex-shrink:0}.user-menu-identity{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.user-menu-name{font-size:.9rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu-email{font-size:.72rem;color:#ffffff8c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu-chevron{font-size:1.3rem;color:#ffffff59;flex-shrink:0;line-height:1}.user-menu-section-title{display:inline-flex;align-items:center;gap:6px;padding:4px 12px 0;font-size:.68rem;font-weight:700;letter-spacing:.7px;color:#ffd27a;text-transform:uppercase}.user-menu-section-icon{opacity:.9}.user-menu-section{display:flex;flex-direction:column;gap:1px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:4px}.user-menu-section--logout{margin-top:2px}.user-menu-item{display:flex;align-items:center;gap:12px;width:100%;padding:9px 10px;background:transparent;border:none;border-radius:7px;color:inherit;cursor:pointer;text-align:left;font:inherit;transition:background .15s ease}.user-menu-item:hover,.user-menu-item:active{background:#ffffff0f}.user-menu-item-icon{flex-shrink:0;opacity:.85}.user-menu-item-label{font-size:.9rem;font-weight:500}.user-menu-item--danger{color:#f87171}.user-menu-item--danger .user-menu-item-icon{opacity:1}.user-menu-item--danger:hover,.user-menu-item--danger:active{background:#f8717114}.user-menu-dropdown-overlay{position:fixed;inset:0;z-index:1000;background:transparent}.user-menu-dropdown{position:fixed;top:60px;right:12px;width:320px;max-width:calc(100vw - 24px);max-height:calc(100vh - 80px);overflow-y:auto;background:#171514f2;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(102,187,106,.18);border-radius:12px;box-shadow:0 24px 60px #00000080;padding:12px;animation:dropdownIn .18s cubic-bezier(.2,.8,.2,1)}@keyframes dropdownIn{0%{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.user-menu-dropdown .user-menu-sheet{padding:0;gap:8px}.top-bar{display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 24px;background:#1b191773;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(42,39,37,.6);position:sticky;top:0;z-index:50}.top-bar-left{flex-shrink:0;display:flex;align-items:center;gap:12px}.top-bar-brand{display:inline-flex;align-items:center;text-decoration:none;color:inherit}.top-bar-logo-text{font-family:var(--font-mono);font-size:24px;font-weight:700;color:var(--color-primary);text-shadow:0 0 12px var(--color-primary-glow);letter-spacing:1px}.top-bar-center{flex:1;display:flex;align-items:center;justify-content:center;gap:12px}.org-switcher{padding:.5rem 1rem;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-primary);font-size:14px;font-weight:500;cursor:pointer;min-width:200px;font-family:var(--font-mono)}.org-switcher:hover{border-color:var(--color-primary)}.org-switcher:focus-visible{outline:none;border-color:var(--color-primary)}.org-name{font-size:14px;font-weight:500;color:var(--color-text-secondary);font-family:var(--font-mono)}.top-bar-right{flex-shrink:0;display:flex;align-items:center;gap:12px}.ws-indicator{display:flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--radius);font-size:.75rem;cursor:default;transition:all .15s}.ws-indicator.connected{color:var(--color-primary)}.ws-indicator.disconnected{color:var(--color-text-muted)}.ws-dot{width:8px;height:8px;border-radius:50%;transition:background .15s}.ws-indicator.connected .ws-dot{background:var(--color-primary);box-shadow:0 0 8px var(--color-primary-glow)}.ws-indicator.disconnected .ws-dot{background:var(--color-text-muted)}.top-bar-avatar{width:32px;height:32px;border-radius:50%;background:var(--color-bg-tertiary);border:1px solid var(--color-border-hover);color:var(--color-text-secondary);font-size:13px;font-weight:600;font-family:var(--font-family);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s}.top-bar-avatar:hover{background:#66bb6a26;border-color:var(--color-primary);color:var(--color-primary);box-shadow:0 0 8px var(--color-primary-glow)}.impersonation-banner{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;background:linear-gradient(180deg,#d4a55714,#d4a5570a);border-bottom:1px solid rgba(212,165,87,.35);color:var(--color-text-primary, #E8E0D0);font-size:.8125rem;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.impersonation-banner__icon{flex-shrink:0;color:#d4a557}.impersonation-banner__text{flex:1;min-width:0;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.impersonation-banner__text strong{font-weight:600;color:#f0e4c9}.impersonation-banner__btn{display:inline-flex;align-items:center;gap:.375rem;padding:.3125rem .75rem;background:transparent;color:#d4a557;border:1px solid rgba(212,165,87,.5);border-radius:6px;font-size:.75rem;font-weight:600;letter-spacing:.01em;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;flex-shrink:0;white-space:nowrap}.impersonation-banner__btn:hover:not(:disabled){background:#d4a5571f;border-color:#d4a557;color:#f0e4c9}.impersonation-banner__btn:disabled{opacity:.6;cursor:not-allowed}@media(max-width:640px){.impersonation-banner{padding:.5rem .75rem;gap:.5rem;font-size:.75rem}.impersonation-banner__text{font-size:.75rem}.impersonation-banner__btn{padding:.25rem .625rem;font-size:.6875rem}.impersonation-banner__long{display:none}}@media(min-width:641px){.impersonation-banner__short{display:none}}.app-shell{display:flex;flex-direction:column;height:100vh;background:transparent;color:var(--color-text-primary)}.app-shell-body{display:flex;flex:1;overflow:hidden}.app-shell-content{flex:1;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;padding:2rem;background:transparent}@media(max-width:768px){.app-shell-content{padding:.75rem}}.legal-footer{width:100%;padding:24px 16px 28px;border-top:1px solid var(--color-border);background:transparent;color:var(--color-text-muted);font-family:var(--font-family);font-size:13px}.legal-footer-inner{max-width:960px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px}.legal-footer-brand{display:flex;flex-direction:column;gap:2px}.legal-footer-brand-name{color:var(--color-text-primary);font-weight:600;letter-spacing:.3px}.legal-footer-brand-meta{font-size:11px;color:var(--color-text-muted)}.legal-footer-nav{display:flex;flex-wrap:wrap;gap:8px 18px}.legal-footer-nav a{color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-fast)}.legal-footer-nav a:hover,.legal-footer-nav a:focus-visible{color:var(--color-primary);outline:none}@media(max-width:540px){.legal-footer-inner{flex-direction:column;align-items:flex-start}}.login-scroll-wrapper{width:100%;max-width:100vw;height:100%;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;background:var(--color-bg-primary)}.login-scroll-wrapper::-webkit-scrollbar,.login-page::-webkit-scrollbar{width:0;height:0}.login-page{position:relative;display:flex;align-items:center;justify-content:center;width:100%;max-width:100vw;min-height:100vh;min-height:100dvh;background:var(--color-bg-primary);overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.login-page:before{content:"";position:absolute;width:500px;height:500px;border-radius:50%;background:radial-gradient(circle,rgba(102,187,106,.07) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none}.login-status-bar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;z-index:2}.login-status-left{display:flex;align-items:center;gap:8px}.login-status-dot{width:6px;height:6px;border-radius:50%;background:var(--color-primary);box-shadow:0 0 8px var(--color-primary-glow)}.login-status-text{font-size:10px;font-weight:500;letter-spacing:.5px;color:#66bb6a80}.login-status-right{font-size:10px;letter-spacing:.3px;color:var(--color-text-muted)}.login-bottom-bar{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:0 24px 16px;z-index:2}.login-bottom-left{font-family:var(--font-family);font-size:10px;color:var(--color-text-muted)}.login-bottom-right{display:flex;align-items:center;gap:6px;font-size:9px;font-weight:500;letter-spacing:.5px;color:#66bb6a61}.login-bottom-right svg{width:12px;height:12px}.login-card-wrapper{position:relative;z-index:1;width:min(420px,100%);max-width:100%;min-width:0}.login-accent-line{width:100%;height:2px;background:linear-gradient(90deg,transparent,var(--color-primary),transparent);border-radius:1px}.login-corner{position:absolute;width:20px;height:20px;pointer-events:none}.login-corner:before,.login-corner:after{content:"";position:absolute;background:#66bb6a40}.login-corner--tl{top:-12px;left:-12px}.login-corner--tl:before{top:0;left:0;width:20px;height:1px}.login-corner--tl:after{top:0;left:0;width:1px;height:20px}.login-corner--tr{top:-12px;right:-12px}.login-corner--tr:before{top:0;right:0;width:20px;height:1px}.login-corner--tr:after{top:0;right:0;width:1px;height:20px}.login-corner--bl{bottom:-12px;left:-12px}.login-corner--bl:before{bottom:0;left:0;width:20px;height:1px}.login-corner--bl:after{bottom:0;left:0;width:1px;height:20px}.login-corner--br{bottom:-12px;right:-12px}.login-corner--br:before{bottom:0;right:0;width:20px;height:1px}.login-corner--br:after{bottom:0;right:0;width:1px;height:20px}.login-card{width:100%;min-width:0;padding:40px 36px 36px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;display:flex;flex-direction:column;gap:28px;animation:fadeIn .5s ease}.login-logo-area{display:flex;flex-direction:column;align-items:center;gap:12px;position:relative;isolation:isolate}.login-logo-area:before{content:"";position:absolute;top:-28px;left:50%;width:200px;height:200px;transform:translate(-50%);background:radial-gradient(circle,rgba(0,230,118,.32) 0%,rgba(0,230,118,.14) 32%,rgba(0,230,118,.05) 55%,transparent 75%);filter:blur(4px);pointer-events:none;z-index:-1;animation:login-logo-glow 4s ease-in-out infinite}@keyframes login-logo-glow{0%,to{opacity:.85;transform:translate(-50%) scale(1)}50%{opacity:1;transform:translate(-50%) scale(1.06)}}.login-logo-img{width:72px;height:72px;object-fit:contain;position:relative;z-index:1;filter:drop-shadow(0 0 8px rgba(0,230,118,.55)) drop-shadow(0 0 22px rgba(0,230,118,.3))}.login-icon-row{display:flex;align-items:center;gap:12px}.login-icon-row svg{color:var(--color-primary);width:32px;height:32px}.login-brand-name{font-size:28px;font-weight:700;letter-spacing:1.5px;color:var(--color-text-primary)}.login-tagline{font-size:13px;letter-spacing:.3px;color:var(--color-text-secondary)}.mode-tabs{display:flex;gap:4px;padding:4px;background:var(--color-bg-secondary);border-radius:8px}.mode-tab{flex:1;padding:10px 16px;background:transparent;border:none;border-radius:6px;font-size:13px;font-weight:500;letter-spacing:.3px;color:var(--color-text-secondary);cursor:pointer;transition:all .2s;text-align:center}.mode-tab:hover{color:var(--color-text-primary)}.mode-tab.active{background:var(--color-primary);color:var(--color-bg-primary);font-weight:600}.login-form{display:flex;flex-direction:column;gap:20px;min-width:0}.form-group{display:flex;flex-direction:column;gap:8px;min-width:0}.form-group input,.form-group select,.form-group input:focus,.form-group select:focus,.form-group input:active,.form-group select:active{border:none!important;outline:none!important;box-shadow:none!important}.form-group label{font-size:12px;font-weight:600;letter-spacing:.3px;color:var(--color-text-secondary)}.form-input-wrapper{display:flex;align-items:center;gap:10px;width:100%;min-width:0;padding:14px 16px;background:transparent;border:1px solid var(--color-border);border-radius:8px;transition:border-color .2s}.form-input-wrapper:focus-within{border-color:var(--color-primary)}.form-input-wrapper svg{width:18px;height:18px;color:var(--color-text-muted);flex-shrink:0}.form-input-wrapper input{flex:1;min-width:0;padding:0;background:transparent;border:none;color:var(--color-text-primary);font-family:var(--font-family);font-size:14px;outline:none}.form-input-wrapper input:focus-visible{outline:none;outline-offset:0}.form-input-wrapper input:-webkit-autofill,.form-input-wrapper input:-webkit-autofill:hover,.form-input-wrapper input:-webkit-autofill:focus,.form-input-wrapper input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 1000px var(--color-bg-secondary, #1B1917) inset!important;-webkit-text-fill-color:var(--color-text-primary, #F0F0F0)!important;caret-color:var(--color-text-primary, #F0F0F0)!important;transition:background-color 9999s ease-in-out 0s}.form-input-wrapper input::placeholder{color:var(--color-text-muted)}.form-input-toggle{background:none;border:none;padding:0;cursor:pointer;color:var(--color-text-muted);display:flex;align-items:center;transition:color .2s}.form-input-toggle:hover{color:var(--color-text-secondary)}.form-input-toggle:focus-visible{outline:none}.form-input-toggle svg{width:18px;height:18px}.login-options{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.login-remember{display:flex;align-items:center;gap:8px;cursor:pointer}.login-remember input[type=checkbox]{appearance:none;width:16px;height:16px;border:1.5px solid var(--color-text-muted);border-radius:3px;background:transparent;cursor:pointer;transition:all .2s}.login-remember input[type=checkbox]:checked{background:var(--color-primary);border-color:var(--color-primary)}.login-remember span{font-family:var(--font-family);font-size:13px;color:var(--color-text-secondary)}.login-forgot{background:none;border:none;padding:0;font-family:var(--font-family);font-size:13px;font-weight:500;color:var(--color-primary);cursor:pointer;transition:color .2s;min-width:0;text-align:right}.login-forgot:hover{color:var(--color-primary-hover)}.login-button{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 24px;background:var(--color-primary);border:none;border-radius:8px;font-size:14px;font-weight:700;letter-spacing:.5px;color:var(--color-bg-primary);cursor:pointer;transition:all .2s;box-shadow:0 0 24px var(--color-primary-glow),0 0 6px var(--color-primary-glow)}.login-button:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 0 30px var(--color-primary-glow),0 0 60px #66bb6a4d}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-button svg{width:18px;height:18px}.error-message{padding:.75rem;background:#ff44441f;border:1px solid var(--color-danger);border-radius:8px;color:var(--color-danger);font-size:.875rem}.login-footer-version{font-size:11px;letter-spacing:.3px;color:var(--color-text-muted);text-align:center}.login-note{margin:0;font-size:.75rem;text-align:center;color:var(--color-text-muted)}.forgot-header{display:flex;flex-direction:column;align-items:center;gap:8px}.forgot-header-icon{width:28px;height:28px;color:var(--color-primary)}.forgot-title{font-size:16px;font-weight:600;letter-spacing:.3px;color:var(--color-primary)}.forgot-subtitle{font-size:13px;color:var(--color-text-secondary);text-align:center}.otp-input-group{display:flex;justify-content:center;gap:8px}.otp-input-group .otp-input{width:48px;height:56px;padding:0;text-align:center;font-family:var(--font-mono);font-size:24px;font-weight:600;color:var(--color-text-primary);background:#ffffff0a;border:1px solid var(--color-border);border-radius:8px;outline:none;transition:border-color .2s,box-shadow .2s,background .15s;caret-color:var(--color-primary);flex:0 0 48px}.otp-input-group .otp-input:focus{border-color:var(--color-primary);background:#66bb6a0f;box-shadow:0 0 0 2px var(--color-primary-glow)}.success-message{padding:.75rem;background:#66bb6a1f;border:1px solid var(--color-primary);border-radius:8px;color:var(--color-primary);font-size:.875rem;text-align:center}.forgot-back{background:none;border:none;padding:0;font-family:var(--font-family);font-size:13px;font-weight:500;color:var(--color-primary);cursor:pointer;text-align:center;transition:color .2s}.forgot-back:hover{color:var(--color-primary-hover)}@media(max-width:640px){.login-page{min-height:100vh;min-height:100dvh;align-items:center}.login-status-bar,.login-bottom-bar{display:none}.login-card-wrapper{width:100%;max-width:100%;min-height:calc(100dvh - 4px);display:flex;flex-direction:column}.login-corner{display:none}.login-card{width:100%;max-width:100%;flex:1;padding:24px 24px calc(24px + env(safe-area-inset-bottom,0px)) 24px;gap:20px;justify-content:flex-start;padding-top:calc(24px + env(safe-area-inset-top,0px))}.login-brand-name{font-size:22px;letter-spacing:1.5px}.login-icon-row svg{width:26px;height:26px}.mode-tab{min-width:0;font-size:11px;padding:8px 12px}.login-options{align-items:flex-start;gap:8px}.login-remember{flex:0 0 auto}.form-group label{font-size:10px}.form-input-wrapper{padding:12px 14px}.form-input-wrapper input{font-size:16px}.login-button{font-size:13px;padding:14px 20px}.login-footer-version{padding-top:12px}.otp-input{width:40px;height:48px;font-size:20px}.otp-input-group{gap:6px}}.modal-overlay{position:fixed;inset:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}.modal-overlay.modal-overlay--nativeSheetLight{background:#00000080;align-items:flex-end;justify-content:center;padding:12px 12px calc(12px + env(safe-area-inset-bottom));inset:0}.modal-overlay--fullscreen{background:var(--color-bg-primary);align-items:stretch;justify-content:stretch;padding:0;height:100vh;height:100dvh;min-height:100vh;min-height:100dvh;overflow:hidden}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-container{width:90%;max-width:600px;max-height:90vh;background:#171514bf;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(102,187,106,.12);border-radius:1rem;overflow:hidden;animation:slideUp .3s ease-out}.modal-container.modal-container--nativeSheetLight{width:100%;max-width:560px;max-height:92vh;background:#171514bf;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(102,187,106,.12);border-radius:20px 20px 14px 14px;box-shadow:0 24px 60px #00000080;animation:sheetUp .28s cubic-bezier(.2,.8,.2,1)}.modal-container--fullscreen{width:100vw;height:100vh;height:100dvh;min-height:100vh;min-height:100dvh;max-width:none;max-height:none;background:var(--color-bg-primary);border:none;border-radius:0;box-shadow:none;animation:none;display:flex;flex-direction:column;overflow:hidden}@media(min-width:768px){.modal-container--fullscreen{width:90vw;max-width:540px;height:85vh;min-height:auto;border-radius:12px;border:1px solid var(--color-border)}}.modal-handle{width:44px;height:5px;border-radius:999px;background:var(--color-text-muted);opacity:.4;margin:10px auto 0}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes sheetUp{0%{transform:translateY(18px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid var(--color-border)}.modal-container--nativeSheetLight .modal-header{padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);position:sticky;top:0;background:#1b1917eb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.modal-container--fullscreen .modal-header{padding:calc(1rem + env(safe-area-inset-top)) 1.25rem 1rem;border-bottom:1px solid var(--color-border);position:sticky;top:0;background:#0a0a0af7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10}.modal-header h2{margin:0;font-size:1.25rem;color:var(--color-text-primary)}.modal-container--nativeSheetLight .modal-header h2{color:var(--color-text-primary);font-size:1.05rem;font-weight:700;letter-spacing:-.01em}.modal-container--fullscreen .modal-header h2{color:#f0f0f0;font-size:1.05rem;font-weight:800;letter-spacing:-.01em}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:.25rem;color:var(--color-text-secondary);font-size:1.5rem;cursor:pointer;transition:all .2s}.modal-container--nativeSheetLight .modal-close{color:var(--color-text-muted)}.modal-container--fullscreen .modal-close{color:#888}.modal-close:hover,.modal-container--nativeSheetLight .modal-close:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.modal-container--fullscreen .modal-close:hover{background:var(--color-bg-tertiary);color:#f0f0f0}.modal-close:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.modal-container--nativeSheetLight .modal-close:focus-visible{outline:2px solid var(--color-primary)}.modal-body{padding:1.5rem;overflow-y:auto;max-height:calc(90vh - 80px)}.modal-container--nativeSheetLight .modal-body{padding:1.25rem;max-height:calc(92vh - 64px);color:var(--color-text-primary)}.modal-container--fullscreen .modal-body{padding:1.25rem;max-height:none;color:#f0f0f0;flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-bottom:calc(1.25rem + env(safe-area-inset-bottom));background:var(--color-bg-primary)}.modal-container--fullscreen .modal-actions{position:sticky;bottom:0;background:#0a0a0af7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--color-border);padding:1rem 1.25rem calc(1rem + env(safe-area-inset-bottom));margin:1.25rem -1.25rem calc(-1.25rem - env(safe-area-inset-bottom));z-index:10}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:none;border-radius:var(--radius);font-weight:600;font-family:inherit;cursor:pointer;transition:all var(--transition-fast);text-transform:uppercase;letter-spacing:.03em}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#1b1917;font-weight:700;box-shadow:0 0 15px var(--color-primary-glow)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 0 25px var(--color-primary-glow),0 0 40px #66bb6a33}.btn-primary:active:not(:disabled){transform:scale(.97);transition-duration:.05s}.btn-secondary{background:transparent;border:1px solid var(--color-border);color:var(--color-text-primary)}.btn-secondary:hover:not(:disabled){background:var(--color-bg-tertiary)}.btn-secondary:active:not(:disabled){transform:scale(.97);transition-duration:.05s}.modal-container--nativeSheetLight .btn-secondary{border-color:var(--color-border);color:var(--color-text-primary);background:transparent}.modal-container--nativeSheetLight .btn-secondary:hover:not(:disabled){background:var(--color-bg-tertiary)}.modal-container--nativeSheetLight .btn-ghost{color:var(--color-text-muted)}.modal-container--nativeSheetLight .btn-ghost:hover:not(:disabled){background:var(--color-bg-tertiary);color:var(--color-text-primary)}.modal-container--nativeSheetLight .btn-primary{background:var(--color-primary);color:#1b1917;font-weight:700}.modal-container--nativeSheetLight .btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.modal-container--fullscreen .btn-secondary{border-color:var(--color-border);color:var(--color-text-primary);background:transparent}.modal-container--fullscreen .btn-secondary:hover:not(:disabled){background:var(--color-bg-tertiary)}.modal-container--fullscreen .btn-ghost{color:var(--color-text-secondary)}.modal-container--fullscreen .btn-ghost:hover:not(:disabled){background:var(--color-bg-secondary);color:var(--color-text-primary)}.modal-container--fullscreen .btn-primary{background:var(--color-primary);color:#1b1917;font-weight:700;box-shadow:0 0 15px var(--color-primary-glow)}.modal-container--fullscreen .btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 0 25px var(--color-primary-glow),0 0 40px #66bb6a33}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-bg-secondary);color:var(--color-text-primary)}.btn-danger{background:var(--color-danger);color:#fff;box-shadow:0 0 15px var(--color-danger-glow)}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);box-shadow:0 0 25px var(--color-danger-glow)}.btn-sm{padding:.5rem .75rem;font-size:.875rem}.btn-md{padding:.75rem 1rem;font-size:1rem}.btn-lg{padding:.875rem 1.5rem;font-size:1.125rem}.btn-loading{position:relative;color:transparent}.btn-loading:after{content:"";position:absolute;width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.step-progress{display:flex;justify-content:center;gap:.5rem;padding:.5rem 0 .25rem}.step-dot{width:8px;height:8px;border-radius:50%;background:var(--color-bg-tertiary);transition:all .3s ease}.step-dot--completed{background:#66bb6a}.step-dot--active{background:#66bb6a;transform:scale(1.25);box-shadow:0 0 8px #66bb6a99}.modal-container--nativeSheetLight .step-dot{background:#0f172a26}.modal-container--nativeSheetLight .step-dot--completed{background:#059669}.modal-container--nativeSheetLight .step-dot--active{background:#059669;box-shadow:0 0 8px #05966966}.provision-step{padding:1rem 0;animation:stepFadeIn .25s ease-out}@keyframes stepFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.provision-scan{text-align:center}.ble-scan-title{font-size:1rem;font-weight:600;color:var(--color-text-primary);margin:0 0 .25rem}.ble-device-list{display:flex;flex-direction:column;gap:.75rem;margin:1rem 0;max-height:300px;overflow-y:auto;padding-right:.5rem;text-align:left}.ble-device-item{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:var(--color-bg-secondary);border:2px solid var(--color-border);border-radius:10px;cursor:pointer;transition:all .2s ease;text-align:left;width:100%}.ble-device-item:hover{border-color:#3b82f6;transform:translateY(-1px)}.ble-device-item:active{transform:scale(.97);transition-duration:.05s}.ble-device-left{display:flex;align-items:center;gap:1rem;flex:1}.ble-device-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:8px;background:#66bb6a1a;color:var(--color-primary, #66BB6A)}.ble-device-info{flex:1;min-width:0}.ble-device-name{display:flex;align-items:center;gap:.5rem;font-weight:600;color:var(--color-text-primary);font-size:.9375rem;margin-bottom:.25rem;word-break:break-word}.ble-device-badge{font-size:.6875rem;font-weight:600;padding:.125rem .5rem;border-radius:999px;background:#3b82f626;color:#60a5fa;white-space:nowrap}.ble-device-details{display:flex;align-items:center;gap:.75rem;font-size:.75rem;color:var(--color-text-secondary)}.ble-signal{font-family:monospace;color:var(--color-primary);letter-spacing:2px}.ble-serial,.ble-rssi{font-family:monospace}.ble-still-scanning{font-style:italic;animation:pulse 1.5s ease-in-out infinite}.scan-animation{position:relative;width:140px;height:140px;margin:1rem auto;display:flex;align-items:center;justify-content:center}.scan-icon{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:center;color:var(--color-primary, #66BB6A);animation:scanPulse 2s ease-in-out infinite}.scan-icon svg{filter:drop-shadow(0 0 8px var(--color-primary-glow, rgba(102, 187, 106, .7)))}@keyframes scanPulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.scan-ripple-ring{position:absolute;top:50%;left:50%;width:40px;height:40px;margin-top:-20px;margin-left:-20px;border-radius:50%;border:2px solid #66BB6A;box-shadow:0 0 8px #66bb6a4d;animation:scanRipple 2.4s ease-out infinite}.scan-ripple-ring--2{animation-delay:.8s}.scan-ripple-ring--3{animation-delay:1.6s}@keyframes scanRipple{0%{transform:scale(1);opacity:.6}to{transform:scale(3.5);opacity:0}}.modal-container--nativeSheetLight .scan-ripple-ring{border-color:#059669;box-shadow:0 0 8px #05966940}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}.text-muted{color:var(--color-text-secondary);font-size:.875rem;margin-top:.5rem}.progress-bar-container{display:flex;align-items:center;gap:.75rem;margin:1rem 0}.progress-bar{flex:1;height:8px;background-color:var(--color-bg-secondary);border-radius:4px;overflow:hidden;position:relative}.progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary),#3b82f6);transition:width .3s ease;border-radius:4px}.progress-shimmer{position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.15) 50%,transparent 100%);animation:shimmer 1.5s ease-in-out infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-percentage{font-size:.875rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-primary);min-width:2.5rem;text-align:right}.modal-container--fullscreen .progress-fill{box-shadow:0 0 12px #66bb6a80}.modal-container--fullscreen .progress-percentage{color:#66bb6a;text-shadow:0 0 8px rgba(102,187,106,.4)}.modal-container--nativeSheetLight .progress-percentage{color:#059669}.device-identity-bar{display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.4rem .75rem;background:#66bb6a0f;border:1px solid rgba(102,187,106,.15);border-radius:8px;margin-bottom:1rem;font-size:.75rem}.device-identity-brand{color:var(--color-primary);font-weight:600}.device-identity-sep{color:var(--color-text-muted)}.device-identity-serial{color:var(--color-text-secondary);font-family:var(--font-mono)}.device-identity-name{color:var(--color-text-primary);font-weight:500}.device-header-premium{display:flex;align-items:center;gap:1rem;padding:1.5rem;background:linear-gradient(135deg,#10b9811a,#3b82f61a);border:1px solid rgba(16,185,129,.2);border-radius:12px;margin-bottom:1.5rem}.device-icon-large{font-size:3rem;flex-shrink:0;display:flex;align-items:center;justify-content:center}.device-logo-img{width:64px;height:64px;object-fit:contain}.device-info-premium h3{margin:0 0 .5rem;font-size:1.125rem;font-weight:600;color:var(--color-text-primary)}.device-serial,.device-firmware{margin:.25rem 0;font-size:.875rem;color:var(--color-text-secondary)}.device-serial strong{color:var(--color-primary);font-weight:600}.wifi-scanning{text-align:center;padding:2rem 1rem}.scanning-spinner{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;margin:0 auto 1rem;border-radius:50%;background:#66bb6a1f;border:1px solid rgba(102,187,106,.35);color:var(--color-primary, #66BB6A);animation:scanningPulse 1.6s ease-in-out infinite}.scanning-spinner svg{filter:drop-shadow(0 0 6px var(--color-primary-glow, rgba(102, 187, 106, .6)))}@keyframes scanningPulse{0%,to{transform:scale(1);box-shadow:0 0 #66bb6a59}50%{transform:scale(1.06);box-shadow:0 0 0 12px #66bb6a00}}.wifi-ready{text-align:center;padding:1rem}.wifi-header{margin-bottom:1.5rem}.wifi-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.wifi-refresh-link{display:inline-flex;align-items:center;gap:.35rem;background:none;border:none;color:var(--color-primary);font-size:.8125rem;font-weight:600;cursor:pointer;padding:.25rem .5rem;border-radius:6px;transition:all .2s;flex-shrink:0;margin-top:.125rem}.wifi-refresh-link:hover:not(:disabled){background:#10b9811a}.wifi-refresh-link:disabled{opacity:.6;cursor:not-allowed}.wifi-refresh-icon{font-size:1.125rem;display:inline-block;line-height:1}.wifi-refresh-spinning{animation:spin .8s linear infinite}.modal-container--fullscreen .wifi-refresh-link{color:#66bb6a}.modal-container--fullscreen .wifi-refresh-link:hover:not(:disabled){background:#66bb6a1a}.modal-container--nativeSheetLight .wifi-refresh-link{color:#059669}.modal-container--nativeSheetLight .wifi-refresh-link:hover:not(:disabled){background:#05966914}.wifi-subtitle{font-size:.9375rem;color:var(--color-text-primary);margin:0}.wifi-networks-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem;max-height:300px;overflow-y:auto;padding-right:.5rem}.wifi-network-item{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:var(--color-bg-secondary);border:2px solid var(--color-border);border-radius:10px;cursor:pointer;transition:all .2s ease;text-align:left;width:100%}.wifi-network-item:hover{border-color:#3b82f6;background:var(--color-bg-secondary);transform:translateY(-1px)}.wifi-network-item:active{transform:scale(.97);transition-duration:.05s}.wifi-network-item.selected{border-color:var(--color-primary);background:#10b9811a;box-shadow:0 0 0 3px #10b9811a}.wifi-network-item.wifi-manual{border-style:dashed}.wifi-network-left{display:flex;align-items:center;gap:1rem;flex:1}.wifi-network-icon{font-size:1.5rem;flex-shrink:0}.wifi-network-info{flex:1;min-width:0}.wifi-network-name{font-weight:600;color:var(--color-text-primary);font-size:.9375rem;margin-bottom:.25rem;word-break:break-word}.wifi-network-details{display:flex;align-items:center;gap:.75rem;font-size:.75rem;color:var(--color-text-secondary)}.wifi-signal{font-family:monospace;color:var(--color-primary);letter-spacing:2px}.wifi-rssi{font-family:monospace}.wifi-secure{display:inline-flex;align-items:center;gap:.25rem;color:#fbbf24}.wifi-check{font-size:1.25rem;color:var(--color-primary);font-weight:700;flex-shrink:0}.wifi-empty{text-align:center;padding:2rem 1rem}.wifi-selected-panel{display:flex;flex-direction:column;gap:1rem}.wifi-selected-card{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;background:#10b98114;border:2px solid rgba(16,185,129,.35);border-radius:12px;gap:1rem}.wifi-selected-info{display:flex;align-items:center;gap:1rem;flex:1;min-width:0}.wifi-selected-icon{font-size:1.75rem;flex-shrink:0}.wifi-selected-details{flex:1;min-width:0}.wifi-selected-name{font-weight:700;font-size:1rem;color:var(--color-text-primary);margin-bottom:.25rem;word-break:break-word}.wifi-selected-meta{display:flex;align-items:center;gap:.75rem;font-size:.75rem;color:var(--color-text-secondary)}.wifi-change-btn{padding:.5rem 1rem;font-size:.8125rem;font-weight:600;background:#3b82f61f;border:1px solid rgba(59,130,246,.35);border-radius:8px;color:#60a5fa;cursor:pointer;transition:all .2s;flex-shrink:0}.wifi-change-btn:hover{background:#3b82f633}.wifi-change-btn--inline{align-self:flex-start;background:transparent;border:none;color:var(--color-text-secondary);padding:.5rem 0;font-size:.8125rem}.wifi-change-btn--inline:hover{color:var(--color-text-primary);background:transparent}.wifi-manual-panel{display:flex;flex-direction:column;gap:.75rem}.wifi-password-section{margin-top:.5rem}.modal-container--nativeSheetLight .wifi-selected-card{background:#10b9810f;border-color:#10b9814d}.modal-container--nativeSheetLight .wifi-selected-name{color:#0f172a}.modal-container--nativeSheetLight .wifi-selected-meta{color:#64748b}.modal-container--nativeSheetLight .wifi-change-btn{background:#2563eb14;border-color:#2563eb40;color:#2563eb}.modal-container--nativeSheetLight .wifi-change-btn:hover{background:#2563eb26}.modal-container--nativeSheetLight .wifi-change-btn--inline{color:#64748b;background:transparent;border:none}.modal-container--nativeSheetLight .wifi-change-btn--inline:hover{color:#0f172a;background:transparent}.modal-container--fullscreen .wifi-selected-card{background:#66bb6a0f;border-color:#66bb6a4d}.modal-container--fullscreen .wifi-selected-name{color:#f0f0f0}.modal-container--fullscreen .wifi-selected-meta{color:#888}.modal-container--fullscreen .wifi-change-btn{background:#00b0ff1f;border-color:#00b0ff59;color:#00b0ff}.modal-container--fullscreen .wifi-change-btn:hover{background:#00b0ff33}.modal-container--fullscreen .wifi-change-btn--inline{color:#888;background:transparent;border:none}.modal-container--fullscreen .wifi-change-btn--inline:hover{color:#f0f0f0;background:transparent}.wifi-error-banner{display:flex;align-items:center;gap:.75rem;padding:1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:8px;margin-bottom:1.5rem}.wifi-error-icon{font-size:1.25rem;flex-shrink:0}.wifi-error-message{color:#fca5a5;font-size:.875rem;line-height:1.4}.wifi-password-row{display:flex;align-items:center;gap:.75rem}.wifi-password-row input{flex:1}.wifi-password-toggle{flex-shrink:0;padding:.625rem .75rem;border-radius:10px;border:1px solid var(--color-border);background:#0f172a14;color:var(--color-text-primary);font-weight:700;font-size:.875rem;cursor:pointer}.wifi-password-toggle:hover{background:#0f172a24}.wifi-security-row{margin-bottom:1.25rem}.wifi-switch{display:inline-flex;align-items:center;gap:.75rem;-webkit-user-select:none;user-select:none}.wifi-switch input{position:absolute;opacity:0;pointer-events:none}.wifi-switch-ui{width:44px;height:26px;border-radius:999px;background:var(--color-border);border:1px solid #475569;position:relative;transition:background .2s ease,border-color .2s ease}.wifi-switch-ui:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:999px;background:#f8fafc;box-shadow:0 4px 10px #00000040;transition:transform .2s ease}.wifi-switch input:checked+.wifi-switch-ui{background:var(--color-primary);border-color:#10b981b3}.wifi-switch input:checked+.wifi-switch-ui:after{transform:translate(18px)}.wifi-switch-label{font-weight:600;color:var(--color-text-primary);font-size:.9rem}.modal-container--nativeSheetLight .text-muted{color:#64748b}.modal-container--nativeSheetLight .device-header-premium{background:linear-gradient(135deg,#2563eb14,#10b98114);border:1px solid rgba(15,23,42,.1)}.modal-container--nativeSheetLight .device-info-premium h3{color:#0f172a}.modal-container--nativeSheetLight .device-serial strong{color:#059669}.modal-container--nativeSheetLight .wifi-subtitle{color:#0f172a}.modal-container--nativeSheetLight .wifi-network-item{background:#fff;border-color:#0f172a2e;box-shadow:0 1px 3px #0f172a0f}.modal-container--nativeSheetLight .wifi-network-item:hover{border-color:#2563eb73;background:#2563eb0a}.modal-container--nativeSheetLight .wifi-network-item:active{background:#2563eb14;transform:scale(.97);transition-duration:.05s}.modal-container--nativeSheetLight .wifi-network-item.selected{border-color:#10b9818c;background:#10b9810f;box-shadow:0 0 0 3px #10b9811a}.modal-container--nativeSheetLight .wifi-network-name{color:#0f172a}.modal-container--nativeSheetLight .wifi-network-details{color:#64748b}.modal-container--nativeSheetLight .form-group label{color:#0f172a}.modal-container--nativeSheetLight .form-group input,.modal-container--nativeSheetLight .form-group select{background:#fff;border:1.5px solid rgba(15,23,42,.2);color:#0f172a;box-shadow:0 1px 2px #0f172a0d}.modal-container--nativeSheetLight .form-group input:focus,.modal-container--nativeSheetLight .form-group select:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f;outline:none}.modal-container--nativeSheetLight .form-group input::placeholder{color:#0f172a73}.modal-container--nativeSheetLight .wifi-error-banner{background:#ef444414;border-color:#ef44442e}.modal-container--nativeSheetLight .wifi-error-message{color:#b91c1ceb}.modal-container--nativeSheetLight .wifi-password-toggle{border:1.5px solid rgba(15,23,42,.2);background:#0f172a0a;color:#0f172a;font-weight:600}.modal-container--nativeSheetLight .wifi-password-toggle:hover{background:#0f172a1a}.modal-container--nativeSheetLight .wifi-scanning p{color:#0f172a}.modal-container--nativeSheetLight .progress-bar{background:#0f172a1a}.modal-container--nativeSheetLight .wifi-switch-ui{background:#0f172a2e;border-color:#0f172a1f}.modal-container--nativeSheetLight .wifi-switch-label{color:#0f172a}.modal-container--fullscreen .text-muted{color:#888}.modal-container--fullscreen .device-header-premium{background:linear-gradient(135deg,#66bb6a14,#66bb6a0a);border:1px solid rgba(102,187,106,.2)}.modal-container--fullscreen .device-info-premium h3{color:#f0f0f0}.modal-container--fullscreen .device-serial strong{color:#66bb6a}.modal-container--fullscreen .wifi-subtitle{color:#f0f0f0}.modal-container--fullscreen .wifi-network-item{background:var(--color-bg-secondary);border-color:var(--color-border);box-shadow:none}.modal-container--fullscreen .wifi-network-item:hover{border-color:var(--color-primary);background:#66bb6a0d}.modal-container--fullscreen .wifi-network-item:active{background:#66bb6a1a;transform:scale(.97);transition-duration:.05s}.modal-container--fullscreen .wifi-network-item.selected{border-color:#66bb6a;background:#66bb6a1a;box-shadow:0 0 0 3px #66bb6a1a}.modal-container--fullscreen .wifi-network-name{color:#f0f0f0}.modal-container--fullscreen .wifi-network-details{color:#888}.modal-container--fullscreen .form-group label{color:#f0f0f0}.modal-container--fullscreen .form-group input,.modal-container--fullscreen .form-group select{background:var(--color-bg-secondary);border:1.5px solid var(--color-border);color:#f0f0f0;box-shadow:none}.modal-container--fullscreen .form-group input:focus,.modal-container--fullscreen .form-group select:focus{border-color:#66bb6a;box-shadow:0 0 0 3px #66bb6a1f;outline:none}.modal-container--fullscreen .form-group input::placeholder{color:#555}.modal-container--fullscreen .wifi-error-banner{background:#ff44441a;border-color:#ff44444d}.modal-container--fullscreen .wifi-error-message{color:#f66}.modal-container--fullscreen .wifi-password-toggle{border:1.5px solid var(--color-border);background:var(--color-bg-tertiary);color:#f0f0f0;font-weight:600}.modal-container--fullscreen .wifi-password-toggle:hover{background:var(--color-bg-card)}.modal-container--fullscreen .wifi-scanning p{color:#f0f0f0}.modal-container--fullscreen .progress-bar{background:var(--color-bg-tertiary)}.modal-container--fullscreen .wifi-switch-ui{background:var(--color-bg-tertiary);border-color:var(--color-border-hover)}.modal-container--fullscreen .wifi-switch-label{color:#f0f0f0}.modal-container--fullscreen .wifi-networks-list{max-height:none}.modal-container--nativeSheetLight .ble-scan-title{color:#0f172a}.modal-container--nativeSheetLight .ble-device-item{background:#fff;border-color:#0f172a2e;box-shadow:0 1px 3px #0f172a0f}.modal-container--nativeSheetLight .ble-device-item:hover{border-color:#2563eb73;background:#2563eb0a}.modal-container--nativeSheetLight .ble-device-item:active{background:#2563eb14}.modal-container--nativeSheetLight .ble-device-name{color:#0f172a}.modal-container--nativeSheetLight .ble-device-badge{background:#2563eb1a;color:#2563eb}.modal-container--nativeSheetLight .ble-device-details{color:#64748b}.modal-container--fullscreen .ble-scan-title{color:#f0f0f0}.modal-container--fullscreen .ble-device-item{background:var(--color-bg-secondary);border-color:var(--color-border);box-shadow:none}.modal-container--fullscreen .ble-device-item:hover{border-color:var(--color-primary);background:#66bb6a0d}.modal-container--fullscreen .ble-device-item:active{background:#66bb6a1a}.modal-container--fullscreen .ble-device-name{color:#f0f0f0}.modal-container--fullscreen .ble-device-badge{background:#00b0ff26;color:#00b0ff}.modal-container--fullscreen .ble-device-details{color:#888}.modal-container--fullscreen .ble-device-list{max-height:none}.form-group{margin-bottom:1.5rem}.form-group label{display:block;font-weight:500;margin-bottom:.5rem;color:var(--color-text-primary);font-size:.875rem}.form-group input,.form-group select{width:100%;padding:.75rem 1rem;background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-primary);font-size:.9375rem;transition:all .2s ease}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #10b9811a}.form-group input::placeholder{color:#64748b}.form-group select optgroup{background-color:var(--color-bg-secondary);color:var(--color-text-secondary);font-weight:600}.form-group select option{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem;flex-wrap:wrap}.modal-actions--paired .provision-primary-action{order:2}.modal-actions--paired .provision-secondary-action{order:1}.provision-provisioning{text-align:center}.status-step{font-weight:600;color:var(--color-text-primary);margin:1rem 0 .5rem;font-size:.9375rem}.status-message{color:var(--color-text-secondary);font-size:.875rem;margin-bottom:1rem}.wifi-networks-list::-webkit-scrollbar{width:6px}.wifi-networks-list::-webkit-scrollbar-track{background:var(--color-bg-primary);border-radius:3px}.wifi-networks-list::-webkit-scrollbar-thumb{background:var(--color-bg-tertiary);border-radius:3px}.wifi-networks-list::-webkit-scrollbar-thumb:hover{background:var(--color-bg-card)}@media(max-width:640px){.modal-body{padding:1rem;max-height:calc(100vh - 120px);max-height:calc(100dvh - 120px);overflow-y:auto;-webkit-overflow-scrolling:touch}.modal-container--fullscreen .modal-body{max-height:none;min-height:0;background:var(--color-bg-primary)}.provision-step{padding:.5rem 0}.device-header-premium{padding:1rem;margin-bottom:1rem}.wifi-selected-panel{gap:.75rem}.wifi-password-section{margin-top:.25rem}.modal-actions{flex-direction:column;gap:.625rem;border-top:1px solid var(--color-border);position:sticky;bottom:-1rem;background:var(--color-bg-secondary);margin:1rem -1rem -1rem;padding:1rem;z-index:5}.modal-actions button{width:100%;justify-content:center;font-size:16px}.modal-actions--paired .provision-primary-action{order:1;width:100%}.modal-actions--paired .provision-secondary-action{order:2;width:auto;min-width:0;align-self:center;padding:.375rem .5rem;border:none;background:transparent;box-shadow:none;text-transform:none;letter-spacing:0;font-size:.875rem;line-height:1.2;color:var(--color-text-secondary)}.modal-actions--paired .provision-secondary-action:hover:not(:disabled),.modal-actions--paired .provision-secondary-action:active:not(:disabled){background:transparent;transform:none;box-shadow:none;color:var(--color-text-primary)}.modal-container--nativeSheetLight .modal-actions{background:#f8fafcf7;border-top:1px solid rgba(15,23,42,.08);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.modal-container--fullscreen .modal-actions{background:#0a0a0af7;border-top:1px solid var(--color-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.modal-container--nativeSheetLight .modal-actions--paired .provision-secondary-action{color:#64748b}.modal-container--nativeSheetLight .modal-actions--paired .provision-secondary-action:hover:not(:disabled),.modal-container--nativeSheetLight .modal-actions--paired .provision-secondary-action:active:not(:disabled){color:#0f172a}.modal-container--fullscreen .modal-actions--paired .provision-secondary-action{color:#888}.modal-container--fullscreen .modal-actions--paired .provision-secondary-action:hover:not(:disabled),.modal-container--fullscreen .modal-actions--paired .provision-secondary-action:active:not(:disabled){color:#f0f0f0}.form-group input,.form-group select{font-size:16px;padding:.875rem}.form-group input:focus{scroll-margin-bottom:200px}}.device-type-list{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.device-type-option{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-secondary);font-size:.85rem;cursor:pointer;transition:all .15s}.device-type-option:hover{border-color:var(--color-primary);color:var(--color-text-primary)}.device-type-option--active{border-color:var(--color-primary);background:#66bb6a1a;color:var(--color-primary)}.device-type-icon{display:flex;align-items:center;opacity:.7}.device-type-option--active .device-type-icon{opacity:1}.hardware-detection-chip{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem .75rem;margin-bottom:.75rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;font-size:.8rem}.hardware-detection-chip__label{display:inline-flex;align-items:center;gap:.5rem;color:var(--color-text-secondary);font-weight:500}.hardware-detection-chip__icon{font-size:.95rem;opacity:.85}.hardware-detection-chip__action{background:transparent;border:none;padding:0;font:inherit;font-weight:600;color:var(--color-primary);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.hardware-detection-chip__action:hover,.hardware-detection-chip__action:active{opacity:.8}.provision-unknown-message{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;padding:1.5rem .5rem .5rem}.provision-unknown-icon{font-size:2.5rem;line-height:1}.provision-unknown-message h3{margin:.25rem 0 0;font-size:1.05rem;line-height:1.3}.provision-unknown-message p{margin:0;font-size:.875rem;line-height:1.4}.provision-unknown-actions{display:flex;flex-direction:column;gap:.5rem;margin-top:1.5rem}.programming-modal{display:flex;flex-direction:column;gap:1.5rem}.irrigation-mode{display:flex;flex-direction:column;gap:1rem}.irrigation-placeholder{padding:1.25rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md)}.irrigation-placeholder h4{margin:0 0 .75rem;font-size:1rem;font-weight:600;color:var(--color-text-primary)}.irrigation-placeholder p{margin:0;color:var(--color-text-secondary);line-height:1.6}.irrigation-placeholder p+p{margin-top:.75rem}.irrigation-derived{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.875rem 1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md)}.irrigation-derived__label{color:var(--color-text-secondary);font-size:.875rem;font-weight:600}.irrigation-derived strong{color:var(--color-primary);font-weight:700}.mode-selector{display:flex;gap:.5rem;padding:.25rem;background:var(--color-bg-primary);border-radius:var(--radius-md);border:1px solid var(--color-border)}.mode-tab{flex:1;padding:.75rem 1rem;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:.875rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.mode-tab:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.mode-tab.active{background:var(--color-primary);color:var(--color-bg-primary);box-shadow:var(--glow-primary)}.scheduled-mode{display:flex;flex-direction:column;gap:1.5rem}.schedules-list{display:flex;flex-direction:column;gap:.75rem;max-height:400px;overflow-y:auto;padding-right:.5rem}.schedules-list::-webkit-scrollbar{width:6px}.schedules-list::-webkit-scrollbar-track{background:var(--color-bg-primary);border-radius:var(--radius-sm)}.schedules-list::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}.schedules-list::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.schedule-item{padding:1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:.75rem}.schedule-header{display:flex;justify-content:space-between;align-items:center}.schedule-time{font-size:1.25rem;font-weight:700;color:var(--color-text-primary);font-family:JetBrains Mono,monospace}.schedule-actions{display:flex;align-items:center;gap:.5rem}.toggle-label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.toggle-label input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--color-primary)}.toggle-text{font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}.schedule-details{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--color-text-secondary)}.schedule-buttons{display:flex;gap:.5rem;margin-top:.25rem}.loading-state,.empty-state{padding:2rem 1rem;text-align:center;color:var(--color-text-muted);font-size:.875rem}.schedule-form{padding:1.5rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:1rem}.schedule-form h4{margin:0 0 .5rem;font-size:1rem;font-weight:600;color:var(--color-text-primary)}.timer-form{display:flex;flex-direction:column;gap:1.5rem}.irrigation-submode{display:flex;gap:.5rem;padding:.25rem;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md)}.irrigation-time-row{display:flex;gap:.75rem;align-items:center}.irrigation-time-row input{flex:1}.irrigation-times-list{display:flex;flex-wrap:wrap;gap:.5rem}.irrigation-time-chip{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#66bb6a14;border:1px solid rgba(102,187,106,.25);border-radius:999px;color:var(--color-primary);font-size:.875rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.irrigation-time-chip:hover{background:#66bb6a24;border-color:#66bb6a66}.timer-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md)}.timer-status{font-size:.875rem;font-weight:700;letter-spacing:.02em}.timer-status.active{color:var(--color-primary);text-shadow:0 0 10px rgba(102,187,106,.2)}.timer-status.paused{color:var(--color-text-secondary)}.form-field{display:flex;flex-direction:column;gap:.5rem}.form-field label{font-size:.875rem;font-weight:600;color:var(--color-text-primary)}.form-field input,.form-field select{padding:.75rem;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:1rem;transition:border-color var(--transition-fast)}.form-field input:focus,.form-field select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #66bb6a26}.form-field input:disabled,.form-field select:disabled{opacity:.5;cursor:not-allowed}.checkbox-field label{display:flex;align-items:center;gap:.75rem;cursor:pointer;font-weight:500}.checkbox-field input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--color-primary)}.checkbox-field input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}.interval-label-row{display:flex;align-items:center;justify-content:space-between}.unit-toggle{display:flex;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.unit-btn{padding:.25rem .75rem;border:none;background:transparent;color:var(--color-text-secondary);font-size:.75rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.unit-btn:hover:not(:disabled){color:var(--color-text-primary)}.unit-btn.active{background:var(--color-primary);color:var(--color-bg-primary)}.unit-btn:disabled{opacity:.5;cursor:not-allowed}.interval-presets{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.preset-button{padding:.5rem 1rem;border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text-secondary);border-radius:var(--radius-md);cursor:pointer;font-size:.875rem;font-weight:600;transition:all var(--transition-fast)}.preset-button:hover:not(:disabled):not(.active){border-color:var(--color-primary);color:var(--color-primary)}.preset-button.active{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-bg-primary);box-shadow:var(--glow-primary)}.preset-button:disabled{opacity:.5;cursor:not-allowed}.pot-size-presets{gap:.5rem}.pot-size-button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:.15rem;padding:.5rem .55rem .45rem;border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text-secondary);border-radius:var(--radius-md);cursor:pointer;font-size:.75rem;font-weight:600;line-height:1;transition:border-color var(--transition-fast),color var(--transition-fast);min-width:56px}.pot-size-button__icon{width:32px;height:36px;display:block;color:inherit;transition:filter var(--transition-fast),color var(--transition-fast)}.pot-size-button__label{letter-spacing:.01em}.pot-size-button:hover:not(:disabled):not(.active){border-color:#66bb6a73;color:var(--color-text-primary)}.pot-size-button.active{border-color:#66bb6a8c;color:var(--color-primary)}.pot-size-button.active .pot-size-button__icon{color:var(--color-primary);filter:drop-shadow(0 0 3px rgba(102,187,106,.85)) drop-shadow(0 0 7px rgba(102,187,106,.55))}.pot-size-button.active:after{content:"";position:absolute;top:-6px;right:-6px;width:18px;height:18px;background:var(--color-primary);border-radius:50%;border:2px solid var(--color-bg-primary);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%23131211' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='2.5 6.5 5 9 9.5 3.5'/></svg>");background-repeat:no-repeat;background-position:center;background-size:12px 12px;box-shadow:0 0 0 1px #66bb6a59,0 0 8px #66bb6a8c}.pot-size-button:disabled{opacity:.5;cursor:not-allowed}.custom-interval{flex:1;min-width:100px;padding:.5rem;border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text-primary);border-radius:var(--radius-md);font-size:.875rem}.custom-interval:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #66bb6a26}.time-window{display:flex;align-items:center;gap:.75rem}.time-window input{flex:1}.time-window span{color:var(--color-text-muted);font-weight:600}.days-selector{display:flex;flex-wrap:wrap;gap:.5rem}.day-button{flex:1;min-width:50px;padding:.75rem .5rem;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;font-weight:600;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.day-button:hover:not(:disabled){background:var(--color-bg-tertiary);color:var(--color-text-primary)}.day-button.active{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-bg-primary);box-shadow:var(--glow-primary)}.day-button:disabled{opacity:.5;cursor:not-allowed}.date-range{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md)}.timer-summary{padding:1rem;background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;color:var(--color-text-secondary);line-height:1.6}.timer-summary strong{color:var(--color-text-primary);font-weight:600}.mode-note{padding:.875rem;background:#2196f31a;border:1px solid rgba(33,150,243,.3);border-radius:var(--radius-md);font-size:.8125rem;color:var(--color-info);line-height:1.5}.mode-note strong{font-weight:600}.field-hint{font-size:.75rem;color:var(--color-text-muted);margin-top:.25rem}.form-error{padding:.75rem;background:#ff52521a;border:1px solid var(--color-danger);border-radius:var(--radius-md);color:var(--color-danger);font-size:.875rem;font-weight:500}.form-actions{display:flex;gap:.75rem;margin-top:.5rem}.form-actions button{flex:1}@media(max-width:768px){.date-range{grid-template-columns:1fr}.time-window{flex-direction:column;align-items:stretch}.time-window span{text-align:center}}.immediate-irrigation-form{display:flex;flex-direction:column;gap:1rem}.immediate-irrigation-form .form-field{display:flex;flex-direction:column;gap:.5rem}.immediate-irrigation-label-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.immediate-irrigation-form .form-field label{font-size:.95rem;font-weight:600;color:var(--color-text-primary)}.immediate-irrigation-unit-toggle{display:flex;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.immediate-irrigation-unit-btn{padding:.35rem .8rem;border:none;background:transparent;color:var(--color-text-secondary);font-size:.75rem;font-weight:700;cursor:pointer;transition:all var(--transition-fast)}.immediate-irrigation-unit-btn:hover:not(:disabled){color:var(--color-text-primary)}.immediate-irrigation-unit-btn.active{background:var(--color-primary);color:var(--color-bg-primary);box-shadow:var(--glow-primary)}.immediate-irrigation-unit-btn:disabled{opacity:.5;cursor:not-allowed}.immediate-irrigation-form .form-field input{width:100%;padding:.9rem 1rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:1rem}.immediate-irrigation-form .form-field input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #10b98126}.immediate-irrigation-form .field-hint{margin:0;font-size:.85rem;color:var(--color-text-secondary)}.immediate-irrigation-note,.immediate-irrigation-summary{padding:.95rem 1rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-secondary)}.immediate-irrigation-note{line-height:1.55;color:var(--color-text-secondary)}.immediate-irrigation-note strong{color:var(--color-primary)}.immediate-irrigation-summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.immediate-irrigation-summary__label{color:var(--color-text-secondary);font-size:.9rem;font-weight:600}.immediate-irrigation-summary strong{color:var(--color-primary);font-size:1rem}.immediate-irrigation-error{padding:.8rem 1rem;border-radius:var(--radius-md);background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:#fca5a5;font-size:.92rem}.immediate-irrigation-actions{display:flex;justify-content:flex-end;gap:.75rem}@media(max-width:640px){.immediate-irrigation-actions{flex-direction:column}}.sensor-calibration-form{display:flex;flex-direction:column;gap:1rem}.sensor-calibration-note,.sensor-calibration-current,.sensor-calibration-summary{padding:.95rem 1rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg-secondary)}.sensor-calibration-note{line-height:1.55;color:var(--color-text-secondary)}.sensor-calibration-note strong{color:var(--color-primary)}.sensor-calibration-section-label{margin-bottom:.65rem;color:var(--color-text-secondary);font-size:.9rem;font-weight:600}.sensor-calibration-current-values{display:flex;flex-wrap:wrap;gap:.75rem}.sensor-calibration-reading-pill{display:inline-flex;align-items:center;gap:.45rem;min-width:7.5rem;padding:.65rem .75rem;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:var(--color-bg-primary);color:var(--color-text-primary);font-size:1rem;font-weight:650}.sensor-calibration-reading-pill svg{color:var(--color-primary)}.sensor-calibration-age,.sensor-calibration-warning{display:flex;align-items:flex-start;gap:.45rem;margin-top:.75rem;color:var(--color-text-tertiary, #888);font-size:.85rem;line-height:1.45}.sensor-calibration-age--stale,.sensor-calibration-warning{color:var(--color-warning, #d97706)}.sensor-calibration-reference{display:flex;flex-direction:column;gap:.75rem}.sensor-calibration-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.75rem}.sensor-calibration-form .form-field{display:flex;flex-direction:column;gap:.5rem}.sensor-calibration-form .form-field label{display:inline-flex;align-items:center;gap:.45rem;color:var(--color-text-primary);font-size:.95rem;font-weight:600}.sensor-calibration-form .form-field label svg{color:var(--color-primary)}.sensor-calibration-form .form-field input{width:100%;padding:.9rem 1rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg-primary);color:var(--color-text-primary);font-size:1rem}.sensor-calibration-form .form-field input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #10b98126}.sensor-calibration-form .form-field input:disabled{opacity:.55;color:var(--color-text-secondary);cursor:not-allowed}.sensor-calibration-summary{display:flex;align-items:stretch;flex-direction:column;gap:.75rem}.sensor-calibration-summary__label{color:var(--color-text-secondary);font-size:.9rem;font-weight:600}.sensor-calibration-summary strong{color:var(--color-primary);font-size:1rem}.sensor-calibration-result-list{display:grid;gap:.55rem}.sensor-calibration-result-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .75rem;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:var(--color-bg-primary)}.sensor-calibration-result-main{display:inline-flex;align-items:center;gap:.45rem;min-width:7rem}.sensor-calibration-result-main svg{color:var(--color-primary)}.sensor-calibration-result-row>span{color:var(--color-text-secondary);font-size:.86rem;line-height:1.35;text-align:right}.sensor-calibration-help{color:var(--color-text-tertiary, #888);font-size:.86rem;line-height:1.55}.sensor-calibration-error{padding:.8rem 1rem;border:1px solid rgba(239,68,68,.2);border-radius:8px;background:#ef44441a;color:#fca5a5;font-size:.92rem}.sensor-calibration-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.sensor-calibration-action-group{display:flex;justify-content:flex-end;gap:.5rem}.sensor-calibration-clear{text-align:left}@media(max-width:640px){.sensor-calibration-grid{grid-template-columns:1fr}.sensor-calibration-actions{align-items:stretch;flex-direction:column}.sensor-calibration-action-group{flex-direction:column-reverse}.sensor-calibration-result-row{align-items:flex-start;flex-direction:column}.sensor-calibration-result-row>span{text-align:left}}.telemetry-chart{position:relative;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.5rem;overflow:hidden}.telemetry-chart:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--color-primary),var(--color-info),var(--color-primary));opacity:.6}.chart-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.chart-header h3{display:flex;align-items:center;gap:.5rem;margin:0;font-size:1rem;font-weight:600;color:var(--color-text-primary);text-transform:uppercase;letter-spacing:.05em}.chart-sensor-name{font-weight:400;color:var(--color-text-secondary);font-size:.85rem}.chart-primary-badge{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:.15rem .45rem;background:#66bb6a1f;border:1px solid rgba(102,187,106,.3);border-radius:3px;color:var(--color-primary)}.chart-header-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.time-range-selector{display:flex;gap:.25rem;background:var(--color-bg-primary);padding:.25rem;border:1px solid var(--color-border);border-radius:var(--radius)}.export-button{padding:.5rem .75rem;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.75rem;font-weight:600;color:var(--color-text-primary);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.export-button:hover{background:var(--color-bg-tertiary);border-color:var(--color-primary);color:var(--color-primary)}.range-button{padding:.5rem .75rem;background:transparent;border:none;border-radius:calc(var(--radius) - 2px);font-size:.75rem;font-weight:600;font-family:var(--font-mono);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);text-transform:uppercase}.range-button:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.range-button.active{background:var(--color-primary);color:#1b1917;box-shadow:0 0 15px var(--color-primary-glow)}.chart-loading,.chart-error,.chart-empty{display:flex;align-items:center;justify-content:center;height:300px;color:var(--color-text-secondary);font-size:.875rem;font-family:var(--font-mono)}.chart-error{color:var(--color-danger);text-shadow:0 0 10px var(--color-danger-glow)}@media(max-width:640px){.chart-header{flex-direction:column;align-items:flex-start}.chart-header-actions{width:100%;flex-direction:column;align-items:stretch}.time-range-selector{width:100%;justify-content:space-between}.range-button{flex:1;padding:.5rem .25rem;font-size:.7rem}.export-button{width:100%;text-align:center}}.range-more-wrap{position:relative}.range-more-btn{display:inline-flex;align-items:center;gap:.25rem}.range-more-caret{font-size:.58rem;opacity:.68;transition:transform var(--transition-fast, .15s ease)}.range-more-caret.open{transform:rotate(180deg)}.range-more-dropdown{position:absolute;top:calc(100% + 4px);right:0;z-index:10;background:var(--color-bg-secondary, #121212);border:1px solid var(--color-border, #2a2a2a);border-radius:var(--radius-md, .5rem);padding:.25rem;display:flex;flex-direction:column;gap:.15rem;min-width:132px;box-shadow:0 12px 24px #00000073}.range-dropdown-label{font-size:.6rem;color:var(--color-text-secondary, #666);text-transform:uppercase;letter-spacing:.05em;padding:.3rem .55rem .25rem;border-bottom:1px solid var(--color-border, #2a2a2a);margin-bottom:.15rem}.range-dropdown-item{padding:.45rem .55rem;border:none;border-radius:var(--radius-sm, .25rem);background:transparent;color:var(--color-text-secondary, #999);font-size:.7rem;font-family:var(--font-mono, monospace);text-transform:uppercase;cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:.75rem;white-space:nowrap;transition:all var(--transition-fast, .15s ease)}.range-dropdown-item:hover{background:var(--color-bg-tertiary, #1a1a1a);color:var(--color-text-primary, #e0e0e0)}.range-dropdown-item.active{background:var(--color-primary, #66BB6A);color:#1b1917}.range-dropdown-check{font-size:.72rem;font-weight:700}.chart-lazy{display:flex;align-items:center;justify-content:center;height:200px}.chart-lazy-btn{padding:.5rem 1.2rem;border:1px solid var(--color-border, #2a2a2a);border-radius:var(--radius-md, .5rem);background:var(--color-bg-tertiary, #1a1a1a);color:var(--color-text-secondary, #888);font-size:.8rem;cursor:pointer;transition:all var(--transition-normal, .2s ease)}.chart-lazy-btn:hover{border-color:var(--color-primary, #66BB6A);color:var(--color-primary, #66BB6A)}.env-tooltip{background:var(--color-bg-secondary, #1c1c1c);border:1px solid var(--color-border, #2a2a2a);border-radius:.5rem;padding:.55rem .7rem;color:var(--color-text-primary, #e6e6e6);font-size:.8rem;line-height:1.45;box-shadow:0 8px 24px #00000059;min-width:180px}.env-tooltip-time{color:var(--color-text-secondary, #888);font-size:.72rem;margin-bottom:.35rem;padding-bottom:.3rem;border-bottom:1px solid var(--color-border, #2a2a2a)}.env-tooltip-row{display:flex;align-items:center;gap:.35rem;margin:.15rem 0}.env-tooltip-swatch{display:inline-block;width:8px;height:8px;border-radius:999px;flex-shrink:0}.env-tooltip-label{color:var(--color-text-secondary, #aaa)}.env-tooltip-value{margin-left:auto;font-variant-numeric:tabular-nums;white-space:nowrap}.dv{position:relative;width:56px;height:56px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:filter .3s,opacity .3s}.dv-icon,.dv-effect{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.dv-effect{z-index:0}.dv-icon{z-index:1}.dv-effect{opacity:0;transition:opacity .3s}.dv.active .dv-effect{opacity:1}.dv.offline{filter:grayscale(1);opacity:.4}.dv.offline .dv-effect{opacity:0!important}@keyframes dv-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes dv-spin-reverse{0%{transform:rotate(360deg)}to{transform:rotate(0)}}@keyframes dv-glow-pulse{0%,to{box-shadow:0 0 8px 2px #ffc8324d}50%{box-shadow:0 0 18px 6px #ffc83299}}@keyframes dv-ray-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes dv-rise{0%{transform:translateY(0) scale(1);opacity:.8}to{transform:translateY(-14px) scale(.5);opacity:0}}@keyframes dv-drip{0%{transform:translateY(0);opacity:1}80%{opacity:1}to{transform:translateY(16px);opacity:0}}@keyframes dv-heat-wave{0%,to{transform:scaleY(1);opacity:.7}50%{transform:scaleY(1.3);opacity:1}}@keyframes dv-snow-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes dv-absorb{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(.85);opacity:1}}@keyframes dv-subtle-pulse{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.08);opacity:1}}@keyframes dv-sensor-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.dv--luz .dv-icon:before{content:"";width:20px;height:20px;border-radius:50%;background:radial-gradient(circle,#8a7a3a,#6b5e2a 60%,#4a4020);transition:background .4s,box-shadow .4s;z-index:2}.dv--luz.active .dv-icon:before{background:radial-gradient(circle,#fff8e1,#ffd54f,#ffb300 70%,#ff8f00);box-shadow:0 0 6px 2px #ffd54f99,0 0 14px 4px #ffb30066,0 0 28px 8px #ff8f0033;animation:dv-sun-pulse 3s ease-in-out infinite}.dv--luz .dv-icon:after{content:"";position:absolute;width:30px;height:30px;border-radius:50%;background:radial-gradient(circle,rgba(255,213,79,0) 40%,transparent 100%);z-index:1;transition:background .4s}.dv--luz.active .dv-icon:after{background:radial-gradient(circle,rgba(255,213,79,.25) 0%,rgba(255,179,0,.08) 50%,transparent 100%)}.dv--luz .dv-effect:before{content:"";position:absolute;width:52px;height:52px;border-radius:50%;background:conic-gradient(from 0deg,rgba(255,200,50,.35) 0deg,transparent 18deg,transparent 30deg,rgba(255,180,30,.25) 36deg,transparent 54deg,transparent 60deg,rgba(255,200,50,.3) 72deg,transparent 90deg,transparent 96deg,rgba(255,180,30,.2) 108deg,transparent 126deg,transparent 132deg,rgba(255,200,50,.3) 144deg,transparent 162deg,transparent 168deg,rgba(255,180,30,.25) 180deg,transparent 198deg,transparent 204deg,rgba(255,200,50,.35) 216deg,transparent 234deg,transparent 240deg,rgba(255,180,30,.2) 252deg,transparent 270deg,transparent 276deg,rgba(255,200,50,.3) 288deg,transparent 306deg,transparent 312deg,rgba(255,180,30,.25) 324deg,transparent 342deg,transparent 348deg,rgba(255,200,50,.35) 360deg);animation:dv-ray-rotate 12s linear infinite;mask-image:radial-gradient(circle,transparent 30%,black 45%);-webkit-mask-image:radial-gradient(circle,transparent 30%,black 45%)}.dv--luz .dv-effect:after{content:"";position:absolute;width:46px;height:46px;border-radius:50%;background:radial-gradient(circle,rgba(255,200,50,.12) 0%,rgba(255,143,0,.04) 50%,transparent 70%);animation:dv-sun-breathe 3s ease-in-out infinite}@keyframes dv-sun-pulse{0%,to{box-shadow:0 0 6px 2px #ffd54f99,0 0 14px 4px #ffb30066,0 0 28px 8px #ff8f0033}50%{box-shadow:0 0 8px 3px #ffd54fcc,0 0 20px 6px #ffb30080,0 0 36px 12px #ff8f0040}}@keyframes dv-sun-breathe{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.08);opacity:1}}.dv--ventilador .dv-icon:before{content:"";width:30px;height:30px;border-radius:50%;background:conic-gradient(from 0deg,#546e7a,#78909c,#546e7a,#78909c,#546e7a,#78909c,#546e7a,#78909c,#546e7a 360deg);border:2px solid rgba(84,110,122,.5);transition:all .4s;z-index:2}.dv--ventilador .dv-icon:after{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:radial-gradient(circle,#90a4ae,#546e7a);z-index:3}.dv--ventilador.active .dv-icon:before{background:conic-gradient(from 0deg,#00838f,#00bcd4,#00838f,#00bcd4,#00838f,#00bcd4,#00838f,#00bcd4,#00838f 360deg);border-color:#00bcd466;box-shadow:0 0 8px #00bcd44d;animation:dv-spin .6s linear infinite}.dv--ventilador .dv-effect:before{content:"";position:absolute;width:48px;height:48px;border-radius:50%;border:1.5px solid rgba(0,188,212,.15);background:radial-gradient(circle,transparent 55%,rgba(0,188,212,.06) 100%);animation:dv-spin 3s linear infinite reverse}.dv--ventilador .dv-effect:after{content:"";position:absolute;width:40px;height:40px;border-radius:50%;border:1px dashed rgba(0,188,212,.12);animation:dv-spin 5s linear infinite}.dv--extractor .dv-icon:before{content:"";width:28px;height:28px;border-radius:50%;background:conic-gradient(from 0deg,#5d4037,#8d6e63,#5d4037,#8d6e63,#5d4037,#8d6e63,#5d4037,#8d6e63,#5d4037 360deg);border:2px solid rgba(93,64,55,.5);transition:all .4s;z-index:2}.dv--extractor .dv-icon:after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle,#a1887f,#5d4037);z-index:3}.dv--extractor.active .dv-icon:before{background:conic-gradient(from 0deg,#bf360c,#ff7043,#bf360c,#ff7043,#bf360c,#ff7043,#bf360c,#ff7043,#bf360c 360deg);border-color:#ff704366;box-shadow:0 0 8px #ff70434d;animation:dv-spin .6s linear infinite}.dv--extractor .dv-effect:before{content:"";position:absolute;top:0;width:20px;height:8px;background:linear-gradient(to top,rgba(255,112,67,.25),transparent);border-radius:50%;animation:dv-exhaust-up 1.2s ease-out infinite}.dv--extractor .dv-effect:after{content:"";position:absolute;top:2px;width:12px;height:6px;background:linear-gradient(to top,rgba(255,112,67,.15),transparent);border-radius:50%;animation:dv-exhaust-up 1.2s ease-out .4s infinite}@keyframes dv-exhaust-up{0%{transform:translateY(6px);opacity:.8}to{transform:translateY(-12px);opacity:0}}.dv--intractor .dv-icon:before{content:"";width:28px;height:28px;border-radius:50%;background:conic-gradient(from 0deg,#37474f,#607d8b,#37474f,#607d8b,#37474f,#607d8b,#37474f,#607d8b,#37474f 360deg);border:2px solid rgba(55,71,79,.5);transition:all .4s;z-index:2}.dv--intractor .dv-icon:after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle,#90a4ae,#37474f);z-index:3}.dv--intractor.active .dv-icon:before{background:conic-gradient(from 0deg,#1565c0,#42a5f5,#1565c0,#42a5f5,#1565c0,#42a5f5,#1565c0,#42a5f5,#1565c0 360deg);border-color:#42a5f566;box-shadow:0 0 8px #42a5f54d;animation:dv-spin-reverse .6s linear infinite}.dv--intractor .dv-effect:before{content:"";position:absolute;bottom:0;width:20px;height:8px;background:linear-gradient(to bottom,rgba(66,165,245,.25),transparent);border-radius:50%;animation:dv-intake-down 1.2s ease-out infinite}.dv--intractor .dv-effect:after{content:"";position:absolute;bottom:2px;width:12px;height:6px;background:linear-gradient(to bottom,rgba(66,165,245,.15),transparent);border-radius:50%;animation:dv-intake-down 1.2s ease-out .4s infinite}@keyframes dv-intake-down{0%{transform:translateY(-6px);opacity:.8}to{transform:translateY(12px);opacity:0}}.dv--humidificador .dv-icon:before{content:"";width:18px;height:24px;background:radial-gradient(ellipse at 40% 30%,#7eaab8,#4a7a8a 60%,#3a6070);border-radius:50%/30% 30% 70% 70%;transition:all .4s;z-index:2}.dv--humidificador .dv-icon:after{content:"";position:absolute;width:6px;height:4px;background:#ffffff26;border-radius:50%;top:20px;left:21px;z-index:3}.dv--humidificador.active .dv-icon:before{background:radial-gradient(ellipse at 40% 30%,#b3e5fc,#4fc3f7 40%,#0288d1);box-shadow:0 0 6px 2px #4fc3f766,0 0 14px 4px #0288d133;animation:dv-drop-pulse 2.5s ease-in-out infinite}.dv--humidificador.active .dv-icon:after{background:#ffffff59}.dv--humidificador .dv-effect:before{content:"";position:absolute;top:4px;left:12px;width:8px;height:5px;background:radial-gradient(ellipse,rgba(79,195,247,.5),transparent);border-radius:50%;animation:dv-vapor-rise 2s ease-out infinite}.dv--humidificador .dv-effect:after{content:"";position:absolute;top:6px;left:30px;width:6px;height:4px;background:radial-gradient(ellipse,rgba(79,195,247,.4),transparent);border-radius:50%;animation:dv-vapor-rise 2s ease-out .7s infinite}@keyframes dv-drop-pulse{0%,to{box-shadow:0 0 6px 2px #4fc3f766,0 0 14px 4px #0288d133}50%{box-shadow:0 0 8px 3px #4fc3f799,0 0 20px 6px #0288d14d}}@keyframes dv-vapor-rise{0%{transform:translateY(0) scaleX(1);opacity:.7}50%{transform:translateY(-8px) scaleX(1.5);opacity:.4}to{transform:translateY(-16px) scaleX(2);opacity:0}}.dv--deshumidificador .dv-icon:before{content:"";width:28px;height:16px;background:radial-gradient(ellipse at 50% 60%,#90a4ae,#607d8b);border-radius:10px 10px 4px 4px;transition:all .4s;z-index:2}.dv--deshumidificador .dv-icon:after{content:"";position:absolute;top:12px;left:13px;width:16px;height:14px;background:radial-gradient(ellipse at 40% 40%,#b0bec5,#78909c);border-radius:50%;z-index:1;transition:all .4s}.dv--deshumidificador.active .dv-icon:before{background:radial-gradient(ellipse at 50% 60%,#b0bec5,#78909c);box-shadow:0 0 8px #90a4ae66}.dv--deshumidificador.active .dv-icon:after{background:radial-gradient(ellipse at 40% 40%,#cfd8dc,#90a4ae)}.dv--deshumidificador .dv-effect:before{content:"";position:absolute;bottom:2px;width:6px;height:6px;border-radius:50%;background:radial-gradient(circle,rgba(79,195,247,.5),transparent);animation:dv-absorb-in 2s ease-in infinite}.dv--deshumidificador .dv-effect:after{content:"";position:absolute;bottom:4px;left:32px;width:5px;height:5px;border-radius:50%;background:radial-gradient(circle,rgba(79,195,247,.4),transparent);animation:dv-absorb-in 2s ease-in .8s infinite}@keyframes dv-absorb-in{0%{transform:translateY(8px) scale(1);opacity:.7}to{transform:translateY(-4px) scale(.3);opacity:0}}.dv--calefactor .dv-icon:before{content:"";width:26px;height:22px;background:radial-gradient(ellipse at 50% 70%,#6d4c41,#4e342e 60%,#3e2723);border-radius:4px 4px 10px 10px;border:1px solid rgba(109,76,65,.4);transition:all .4s;z-index:2}.dv--calefactor .dv-icon:after{content:"";position:absolute;width:16px;height:6px;top:18px;background:#4e342e4d;border-radius:2px;z-index:1;transition:all .4s}.dv--calefactor.active .dv-icon:before{background:radial-gradient(ellipse at 50% 70%,#ffab00,#ff6d00 40%,#e65100,#bf360c);border-color:#ff6d004d;box-shadow:0 0 6px 2px #ff6d0080,0 0 16px 4px #e6510040,0 0 28px 8px #bf360c1f;animation:dv-ember-pulse 2s ease-in-out infinite}.dv--calefactor.active .dv-icon:after{background:#ffab0033;box-shadow:0 0 6px #ff6d004d}.dv--calefactor .dv-effect:before{content:"";position:absolute;top:2px;width:22px;height:10px;background:linear-gradient(to top,rgba(255,109,0,.2),rgba(255,171,0,.06),transparent);border-radius:50%;animation:dv-heat-shimmer 1.5s ease-out infinite}.dv--calefactor .dv-effect:after{content:"";position:absolute;top:4px;width:14px;height:8px;background:linear-gradient(to top,rgba(255,87,34,.15),transparent);border-radius:50%;animation:dv-heat-shimmer 1.5s ease-out .5s infinite}@keyframes dv-ember-pulse{0%,to{box-shadow:0 0 6px 2px #ff6d0080,0 0 16px 4px #e6510040,0 0 28px 8px #bf360c1f}50%{box-shadow:0 0 8px 3px #ff6d00b3,0 0 22px 6px #e6510059,0 0 36px 12px #bf360c2e}}@keyframes dv-heat-shimmer{0%{transform:translateY(4px) scaleX(.8);opacity:.6}50%{transform:translateY(-6px) scaleX(1.2);opacity:.3}to{transform:translateY(-14px) scaleX(.6);opacity:0}}.dv--riego .dv-icon:before{content:"";width:16px;height:22px;background:radial-gradient(ellipse at 40% 30%,#7ab0c0,#4a90a4,#2e7d8a);border-radius:50%/30% 30% 70% 70%;transition:all .4s;z-index:2}.dv--riego .dv-icon:after{content:"";position:absolute;width:5px;height:3px;background:#ffffff26;border-radius:50%;top:19px;left:22px;z-index:3}.dv--riego.active .dv-icon:before{background:radial-gradient(ellipse at 40% 30%,#e1f5fe,#29b6f6 40%,#0288d1);box-shadow:0 0 6px 2px #29b6f666,0 0 14px 4px #0288d133}.dv--riego.active .dv-icon:after{background:#fff6}.dv--riego .dv-effect:before{content:"";position:absolute;bottom:6px;width:4px;height:4px;border-radius:50%;border:1.5px solid rgba(41,182,246,.5);animation:dv-splash-ring 1.5s ease-out infinite}.dv--riego .dv-effect:after{content:"";position:absolute;bottom:8px;left:30px;width:3px;height:3px;border-radius:50%;border:1px solid rgba(41,182,246,.4);animation:dv-splash-ring 1.5s ease-out .5s infinite}@keyframes dv-splash-ring{0%{width:4px;height:4px;opacity:.7}to{width:18px;height:8px;opacity:0;transform:translateY(4px)}}.dv--aire_acondicionado .dv-icon:before{content:"";width:24px;height:24px;background:linear-gradient(0deg,transparent 42%,#6a9baa 42%,#6a9baa 58%,transparent 58%),linear-gradient(60deg,transparent 42%,#6a9baa 42%,#6a9baa 58%,transparent 58%),linear-gradient(120deg,transparent 42%,#6a9baa 42%,#6a9baa 58%,transparent 58%);border-radius:50%;transition:all .4s;z-index:2}.dv--aire_acondicionado .dv-icon:after{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:radial-gradient(circle,#90caf9,#5a8a9a);z-index:3;transition:all .4s}.dv--aire_acondicionado.active .dv-icon:before{background:linear-gradient(0deg,transparent 42%,#4dd0e1 42%,#4dd0e1 58%,transparent 58%),linear-gradient(60deg,transparent 42%,#4dd0e1 42%,#4dd0e1 58%,transparent 58%),linear-gradient(120deg,transparent 42%,#4dd0e1 42%,#4dd0e1 58%,transparent 58%);animation:dv-snow-rotate 6s linear infinite;box-shadow:0 0 6px 2px #4dd0e166,0 0 14px 4px #4dd0e133}.dv--aire_acondicionado.active .dv-icon:after{background:radial-gradient(circle,#e0f7fa,#4dd0e1);box-shadow:0 0 4px #4dd0e199}.dv--aire_acondicionado .dv-effect:before{content:"";position:absolute;width:48px;height:48px;border-radius:50%;background:radial-gradient(circle,rgba(77,208,225,.08) 0%,rgba(77,208,225,.02) 50%,transparent 70%);animation:dv-frost-breathe 3s ease-in-out infinite}.dv--aire_acondicionado .dv-effect:after{content:"";position:absolute;width:42px;height:42px;border-radius:50%;border:1px solid transparent;border-top-color:#4dd0e133;border-left-color:#4dd0e11a;animation:dv-snow-rotate 4s linear infinite reverse}@keyframes dv-frost-breathe{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.1);opacity:1}}.dv--otro .dv-icon:before{content:"";width:22px;height:22px;border:2.5px solid #607d8b;border-top-color:transparent;border-radius:50%;transition:all .4s;z-index:2}.dv--otro .dv-icon:after{content:"";position:absolute;top:11px;width:2.5px;height:12px;background:#607d8b;border-radius:2px;transition:all .4s;z-index:3}.dv--otro.active .dv-icon:before{border-color:#66bb6a;border-top-color:transparent;box-shadow:0 0 6px #66bb6a66,0 0 14px #66bb6a26}.dv--otro.active .dv-icon:after{background:#66bb6a;box-shadow:0 0 4px #66bb6a80}.dv--otro .dv-effect:before{content:"";position:absolute;width:40px;height:40px;border-radius:50%;border:1px solid rgba(102,187,106,.15);animation:dv-subtle-pulse 2.5s ease-in-out infinite}.dv--otro .dv-effect:after{content:"";position:absolute;width:46px;height:46px;border-radius:50%;background:radial-gradient(circle,rgba(102,187,106,.04) 0%,transparent 60%);animation:dv-sun-breathe 3s ease-in-out infinite}.dv--termohigrometro .dv-effect,.dv--sensor_humedad_suelo .dv-effect,.dv--sensor_co2 .dv-effect,.dv--sensor_ph .dv-effect,.dv--sensor_ec .dv-effect,.dv--sensor_luz .dv-effect{opacity:0}.dv--termohigrometro.active .dv-effect,.dv--sensor_humedad_suelo.active .dv-effect,.dv--sensor_co2.active .dv-effect,.dv--sensor_ph.active .dv-effect,.dv--sensor_ec.active .dv-effect,.dv--sensor_luz.active .dv-effect{opacity:1}.dv--termohigrometro .dv-effect:before,.dv--sensor_humedad_suelo .dv-effect:before,.dv--sensor_co2 .dv-effect:before,.dv--sensor_ph .dv-effect:before,.dv--sensor_ec .dv-effect:before,.dv--sensor_luz .dv-effect:before{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:#66bb6a;box-shadow:0 0 6px #66bb6a99;top:4px;right:4px;animation:dv-sensor-pulse 2s ease-in-out infinite}.dv--termohigrometro .dv-effect:after,.dv--sensor_humedad_suelo .dv-effect:after,.dv--sensor_co2 .dv-effect:after,.dv--sensor_ph .dv-effect:after,.dv--sensor_ec .dv-effect:after,.dv--sensor_luz .dv-effect:after{content:none;animation:dv-radar-ping 3s ease-out infinite}.dv--termohigrometro .dv-icon:before{content:"";width:28px;height:14px;border-radius:28px 28px 0 0;border:2.5px solid #9E9E9E;border-bottom:none;background:transparent}.dv--termohigrometro .dv-icon:after{content:"";position:absolute;bottom:18px;left:50%;width:2.5px;height:12px;background:#66bb6a;border-radius:2px;transform-origin:bottom center;transform:rotate(35deg)}.dv--termohigrometro.active .dv-icon:after{animation:dv-gauge-needle 3s ease-in-out infinite}@keyframes dv-gauge-needle{0%,to{transform:rotate(35deg)}30%{transform:rotate(-25deg)}60%{transform:rotate(15deg)}}.dv--sensor_humedad_suelo .dv-icon:before{content:"";width:20px;height:20px;background:#8d6e63;border-radius:4px;border:2px solid #6d4c41}.dv--sensor_humedad_suelo .dv-icon:after{content:"";position:absolute;bottom:12px;width:10px;height:8px;background:#4caf50;border-radius:50% 50% 0 0}.dv--sensor_co2 .dv-icon:before{content:"";width:24px;height:14px;background:#90a4ae;border-radius:8px}.dv--sensor_co2 .dv-icon:after{content:"";position:absolute;top:13px;width:14px;height:10px;background:#90a4ae;border-radius:50%}.dv--sensor_ph .dv-icon:before{content:"";width:12px;height:22px;background:linear-gradient(to bottom,#ce93d8,#7b1fa2);border-radius:3px 3px 6px 6px;border:2px solid #9c27b0}.dv--sensor_ec .dv-icon:before{content:"";width:6px;height:20px;background:#ffd54f;border-radius:1px;transform:rotate(-15deg)}.dv--sensor_ec .dv-icon:after{content:"";position:absolute;width:6px;height:14px;background:#ffd54f;border-radius:1px;transform:rotate(15deg);top:14px}.dv--sensor_luz .dv-icon:before{content:"";width:22px;height:22px;border-radius:50%;background:radial-gradient(circle,#fff9c4 30%,#ffb300);border:2px solid #ff8f00}.dv-icon:before,.dv-icon:after{display:block}.dv-icon{display:flex;align-items:center;justify-content:center}.ccw{background:var(--color-bg-secondary, #121212);border:1px solid var(--color-border, #2a2a2a);border-radius:var(--radius-lg, .75rem);padding:.75rem 1rem;margin-bottom:.75rem}.ccw--compact{display:inline-flex;align-items:center;gap:.55rem;padding:.25rem .75rem;margin:0;border-radius:4px;min-height:32px;min-width:220px;background:transparent;border-color:#66bb6a40;transition:all .3s ease}.ccw--compact .ccw-header,.ccw--compact .ccw-desc,.ccw--compact .ccw-info,.ccw--compact .ccw-runtime,.ccw--compact .ccw-actions,.ccw--compact .ccw-loading{display:none}.ccw-compact-main{display:inline-flex;align-items:center;gap:.4rem}.ccw-compact-label{display:inline-flex;align-items:center;gap:.35rem;color:var(--color-primary, #66BB6A);font-size:.7rem;font-weight:600;letter-spacing:.03em;white-space:nowrap}.ccw-compact-label svg{color:currentColor}.ccw-compact-status{font-size:.58rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-radius:999px;padding:.08rem .32rem}.ccw-compact-status--on{color:#fff;background:#66bb6a59;font-weight:700;padding:.1rem .4rem}.ccw-compact-status--off{color:var(--color-text-muted, #8b8b8b);background:#ffffff0f}.ccw-compact-meta{color:var(--color-text-secondary, #9a9a9a);font-size:.68rem;white-space:nowrap}.ccw-compact-toggle{border:1px solid rgba(102,187,106,.25);background:transparent;border-radius:999px;padding:.16rem .5rem;font-family:var(--font-mono, monospace);font-size:.62rem;font-weight:700;letter-spacing:.06em;cursor:pointer;transition:all .18s ease;text-transform:uppercase;white-space:nowrap}.ccw-compact-toggle--on{border-color:#ff444426;color:var(--color-danger, #FF4444);opacity:.5;font-size:.55rem;transition:opacity .2s ease}.ccw-compact-toggle--on:hover:not(:disabled){background:#ff444414;opacity:1}.ccw-compact-toggle--off{border-color:#66bb6a66;color:var(--color-primary, #66BB6A);background:#66bb6a0f;animation:ccw-breathe 2.5s ease-in-out infinite}.ccw-compact-toggle--off:hover:not(:disabled){background:#66bb6a24;box-shadow:0 0 12px #66bb6a33;animation:none}@keyframes ccw-breathe{0%,to{box-shadow:0 0 #66bb6a00}50%{box-shadow:0 0 8px 2px #66bb6a26}}.ccw-compact-toggle:disabled{opacity:.6;cursor:not-allowed}.ccw--compact-active{background:transparent;animation:ccw-border-pulse 2.5s ease-in-out infinite}@keyframes ccw-border-pulse{0%,to{border-color:#66bb6a33;box-shadow:none}50%{border-color:#66bb6a80;box-shadow:0 0 10px #66bb6a1f}}.ccw--compact-inactive{border-color:#66bb6a2e;transition:all .4s ease}@keyframes ccw-activate-flash{0%{box-shadow:0 0 #66bb6a66}40%{box-shadow:0 0 16px 4px #66bb6a40}to{box-shadow:none}}.ccw--compact:hover{background:#66bb6a14;border-color:#66bb6a80;box-shadow:0 0 10px #66bb6a1f}.cc-controls>.ccw{margin:.75rem 1rem}.ccw--active{border-color:#66bb6a4d;background:linear-gradient(135deg,rgba(102,187,106,.03),transparent);min-height:220px}.ccw-header{display:flex;align-items:center;gap:.4rem;font-weight:600;font-size:.85rem;color:var(--color-text-primary, #e0e0e0);margin-bottom:.5rem}.ccw-icon-active{color:var(--color-primary, #66BB6A);filter:drop-shadow(0 0 4px rgba(102,187,106,.5))}.ccw-badge-active{font-size:.65rem;padding:.1rem .4rem;border-radius:999px;background:#66bb6a26;color:var(--color-primary, #66BB6A);font-weight:500;margin-left:auto}.ccw-loading{font-size:.8rem;color:var(--color-text-secondary, #888);text-align:center;padding:.5rem}.ccw-desc{font-size:.8rem;color:var(--color-text-secondary, #888);margin:0 0 .75rem;line-height:1.4}.ccw-activate-btn{width:100%;padding:.7rem 1rem;border:2px solid var(--color-primary, #66BB6A);border-radius:var(--radius-lg, .75rem);background:transparent;color:var(--color-primary, #66BB6A);font-weight:700;font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:all .3s ease;position:relative}.ccw-activate-btn:hover:not(:disabled){background:#66bb6a1a;box-shadow:0 0 20px #66bb6a4d,0 0 40px #66bb6a1a}.ccw-activate-btn:active:not(:disabled){transform:scale(.98)}.ccw-activate-btn:disabled{opacity:.6;cursor:not-allowed}.ccw-activate-icon{animation:ccw-zap-pulse 1.5s ease infinite}@keyframes ccw-zap-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}}.ccw-info{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.5rem}.ccw-stage{font-weight:600;font-size:.85rem;color:var(--color-primary, #66BB6A)}.ccw-targets{font-size:.75rem;color:var(--color-text-secondary, #aaa);font-family:var(--font-mono, monospace)}.ccw-runtime{display:flex;flex-direction:column;gap:.15rem;margin-bottom:.7rem;padding:.45rem .55rem;border-radius:var(--radius-md, .5rem);border:1px solid rgba(255,255,255,.06);background:#ffffff05;min-height:52px}.ccw-runtime-label{font-size:.75rem;font-weight:600;color:var(--color-text-primary, #e0e0e0)}.ccw-runtime-note{font-size:.7rem;line-height:1.35;color:var(--color-text-secondary, #999)}.ccw-runtime--pending{border-color:#ffb3002e;background:#ffb3000f}.ccw-runtime--pending .ccw-runtime-label{color:var(--color-warning, #FFB300)}.ccw-runtime--monitoring{border-color:#00b0ff2e;background:#00b0ff0d}.ccw-runtime--monitoring .ccw-runtime-label{color:var(--color-info, #00B0FF)}.ccw-runtime--paused{border-color:#ff44442e;background:#ff44440f}.ccw-runtime--paused .ccw-runtime-label{color:var(--color-danger, #FF4444)}.ccw-runtime--manual{border-color:#00b0ff2e;background:#00b0ff0d}.ccw-runtime--manual .ccw-runtime-label{color:var(--color-info, #00B0FF)}.ccw-runtime--active{border-color:#66bb6a33;background:#66bb6a0d}.ccw-runtime--active .ccw-runtime-label{color:var(--color-primary, #66BB6A)}.ccw-actions{display:flex;align-items:center;gap:.75rem}.ccw-deactivate-btn{padding:.4rem .8rem;border:1px solid var(--color-danger, #FF4444);border-radius:var(--radius-md, .5rem);background:transparent;color:var(--color-danger, #FF4444);font-weight:600;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:all .2s ease}.ccw-deactivate-btn:hover:not(:disabled){background:#ff44441a}.ccw-deactivate-btn:disabled{opacity:.6;cursor:not-allowed}.ccw-link{background:none;border:none;color:var(--color-primary, #66BB6A);font-size:.75rem;cursor:pointer;padding:0}.ccw-link:hover{text-decoration:underline}.ccw-stage-selector p{font-size:.85rem;color:var(--color-text-secondary, #888);margin-bottom:.75rem}.cc-auto-badge{font-size:.6rem;font-weight:600;letter-spacing:.05em;padding:.1rem .35rem;border-radius:var(--radius-sm, .25rem);background:#66bb6a1a;color:var(--color-primary, #66BB6A);text-transform:uppercase}.cc-auto-state{font-size:.65rem;font-weight:600;padding:.1rem .3rem;border-radius:var(--radius-sm, .25rem);min-width:30px;text-align:center}.cc-auto-state--on{color:var(--color-primary, #66BB6A);background:#66bb6a1a}.cc-auto-state--off{color:var(--color-text-secondary, #666)}.cc-auto-state--blocked{color:var(--color-danger, #FF4444);background:#ff44441a}.cc-auto-state--delayed{color:var(--color-warning, #FFB300);background:#ffb3001a}.cc-auto-state--cooldown{color:var(--color-warning, #FFB300);background:#ffb3000f}.cc-auto-state--manual{color:var(--color-info, #00B0FF);background:#00b0ff1a}.cc-auto-state--cancelled{color:var(--color-warning, #FFB300);background:#ffb30014}.cc-force-btn{font-size:.6rem;padding:.15rem .3rem;border:1px solid var(--color-border, #2a2a2a);border-radius:var(--radius-sm, .25rem);background:transparent;color:var(--color-text-secondary, #888);cursor:pointer}.cc-force-btn:hover{border-color:var(--color-warning, #FFB300);color:var(--color-warning, #FFB300)}.ccw-period-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.78rem;font-weight:500;padding:.15rem .5rem;border-radius:4px;white-space:nowrap}.ccw-period-badge--day{background:#ffb8001f;color:#ffce5a}.ccw-period-badge--night{background:#6c82c826;color:#a0b4e0}.ccw-period-switch-time{opacity:.75;font-weight:400}.sg-stm{display:flex;flex-direction:column;gap:.75rem;height:100%}.sg-stm-loading{text-align:center;padding:2rem;color:var(--color-text-secondary, #888)}.sg-stm-tabs{display:flex;gap:.25rem;overflow-x:auto;padding-bottom:.25rem;flex-wrap:wrap}.sg-stm-tab{background:var(--color-bg-tertiary, #1a1a1a);border:1px solid var(--color-border, #2a2a2a);border-radius:var(--radius-sm, .25rem);color:var(--color-text-secondary, #888);padding:.4rem .6rem;font-size:.75rem;cursor:pointer;white-space:nowrap;position:relative;transition:all var(--transition-fast, .15s ease)}.sg-stm-tab:hover{color:var(--color-text-primary, #e0e0e0);border-color:var(--color-text-secondary, #888)}.sg-stm-tab--active{background:var(--color-bg-secondary, #121212);border-color:var(--color-primary, #66BB6A);color:var(--color-primary, #66BB6A)}.sg-stm-tab--custom:after{content:"";position:absolute;top:3px;right:3px;width:5px;height:5px;border-radius:50%;background:var(--color-primary, #66BB6A)}.sg-stm-custom-dot,.sg-stm-current-dot{display:none}.sg-stm-tab--current{border-color:var(--color-primary, #66BB6A)}.sg-stm-current-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--color-primary, #66BB6A);margin-left:4px;vertical-align:middle}.sg-stm-active-badge{font-size:.65rem;padding:.1rem .4rem;border-radius:999px;background:#66bb6a26;color:var(--color-primary, #66BB6A)}.sg-stm-form{background:var(--color-bg-tertiary, #1a1a1a);border-radius:var(--radius-md, .5rem);padding:.75rem;flex:1}.sg-stm-stage-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.sg-stm-stage-name{font-weight:600;font-size:.9rem;color:var(--color-text-primary, #e0e0e0)}.sg-stm-custom-badge{font-size:.65rem;padding:.1rem .4rem;border-radius:999px;background:#66bb6a26;color:var(--color-primary, #66BB6A)}.sg-stm-section{margin-bottom:.75rem}.sg-stm-section-header{display:flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-primary, #66BB6A);margin-bottom:.5rem;padding-bottom:.35rem;border-bottom:1px solid rgba(102,187,106,.15)}.sg-stm-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.5rem}.sg-stm-grid label{display:flex;flex-direction:column;gap:.2rem;font-size:.75rem;color:var(--color-text-secondary, #888)}.sg-stm-grid input{background:var(--color-bg-primary, #0a0a0a);border:1px solid var(--color-border, #2a2a2a);border-radius:var(--radius-sm, .25rem);color:var(--color-text-primary, #e0e0e0);padding:.35rem .5rem;font-size:.85rem;font-family:var(--font-mono, monospace);width:100%}.sg-stm-actions{display:flex;justify-content:flex-end;gap:.5rem;padding-top:.5rem;margin-top:auto}@media(max-width:480px){.sg-stm-grid{grid-template-columns:1fr 1fr}}.sg-stm-daynight-section{border:1px solid var(--color-border-muted, rgba(255, 255, 255, .08));border-radius:8px;padding:.75rem;background:#ffffff05}.sg-stm-toggle-row{display:flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer;-webkit-user-select:none;user-select:none}.sg-stm-toggle-row input[type=checkbox]{width:16px;height:16px;cursor:pointer}.sg-stm-schedule-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.75rem}.sg-stm-schedule-row label{display:flex;flex-direction:column;gap:.25rem;font-size:.78rem;color:var(--color-text-secondary, #999)}.sg-stm-schedule-row label>svg{vertical-align:middle;margin-right:.25rem}.sg-stm-schedule-row input[type=time]{background:var(--color-bg-input, rgba(0, 0, 0, .3));border:1px solid var(--color-border, rgba(255, 255, 255, .12));border-radius:6px;color:var(--color-text-primary, #fff);padding:.4rem .5rem;font-size:.9rem;font-family:var(--font-mono, monospace)}.sg-stm-period-tabs{display:flex;gap:.5rem;margin-top:.75rem}.sg-stm-period-tab{display:inline-flex;align-items:center;gap:.4rem;background:var(--color-bg-input, rgba(0, 0, 0, .3));border:1px solid var(--color-border, rgba(255, 255, 255, .12));border-radius:6px;padding:.35rem .75rem;font-size:.85rem;color:var(--color-text-secondary, #999);cursor:pointer;transition:all .15s}.sg-stm-period-tab:hover:not(.sg-stm-period-tab--active){border-color:var(--color-primary, #63e691);color:var(--color-primary, #63e691)}.sg-stm-period-tab--active{background:var(--color-primary, #63e691);color:var(--color-bg-primary, #000);border-color:var(--color-primary, #63e691)}.sg-stm-error{color:var(--color-danger, #dc2626);font-size:.82rem;margin-top:.5rem}.room-hub{max-width:1400px;margin:0 auto}.room-hub--climate-active .kpi-card{border-color:#66bb6a33;box-shadow:0 0 12px #66bb6a0f;transition:border-color .5s ease,box-shadow .5s ease}.room-hub--climate-active .kpi-badge{border-color:#66bb6a4d;color:var(--color-primary)}.room-hub--climate-active .kpi-header{color:var(--color-text-primary)}.stage-pill--autopilot{border-color:#66bb6a80!important;background:#66bb6a2e!important;transition:none!important;animation:stage-autopilot-pulse 2.5s ease-in-out infinite!important}@keyframes stage-autopilot-pulse{0%,to{box-shadow:0 0 6px #66bb6a26}50%{box-shadow:0 0 16px #66bb6a59}}.room-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:2rem;gap:1rem}.room-header-left{display:flex;flex-direction:column;gap:.25rem}.room-header-title{margin:0;font-size:1.75rem;font-weight:700;color:var(--color-text-primary);line-height:1.2}.room-header-stage{display:flex;align-items:center;gap:.5rem;margin-top:.25rem}.stage-label{font-size:.8rem;color:var(--color-text-secondary)}.stage-pill{padding:.2rem .65rem;background:#66bb6a1a;border:1px solid rgba(102,187,106,.25);border-radius:4px;font-family:var(--font-mono);font-size:.7rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-primary);cursor:pointer;transition:all .15s}.stage-pill:hover{background:#66bb6a2e;border-color:#66bb6a66;box-shadow:0 0 8px #66bb6a26}.stage-pill.muted{background:#a1a1aa1a;border-color:#a1a1aa33;color:var(--color-text-muted)}.room-header-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end;flex-shrink:0;margin-top:1rem}.room-header-actions .ccw--compact{margin-right:.25rem}.cc-btn{padding:.25rem .75rem;background:transparent;border:1px solid rgba(102,187,106,.25);border-radius:4px;color:var(--color-primary);font-family:var(--font-mono);font-size:.7rem;font-weight:600;letter-spacing:.03em;cursor:pointer;transition:all .15s;white-space:nowrap}.cc-btn{display:inline-flex;align-items:center;gap:.35rem}.cc-btn:hover{background:#66bb6a1a;border-color:#66bb6a80;box-shadow:0 0 10px #66bb6a26}@media(max-width:768px){.room-header{flex-wrap:wrap}.room-header-actions{margin-top:0;width:100%;justify-content:flex-end}.cc-btn-label{font-size:.7rem}.room-header-actions .ccw--compact{order:-1;width:100%;justify-content:space-between;margin-right:0}}.kpi-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.kpi-card{position:relative;padding:1.5rem;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);overflow:hidden}.kpi-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--color-primary),transparent);opacity:.5}.kpi-card:hover{border-color:#66bb6a4d;box-shadow:0 0 20px #66bb6a1a}.kpi-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.kpi-icon{font-size:1.2rem}.kpi-label{font-size:.75rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.1em;font-weight:500}.kpi-value{font-family:var(--font-mono);font-size:2.5rem;font-weight:700;color:var(--color-primary);text-shadow:0 0 20px var(--color-primary-glow);line-height:1;margin-bottom:1rem;transition:color var(--transition-fast),text-shadow var(--transition-fast)}.kpi-range-bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:auto;padding:.5rem .75rem;background:#ffffff08;border-radius:6px;border:1px solid rgba(255,255,255,.06)}.kpi-range-bar.optimal{border-color:#66bb6a26;background:#66bb6a0a}.kpi-range-bar.warning{border-color:#ff980026;background:#ff98000a}.kpi-range-bar.danger{border-color:#ff174426;background:#ff17440a}.kpi-range-text{font-size:.75rem;color:var(--color-text-secondary);font-family:var(--font-family);white-space:nowrap}.kpi-badge{font-size:.7rem;font-weight:700;letter-spacing:.04em;padding:.2rem .5rem;border-radius:3px;white-space:nowrap;font-family:var(--font-mono)}.kpi-badge.optimal{color:#66bb6a;background:#66bb6a1f;border:1px solid rgba(102,187,106,.3)}.kpi-badge.warning{color:#ffb300;background:#ffb3001f;border:1px solid rgba(255,179,0,.3)}.kpi-badge.danger{color:#ff1744;background:#ff17441f;border:1px solid rgba(255,23,68,.3)}.kpi-value.optimal{color:#66bb6a;text-shadow:0 0 20px rgba(102,187,106,.5)}.kpi-value.warning{color:#ff9800;text-shadow:0 0 20px rgba(255,152,0,.5)}.kpi-value.danger{color:#ff1744;text-shadow:0 0 20px rgba(255,23,68,.6)}.kpi-value.no-data{color:var(--color-text-muted);text-shadow:none}@keyframes electric-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}}.kpi-value.warning{animation:electric-pulse 2s ease-in-out infinite}.kpi-value.danger{animation:electric-pulse 1s ease-in-out infinite}.kpi-card.optimal:before{background:linear-gradient(90deg,transparent,#66BB6A,transparent);opacity:.7}.kpi-card.warning:before{background:linear-gradient(90deg,transparent,#ff9800,transparent);opacity:.8}.kpi-card.danger:before{background:linear-gradient(90deg,transparent,#ff1744,transparent);opacity:1}.kpi-card--humidity.optimal:before{background:linear-gradient(90deg,transparent,#00B0FF,transparent)}.kpi-card--humidity.optimal{border-color:#00b0ff4d}.kpi-card--humidity .kpi-value.optimal{color:#00b0ff;text-shadow:0 0 20px rgba(0,176,255,.5)}.kpi-card--humidity .kpi-range-bar.optimal{border-color:#00b0ff26;background:#00b0ff0a}.kpi-card--humidity .kpi-badge.optimal{color:#00b0ff;background:#00b0ff1f;border:1px solid rgba(0,176,255,.3)}.correction-tips{margin-bottom:2rem;padding:1.5rem;background:linear-gradient(135deg,#ff98001a,#ff17441a);border:1px solid rgba(255,152,0,.3);border-radius:var(--radius);animation:electric-pulse 3s ease-in-out infinite}.correction-tips h4{margin:0 0 1rem;color:#ff9800;font-size:1rem;font-weight:600}.tips-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem}.tip-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#ffffff0d;border-radius:6px;border-left:3px solid #ff9800}.tip-item .tip-icon{font-size:1.2rem;flex-shrink:0}.tip-item .tip-text{font-size:.9rem;color:var(--color-text-primary);line-height:1.4}.kpi-card:has(.kpi-value.optimal){border-color:#66bb6a4d}.kpi-card:has(.kpi-value.warning){border-color:#ff98004d}.kpi-card:has(.kpi-value.danger){border-color:#ff17444d}.tabs{display:flex;gap:.25rem;margin-bottom:1.5rem;padding:.25rem;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius)}.tab{padding:.75rem 1.5rem;background:transparent;border:none;border-radius:calc(var(--radius) - 2px);color:var(--color-text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.tab:hover{color:var(--color-text-primary)}.tab.active{color:var(--color-primary);background:#66bb6a1a;border:1px solid rgba(102,187,106,.3);text-shadow:0 0 10px var(--color-primary-glow)}.tab-content{min-height:400px}.overview-tab{display:flex;flex-direction:column;gap:2rem}.section h3{margin:0 0 1rem;font-size:1.25rem;color:var(--color-text-primary)}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.info-item{display:flex;flex-direction:column;gap:.25rem}.info-label{font-size:.875rem;color:var(--color-text-secondary)}.info-value{font-size:1.125rem;font-weight:600;color:var(--color-text-primary)}.events-list{display:flex;flex-direction:column;gap:.75rem}.event-item{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:.5rem}.event-device{flex:1;font-weight:500;color:var(--color-text-primary)}.event-action{color:var(--color-text-secondary);font-size:.875rem}.event-time{color:var(--color-text-muted);font-size:.75rem}.section-title{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.actuators-section,.events-section{margin-bottom:2rem}.devices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem;align-items:start}.device-card{padding:.85rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:.75rem;overflow:hidden;transition:border-color .3s,box-shadow .3s;display:flex;flex-direction:column;gap:.5rem}.device-card.device-on{border-color:#66bb6a4d;box-shadow:0 0 12px #66bb6a14}.device-card.device-on--luz{border-color:#ffd54f66;box-shadow:0 0 16px #ffd54f1f}.device-card.device-on--ventilador{border-color:#00bcd459;box-shadow:0 0 14px #00bcd41a}.device-card.device-on--extractor{border-color:#ff704359;box-shadow:0 0 14px #ff70431a}.device-card.device-on--intractor{border-color:#42a5f559;box-shadow:0 0 14px #42a5f51a}.device-card.device-on--humidificador{border-color:#4fc3f759;box-shadow:0 0 14px #4fc3f71a}.device-card.device-on--deshumidificador{border-color:#90a4ae59;box-shadow:0 0 14px #90a4ae1a}.device-card.device-on--calefactor{border-color:#ff6d0066;box-shadow:0 0 16px #ff6d001f}.device-card.device-on--riego{border-color:#29b6f659;box-shadow:0 0 14px #29b6f61a}.device-card.device-on--aire_acondicionado{border-color:#4dd0e166;box-shadow:0 0 16px #4dd0e11f}.dc-top{display:flex;flex-direction:row;align-items:center;gap:.5rem}.device-card .dv{width:40px;height:40px;flex-shrink:0}.dc-top-info{flex:1;min-width:0}.dc-name-row{display:flex;align-items:center;gap:.3rem}.dc-name{margin:0;font-size:.9rem;font-weight:600;color:var(--color-text-primary);line-height:1.2}.dc-status{padding:.1rem .35rem;border-radius:3px;font-size:.55rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.dc-status.on{background:#66bb6a26;color:var(--color-primary)}.dc-status.off{background:#71717a2e;color:var(--color-text-muted)}.dc-meta{display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:.7rem}.dc-conn{display:inline-flex;align-items:center;gap:.3rem;font-weight:600}.dc-conn.online{color:var(--color-primary)}.dc-conn.offline{color:var(--color-danger)}.dc-conn-dot{width:5px;height:5px;border-radius:50%}.dc-conn.online .dc-conn-dot{background:var(--color-primary);box-shadow:0 0 6px var(--color-primary-glow)}.dc-conn.offline .dc-conn-dot{background:var(--color-danger)}.dc-seen{color:var(--color-text-muted)}.dc-timer{padding:.15rem .35rem;background:#66bb6a0d;border:1px solid rgba(102,187,106,.15);border-radius:4px;font-size:.6rem;color:var(--color-text-secondary);text-align:center;font-family:var(--font-mono)}.dc-toggle{padding:.25rem 1rem;border:1px solid var(--color-border);border-radius:999px;font-size:.7rem;font-weight:600;letter-spacing:.03em;cursor:pointer;transition:all .15s;background:var(--color-bg-tertiary);color:var(--color-text-secondary);white-space:nowrap;flex-shrink:0}.dc-toggle.is-on{background:#ff52521f;border-color:#ff52524d;color:var(--color-danger)}.dc-toggle.is-on:hover:not(:disabled){background:#ff525238}.dc-toggle.is-off{background:#66bb6a1a;border-color:#66bb6a4d;color:var(--color-primary)}.dc-toggle.is-off:hover:not(:disabled){background:#66bb6a33}.dc-toggle:disabled{opacity:.35;cursor:not-allowed}.dc-secondary{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.5rem;padding:.4rem 0;border-top:1px solid var(--color-border);margin-top:.15rem}.dc-link{background:none;border:none;padding:.2rem .5rem;font-size:.65rem;color:var(--color-text-secondary);cursor:pointer;transition:all .15s;white-space:nowrap;border-radius:4px}.dc-link:hover{color:var(--color-text-primary);background:#ffffff0f}.dc-link.dc-danger{color:var(--color-text-muted)}.dc-link.dc-danger:hover{color:var(--color-danger);background:#ff52521a}.dc-relay-label{display:inline-flex;align-items:center;gap:.2rem;cursor:pointer}.dc-relay-label input{width:10px;height:10px;accent-color:var(--color-primary);margin:0}.device-card.device-offline{opacity:.75}.schedules-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.schedules-header h3{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text-primary)}.schedules-list{display:flex;flex-direction:column;gap:1rem}.schedule-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.25rem}.schedule-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.schedule-device-name{font-size:1rem;font-weight:600;color:var(--color-text-primary)}.schedule-status{display:flex;gap:.5rem}.status-badge{padding:.25rem .75rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em}.status-badge.active{background:#66bb6a26;color:var(--color-primary)}.status-badge.inactive{background:#a1a1aa26;color:var(--color-text-secondary)}.schedule-card-body{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.schedule-info{font-size:.875rem;color:var(--color-text-secondary)}.schedule-info strong{color:var(--color-text-primary);font-weight:600}.schedule-card-actions{display:flex;gap:.5rem;flex-wrap:wrap}.schedule-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:.5rem}.schedule-device{flex:1;font-weight:500;color:var(--color-text-primary)}.schedule-time{color:var(--color-primary);font-size:.875rem;font-weight:600}.schedule-days{color:var(--color-text-secondary);font-size:.75rem}.events-table{display:flex;flex-direction:column;gap:.5rem}.event-row{display:grid;grid-template-columns:2fr 1fr 1fr 2fr;gap:1rem;padding:.75rem 1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:.5rem;font-size:.875rem}.event-col-device{color:var(--color-text-primary);font-weight:500}.event-col-action{color:var(--color-text-secondary)}.event-col-trigger{color:var(--color-info)}.event-col-time{color:var(--color-text-muted);text-align:right}.empty-state-small{padding:3rem;text-align:center;color:var(--color-text-secondary)}.empty-state-small p{margin:0 0 1rem}.cta-button{padding:.75rem 1.5rem;background:var(--color-primary);border:none;border-radius:.5rem;color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .2s}.cta-button:hover{background:var(--color-primary-hover)}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;text-align:center}.error-icon{font-size:4rem;margin-bottom:1rem}.error-state h2{margin:0 0 .5rem;color:#ef4444}.error-state p{margin:0 0 2rem;color:var(--color-text-secondary)}.link-button{color:#3b82f6;text-decoration:none;font-weight:500}.link-button:hover{color:#60a5fa}.loading-skeleton{padding:4rem;text-align:center;color:var(--color-text-muted)}.grow-chip{display:inline-flex;align-items:center;gap:.35rem;margin-left:.75rem;padding:.2rem .75rem;background:#4ade8026;border:1px solid rgba(74,222,128,.3);border-radius:999px;font-size:.8rem;font-weight:600;color:#4ade80;cursor:pointer;transition:all .2s;white-space:nowrap}.grow-chip:hover{background:#4ade8040;border-color:#4ade8080;box-shadow:0 0 12px #4ade8033}.grow-chip.muted{background:#a1a1aa1f;border-color:#a1a1aa40;color:var(--color-text-muted)}.grow-chip.muted:hover{background:#a1a1aa33;border-color:#a1a1aa66;box-shadow:none}.grow-chip.cta{background:#6366f126;border-color:#6366f14d;color:#818cf8}.grow-chip.cta:hover{background:#6366f140;border-color:#6366f180;box-shadow:0 0 12px #6366f133}.grow-modal-body{display:flex;flex-direction:column;gap:1rem}.grow-modal-cycle-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.grow-modal-cycle-name{font-size:1rem;font-weight:600;color:var(--color-text-primary);margin:0}.grow-modal-day-badge{font-size:.75rem;font-weight:600;font-family:var(--font-mono);padding:.2rem .6rem;background:#4ade801f;border:1px solid rgba(74,222,128,.25);border-radius:4px;color:#4ade80;white-space:nowrap}.grow-modal-empty{color:var(--color-text-muted);margin:0 0 .5rem}.grow-modal-loading{font-size:.8rem;color:var(--color-text-muted);margin:0;text-align:center}.grow-stage-pills{display:flex;flex-wrap:wrap;gap:.5rem}.grow-stage-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .9rem;border-radius:999px;border:1px solid var(--color-border);background:transparent;color:var(--color-text-secondary);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s}.grow-stage-pill:hover:not(:disabled){border-color:#4ade8066;color:var(--color-text-primary);background:#4ade8014}.grow-stage-pill.active{background:#4ade8026;border-color:#4ade8066;color:#4ade80;font-weight:600;cursor:default}.grow-stage-pill:disabled:not(.active){opacity:.5;cursor:wait}.pill-day{font-size:.7rem;font-family:var(--font-mono);opacity:.7}.success-message{background:#d1fae5;color:#065f46;padding:1rem;border-radius:var(--radius);margin-bottom:2rem;border:1px solid #a7f3d0;font-weight:500}.climate-panel{position:fixed;top:5rem;right:1.5rem;width:320px;background:#1b1917f2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(102,187,106,.3);border-radius:14px;z-index:200;padding:1.25rem 1.5rem;box-shadow:0 12px 40px #00000080;animation:climate-panel-in .4s cubic-bezier(.16,1,.3,1)}@keyframes climate-panel-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.climate-panel-header{display:flex;align-items:center;gap:.4rem;color:var(--color-primary);font-weight:700;font-size:.9rem;margin-bottom:.75rem}.climate-panel-zap{animation:ccw-zap-pulse 1.5s ease infinite;filter:drop-shadow(0 0 4px rgba(102,187,106,.4))}.climate-panel-close{margin-left:auto;background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:4px;border-radius:4px;display:flex;transition:color .15s}.climate-panel-close:hover{color:var(--color-text-primary)}.climate-panel-stage{font-weight:600;font-size:.85rem;color:var(--color-text-primary);margin-bottom:.25rem}.climate-panel-targets{font-family:var(--font-mono);font-size:.7rem;color:var(--color-text-secondary);margin-bottom:.75rem;padding:.35rem .55rem;background:#66bb6a0d;border-radius:6px;border:1px solid rgba(102,187,106,.1)}.climate-panel-steps{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.climate-panel-step{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--color-text-secondary)}.cpanel-dot{width:8px;height:8px;border-radius:50%;background:var(--color-border);flex-shrink:0;transition:background .3s}.cpanel-dot--done{background:var(--color-primary)}.cpanel-dot--active{background:var(--color-primary);animation:cpanel-dot-pulse 1.2s ease-in-out infinite}@keyframes cpanel-dot-pulse{0%,to{box-shadow:0 0 #66bb6a00}50%{box-shadow:0 0 6px 3px #66bb6a4d}}.climate-panel-runtime{font-size:.72rem;color:var(--color-text-muted);line-height:1.5;margin-bottom:.75rem;padding:.4rem .55rem;background:#ffffff05;border-radius:6px;border-left:2px solid rgba(102,187,106,.3)}.climate-panel-deactivate{width:100%;padding:.55rem;background:transparent;border:1px solid rgba(255,68,68,.25);border-radius:8px;color:var(--color-danger);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s}.climate-panel-deactivate:hover{background:#ff444414;border-color:#f446}.stage-recipe-editor{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;margin-top:2rem}.recipe-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.recipe-header h3{margin:0;color:var(--color-text-primary)}.recipe-actions{display:flex;gap:1rem}.no-roles-message{text-align:center;padding:3rem;color:var(--color-text-muted)}.no-roles-message p{margin:.5rem 0}.role-tabs{display:flex;gap:.5rem;margin-bottom:2rem;border-bottom:1px solid var(--color-border)}.role-tab{padding:.75rem 1rem;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius) var(--radius) 0 0;transition:all var(--transition-fast);display:flex;align-items:center;gap:.5rem}.role-tab:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.role-tab.active{background:var(--color-primary);color:#fff;border-bottom:2px solid var(--color-primary)}.role-count{font-size:.75rem;opacity:.8}.role-content{display:grid;grid-template-columns:1fr 2fr;gap:2rem}.role-devices{background:var(--color-bg-secondary);padding:1.5rem;border-radius:var(--radius)}.role-devices h4{margin:0 0 1rem;color:var(--color-text-primary)}.device-list{display:flex;flex-direction:column;gap:.5rem}.device-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;background:var(--color-bg-card);border-radius:var(--radius-sm);border:1px solid var(--color-border)}.device-name{font-weight:500;color:var(--color-text-primary)}.device-type{color:var(--color-text-muted);font-size:.875rem}.device-status{font-size:.75rem}.role-config{display:flex;flex-direction:column;gap:2rem}.recipe-schedule-editor,.recipe-timer-editor,.recipe-emergency-editor{background:var(--color-bg-secondary);padding:1.5rem;border-radius:var(--radius);border:1px solid var(--color-border)}.recipe-schedule-editor h4,.recipe-timer-editor h4,.recipe-emergency-editor h4{margin:0 0 1rem;color:var(--color-text-primary);font-size:1rem}.schedule-item{display:flex;align-items:flex-start;gap:1rem;padding:1rem;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-sm);margin-bottom:1rem}.schedule-fields{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}.remove-schedule-btn{background:var(--color-error);color:#fff;border:none;border-radius:var(--radius-sm);width:24px;height:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0}.add-schedule-btn{background:var(--color-success);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem;transition:background var(--transition-fast)}.add-schedule-btn:hover{background:#16a34a}.timer-fields,.emergency-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.field{display:flex;flex-direction:column;gap:.5rem}.field label{font-size:.875rem;font-weight:500;color:var(--color-text-primary);display:flex;align-items:center;gap:.5rem}.field input[type=checkbox]{width:auto;margin:0}.field input,.field select{padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-input);color:var(--color-text-primary);font-size:.875rem}.field input:focus,.field select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #3b82f61a}.days-selector{display:flex;gap:.5rem;flex-wrap:wrap}.day-checkbox{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--color-text-secondary);cursor:pointer}.day-checkbox input[type=checkbox]{width:auto;margin:0}.recipes-tab{padding:0}.no-active-stage-message{text-align:center;padding:4rem 2rem;background:var(--color-bg-secondary);border-radius:var(--radius);border:1px solid var(--color-border)}.no-active-stage-message h3{margin:0 0 1rem;color:var(--color-text-primary)}.no-active-stage-message p{margin:.5rem 0;color:var(--color-text-muted)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:var(--color-bg-card);border-radius:var(--radius);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-width:800px;width:100%;max-height:90vh;overflow-y:auto}.transition-confirm-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 2rem;border-bottom:1px solid var(--color-border)}.transition-confirm-modal .modal-header h3{margin:0;color:var(--color-text-primary);font-size:1.25rem}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text-secondary);padding:.25rem;border-radius:4px;transition:color var(--transition-fast)}.modal-close:hover{color:var(--color-text-primary)}.stage-selector-modal{max-width:500px;width:90vw}.stage-selector-modal .modal-body{padding:1.5rem}.current-stage-info{margin-bottom:1.5rem;padding:1rem;background:#66bb6a1a;border:1px solid rgba(102,187,106,.3);border-radius:8px}.current-stage-info p{margin:0;color:var(--color-text-primary);font-weight:500}.stage-selection label{display:block;margin-bottom:.5rem;color:var(--color-text-primary);font-size:.9rem}.stage-select{width:100%;padding:.75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-card);color:var(--color-text-primary);font-size:1rem;transition:border-color var(--transition-fast)}.stage-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #66bb6a33}.stage-select option{background:var(--color-bg-primary);color:var(--color-text-primary)}.stage-preview{margin-top:1.5rem;padding:1.25rem;background:linear-gradient(135deg,#ff98001a,#66bb6a1a);border:1px solid rgba(255,152,0,.3);border-radius:var(--radius)}.stage-info h4{margin:0 0 .75rem;color:var(--color-primary);font-size:1.1rem}.stage-details{display:flex;gap:1rem;margin-bottom:1rem}.stage-details span{font-size:.85rem;color:var(--color-text-secondary)}.confirmation-message{display:flex;gap:.75rem;align-items:flex-start;margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.1)}.confirm-icon{font-size:1.5rem;flex-shrink:0}.confirm-text strong{display:block;color:var(--color-warning);margin-bottom:.5rem}.confirm-text p{margin:0;font-size:.9rem;color:var(--color-text-secondary);line-height:1.4}.modal-close{color:var(--color-text-muted);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.modal-close:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.modal-body{padding:2rem}.transition-summary{text-align:center;margin-bottom:2rem;padding:1.5rem;background:var(--color-bg-secondary);border-radius:var(--radius)}.transition-stages{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1rem;font-size:1.125rem;font-weight:600}.stage-from{color:var(--color-text-muted);text-decoration:line-through}.stage-to{color:var(--color-primary)}.transition-arrow{color:var(--color-text-muted);font-size:1.5rem}.transition-description{margin:0;color:var(--color-text-secondary)}.changes-summary h4{margin:0 0 1rem;color:var(--color-text-primary)}.no-changes{text-align:center;padding:2rem;color:var(--color-text-muted);background:var(--color-bg-secondary);border-radius:var(--radius)}.devices-changes{display:flex;flex-direction:column;gap:1rem}.device-change{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.device-header{background:var(--color-bg-secondary);padding:1rem;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.device-name{font-weight:600;color:var(--color-text-primary)}.device-id{font-size:.75rem;color:var(--color-text-muted)}.device-changes-list{padding:1rem;display:flex;flex-direction:column;gap:.75rem}.change-item{display:flex;align-items:flex-start;gap:.75rem}.change-icon{font-size:1rem;flex-shrink:0;margin-top:.125rem}.change-icon.add{color:var(--color-success)}.change-icon.remove{color:var(--color-error)}.change-icon.neutral{color:var(--color-text-muted)}.change-text{font-size:.875rem;color:var(--color-text-primary);line-height:1.4}.change-text strong{color:var(--color-text-primary)}.transition-warning{display:flex;gap:1rem;padding:1.5rem;background:#fef3c7;border:1px solid #f59e0b;border-radius:var(--radius);margin-top:2rem}.warning-icon{font-size:1.5rem;flex-shrink:0}.warning-text{font-size:.875rem;color:#92400e;line-height:1.4}.modal-footer{display:flex;justify-content:flex-end;gap:1rem;padding:1.5rem 2rem;border-top:1px solid var(--color-border)}@media(max-width:768px){.modal-content{margin:1rem;max-height:calc(100vh - 2rem)}.modal-body{padding:1rem}.transition-stages{flex-direction:column;gap:.5rem}.transition-arrow{transform:rotate(90deg)}.modal-footer{flex-direction:column-reverse}.modal-footer button{width:100%}.transition-warning{flex-direction:column;text-align:center}}@media(max-width:768px){.event-row{grid-template-columns:1fr;gap:.5rem}.event-col-time{text-align:left}.devices-grid{grid-template-columns:1fr}.device-card{padding:.75rem;gap:.5rem}.device-card .dv{width:36px;height:36px}.dc-name{font-size:.85rem}.device-card .dc-meta{justify-content:flex-start;padding-left:calc(36px + .5rem)}.grow-chip{margin-left:.5rem;font-size:.75rem;padding:.15rem .6rem}.recipe-header{flex-direction:column;align-items:flex-start;gap:1rem}.recipe-actions{width:100%;justify-content:flex-end}.role-content{grid-template-columns:1fr;gap:1rem}.schedule-fields,.timer-fields,.emergency-fields{grid-template-columns:1fr}}.stage-selector-modal{max-width:600px}.current-stage-info{display:flex;align-items:center;gap:.75rem;padding:1rem;background:var(--color-bg-secondary);border-radius:var(--radius);margin-bottom:1.5rem}.current-stage-info .info-label{font-size:.875rem;color:var(--color-text-secondary);font-weight:500}.current-stage-badge{padding:.375rem .75rem;background:var(--color-success);color:#fff;border-radius:var(--radius-sm);font-weight:600;font-size:.875rem}.stage-selection{margin-bottom:1.5rem}.stage-select-label{display:block;font-weight:600;color:var(--color-text-primary);margin-bottom:.5rem;font-size:.9375rem}.stage-select{width:100%;padding:.75rem 1rem;border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:1rem;font-family:inherit;cursor:pointer;transition:all var(--transition-fast)}.stage-select:hover:not(:disabled){border-color:var(--color-primary)}.stage-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #6366f11a}.stage-select:disabled{opacity:.5;cursor:not-allowed}.stage-preview{padding:1.25rem;background:var(--color-bg-secondary);border-radius:var(--radius);border:1px solid var(--color-border);margin-bottom:1.5rem}.stage-preview h4{margin:0 0 1rem;font-size:.9375rem;color:var(--color-text-secondary);font-weight:600}.stage-preview-content{display:flex;flex-direction:column;gap:.75rem}.preview-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--color-border)}.preview-item:last-child{border-bottom:none}.preview-label{font-size:.875rem;color:var(--color-text-secondary);font-weight:500}.preview-value{font-size:.9375rem;color:var(--color-text-primary);font-weight:600}.preview-value.status-planned{color:var(--color-info)}.preview-value.status-active{color:var(--color-success)}.preview-value.status-completed{color:var(--color-text-secondary)}.preview-value.status-skipped{color:var(--color-warning)}.confirmation-message{display:flex;gap:1rem;padding:1rem;background:#fbbf241a;border:1px solid rgba(251,191,36,.3);border-radius:var(--radius);margin-bottom:1rem}.confirmation-message .warning-icon{font-size:1.5rem;flex-shrink:0}.confirmation-message .warning-text{flex:1}.confirmation-message .warning-text strong{display:block;color:var(--color-text-primary);margin-bottom:.25rem;font-size:.9375rem}.confirmation-message .warning-text p{margin:0;font-size:.875rem;color:var(--color-text-secondary);line-height:1.4}.sensor-cards-section{margin-bottom:2rem}.sensor-cards-title{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.sensor-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem}.sensor-compact-card{padding:1rem 1.25rem;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.sensor-compact-card:hover{border-color:#66bb6a33;box-shadow:0 0 12px #66bb6a0f}.sensor-compact-card.primary{border-color:#66bb6a66;box-shadow:0 0 8px #66bb6a14}.sensor-compact-card.offline{opacity:.5;filter:grayscale(.5)}.sensor-compact-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.sensor-radar{position:relative;width:26px;height:26px;flex-shrink:0;border-radius:50%;background:radial-gradient(circle,#00140ae6,#002814b3);border:1px solid rgba(102,187,106,.15);overflow:hidden}.sensor-radar:before{content:"";position:absolute;inset:5px;border-radius:50%;border:.5px solid rgba(102,187,106,.1)}.sensor-radar:after{content:"";position:absolute;inset:10px;border-radius:50%;border:.5px solid rgba(102,187,106,.08)}.sensor-radar-dot{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:3px;height:3px;border-radius:50%;background:#4a6050;z-index:3}.sensor-radar.active .sensor-radar-dot{background:#66bb6a;box-shadow:0 0 3px #66bb6acc}.sensor-radar-sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,transparent 0deg,transparent 300deg,rgba(102,187,106,.02) 330deg,rgba(102,187,106,.15) 350deg,rgba(102,187,106,.35) 358deg,rgba(102,187,106,.5) 360deg);animation:sensor-radar-spin 2.5s linear infinite;z-index:1}.sensor-radar-ring{position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;border:1px solid rgba(102,187,106,.5);animation:sensor-radar-ping 2.5s ease-out infinite;z-index:2}@keyframes sensor-radar-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes sensor-radar-ping{0%{width:4px;height:4px;margin:-2px 0 0 -2px;opacity:.6}to{width:24px;height:24px;margin:-12px 0 0 -12px;opacity:0}}.sensor-compact-name{font-size:.8rem;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sensor-compact-badge{flex-shrink:0;padding:.125rem .5rem;font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary);background:#66bb6a1f;border:1px solid rgba(102,187,106,.3);border-radius:2px}.sensor-compact-values{display:flex;align-items:baseline;gap:.4rem;font-family:var(--font-mono);font-size:1.2rem;font-weight:600;color:var(--color-primary);line-height:1}.sensor-val-sep{color:var(--color-text-muted);font-size:.9rem}.sensor-compact-timestamp{margin-top:.4rem;font-size:.65rem;color:var(--color-text-muted);font-family:var(--font-mono)}.device-sensor-readings{display:flex;flex-wrap:wrap;gap:.75rem;padding:.75rem;margin-bottom:.75rem;background:#66bb6a0a;border:1px solid rgba(102,187,106,.15);border-radius:var(--radius)}.device-reading{display:flex;flex-direction:column;gap:.15rem;min-width:60px}.device-reading-label{font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.device-reading-value{font-family:var(--font-mono);font-size:1.1rem;font-weight:700;color:var(--color-primary)}.device-reading-ts{width:100%;font-size:.625rem;color:var(--color-text-muted);font-family:var(--font-mono)}@media(max-width:768px){.sensor-cards-grid{grid-template-columns:1fr}}.timeline-section{border-top:1px solid rgba(102,187,106,.1);padding:1.25rem 1.5rem;font-family:var(--font-mono)}.timeline-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.timeline-header h4{margin:0;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted)}.timeline-date-nav{display:flex;align-items:center;gap:.5rem}.timeline-date-nav button{background:none;border:1px solid rgba(102,187,106,.15);border-radius:4px;color:var(--color-text-secondary);font-family:var(--font-mono);font-size:.7rem;padding:.2rem .5rem;cursor:pointer;transition:all .15s}.timeline-date-nav button:hover{background:#66bb6a14;border-color:#66bb6a4d;color:var(--color-primary)}.timeline-date-label{font-size:.75rem;color:var(--color-text-secondary);min-width:120px;text-align:center}.timeline-grid{display:flex;flex-direction:column;gap:.25rem}.timeline-row,.timeline-hours-row{display:grid;grid-template-columns:180px 1fr;align-items:center;gap:.75rem}.timeline-row-label{display:flex;align-items:center;gap:.5rem;min-width:0}.timeline-device-icon{font-size:1rem;flex-shrink:0;width:24px;text-align:center}.timeline-device-texts{display:flex;flex-direction:column;min-width:0}.timeline-device-name{font-size:.8rem;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-device-subtitle{font-size:.6rem;color:var(--color-text-muted);white-space:nowrap}.timeline-track{position:relative;height:28px;background:#ffffff08;border-radius:4px;border:1px solid rgba(255,255,255,.06);overflow:visible}.timeline-track--hours{height:20px;background:none;border:none}.timeline-hour-mark{position:absolute;top:0;transform:translate(-50%);font-size:.55rem;color:var(--color-text-muted);-webkit-user-select:none;user-select:none}.timeline-block{position:absolute;top:2px;bottom:2px;border-radius:3px;display:flex;align-items:center;justify-content:center;overflow:hidden;transition:opacity .15s;z-index:1}.timeline-block:hover{opacity:.85}.timeline-block--programmed,.timeline-block--automatic{background:#66bb6a59;border:1px solid rgba(102,187,106,.5)}.timeline-block--point{width:10px;height:10px;top:50%;transform:translate(-50%,-50%);border-radius:50%;background:#fbbf24cc;border:1px solid rgba(251,191,36,1);overflow:visible;z-index:2}.timeline-block--point .timeline-block-label{position:absolute;top:-14px;left:50%;transform:translate(-50%);font-size:.55rem;color:#fbbf24e6;white-space:nowrap}.timeline-block--cycling{background-image:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(0,0,0,.15) 3px,rgba(0,0,0,.15) 6px)}.timeline-block-label{font-size:.6rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#ffffffd9;padding:0 4px;line-height:1;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.5)}.timeline-now-line{position:absolute;top:-2px;bottom:-2px;width:2px;background:#ef4444;z-index:5;border-radius:1px;box-shadow:0 0 4px #ef444499}.timeline-no-programming{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);font-size:.65rem;font-style:italic}.timeline-legend{display:flex;gap:1rem;margin-top:.75rem;flex-wrap:wrap}.timeline-legend-item{display:flex;align-items:center;gap:.35rem;font-size:.6rem;color:var(--color-text-muted)}.timeline-legend-swatch{width:12px;height:8px;border-radius:2px;flex-shrink:0}.timeline-legend-swatch--programmed{background:#66bb6a80;border:1px solid rgba(102,187,106,.7)}.timeline-legend-swatch--point_event{width:8px;height:8px;border-radius:50%;background:#fbbf24b3;border:1px solid rgba(251,191,36,1)}.timeline-legend-line{width:12px;height:2px;background:#ef4444;border-radius:1px}.timeline-footer{font-size:.7rem;color:var(--color-text-muted);margin-top:.75rem;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.04)}@media(max-width:768px){.timeline-section{padding:1rem .75rem}.timeline-row,.timeline-hours-row{grid-template-columns:1fr;gap:.25rem}.timeline-row-label{gap:.35rem}.timeline-device-icon{display:none}.timeline-device-name{font-size:.7rem}.timeline-device-subtitle{font-size:.55rem}.timeline-track{height:24px}.timeline-block-label{font-size:.5rem}.timeline-legend{gap:.5rem}}.bg{display:flex;flex-direction:column;align-items:center;width:180px;padding:1rem .75rem .6rem;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:12px;gap:2px}.bg-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted, #666)}.bg-value-row{display:flex;align-items:baseline;gap:4px;margin:4px 0 8px}.bg-value{font-family:var(--font-mono, "SF Mono", "Fira Code", monospace);font-size:2rem;font-weight:700;line-height:1;letter-spacing:-.02em}.bg-unit{font-family:var(--font-mono, monospace);font-size:.7rem;font-weight:500;color:var(--color-text-muted, #666)}.bg-bar-wrap{position:relative;width:100%;height:16px;display:flex;align-items:center}.bg-bar-track{position:relative;width:100%;height:4px;background:#ffffff14;border-radius:2px;overflow:hidden}.bg-bar-optimal{position:absolute;top:0;height:100%;background:#66bb6a26;border-radius:2px}.bg-bar-fill{position:absolute;top:0;left:0;height:100%;border-radius:2px;transition:width .6s ease}.bg-bar-marker{position:absolute;top:50%;width:10px;height:10px;border-radius:50%;border:2px solid var(--color-bg-primary, #0a0a0a);transform:translate(-50%,-50%);transition:left .6s ease}.bg-range{display:flex;justify-content:space-between;width:100%;font-family:var(--font-mono, monospace);font-size:.55rem;color:var(--color-text-muted, #444);margin-top:2px}.bg.bg-optimal{border-color:#66bb6a33;box-shadow:0 0 20px #66bb6a14}.bg.bg-warning{border-color:#ffb30033;box-shadow:0 0 20px #ffb30014}.bg.bg-danger{border-color:#ff444440;box-shadow:0 0 20px #ff44441a}@keyframes gauge-pulse{0%,to{opacity:1}50%{opacity:.75}}.bg.bg-warning .bg-value{animation:gauge-pulse 2s ease-in-out infinite}.bg.bg-danger .bg-value{animation:gauge-pulse 1s ease-in-out infinite}@media(max-width:768px){.bg{width:140px;padding:.75rem .5rem .4rem;border-radius:8px}.bg-value{font-size:1.5rem}.bg-unit{font-size:.6rem}.bg-bar-wrap{height:14px}.bg-label{font-size:.6rem}.bg-value-row{margin:4px 0 6px}}.cc-page{background:var(--color-bg-primary);margin:-2rem;height:calc(100vh - 64px);display:flex;flex-direction:column}.cc-grid{display:grid;grid-template-columns:1fr 320px;grid-template-rows:auto 1fr auto;grid-template-areas:"header   header" "gauges   controls" "timeline timeline";gap:0;flex:1;min-height:0}.cc-grid>.timeline-section{grid-area:timeline}.cc-header{grid-area:header;display:flex;align-items:center;gap:1rem;padding:.75rem 1.25rem;background:#0a0a0ad9;border-bottom:1px solid rgba(102,187,106,.1);font-family:var(--font-mono);font-size:.8rem;flex-wrap:wrap}.cc-back{background:none;border:1px solid rgba(102,187,106,.2);border-radius:4px;color:var(--color-primary);font-family:var(--font-mono);font-size:.75rem;padding:.3rem .7rem;cursor:pointer;transition:all .15s;text-decoration:none;white-space:nowrap}.cc-back:hover{background:#66bb6a1a;border-color:#66bb6a66}.cc-header-sep{color:#66bb6a33;-webkit-user-select:none;user-select:none}.cc-header-room{color:var(--color-text-primary);font-weight:600;font-size:.9rem}.cc-header-stage{color:#4ade80;font-size:.8rem}.cc-header-online{display:flex;align-items:center;gap:.35rem;font-size:.75rem;color:var(--color-text-secondary)}.cc-header-online-dot{width:6px;height:6px;border-radius:50%;background:var(--color-primary);box-shadow:0 0 6px var(--color-primary-glow)}.cc-header-time{margin-left:auto;color:var(--color-text-muted);font-size:.7rem}.cc-gauges{grid-area:gauges;display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem;border-right:1px solid rgba(102,187,106,.1);overflow-y:auto;min-height:0}.cc-sensor-group{display:flex;flex-direction:column;gap:.75rem}.cc-sensor-group+.cc-sensor-group{padding-top:1rem;border-top:1px solid rgba(255,255,255,.05)}.cc-sensor-name{font-family:var(--font-mono);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted)}.cc-sensor-name.is-primary{color:var(--color-primary)}.cc-sensor-gauges{display:flex;flex-wrap:wrap;gap:.75rem}.cc-controls{grid-area:controls;display:flex;flex-direction:column;padding:0;overflow-y:auto;min-height:0}.cc-controls-title{padding:.75rem 1rem;margin:0;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);border-bottom:1px solid rgba(102,187,106,.08)}.cc-controls-list{display:flex;flex-direction:column}.cc-device-row{display:flex;align-items:center;gap:.6rem;padding:.6rem 1rem;border-bottom:1px solid rgba(255,255,255,.04);transition:background .15s;border-left:3px solid transparent}.cc-device-row:hover{background:#ffffff05}.cc-device-row.is-on{border-left-color:#66bb6a80}.cc-device-row.is-on.type-luz{border-left-color:#ffd54f99}.cc-device-row.is-on.type-ventilador{border-left-color:#00bcd480}.cc-device-row.is-on.type-extractor{border-left-color:#ff704380}.cc-device-row.is-on.type-intractor{border-left-color:#42a5f580}.cc-device-row.is-on.type-humidificador{border-left-color:#4fc3f780}.cc-device-row.is-on.type-calefactor{border-left-color:#ff6d0099}.cc-device-row.is-on.type-riego{border-left-color:#29b6f680}.cc-device-row.is-offline{opacity:.4}.cc-device-visual{flex-shrink:0}.cc-device-visual .dv{width:24px;height:24px}.cc-device-info{flex:1;min-width:0}.cc-device-name{font-size:.8rem;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cc-device-badge{font-family:var(--font-mono);font-size:.6rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:.1rem .4rem;border-radius:2px;flex-shrink:0}.cc-device-badge.on{color:var(--color-primary);background:#66bb6a1f}.cc-device-badge.off{color:var(--color-text-muted);background:#71717a1f}.cc-device-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.cc-program-btn{border:1px solid rgba(255,255,255,.08);background:#ffffff08;color:var(--color-text-secondary);border-radius:999px;padding:.25rem .55rem;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:all .15s}.cc-program-btn:hover{border-color:#66bb6a47;color:var(--color-primary);background:#66bb6a14}.cc-toggle{position:relative;width:36px;height:20px;flex-shrink:0;background:#71717a40;border:1px solid rgba(113,113,122,.3);border-radius:10px;cursor:pointer;transition:all .2s;padding:0}.cc-toggle:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#666;transition:all .2s}.cc-toggle.is-on{background:#66bb6a33;border-color:#66bb6a66}.cc-toggle.is-on:after{left:18px;background:var(--color-primary);box-shadow:0 0 6px var(--color-primary-glow)}.cc-toggle:disabled{opacity:.3;cursor:not-allowed}.cc-controls-empty{padding:2rem 1rem;text-align:center;color:var(--color-text-muted);font-size:.8rem}.cc-strip-empty{color:var(--color-text-muted);font-size:.7rem;padding:0 .5rem}.cc-loading{display:flex;align-items:center;justify-content:center;flex:1;color:var(--color-text-muted);font-family:var(--font-mono)}.cc-error{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:1rem;text-align:center;color:var(--color-text-secondary)}.cc-error a{color:var(--color-primary);text-decoration:none}@media(max-width:768px){.cc-page{margin:-1rem;height:auto;min-height:calc(100vh - 64px)}.cc-grid{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;grid-template-areas:"header" "gauges" "controls" "timeline"}.cc-gauges{border-right:none;border-bottom:1px solid rgba(102,187,106,.1);padding:1rem .75rem;gap:.75rem}.cc-sensor-gauges{gap:.5rem}.cc-sensor-group{gap:.4rem}.cc-sensor-name{font-size:.6rem}.cc-device-row{padding:.5rem .75rem}.cc-controls{border-bottom:1px solid rgba(102,187,106,.1)}.cc-header-time{margin-left:0}}.devices-page{padding:2rem;max-width:1400px;margin:0 auto}.dp-header{display:flex;align-items:center;gap:1.5rem;margin-bottom:1.25rem}.dp-header h1{font-size:1.75rem;font-weight:700;color:var(--color-text-primary);margin:0;white-space:nowrap}.dp-stats{display:flex;align-items:center;gap:1rem;font-size:.8rem;color:var(--color-text-secondary)}.dp-stat{display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap}.dp-stat-num{font-family:var(--font-mono);font-weight:600;color:var(--color-text-primary)}.dp-stat-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.dp-stat-dot.green{background:var(--color-primary);box-shadow:0 0 6px var(--color-primary-glow)}.dp-stat-dot.blue{background:#3b82f6;box-shadow:0 0 6px #3b82f666}.dp-stat-dot.gray{background:#64748b}.dp-header-actions{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.dp-header-actions .btn-primary{color:#1b1917}.dp-filters{display:flex;align-items:center;gap:.5rem;margin-bottom:1.5rem;flex-wrap:wrap}.dp-chip{padding:.35rem .85rem;border-radius:999px;font-size:.8rem;font-weight:500;border:1px solid var(--color-border);background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:all .15s;white-space:nowrap}.dp-chip:hover{border-color:var(--color-text-muted);color:var(--color-text-primary)}.dp-chip.active{border-color:var(--color-primary);color:var(--color-primary);background:#66bb6a14}.dp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;align-items:start}.dp-card{padding:.85rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:.75rem;transition:border-color .3s,box-shadow .3s;display:flex;flex-direction:column;gap:.5rem}.dp-card.dp-on{border-color:#66bb6a4d;box-shadow:0 0 12px #66bb6a14}.dp-card.dp-on--luz{border-color:#ffd54f66;box-shadow:0 0 16px #ffd54f1f}.dp-card.dp-on--ventilador{border-color:#00bcd459;box-shadow:0 0 14px #00bcd41a}.dp-card.dp-on--extractor{border-color:#ff704359;box-shadow:0 0 14px #ff70431a}.dp-card.dp-on--intractor{border-color:#42a5f559;box-shadow:0 0 14px #42a5f51a}.dp-card.dp-on--humidificador{border-color:#4fc3f759;box-shadow:0 0 14px #4fc3f71a}.dp-card.dp-on--deshumidificador{border-color:#90a4ae59;box-shadow:0 0 14px #90a4ae1a}.dp-card.dp-on--calefactor{border-color:#ff6d0066;box-shadow:0 0 16px #ff6d001f}.dp-card.dp-on--riego{border-color:#29b6f659;box-shadow:0 0 14px #29b6f61a}.dp-card.dp-on--aire_acondicionado{border-color:#4dd0e166;box-shadow:0 0 16px #4dd0e11f}.dp-card.dp-offline{opacity:.75}.dp-top{display:flex;flex-direction:row;align-items:center;gap:.5rem}.dp-card .dv{width:40px;height:40px;flex-shrink:0}.dp-top-info{flex:1;min-width:0}.dp-name-row{display:flex;align-items:center;gap:.3rem}.dp-name{margin:0;font-size:.9rem;font-weight:600;color:var(--color-text-primary);line-height:1.2}.dp-status{padding:.1rem .35rem;border-radius:3px;font-size:.55rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.dp-status.on{background:#66bb6a26;color:var(--color-primary)}.dp-status.off{background:#71717a2e;color:var(--color-text-muted)}.dp-status.unknown{background:#ff44441a;color:var(--color-danger)}.dp-type{display:none}.dp-meta{display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:.7rem}.dp-conn{display:inline-flex;align-items:center;gap:.3rem;font-weight:600}.dp-conn.online{color:var(--color-primary)}.dp-conn.offline{color:var(--color-danger)}.dp-conn-dot{width:5px;height:5px;border-radius:50%}.dp-conn.online .dp-conn-dot{background:var(--color-primary);box-shadow:0 0 6px var(--color-primary-glow)}.dp-conn.offline .dp-conn-dot{background:var(--color-danger)}.dp-seen{color:var(--color-text-muted)}.dp-wifi-update-btn{display:inline-flex;align-items:center;gap:4px;margin-left:auto;padding:4px 10px;border:1px solid rgba(102,187,106,.4);border-radius:999px;background:#66bb6a14;color:var(--color-primary);font-size:.7rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.dp-wifi-update-btn:hover,.dp-wifi-update-btn:active{background:#66bb6a2e;border-color:var(--color-primary)}.dp-location-select{padding:.1rem .25rem;border-radius:4px;border:1px solid var(--color-border);background:var(--color-bg-tertiary);color:var(--color-text-secondary);font-size:.65rem;font-family:var(--font-mono);cursor:pointer;transition:border-color .15s}.dp-location-select:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-text-primary)}.dp-location-select:disabled{opacity:.5;cursor:not-allowed}.dp-location-label{color:var(--color-text-muted);font-size:.65rem;font-family:var(--font-mono)}.dp-program-link{display:flex;align-items:center;gap:.35rem;width:100%;padding:.35rem .5rem;background:#ffffff08;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-muted);font-size:.65rem;cursor:pointer;transition:all .15s;text-align:left}.dp-program-link:hover{border-color:var(--color-primary);color:var(--color-text-secondary)}.dp-program-link--active{color:var(--color-text-secondary)}.dp-program-link--active svg{color:var(--color-primary)}.dp-ota{display:flex;flex-direction:column;gap:.35rem;padding:.45rem .5rem;border:1px solid var(--color-border);border-radius:6px;background:#ffffff06}.dp-ota-main,.dp-ota-state{display:flex;align-items:center;gap:.35rem;min-width:0}.dp-ota-label{color:var(--color-text-muted);font-size:.58rem;font-weight:700;letter-spacing:.04em}.dp-ota-version,.dp-ota-target{color:var(--color-text-secondary);font-size:.68rem;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dp-ota-target{color:var(--color-primary)}.dp-ota-badge,.dp-ota-status{display:inline-flex;align-items:center;min-height:18px;padding:.1rem .35rem;border-radius:4px;font-size:.58rem;font-weight:700;text-transform:uppercase}.dp-ota-badge--ok{color:var(--color-primary);background:#66bb6a1a}.dp-ota-badge--blocked{color:var(--color-text-muted);background:#71717a24}.dp-ota-status{color:var(--color-text-muted);background:#ffffff0d}.dp-ota-status--queued,.dp-ota-status--downloading{color:#38bdf8;background:#38bdf81f}.dp-ota-status--success{color:var(--color-primary);background:#66bb6a1f}.dp-ota-status--failed,.dp-ota-status--expired{color:var(--color-danger);background:#ff52521f}.dp-ota-status--skipped{color:#fbbf24;background:#fbbf241f}.dp-ota-error{color:var(--color-danger);font-size:.65rem;line-height:1.25;word-break:break-word}.dp-ota-action{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:100%;min-height:28px;border:1px solid rgba(102,187,106,.3);border-radius:6px;background:#66bb6a14;color:var(--color-primary);font-size:.68rem;font-weight:650;cursor:pointer;transition:all .15s}.dp-ota-action:hover:not(:disabled){background:#66bb6a29}.dp-ota-action:disabled{opacity:.45;cursor:not-allowed}.dp-toggle{padding:.25rem 1rem;border:1px solid var(--color-border);border-radius:999px;font-size:.7rem;font-weight:600;letter-spacing:.03em;cursor:pointer;transition:all .15s;background:var(--color-bg-tertiary);color:var(--color-text-secondary);white-space:nowrap;flex-shrink:0}.dp-toggle.is-on{background:#ff52521f;border-color:#ff52524d;color:var(--color-danger)}.dp-toggle.is-on:hover:not(:disabled){background:#ff525238}.dp-toggle.is-off{background:#66bb6a1a;border-color:#66bb6a4d;color:var(--color-primary)}.dp-toggle.is-off:hover:not(:disabled){background:#66bb6a33}.dp-toggle:disabled{opacity:.35;cursor:not-allowed}.dp-link{background:none;border:none;padding:.2rem .5rem;font-size:.65rem;color:var(--color-text-secondary);cursor:pointer;transition:all .15s;white-space:nowrap;border-radius:4px}.dp-link:hover{color:var(--color-text-primary);background:#ffffff0f}.dp-link.dp-danger{color:var(--color-text-muted)}.dp-link.dp-danger:hover{color:var(--color-danger);background:#ff52521a}.dp-primary-active{color:var(--color-primary);font-weight:600}.dp-card-menu{position:relative;flex-shrink:0}.dp-menu-trigger{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;transition:all .15s}.dp-menu-trigger:hover{background:#ffffff0f;color:var(--color-text-primary)}.dp-menu-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:160px;max-height:340px;overflow-y:auto;overscroll-behavior:contain;padding:5px;display:flex;flex-direction:column;gap:2px;background:#171514eb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(42,39,37,.6);border-radius:10px;box-shadow:0 8px 24px #00000080;z-index:50}.dp-menu-dropdown--up{top:auto;bottom:calc(100% + 6px)}.dp-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;background:transparent;border:none;border-radius:7px;color:var(--color-text-secondary);font-size:.75rem;text-align:left;cursor:pointer;transition:all .15s}.dp-menu-item:hover{background:#ffffff0d;color:var(--color-text-primary)}.dp-menu-item--danger:hover{background:#ff525214;color:var(--color-danger)}.dp-menu-item--active{color:var(--color-primary);font-weight:600}.dp-menu-divider{height:1px;background:var(--color-border);margin:3px 0}.dp-menu-section-label{font-size:.6rem;font-weight:600;color:var(--color-text-muted);padding:4px 10px 2px;text-transform:uppercase;letter-spacing:.05em}.dp-sensor-footer{display:flex;align-items:center;justify-content:center;padding:.25rem 0 0}.dp-card--sensor .dp-readings{gap:1rem;padding:.35rem .5rem}.dp-readings{display:flex;align-items:center;justify-content:center;gap:1.25rem;padding:.5rem .75rem;background:#ffffff08;border:1px solid var(--color-border);border-radius:6px}.dp-reading{display:flex;flex-direction:column;align-items:center;gap:.15rem}.dp-reading-label{font-size:.55rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.dp-reading-value{font-size:.95rem;font-weight:700;font-family:var(--font-mono)}.dp-reading-temp{color:#fbbf24}.dp-reading-hum{color:#38bdf8}.dp-reading-vpd{color:#4ade80}.empty-state{text-align:center;padding:4rem 2rem;background:transparent;border:1px solid var(--color-border);border-radius:12px;overflow-wrap:break-word;word-break:break-word}@media(max-width:520px){.empty-state{padding:2.5rem 1.25rem}}.empty-icon{margin-bottom:1rem;opacity:.7;filter:drop-shadow(0 0 8px var(--color-primary))}.empty-state h2{font-size:1.25rem;font-weight:600;color:var(--color-text-primary);margin:0 0 .5rem}.empty-state p{color:var(--color-text-secondary);margin-bottom:1.5rem}.text-muted{color:var(--color-text-secondary);font-size:.875rem}.toast{padding:1rem 1.5rem;border-radius:8px;box-shadow:0 4px 12px #0000004d;font-weight:500;animation:slideIn .3s ease}.toast-success{background-color:var(--color-primary);color:#fff}.toast-error{background-color:#ef4444;color:#fff}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@media(max-width:520px){.devices-page{padding:1.25rem}.dp-header{flex-direction:column;align-items:flex-start;gap:.75rem}.dp-stats{flex-wrap:wrap;gap:.6rem}.dp-header-actions{margin-left:0;width:100%;align-items:flex-start}.dp-header-actions button{width:100%}.dp-filters{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:.25rem}.dp-filters::-webkit-scrollbar{display:none}.dp-grid{grid-template-columns:1fr}.dp-card{padding:.75rem;gap:.5rem}.dp-name{font-size:.85rem}.dp-meta{justify-content:flex-start;padding-left:calc(36px + .5rem)}.dp-program-link{margin-left:0;width:100%}}.dp-rename-modal{display:flex;flex-direction:column;gap:.75rem}.dp-rename-label{color:var(--color-text-secondary);font-size:.875rem}.dp-rename-input{width:100%;padding:.65rem .75rem;border-radius:8px;border:1px solid var(--color-border);background:var(--color-bg-tertiary);color:var(--color-text-primary);font-family:inherit;font-size:.9375rem;transition:border-color .2s,box-shadow .2s}.dp-rename-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #66bb6a1a}.dp-rename-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:.5rem}.profile-page{max-width:800px;margin:0 auto;padding:2rem 1rem}.profile-page h1{font-size:2.5rem;font-weight:800;margin-bottom:2rem;color:var(--color-text-primary)}.profile-container{display:flex;flex-direction:column;gap:2rem}.profile-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:2rem;transition:all .3s ease}.profile-card:hover{border-color:var(--color-primary);box-shadow:0 0 20px #66bb6a14}.profile-header{display:flex;align-items:center;gap:2rem;margin-bottom:2.5rem;position:relative}.profile-avatar{width:100px;height:100px;border-radius:24px;background:linear-gradient(135deg,#10b981,#059669);display:flex;align-items:center;justify-content:center;font-size:2.5rem;font-weight:800;color:#fff;box-shadow:0 10px 20px #10b98133}.profile-info{flex:1}.profile-info h2{margin:0;font-size:1.75rem;color:var(--color-text-primary)}.profile-email{margin:.25rem 0 .75rem;font-size:1rem}.profile-badge{display:inline-block;padding:.25rem .75rem;background:#66bb6a14;border:1px solid rgba(102,187,106,.18);border-radius:99px;color:var(--color-primary);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.edit-toggle-button{padding:.5rem 1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-primary);font-weight:600;cursor:pointer;transition:all .2s}.edit-toggle-button:hover{border-color:var(--color-border-hover);background:var(--color-bg-tertiary)}.profile-details{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.detail-item .value{word-break:break-word}.detail-item{display:flex;flex-direction:column;gap:.25rem}.detail-item .label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;font-weight:600}.detail-item .value{font-size:1.1rem;color:var(--color-text-primary)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.section-header h3{margin:0;font-size:1.25rem;color:var(--color-text-primary)}.edit-form{display:grid;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.875rem;color:var(--color-text-secondary);font-weight:500}.form-group input{padding:.75rem 1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-primary);font-size:1rem;transition:all .2s}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #66bb6a29}.form-actions{display:flex;gap:1rem;margin-top:1rem}.btn-primary{padding:.75rem 1.5rem;background:var(--color-primary);border:none;border-radius:8px;color:#1b1917;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);transform:translateY(-1px)}.btn-secondary{padding:.75rem 1.5rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-primary);cursor:pointer}.btn-outline-primary{padding:.75rem 1.5rem;background:transparent;border:1px solid var(--color-primary);border-radius:8px;color:var(--color-primary);font-weight:600;cursor:pointer;transition:all .2s}.btn-outline-primary:hover{background:#66bb6a14}.error-message{padding:.75rem;background:#ef44441a;border-left:4px solid #ef4444;color:#fca5a5;font-size:.875rem;border-radius:4px}.success-tag{font-size:.875rem;color:var(--color-primary);background:#66bb6a14;padding:.25rem .75rem;border-radius:99px;font-weight:600}.success-message{padding:.75rem;background:#10b9811a;border-left:4px solid #10b981;color:#6ee7b7;font-size:.875rem;border-radius:4px;font-weight:500}.location-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem}.location-badge{font-size:.8rem;padding:.2rem .6rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary)}.profile-footer{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--color-border)}.logout-button-alt{width:100%;padding:.85rem;background:transparent;border:1px solid var(--color-border);border-radius:10px;color:var(--color-text-secondary);font-weight:600;font-size:.9rem;cursor:pointer;transition:all .2s}.logout-button-alt:hover{border-color:#ef444466;color:#ef4444;background:#ef44440d}.loading-state{display:flex;justify-content:center;align-items:center;height:300px;font-size:1.25rem;color:var(--color-text-secondary)}.text-muted{color:var(--color-text-secondary)}@media(max-width:640px){.profile-page{padding:1rem .25rem}.profile-card{padding:1.25rem}.profile-header{flex-direction:column;text-align:center}.edit-toggle-button{align-self:center}.profile-details{grid-template-columns:1fr}}.rooms-page{max-width:1200px;margin:0 auto}.rooms-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.rooms-header h1{margin:0;font-family:var(--font-family);font-size:24px;font-weight:600;color:var(--color-text-primary)}.rooms-actions{display:flex;align-items:center;gap:.75rem}.add-room-btn{display:flex;align-items:center;gap:8px;padding:10px 20px;background:var(--color-primary);border:none;border-radius:6px;font-family:var(--font-family);font-size:13px;font-weight:600;color:var(--color-bg-primary);cursor:pointer;transition:all .2s;box-shadow:0 0 16px var(--color-primary-glow)}.add-room-btn:hover{background:var(--color-primary-hover);box-shadow:0 0 24px var(--color-primary-glow);transform:translateY(-1px)}.add-room-btn svg{width:16px;height:16px}.add-device-button{display:flex;align-items:center;gap:8px;padding:10px 20px;background:transparent;border:1px solid var(--color-border);border-radius:6px;font-family:var(--font-family);font-size:13px;font-weight:600;color:var(--color-text-secondary);cursor:pointer;transition:all .2s}.add-device-button:hover{border-color:var(--color-primary);color:var(--color-primary)}.add-device-button svg{width:16px;height:16px}.search-bar{margin-bottom:2rem}.search-bar input{width:100%;padding:.875rem 1.25rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:10px;color:var(--color-text-primary);font-size:.9375rem;transition:all .2s}.search-bar input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #66bb6a1a}.search-bar input:focus-visible{outline:none}.search-bar input::placeholder{color:var(--color-text-muted)}.rooms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px;margin-bottom:2rem}.room-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;padding:20px;cursor:pointer;transition:all .25s;display:flex;flex-direction:column;gap:16px}.room-card:hover{border-color:var(--color-primary);box-shadow:0 0 20px #66bb6a14;transform:translateY(-2px)}.room-card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:0}.room-card-name{margin:0;font-family:var(--font-family);font-size:16px;font-weight:600;color:var(--color-text-primary)}.room-name-row{display:flex;align-items:center;gap:6px;min-width:0}.room-card-actions{display:none}.room-card-menu{display:flex;position:relative;flex-shrink:0}.room-menu-trigger{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--color-text-muted);cursor:pointer;transition:all .15s}.room-menu-trigger:hover{background:#ffffff0a;border-color:var(--color-border);color:var(--color-text-primary)}.room-menu-trigger:focus-visible{outline:none;box-shadow:0 0 0 1px #66bb6a59}.room-menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:132px;padding:6px;display:flex;flex-direction:column;gap:4px;background:#171514eb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(42,39,37,.6);border-radius:10px;box-shadow:0 12px 24px #00000080;z-index:20}.room-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;background:transparent;border:none;border-radius:8px;color:var(--color-text-secondary);font-size:13px;text-align:left;cursor:pointer;transition:all .15s}.room-menu-item:hover{background:#ffffff0a;color:var(--color-text-primary)}.room-menu-item--danger:hover{background:#ff444414;color:var(--color-danger)}.room-edit-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:transparent;border:none;border-radius:4px;color:var(--color-text-muted);cursor:pointer;opacity:0;pointer-events:none;transition:all .15s;flex-shrink:0}.room-card:hover .room-edit-btn,.room-card:focus-within .room-edit-btn{opacity:1;pointer-events:auto}.room-edit-btn:hover{color:var(--color-primary);background:#66bb6a14}.room-delete-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:transparent;border:none;border-radius:4px;color:var(--color-text-muted);cursor:pointer;opacity:0;pointer-events:none;transition:all .15s;flex-shrink:0}.room-card:hover .room-delete-btn,.room-card:focus-within .room-delete-btn{opacity:1;pointer-events:auto}.room-delete-btn:hover{color:var(--color-danger, #ff4444);background:#ff444414}.room-edit-btn:focus-visible,.room-delete-btn:focus-visible{opacity:1;pointer-events:auto;outline:none;box-shadow:0 0 0 1px #66bb6a59}.room-name-edit{display:flex;align-items:center;gap:4px;flex:1;min-width:0}.room-name-input{flex:1;min-width:0;padding:4px 8px;background:var(--color-bg-secondary);border:1px solid var(--color-primary);border-radius:4px;color:var(--color-text-primary);font-family:var(--font-family);font-size:15px;font-weight:600;outline:none;box-shadow:0 0 8px var(--color-primary-glow)}.room-name-input:disabled{opacity:.6}.room-edit-action{display:flex;align-items:center;justify-content:center;width:26px;height:26px;background:transparent;border:1px solid var(--color-border);border-radius:4px;cursor:pointer;transition:all .15s;flex-shrink:0}.room-edit-confirm{color:var(--color-primary)}.room-edit-confirm:hover:not(:disabled){background:#66bb6a1f;border-color:var(--color-primary)}.room-edit-confirm:disabled{opacity:.4;cursor:not-allowed}.room-edit-cancel{color:var(--color-text-muted)}.room-edit-cancel:hover{color:var(--color-danger, #ff4444);background:#ff444414;border-color:#ff44444d}.room-status-badge{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:100px;flex-shrink:0}.room-status-badge--active{background:#66bb6a14}.room-status-badge--inactive{background:#88888814}.room-status-dot{width:6px;height:6px;border-radius:50%}.room-status-dot--active{background:var(--color-primary);box-shadow:0 0 6px var(--color-primary-glow)}.room-status-dot--inactive{background:var(--color-text-muted)}.room-status-text{font-family:var(--font-mono);font-size:11px;font-weight:600}.room-status-text--active{color:var(--color-primary)}.room-status-text--inactive{color:var(--color-text-muted)}.room-card-meta{display:flex;align-items:center;justify-content:space-between}.room-meta-text{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--color-text-muted)}.room-card-divider{width:100%;height:1px;background:var(--color-border);border:none}.room-card-readings{display:flex;align-items:flex-end;justify-content:space-between}.room-card-readings--stale{opacity:.78}.room-reading-group{display:flex;flex-direction:column;gap:4px}.room-reading-label{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--color-text-muted);text-transform:uppercase}.room-reading-value{font-family:var(--font-mono);font-weight:700}.room-reading-value--primary{font-size:28px;color:var(--color-primary);text-shadow:0 0 16px var(--color-primary-glow)}.room-reading-value--secondary{font-size:20px;color:var(--color-text-secondary)}.room-reading-value--na{font-size:16px;color:var(--color-text-muted)}.room-card-readings--stale .room-reading-label{color:var(--color-text-muted)}.room-card-readings--stale .room-reading-value--primary,.room-card--inactive .room-reading-value--primary{color:var(--color-text-secondary);text-shadow:none}.room-card-readings--stale .room-reading-value--secondary,.room-card--inactive .room-reading-value--secondary,.room-card-readings--stale .room-reading-value--na,.room-card--inactive .room-reading-value--na{color:var(--color-text-muted)}.room-card-no-readings{display:flex;align-items:center;gap:8px;padding:12px 0}.room-card-no-readings svg{color:var(--color-text-muted);width:16px;height:16px}.room-card-no-readings span{font-family:var(--font-mono);font-size:12px;color:var(--color-text-muted)}.room-description{margin:0;color:var(--color-text-secondary);font-size:13px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.loading-state,.empty-state{text-align:center;padding:4rem 2rem;color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-border);border-radius:12px}.empty-icon{margin-bottom:1rem}.empty-state h2{color:var(--color-text-primary);margin:0 0 .5rem}.empty-state p{margin:0 0 1.5rem;max-width:400px;margin-left:auto;margin-right:auto}.cta-button{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;background:var(--color-primary);border:none;border-radius:8px;font-family:var(--font-mono);font-size:14px;font-weight:700;letter-spacing:1px;color:var(--color-bg-primary);cursor:pointer;transition:all .2s;box-shadow:0 0 20px var(--color-primary-glow)}.cta-button:hover{background:var(--color-primary-hover);box-shadow:0 0 30px var(--color-primary-glow);transform:translateY(-1px)}.error-state{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:3rem 2rem;background:#ff44440f;border:1px solid rgba(255,68,68,.2);border-radius:12px}.error-icon{color:var(--color-danger)}.error-state p{margin:0;color:#fca5a5}.delete-modal-content{display:flex;flex-direction:column;gap:1rem}.delete-modal-warning{margin:0;color:var(--color-text-secondary);font-size:14px;line-height:1.5}.delete-modal-warning strong{color:var(--color-text-primary)}.delete-modal-error{margin:0;padding:10px 14px;background:#ff444414;border:1px solid rgba(255,68,68,.2);border-radius:8px;color:#fca5a5;font-size:13px;line-height:1.4}.delete-modal-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:.5rem}.delete-modal-cancel{padding:8px 18px;background:transparent;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-secondary);font-family:var(--font-family);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}.delete-modal-cancel:hover:not(:disabled){border-color:var(--color-text-muted);color:var(--color-text-primary)}.delete-modal-confirm{padding:8px 18px;background:var(--color-danger, #ff4444);border:none;border-radius:6px;color:#fff;font-family:var(--font-family);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}.delete-modal-confirm:hover:not(:disabled){filter:brightness(1.1);box-shadow:0 0 16px #ff44444d}.delete-modal-confirm:disabled,.delete-modal-cancel:disabled{opacity:.6;cursor:not-allowed}@media(max-width:768px){.rooms-grid{grid-template-columns:1fr}.rooms-actions{gap:.5rem}.add-device-button,.add-room-btn{padding:8px 12px;font-size:12px}.room-reading-value--primary{font-size:22px}.room-reading-value--secondary{font-size:16px}}@media(hover:none),(pointer:coarse){.room-name-row{flex:1}}.history-page{padding:2rem;max-width:1400px;margin:0 auto}.history-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.history-header h1{margin:0;font-size:2rem;font-weight:600;color:var(--color-text-primary)}.history-actions{display:flex;gap:.75rem}.history-filters{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1.5rem}.filter-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem}.filter-group{display:flex;flex-direction:column;gap:.5rem}.filter-group label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}.filter-group input,.filter-group select{padding:.5rem .75rem;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:.875rem}.filter-group input:focus,.filter-group select:focus{outline:none;border-color:var(--color-primary)}.date-presets{display:flex;gap:.25rem}.preset-btn{padding:.3rem .5rem;border:1px solid var(--color-border, #2a2a2a);border-radius:var(--radius-sm, .25rem);background:var(--color-bg-tertiary, #1a1a1a);color:var(--color-text-secondary, #888);font-size:.75rem;cursor:pointer;transition:all var(--transition-fast, .15s ease)}.preset-btn:hover{border-color:var(--color-primary, #66BB6A);color:var(--color-primary, #66BB6A)}.filter-actions{display:flex;gap:.75rem}.history-tabs{display:flex;gap:.5rem;border-bottom:1px solid var(--color-border);margin-bottom:1.5rem}.history-tabs .tab{padding:.75rem 1.5rem;background:transparent;border:none;border-bottom:2px solid transparent;font-size:.9375rem;font-weight:600;color:var(--color-text-secondary);cursor:pointer;transition:all .2s}.history-tabs .tab:hover{color:var(--color-text-primary)}.history-tabs .tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.history-content{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.history-loading,.history-error,.history-empty{display:flex;align-items:center;justify-content:center;padding:4rem 2rem;color:var(--color-text-secondary);font-size:.875rem}.history-error{color:var(--color-danger)}.history-table{width:100%;border-collapse:collapse}.history-table thead{background:var(--color-bg-tertiary);border-bottom:1px solid var(--color-border)}.history-table th{padding:1rem;text-align:left;font-size:.875rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.025em}.history-table td{padding:1rem;border-bottom:1px solid var(--color-border);font-size:.875rem;color:var(--color-text-primary)}.history-table tbody tr:hover{background:var(--color-bg-tertiary)}.history-table tbody tr:last-child td{border-bottom:none}.action-cell{font-weight:600;color:var(--color-primary)}.history-pagination{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-top:1px solid var(--color-border)}.pagination-info{font-size:.875rem;color:var(--color-text-secondary)}.pagination-controls{display:flex;align-items:center;gap:1rem}.page-indicator{font-size:.875rem;color:var(--color-text-primary);font-weight:500}@media print{.no-print{display:none!important}.history-page{padding:0;max-width:none}.history-content{border:none;background:#fff}.history-table{border:1px solid #ddd}.history-table th,.history-table td{color:#1b1917;border:1px solid #ddd}.history-table thead{background:#f5f5f5}}@media(max-width:768px){.history-page{padding:1rem}.history-header{flex-direction:column;align-items:flex-start;gap:1rem}.filter-row{grid-template-columns:1fr}.history-table{display:block;overflow-x:auto;white-space:nowrap}.history-pagination{flex-direction:column;gap:1rem}}.members-page{max-width:1000px;margin:0 auto;padding:2rem 1rem}.members-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.members-header h1{margin:0;font-size:2rem;font-weight:700;color:var(--color-text-primary)}.add-member-button{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;background:var(--color-primary);border:none;border-radius:8px;color:#1b1917;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 0 16px var(--color-primary-glow)}.add-member-button:hover{background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:0 0 24px var(--color-primary-glow)}.members-search{margin-bottom:2rem}.members-search input{width:100%;padding:.875rem 1.25rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:10px;color:var(--color-text-primary);font-size:.9375rem}.members-search input:focus{outline:none;border-color:var(--color-primary)}.members-error{margin-bottom:1rem;padding:1rem;border:1px solid var(--color-danger);color:var(--color-danger);border-radius:8px;background:#ef44440d}.members-grid{display:grid;gap:1rem}.member-card{display:flex;align-items:center;justify-content:space-between;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:12px;padding:1.5rem;transition:all .2s}.member-card:hover{border-color:var(--color-primary);background:var(--color-bg-secondary);filter:brightness(1.1)}.member-info{display:flex;align-items:center;gap:1.5rem}.member-avatar{width:50px;height:50px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#4f46e5);display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700;color:#fff}.member-details{display:flex;flex-direction:column;gap:.25rem}.member-name{font-size:1.1rem;font-weight:600;color:var(--color-text-primary);display:flex;align-items:center;gap:.5rem}.member-email{font-size:.9rem;color:var(--color-text-secondary)}.owner-badge{font-size:.7rem;background:#f59e0b1a;color:#fbbf24;border:1px solid rgba(245,158,11,.2);padding:.1rem .5rem;border-radius:99px;text-transform:uppercase;font-weight:700}.member-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}.role-badge{font-size:.8rem;padding:.25rem .75rem;border-radius:99px;font-weight:600;text-transform:capitalize}.role-administrator{background:#10b9811a;color:#34d399;border:1px solid rgba(16,185,129,.2)}.role-supervisor{background:#3b82f61a;color:#60a5fa;border:1px solid rgba(59,130,246,.2)}.role-cultivator{background:#94a3b81a;color:#cbd5e1;border:1px solid rgba(148,163,184,.2)}.role-select{cursor:pointer;transition:all .2s;padding-right:1.5rem;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center}.role-select:hover{opacity:.8;transform:translateY(-1px)}.scope-info{font-size:.8rem;color:var(--color-text-muted)}.member-actions{display:flex;gap:.5rem;margin-left:2rem}.action-button{padding:.5rem;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:all .2s}.action-button:hover{background:#ffffff1a;color:var(--color-text-primary)}.action-button.delete:hover{background:#ef44441a;color:#fca5a5;border-color:#ef444433}.action-button.edit:hover{background:#3b82f61a;color:#93c5fd;border-color:#3b82f633}.empty-state{text-align:center;padding:4rem;color:var(--color-text-muted);background:transparent;border-radius:12px;border:1px solid var(--color-border)}.members-skeleton-card{display:flex;align-items:center;justify-content:space-between;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:12px;padding:1.5rem}.members-skeleton-info{display:flex;align-items:center;gap:1.5rem}.members-skeleton-details{display:flex;flex-direction:column;gap:.5rem}@media(max-width:640px){.member-card{flex-direction:column;align-items:flex-start;gap:1rem}.member-meta{align-items:flex-start;width:100%;flex-direction:row;justify-content:space-between;margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--color-border)}.member-actions{margin-left:0;width:100%;justify-content:flex-end}.members-skeleton-card{flex-direction:column;align-items:flex-start;gap:1rem}}.admin-page{padding:24px;max-width:1200px;margin:0 auto}.admin-page-header{margin-bottom:24px}.admin-page-header h1{margin:0 0 4px;font-size:22px}.admin-page-header p{margin:0;color:#fff9;font-size:14px}.admin-cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.admin-card{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:#ffffff05;text-decoration:none;color:inherit;transition:background .12s ease}.admin-card:hover{background:#ffffff0d}.admin-card-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:#63e6911f;color:#63e691;flex-shrink:0}.admin-card-label{font-size:12px;color:#fff9;text-transform:uppercase;letter-spacing:.04em}.admin-card-value{font-size:24px;font-weight:600;margin-top:2px}.admin-card-sub{font-size:12px;color:#ffffff80;margin-top:2px}.admin-table-wrapper{overflow-x:auto;border:1px solid rgba(255,255,255,.08);border-radius:10px;margin-top:16px}.admin-table{width:100%;border-collapse:collapse;font-size:14px}.admin-table th,.admin-table td{padding:10px 14px;text-align:left;border-bottom:1px solid rgba(255,255,255,.06)}.admin-table th{background:#ffffff08;font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#ffffffb3}.admin-table tbody tr:hover{background:#ffffff05}.admin-loading,.admin-empty{text-align:center;padding:24px!important;color:#ffffff80}.admin-error{padding:10px 14px;background:#dc50501f;border:1px solid rgba(220,80,80,.3);border-radius:8px;color:#ff8b8b;margin-bottom:12px;font-size:14px}.admin-success{padding:10px 14px;background:#63e6911f;border:1px solid rgba(99,230,145,.3);border-radius:8px;color:#63e691;margin-bottom:12px;font-size:14px}.admin-progress{position:relative;width:100%;height:24px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:6px;overflow:hidden;margin-bottom:12px}.admin-progress-bar{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#63e69166,#63e691b3);transition:width .12s linear}.admin-progress-label{position:relative;display:flex;align-items:center;justify-content:center;height:100%;font-size:12px;color:#ffffffd9;font-variant-numeric:tabular-nums}.admin-search{width:100%;max-width:360px;padding:8px 12px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:transparent;color:inherit;font-size:14px;margin-bottom:14px}.admin-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.admin-toolbar .admin-search{margin-bottom:0}.admin-primary{padding:8px 14px;border-radius:8px;border:1px solid rgba(99,230,145,.4);background:#63e69126;color:#63e691;font-size:14px;cursor:pointer}.admin-primary:hover{background:#63e69138}.admin-primary:disabled{opacity:.5;cursor:not-allowed}.admin-secondary{padding:8px 14px;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:#ffffff0a;color:#ffffffd9;font-size:14px;cursor:pointer}.admin-secondary:hover{background:#ffffff14}.admin-firmware-base{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 16px;align-items:start;padding:16px;border:1px solid rgba(99,230,145,.18);border-radius:10px;background:#63e6910d;margin-bottom:16px}.admin-firmware-base-main{display:flex;gap:12px;min-width:0}.admin-firmware-base-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:#63e6911f;color:#63e691;flex:0 0 auto}.admin-firmware-base-kicker{margin-bottom:3px;color:#63e691;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.admin-firmware-base h2{margin:0;font-size:16px}.admin-firmware-base p{margin:4px 0 0;color:#ffffff9e;font-size:13px}.admin-firmware-base-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.admin-firmware-base-actions .admin-primary,.admin-firmware-base-actions .admin-secondary{display:inline-flex;align-items:center;gap:7px;text-decoration:none;white-space:nowrap}.admin-firmware-os-tabs{grid-column:1 / -1;display:flex;gap:4px;padding:4px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:#0000002e;width:fit-content}.admin-firmware-os-tab{padding:5px 12px;border:0;border-radius:5px;background:transparent;color:#ffffff8c;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s,color .15s}.admin-firmware-os-tab:hover{color:#ffffffd9}.admin-firmware-os-tab.active{background:#63e6912e;color:#f1f5f9}.admin-firmware-command{grid-column:1 / -1;min-width:0;padding:10px 12px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:#0000003d;overflow-x:auto;display:flex;flex-direction:column;gap:4px}.admin-firmware-command-line{display:block;color:#ffffffeb;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;white-space:nowrap}.admin-firmware-command-step{color:#63e691bf;margin-right:4px}.admin-firmware-port-hint{grid-column:1 / -1;color:#ffffff7a;font-size:11px}.admin-firmware-port-hint code{color:#ffffffb3;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.admin-firmware-install{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.admin-firmware-unsupported{color:#ffffff8c;font-size:12px}.admin-firmware-cli-toggle{grid-column:1 / -1;display:inline-flex;align-items:center;gap:6px;margin-top:4px;padding:6px 10px;border:1px solid rgba(255,255,255,.08);border-radius:6px;background:transparent;color:#ffffff8c;font-size:12px;cursor:pointer;width:fit-content;transition:color .15s,background .15s}.admin-firmware-cli-toggle:hover{color:#ffffffd9;background:#ffffff0a}.admin-firmware-cli{grid-column:1 / -1;display:flex;flex-direction:column;gap:10px;padding:12px;margin-top:4px;border:1px dashed rgba(255,255,255,.12);border-radius:8px;background:#0000002e}.admin-firmware-cli-intro{margin:0;color:#ffffffa6;font-size:12px}.admin-firmware-cli-intro code{background:#ffffff0f;padding:1px 6px;border-radius:3px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px}.admin-firmware-os-tab-copy{margin-left:auto;display:inline-flex;align-items:center;gap:5px}.admin-firmware-hash{grid-column:1 / -1;color:#ffffff7a;font-size:12px;overflow-wrap:anywhere}.admin-firmware-hash code{margin-left:6px;color:#ffffffb3;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.admin-form-actions{display:flex;gap:8px;align-items:center}.admin-form{display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:#ffffff05;margin-bottom:16px}.admin-form h2{margin:0;font-size:16px}.admin-form-hint{margin:0;font-size:13px;color:#ffffff8c}.admin-form label{display:flex;flex-direction:column;gap:4px;font-size:13px}.admin-form input,.admin-form textarea{padding:8px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:transparent;color:inherit;font-size:14px}.admin-badge{display:inline-block;padding:2px 8px;border-radius:6px;background:#ffffff14;font-size:11px;font-weight:600;letter-spacing:.04em}.admin-badge-super{background:#ffb8002e;color:#ffce5a}.admin-badge-global{background:#63e6912e;color:#63e691}.admin-badge-active{background:#ffb8002e;color:#ffce5a;white-space:nowrap}.admin-cell-muted{color:#ffffff59}.admin-cell-truncate{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-cell-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px}.admin-action-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:6px;border:1px solid rgba(99,230,145,.3);background:#63e69114;color:#63e691;font-size:12px;cursor:pointer}.admin-action-btn:hover{background:#63e69129}.admin-action-btn:disabled{opacity:.5;cursor:not-allowed}.admin-ota-modal{display:flex;flex-direction:column;gap:12px;padding:4px 0}.admin-ota-current{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px;color:#ffffffb3}.admin-ota-current strong{color:#fffffff2;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.admin-ota-label{font-size:12px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:#ffffff8c}.admin-ota-select{width:100%;padding:8px 12px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;color:#fffffff2;font:inherit}.admin-ota-select:focus{outline:none;border-color:#63e69180;box-shadow:0 0 0 3px #63e6911f}.admin-ota-force{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:#ffffffd9;cursor:pointer;-webkit-user-select:none;user-select:none}.admin-ota-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}@media(max-width:720px){.admin-firmware-base{grid-template-columns:1fr}.admin-firmware-base-actions{justify-content:flex-start}}.legal-page{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;background:var(--color-bg-primary);color:var(--color-text-primary);font-family:var(--font-family)}.legal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--color-border)}.legal-header-brand{display:flex;align-items:center;gap:10px;color:var(--color-text-primary);text-decoration:none}.legal-header-logo{width:28px;height:28px;border-radius:6px}.legal-header-name{font-weight:700;letter-spacing:.4px}.legal-header-login{font-size:13px;color:var(--color-text-secondary);text-decoration:none;padding:6px 12px;border-radius:var(--radius-md);border:1px solid var(--color-border);transition:all var(--transition-fast)}.legal-header-login:hover,.legal-header-login:focus-visible{color:var(--color-primary);border-color:var(--color-border-glow);outline:none}.legal-main{flex:1;padding:32px 16px 48px}.legal-article{max-width:760px;margin:0 auto;line-height:1.65}.legal-title{font-size:32px;font-weight:700;letter-spacing:-.3px;color:var(--color-text-primary);margin-bottom:8px}.legal-meta{font-size:13px;color:var(--color-text-muted);margin-bottom:28px}.legal-article h2{font-size:20px;font-weight:600;color:var(--color-text-primary);margin:36px 0 12px;padding-bottom:6px;border-bottom:1px solid var(--color-border)}.legal-article h3{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:24px 0 10px}.legal-article p{color:var(--color-text-secondary);margin-bottom:14px}.legal-article a{color:var(--color-primary);text-decoration:none;border-bottom:1px dashed transparent;transition:border-color var(--transition-fast)}.legal-article a:hover,.legal-article a:focus-visible{border-bottom-color:var(--color-primary);outline:none}.legal-article ul{margin:8px 0 16px 22px;color:var(--color-text-secondary)}.legal-article li{margin-bottom:6px}.legal-article strong{color:var(--color-text-primary);font-weight:600}.legal-article code{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-secondary);padding:1px 6px;border-radius:4px;border:1px solid var(--color-border);color:var(--color-text-primary)}.legal-callout{margin:18px 0;padding:14px 16px;border-left:3px solid var(--color-primary);background:var(--color-bg-secondary);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--color-text-secondary);font-size:14px}.legal-contact-block{margin-top:28px;padding:16px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-card)}.legal-contact-block strong{display:block;margin-bottom:4px;color:var(--color-text-primary)}@media(max-width:540px){.legal-title{font-size:26px}.legal-article h2{font-size:18px}.legal-main{padding:24px 14px 36px}}
