:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{--primary: #6366f1;--primary-light: #818cf8;--primary-dark: #4f46e5;--success: #22c55e;--success-light: #4ade80;--danger: #ef4444;--danger-light: #f87171;--warning: #f59e0b;--bg-dark: #0f0f1a;--bg-tertiary: #1a1a2e;--bg-card: rgba(255, 255, 255, .03);--bg-card-hover: rgba(255, 255, 255, .06);--border-color: rgba(255, 255, 255, .08);--text-primary: #ffffff;--text-secondary: #94a3b8;--text-muted: #64748b;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .2);--shadow-md: 0 4px 20px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 40px rgba(0, 0, 0, .4);--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;width:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-dark);background-image:radial-gradient(ellipse at top,rgba(99,102,241,.15) 0%,transparent 50%),radial-gradient(ellipse at bottom right,rgba(34,197,94,.1) 0%,transparent 50%);color:var(--text-primary);min-height:100vh;line-height:1.5;overflow-x:hidden;width:100%}#root{width:100%;min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;outline:none}input{font-family:inherit;outline:none}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative;overflow:hidden}.login-container{width:100%;max-width:420px;z-index:1}.login-card{background:var(--bg-card);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:40px;box-shadow:var(--shadow-lg)}.login-icon{width:64px;height:64px;margin:0 auto 16px;background:linear-gradient(135deg,var(--primary),var(--primary-light));border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 32px #6366f166}.login-icon svg{width:32px;height:32px;color:#fff}.login-header h1{font-size:1.75rem;font-weight:700;margin-bottom:8px;background:linear-gradient(135deg,#fff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-subtitle{color:var(--text-secondary);font-size:.9rem}.input-group{position:relative}.input-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--text-muted);pointer-events:none;transition:color var(--transition-fast)}.input-icon svg{width:100%;height:100%}.input-group input{width:100%;padding:16px 16px 16px 52px;background:#ffffff0d;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:1rem;transition:all var(--transition-fast)}.input-group input:focus{border-color:var(--primary);background:#6366f11a}.password-toggle{position:absolute;right:16px;top:50%;transform:translateY(-50%);background:none;padding:4px;color:var(--text-muted);transition:color var(--transition-fast)}.password-toggle:hover{color:var(--text-secondary)}.password-toggle svg{width:20px;height:20px}.error-message{display:flex;align-items:center;gap:10px;padding:14px 16px;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-md);color:var(--danger-light);font-size:.9rem}.error-message svg{width:20px;height:20px;flex-shrink:0}.success-message{display:flex;align-items:center;gap:10px;padding:14px 16px;background:#22c55e1a;border:1px solid rgba(34,197,94,.3);border-radius:var(--radius-md);color:var(--success-light);font-size:.9rem}.success-message svg{width:20px;height:20px;flex-shrink:0}.password-strength-indicator{display:flex;align-items:center;gap:12px;margin-top:8px;padding:0 4px}.password-strength-bars{display:flex;gap:4px;flex:1}.password-strength-bar{height:4px;flex:1;background:#ffffff1a;border-radius:2px;transition:background-color var(--transition-fast)}.password-strength-bar.active{background:var(--primary)}.password-strength-label{font-size:.75rem;font-weight:500;min-width:60px;text-align:right}.auth-switch{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;font-size:.9rem;color:var(--text-secondary)}.auth-switch a{color:var(--primary);font-weight:600;text-decoration:none;transition:color var(--transition-fast)}.auth-switch a:hover{color:var(--primary-light);text-decoration:underline}.forgot-password-link{text-align:center;margin-top:12px}.forgot-password-link a{color:var(--text-secondary);font-size:.85rem;text-decoration:none;transition:color var(--transition-fast)}.forgot-password-link a:hover{color:var(--primary-light);text-decoration:underline}.submit-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px 24px;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;font-size:1rem;font-weight:600;border-radius:var(--radius-md);transition:all var(--transition-normal);box-shadow:0 4px 20px #6366f166}.submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 30px #6366f180}.submit-btn:active:not(:disabled){transform:translateY(0)}.submit-btn:disabled{opacity:.7;cursor:not-allowed}.manual-link{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;padding:12px;color:var(--text-secondary);text-decoration:none;font-size:.9rem;border-radius:var(--radius-md);transition:all var(--transition-fast)}.manual-link:hover{color:var(--primary-light);background:#6366f11a}.login-layout{display:flex;align-items:center;justify-content:center;gap:40px;width:100%;max-width:1000px;z-index:1}.login-manual-section{display:none}.mobile-only{display:flex}@media (min-width: 900px){.login-layout{justify-content:space-between}.login-manual-section{display:block;flex:1;max-width:450px}.mobile-only{display:none!important}}.login-manual-card{background:var(--bg-card);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:32px;box-shadow:var(--shadow-lg)}.login-manual-header{display:flex;align-items:center;gap:12px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border-color)}.login-manual-header svg{width:28px;height:28px;color:var(--primary-light)}.login-manual-header h2{font-size:1.25rem;font-weight:700;background:linear-gradient(135deg,#fff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-manual-feature{display:flex;align-items:flex-start;gap:14px}.login-manual-feature .feature-icon{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.login-manual-feature .feature-icon svg{width:20px;height:20px}.login-manual-feature .feature-icon.blue{background:#6366f126;color:var(--primary-light)}.login-manual-feature .feature-icon.green{background:#22c55e26;color:var(--success)}.login-manual-feature .feature-icon.purple{background:#a855f726;color:#a855f7}.login-manual-feature .feature-icon.orange{background:#f59e0b26;color:var(--warning)}.login-manual-feature>div{display:flex;flex-direction:column;gap:2px}.login-manual-feature strong{color:var(--text-primary);font-size:.95rem;font-weight:600}.login-manual-feature span{color:var(--text-muted);font-size:.85rem}.login-manual-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px 20px;background:#6366f11a;border:1px solid rgba(99,102,241,.3);border-radius:var(--radius-md);color:var(--primary-light);text-decoration:none;font-size:.95rem;font-weight:500;transition:all var(--transition-fast)}.login-manual-btn:hover{background:var(--primary);border-color:var(--primary);color:#fff}.login-decoration{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.circle-1{width:400px;height:400px;background:var(--primary);top:-200px;right:-100px}.circle-2{width:300px;height:300px;background:var(--success);bottom:-150px;left:-100px}.circle-3{width:200px;height:200px;background:var(--warning);bottom:20%;right:10%}.panel-page{min-height:100vh;padding:20px}.panel-container{max-width:1200px;margin:0 auto}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;background:var(--bg-card);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:var(--radius-lg);margin-bottom:24px}.logo{width:48px;height:48px;background:linear-gradient(135deg,var(--primary),var(--primary-light));border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px #6366f14d}.logo svg{width:28px;height:28px;color:#fff}.header-info h1{font-size:1.25rem;font-weight:700}.welcome-text{font-size:.85rem;color:var(--text-secondary)}.header-right{display:flex;align-items:center;gap:12px}.status-badge{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:100px;font-size:.85rem;font-weight:500}.status-badge.online{background:#22c55e26;color:var(--success)}.status-badge.offline{background:#ef444426;color:var(--danger)}.status-dot{width:8px;height:8px;border-radius:50%;background:currentColor;animation:pulse 2s infinite}.logout-btn{display:flex;align-items:center;gap:8px;padding:10px 18px;background:#ef44441a;color:var(--danger);border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-md);font-size:.9rem;font-weight:500;transition:all var(--transition-fast)}.logout-btn:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stat-card{display:flex;align-items:center;gap:16px;padding:20px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);transition:all var(--transition-fast)}.stat-card:hover{background:var(--bg-card-hover);transform:translateY(-2px)}.stat-icon{width:48px;height:48px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center}.stat-icon svg{width:24px;height:24px}.stat-icon.blue{background:#6366f126;color:var(--primary-light)}.stat-icon.green{background:#22c55e26;color:var(--success)}.stat-icon.orange{background:#f59e0b26;color:var(--warning)}.stat-value{font-size:1.5rem;font-weight:700}.stat-label{font-size:.85rem;color:var(--text-secondary)}.pins-section{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.section-header h2{font-size:1.25rem;font-weight:600}.refresh-btn{display:flex;align-items:center;gap:8px;padding:10px 18px;background:#6366f11a;color:var(--primary-light);border:1px solid rgba(99,102,241,.3);border-radius:var(--radius-md);font-size:.9rem;font-weight:500;transition:all var(--transition-fast)}.refresh-btn:hover:not(:disabled){background:var(--primary);color:#fff;border-color:var(--primary)}.refresh-btn:disabled{opacity:.6;cursor:not-allowed}.refresh-btn svg{width:18px;height:18px}.pins-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.pin-card{position:relative;background:#ffffff05;border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px 20px;text-align:center;transition:all var(--transition-normal);overflow:hidden}.pin-card:hover{background:#ffffff0a;transform:translateY(-4px)}.pin-card.active{border-color:#22c55e80}.pin-card.loading{pointer-events:none}.pin-card.disabled{opacity:.5;pointer-events:none;filter:grayscale(.5)}.pin-card.disabled .toggle-switch{cursor:not-allowed}.pin-card-header{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:12px}.pin-icon{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#ffffff0d;color:var(--text-secondary);transition:all var(--transition-normal)}.pin-card.active .pin-icon{background:#22c55e33;color:var(--success)}.pin-icon svg{width:22px;height:22px}.pin-name{font-size:1.1rem;font-weight:700;color:var(--text-primary)}.pin-badge-small{font-size:.7rem;font-weight:500;color:var(--text-muted);background:#ffffff0d;padding:2px 6px;border-radius:4px;font-family:Monaco,Consolas,monospace}.pin-description{font-size:.8rem;color:var(--text-secondary);margin-bottom:8px;line-height:1.4;max-height:2.8em;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.pin-status-text{font-size:.8rem;color:var(--text-muted);margin-bottom:16px;transition:color var(--transition-fast)}.pin-card.active .pin-status-text{color:var(--success)}.toggle-switch{position:relative;width:64px;height:34px;background:transparent;padding:0;cursor:pointer}.toggle-track{display:block;width:100%;height:100%;background:#ffffff1a;border-radius:100px;position:relative;transition:background var(--transition-normal)}.toggle-switch.on .toggle-track{background:var(--success)}.toggle-thumb{position:absolute;top:3px;left:3px;width:28px;height:28px;background:#fff;border-radius:50%;transition:transform var(--transition-normal);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0003}.toggle-switch.on .toggle-thumb{transform:translate(30px)}.toggle-spinner{width:16px;height:16px;border:2px solid rgba(0,0,0,.1);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.toggle-switch:disabled{opacity:.6;cursor:not-allowed}.pin-glow{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-lg);opacity:0;transition:opacity var(--transition-normal);pointer-events:none;background:radial-gradient(circle at center,rgba(34,197,94,.3),transparent 70%)}.pin-glow.active{opacity:1}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:20px}.loading-spinner{width:48px;height:48px;border:3px solid var(--border-color);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite}.loading-container p{color:var(--text-secondary);font-size:1rem}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px;text-align:center}.error-icon{width:64px;height:64px;background:#ef444426;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--danger)}.error-icon svg{width:32px;height:32px}.error-container h2{font-size:1.25rem;color:var(--text-primary)}.error-container p{color:var(--text-secondary)}.retry-btn{display:flex;align-items:center;gap:8px;padding:12px 24px;background:var(--danger);color:#fff;border-radius:var(--radius-md);font-size:1rem;font-weight:500;transition:all var(--transition-fast);margin-top:8px}.retry-btn:hover{background:var(--danger-light);transform:translateY(-2px)}.retry-btn svg{width:20px;height:20px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media (max-width: 768px){.panel-header{flex-direction:column;gap:16px;text-align:center}.header-left{flex-direction:column}.header-right{width:100%;justify-content:center}.stats-grid{grid-template-columns:repeat(3,1fr);gap:12px}.stat-card{flex-direction:column;text-align:center;padding:16px 12px;gap:12px}.stat-value{font-size:1.25rem}.stat-label{font-size:.75rem}.pins-grid{grid-template-columns:repeat(2,1fr);gap:12px}.logout-btn span{display:none}.logout-btn{padding:10px}}@media (max-width: 480px){.panel-page{padding:12px}.panel-header{padding:16px;border-radius:var(--radius-md)}.logo{width:40px;height:40px}.logo svg{width:22px;height:22px}.header-info h1{font-size:1.1rem}.status-badge{padding:6px 12px;font-size:.8rem}.stats-grid{grid-template-columns:repeat(3,1fr);gap:8px}.stat-card{padding:12px 8px}.stat-icon{width:36px;height:36px}.stat-icon svg{width:18px;height:18px}.stat-value{font-size:1.1rem}.pins-section{padding:16px;border-radius:var(--radius-md)}.section-header{flex-direction:column;gap:12px;align-items:stretch}.section-header h2{text-align:center;font-size:1.1rem}.refresh-btn{justify-content:center}.pins-grid{grid-template-columns:repeat(2,1fr)}.pin-card{padding:16px 12px}.pin-icon{width:36px;height:36px}.pin-icon svg{width:18px;height:18px}.pin-name{font-size:.95rem}.toggle-switch{width:56px;height:30px}.toggle-thumb{width:24px;height:24px}.toggle-switch.on .toggle-thumb{transform:translate(26px)}.login-card{padding:28px 20px;border-radius:var(--radius-lg)}.login-icon{width:56px;height:56px}.login-icon svg{width:28px;height:28px}.login-header h1{font-size:1.5rem}.input-group input{padding:14px 14px 14px 48px;font-size:16px}.submit-btn{padding:14px 20px}}@media (max-width: 360px){.pins-grid{grid-template-columns:1fr 1fr;gap:8px}.pin-card{padding:14px 10px}.stats-grid{gap:6px}.stat-card{padding:10px 6px}.stat-value{font-size:1rem}.stat-label{font-size:.7rem}}.install-prompt{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;background:linear-gradient(135deg,var(--primary-dark),var(--primary));box-shadow:0 -4px 20px #0000004d;z-index:1000;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.install-content{display:flex;align-items:center;gap:14px;flex:1}.install-icon{width:44px;height:44px;background:#fff3;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.install-icon svg{width:24px;height:24px;color:#fff}.install-text{display:flex;flex-direction:column;gap:2px}.install-text strong{color:#fff;font-size:.95rem;font-weight:600}.install-text span{color:#fffc;font-size:.8rem}.install-actions{display:flex;align-items:center;gap:8px}.install-btn{padding:10px 20px;background:#fff;color:var(--primary-dark);font-size:.9rem;font-weight:600;border-radius:8px;transition:all var(--transition-fast)}.install-btn:hover{transform:scale(1.05)}.dismiss-btn{padding:10px 16px;background:#ffffff26;color:#fff;font-size:.9rem;font-weight:500;border-radius:8px;transition:all var(--transition-fast)}.dismiss-btn:hover{background:#ffffff40}@media (max-width: 480px){.install-prompt{padding:14px 16px}.install-icon{width:40px;height:40px}.install-text strong{font-size:.9rem}.install-text span{font-size:.75rem}.install-btn{padding:8px 16px;font-size:.85rem}.dismiss-btn{padding:8px 12px;font-size:.85rem}}.notification{position:fixed;top:20px;right:20px;padding:14px 20px;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;z-index:1100;animation:slideIn .3s ease-out;box-shadow:var(--shadow-lg)}.notification.success{background:var(--success);color:#fff}.notification.error{background:var(--danger);color:#fff}.nav-btn{display:flex;align-items:center;gap:8px;padding:10px 18px;background:#6366f11a;color:var(--primary-light);border:1px solid rgba(99,102,241,.3);border-radius:var(--radius-md);font-size:.9rem;font-weight:500;text-decoration:none;transition:all var(--transition-fast)}.nav-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.config-actions{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.action-btn{display:flex;align-items:center;gap:8px;padding:12px 20px;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;transition:all var(--transition-fast)}.action-btn.primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;box-shadow:0 4px 15px #6366f14d}.action-btn.primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #6366f166}.action-btn.secondary{background:#ffffff0d;color:var(--text-secondary);border:1px solid var(--border-color)}.action-btn.secondary:hover:not(:disabled){background:#ffffff1a;color:var(--text-primary)}.action-btn.success{background:#22c55e26;color:var(--success);border:1px solid rgba(34,197,94,.3)}.action-btn.success:hover:not(:disabled){background:var(--success);color:#fff;border-color:var(--success)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.config-section{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;margin-bottom:24px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-icon{width:64px;height:64px;background:#6366f126;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--primary-light);margin-bottom:16px}.empty-icon svg{width:32px;height:32px}.empty-state h3{font-size:1.1rem;margin-bottom:8px;color:var(--text-primary)}.empty-state p{color:var(--text-secondary);margin-bottom:20px}.pins-table-container{overflow-x:auto}.pins-table{width:100%;border-collapse:collapse}.pins-table th,.pins-table td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--border-color)}.pins-table th{font-size:.85rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.pins-table td{font-size:.95rem}.pins-table tbody tr:hover{background:#ffffff05}.pin-badge{display:inline-block;padding:6px 12px;background:#6366f126;color:var(--primary-light);border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;font-family:Monaco,Consolas,monospace}.device-name{font-weight:500;color:var(--text-primary)}.disabled-input{background:#ffffff08!important;color:var(--text-muted)!important;cursor:not-allowed}.device-selector-section{display:flex;align-items:center;gap:12px;padding:16px 20px;background:var(--bg-secondary);border-radius:var(--radius);margin-bottom:20px}.device-selector-section label{font-weight:500;color:var(--text-secondary);white-space:nowrap}.device-select{flex:1;max-width:300px;padding:10px 14px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.95rem;cursor:pointer;transition:all .2s ease}.device-select:hover{border-color:var(--primary)}.device-status-indicator{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:100px;font-size:.8rem;font-weight:500}.device-status-indicator:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.type-badge{display:inline-block;padding:4px 10px;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500}.type-badge.output{background:#22c55e26;color:var(--success)}.type-badge.input{background:#3b82f626;color:#3b82f6}.type-badge.input_pullup{background:#a855f726;color:#a855f7}.type-badge.esp32{background:#fb923c26;color:#fb923c}.type-badge.wemos{background:#3b82f626;color:#3b82f6}.state-badge{display:inline-block;padding:4px 10px;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500}.state-badge.on{background:#22c55e26;color:var(--success)}.state-badge.off{background:#ef444426;color:var(--danger)}.icon-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast);border:none;cursor:pointer}.icon-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;flex-shrink:0}.icon-btn.edit{background:#3b82f626;color:#3b82f6}.icon-btn.edit:hover{background:#3b82f6;color:#fff}.icon-btn.delete{background:#ef444426;color:var(--danger)}.icon-btn.delete:hover{background:var(--danger);color:#fff}.available-pins-section{background:transparent;border:none;padding:0}.available-pins-grid{display:flex;flex-wrap:wrap;gap:10px}.available-pin{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#ffffff08;border:1px dashed var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);font-size:.9rem;color:var(--text-secondary)}.available-pin:hover{background:#22c55e1a;border-color:#22c55e80;color:var(--success)}.available-pin svg{width:16px;height:16px;opacity:0;transition:opacity var(--transition-fast)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000;animation:fadeIn .2s ease-out}.modal{width:100%;max-width:450px;background:#1a1a2e;border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;animation:scaleIn .2s ease-out}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.modal.code-modal{max-width:1000px;width:95vw;max-height:90vh;display:flex;flex-direction:column}.modal.code-modal .code-container{flex:1;overflow:auto}.modal.code-modal .modal-actions{flex-shrink:0;border-top:1px solid var(--border-color);padding-top:16px;margin-top:0}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border-color)}.modal-header h2{font-size:1.1rem;font-weight:600}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#ffffff0d;border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--transition-fast)}.modal-close:hover{background:#ef444433;color:var(--danger)}.modal-close svg{width:18px;height:18px}.form-group label{display:block;font-size:.9rem;font-weight:500;color:var(--text-secondary);margin-bottom:8px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:12px 16px;background:#ffffff0d;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:1rem;transition:all var(--transition-fast);font-family:inherit}.form-group textarea{resize:vertical;min-height:60px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);background:#6366f11a;outline:none}.form-group input::placeholder{color:var(--text-muted)}.form-group select{cursor:pointer}.form-group input:disabled,.form-group select:disabled{opacity:.6;cursor:not-allowed}select,.device-select,.form-group select{background:var(--bg-tertiary)!important;color:var(--text-primary)!important;border:1px solid var(--border-color);color-scheme:dark}select option,select optgroup,.device-select option,.form-group select option{background:var(--bg-tertiary)!important;color:var(--text-primary)!important;padding:8px 12px}select:hover,.form-group select:hover,.device-select:hover{border-color:var(--primary)}.btn-cancel{padding:12px 20px;background:#ffffff0d;color:var(--text-secondary);border-radius:var(--radius-md);font-size:.9rem;font-weight:500;transition:all var(--transition-fast)}.btn-save{padding:12px 24px;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;transition:all var(--transition-fast)}.btn-save:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 15px #6366f166}.btn-save:disabled{opacity:.6;cursor:not-allowed}.code-container{padding:0 24px 24px;max-height:65vh;min-height:300px;overflow:hidden}.code-wrapper{display:flex;background:#0d1117;border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:auto;max-height:55vh;min-height:250px}.line-numbers{display:flex;flex-direction:column;padding:16px 0;background:#161b22;border-right:1px solid var(--border-color);-webkit-user-select:none;user-select:none;position:sticky;left:0;z-index:1}.line-numbers span{padding:0 12px;font-family:Monaco,Consolas,Courier New,monospace;font-size:.8rem;line-height:1.7;color:#6e7681;text-align:right;min-width:40px}.code-wrapper pre{flex:1;background:transparent;border:none;border-radius:0;padding:16px 20px;margin:0;overflow:visible}.code-container code{font-family:Monaco,Consolas,Courier New,monospace;font-size:.9rem;line-height:1.7;color:#e6edf3;display:block;-moz-tab-size:2;tab-size:2}.code-container.code-nowrap code{white-space:pre}.code-container.code-wrap code{white-space:pre-wrap;word-break:break-word}.btn-copy,.btn-download{display:flex;align-items:center;gap:8px;padding:12px 20px;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;transition:all var(--transition-fast)}.btn-copy{background:#ffffff0d;color:var(--text-secondary)}.btn-copy:hover{background:#ffffff1a;color:var(--text-primary)}.btn-copy svg,.btn-download svg{width:18px;height:18px}.btn-download{background:var(--success);color:#fff}.btn-secondary{background:#ffffff0d;color:var(--text-secondary);padding:12px 20px;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;transition:all var(--transition-fast)}.btn-secondary:hover{background:#ffffff1a;color:var(--text-primary)}.code-wrapper::-webkit-scrollbar{width:10px;height:10px}.code-wrapper::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:8px}.code-wrapper::-webkit-scrollbar-thumb:hover{background:#fff3}.btn-download:hover{background:var(--success-light)}@media (max-width: 768px){.config-actions{flex-direction:column}.action-btn{justify-content:center}.pins-table th,.pins-table td{padding:12px 10px;font-size:.85rem}.nav-btn span{display:none}.nav-btn{padding:10px}.modal.code-modal{width:98vw;max-width:none}.code-wrapper{max-height:50vh}.line-numbers span{font-size:.7rem;padding:0 8px;min-width:30px}.code-container code{font-size:.75rem}}@media (max-width: 480px){.notification{left:16px;right:16px;top:16px}.modal{margin:16px;max-height:90vh;overflow-y:auto}.modal.code-modal{margin:8px;width:calc(100vw - 16px);max-height:95vh}.modal.code-modal .code-container{padding:0 12px 12px}.code-wrapper{max-height:45vh}.line-numbers{display:none}.code-wrapper pre{padding:12px}.code-container code{font-size:.7rem;line-height:1.5}.modal-header{padding:16px 20px}.modal form{padding:20px}.modal-actions{padding:0 20px 20px;flex-direction:column}.modal-actions button{width:100%}.pins-table{font-size:.8rem}.pins-table th,.pins-table td{padding:10px 8px}.pin-badge{padding:4px 8px;font-size:.75rem}.type-badge,.state-badge{padding:3px 6px;font-size:.7rem}.icon-btn{width:32px;height:32px}.icon-btn svg{width:16px;height:16px}}.toggle-switch-mini{display:inline-flex;align-items:center;gap:8px;background:transparent;padding:4px;cursor:pointer;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.toggle-switch-mini:hover:not(:disabled){background:#ffffff0d}.toggle-track-mini{display:block;width:44px;height:24px;background:#ffffff1a;border-radius:100px;position:relative;transition:background var(--transition-normal)}.toggle-switch-mini.on .toggle-track-mini{background:var(--success)}.toggle-thumb-mini{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform var(--transition-normal);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0003}.toggle-spinner-mini{width:12px;height:12px;border:2px solid rgba(0,0,0,.1);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.toggle-label-mini{font-size:.75rem;font-weight:600;color:var(--text-secondary);min-width:24px}.toggle-switch-mini:disabled,.toggle-switch-mini.disabled{opacity:.5;cursor:not-allowed}.toggle-switch-mini.loading{pointer-events:none}.input-indicator{display:inline-block;padding:4px 10px;background:#6366f126;color:var(--primary-light);border-radius:var(--radius-sm);font-size:.75rem;font-weight:500}@media (max-width: 480px){.toggle-switch-mini{gap:4px;padding:2px}.toggle-track-mini{width:36px;height:20px}.toggle-thumb-mini{width:16px;height:16px}.toggle-switch-mini.on .toggle-thumb-mini{transform:translate(16px)}.toggle-label-mini{font-size:.7rem}}.stat-icon.purple{background:#a855f726;color:#a855f7}.stats-grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 768px){.stats-grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.stats-grid-4{grid-template-columns:repeat(2,1fr)}}.stats-grid-5{grid-template-columns:repeat(5,1fr)}@media (max-width: 992px){.stats-grid-5{grid-template-columns:repeat(3,1fr)}}@media (max-width: 768px){.stats-grid-5{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.stats-grid-5{grid-template-columns:repeat(2,1fr)}}.stat-icon.cyan,.logic-type-badge.interval{background:#06b6d426;color:#06b6d4}.logic-warning{display:flex;align-items:center;gap:16px;padding:16px 20px;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-md);margin-bottom:24px}.logic-warning svg{width:24px;height:24px;color:var(--warning);flex-shrink:0}.logic-warning div{flex:1}.logic-warning strong{display:block;color:var(--warning);font-size:.95rem;margin-bottom:4px}.logic-warning p{color:var(--text-secondary);font-size:.85rem;margin:0}.logic-warning .action-btn.small{padding:8px 16px;font-size:.85rem}.logic-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}@media (max-width: 480px){.logic-cards-grid{grid-template-columns:1fr}}.logic-card{background:#ffffff05;border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;transition:all var(--transition-normal)}.logic-card:hover{background:#ffffff0a;transform:translateY(-2px)}.logic-card.enabled{border-color:#22c55e4d}.logic-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.logic-info h3{font-size:1.05rem;font-weight:600;margin-bottom:6px;color:var(--text-primary)}.logic-type-badge{display:inline-block;padding:4px 10px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:500}.logic-type-badge.input_trigger{background:#a855f726;color:#a855f7}.logic-type-badge.schedule{background:#f59e0b26;color:var(--warning)}.logic-type-badge.conditional{background:#3b82f626;color:#3b82f6}.logic-description{font-size:.85rem;color:var(--text-secondary);margin-bottom:16px;line-height:1.5}.logic-detail{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.detail-value{font-size:.85rem;color:var(--text-primary)}.detail-value.pin-badge{display:inline-block;padding:3px 8px;background:#6366f126;color:var(--primary-light);border-radius:4px;font-size:.8rem;font-weight:600;font-family:Monaco,Consolas,monospace}.detail-value.code{font-family:Monaco,Consolas,monospace;background:#ffffff0d;padding:4px 8px;border-radius:4px;font-size:.8rem}.detail-value.schedule-days{font-size:.8rem;color:var(--warning)}.detail-condition{font-size:.8rem;color:var(--text-secondary);padding:2px 8px;background:#ffffff0d;border-radius:4px}.detail-action{font-size:.8rem;color:var(--success);padding:2px 8px;background:#22c55e26;border-radius:4px}.logic-stats{display:flex;flex-wrap:wrap;gap:12px;padding-top:12px;border-top:1px solid var(--border-color);margin-bottom:12px}.logic-stats span{font-size:.75rem;color:var(--text-muted)}.logic-card-actions{display:flex;gap:8px;padding-top:12px;border-top:1px solid var(--border-color)}.icon-btn.trigger{background:#22c55e26;color:var(--success)}.icon-btn.trigger:hover{background:var(--success);color:#fff}.btn-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite}.modal.logic-modal{max-width:550px;max-height:90vh;overflow-y:auto}@media (max-width: 480px){.form-row{grid-template-columns:1fr}}.form-section{margin-top:20px;padding-top:20px;border-top:1px solid var(--border-color)}.form-section h4{font-size:.9rem;font-weight:600;color:var(--text-secondary);margin-bottom:16px}.form-hint{display:block;font-size:.75rem;color:var(--text-muted);margin-top:6px}.weekday-buttons{display:flex;flex-wrap:wrap;gap:8px}.weekday-btn{padding:8px 12px;background:#ffffff0d;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.85rem;font-weight:500;transition:all var(--transition-fast)}.weekday-btn:hover{background:#ffffff1a;border-color:var(--primary)}.weekday-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.form-group input[type=time]{color-scheme:dark}.manual-section{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;margin-bottom:20px}.manual-title{font-size:1.3rem;font-weight:700;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border-color);color:var(--primary-light)}.manual-content{color:var(--text-secondary);line-height:1.8}.manual-content p{margin-bottom:16px}.manual-content h3{color:var(--text-primary);font-size:1.05rem;margin:24px 0 12px}.manual-content h4{color:var(--text-primary);font-size:.95rem;margin:16px 0 8px}.manual-content ul,.manual-content ol{margin:12px 0 16px 24px}.manual-content li{margin-bottom:8px}.manual-content strong{color:var(--text-primary)}.manual-tip{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);border-radius:var(--radius-md);padding:14px 18px;margin:16px 0;font-size:.9rem}.manual-warning{background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-md);padding:14px 18px;margin:16px 0;font-size:.9rem}.manual-table{width:100%;border-collapse:collapse;margin:16px 0}.manual-table th,.manual-table td{padding:12px 16px;text-align:left;border:1px solid var(--border-color)}.manual-table th{background:#6366f11a;color:var(--primary-light);font-weight:600}.manual-table td{background:#ffffff05}.toc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.toc-item{display:flex;align-items:center;gap:12px;padding:14px 18px;background:#ffffff08;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);text-decoration:none;transition:all var(--transition-fast)}.toc-item:hover{background:#6366f11a;border-color:var(--primary);color:var(--primary-light)}.toc-number{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--primary);color:#fff;border-radius:50%;font-size:.85rem;font-weight:600}.status-list{margin:16px 0}.status-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--radius-md);margin-bottom:8px}.status-item.online{background:#22c55e1a}.status-item.offline{background:#ef44441a}.status-item .status-dot{width:10px;height:10px;border-radius:50%}.status-item.online .status-dot{background:var(--success)}.status-item.offline .status-dot{background:var(--danger)}.logic-type-card{background:#ffffff08;border:1px solid var(--border-color);border-radius:var(--radius-md);padding:16px 20px;margin:12px 0}.logic-type-card h4{margin:0 0 8px!important}.logic-type-card p{margin:0 0 4px!important;font-size:.9rem}.logic-type-card em{color:var(--text-muted);font-size:.85rem}.troubleshoot-item{background:#ffffff05;border-radius:var(--radius-md);padding:16px 20px;margin-bottom:16px}.troubleshoot-item h4{color:var(--warning);margin:0 0 12px!important}.troubleshoot-item ul{margin:0 0 0 20px!important}.manual-footer{text-align:center;padding:24px;color:var(--text-muted);font-size:.85rem}.manual-footer .version{margin-top:4px;font-size:.75rem}@media (max-width: 768px){.toc-grid{grid-template-columns:repeat(2,1fr)}.manual-table{font-size:.85rem}.manual-table th,.manual-table td{padding:10px 12px}}@media (max-width: 480px){.manual-section{padding:16px}.toc-grid{grid-template-columns:1fr}.manual-title{font-size:1.1rem}}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:var(--bg-dark)}.error-boundary-content{text-align:center;max-width:400px}.error-boundary-icon{width:80px;height:80px;margin:0 auto 24px;padding:20px;background:#ef44441a;border-radius:50%;color:var(--danger)}.error-boundary-icon svg{width:100%;height:100%}.error-boundary h2{font-size:1.5rem;margin-bottom:12px;color:var(--text-primary)}.error-boundary-message{color:var(--text-secondary);margin-bottom:24px;line-height:1.6}.error-boundary-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.error-boundary-btn{display:flex;align-items:center;gap:8px;padding:12px 20px;border:none;border-radius:var(--radius-md);font-size:.95rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.error-boundary-btn svg{width:18px;height:18px}.error-boundary-btn.primary{background:var(--primary);color:#fff}.error-boundary-btn.primary:hover{background:var(--primary-dark)}.error-boundary-btn.secondary{background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border-color)}.error-boundary-btn.secondary:hover{background:var(--bg-card-hover);color:var(--text-primary)}.toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:12px;max-width:400px;pointer-events:none}.toast{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:var(--bg-card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md);pointer-events:auto;animation:toast-slide-in .3s ease}@keyframes toast-slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-icon{flex-shrink:0;width:22px;height:22px}.toast-icon svg{width:100%;height:100%}.toast-success .toast-icon{color:var(--success)}.toast-error .toast-icon{color:var(--danger)}.toast-warning .toast-icon{color:var(--warning)}.toast-info .toast-icon{color:var(--primary)}.toast-content{flex:1;min-width:0}.toast-message{font-size:.9rem;line-height:1.5;color:var(--text-primary);word-wrap:break-word}.toast-close{flex-shrink:0;width:20px;height:20px;padding:0;background:none;border:none;color:var(--text-muted);cursor:pointer;transition:color var(--transition-fast)}.toast-close:hover{color:var(--text-primary)}.toast-close svg{width:100%;height:100%}.toast-success{border-left:3px solid var(--success)}.toast-error{border-left:3px solid var(--danger)}.toast-warning{border-left:3px solid var(--warning)}.toast-info{border-left:3px solid var(--primary)}@media (max-width: 480px){.toast-container{left:12px;right:12px;max-width:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.skip-link{position:absolute;top:-40px;left:0;background:var(--primary);color:#fff;padding:8px 16px;z-index:10000;transition:top .3s}.skip-link:focus{top:0}.panel-page{min-height:100vh;padding:20px;background:linear-gradient(135deg,#0f0f1a,#1a1a2e,#16213e)}.panel-container{max-width:1400px;margin:0 auto}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:20px;margin-bottom:24px;gap:16px;flex-wrap:wrap}.header-left{display:flex;align-items:center;gap:16px}.logo{width:48px;height:48px;background:linear-gradient(135deg,var(--primary),#8b5cf6);border-radius:14px;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 8px 32px #6366f14d}.logo svg{width:26px;height:26px}.header-info h1{font-size:1.4rem;font-weight:700;background:linear-gradient(135deg,#fff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:2px}.welcome-text{font-size:.85rem;color:var(--text-muted)}.header-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.nav-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:12px;color:var(--text-secondary);font-size:.85rem;font-weight:500;text-decoration:none;transition:all .2s cubic-bezier(.4,0,.2,1)}.nav-btn:hover{background:#ffffff1a;border-color:#ffffff26;color:var(--text-primary);transform:translateY(-2px)}.nav-btn svg{width:18px;height:18px}.logout-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:12px;color:#f87171;font-size:.85rem;font-weight:500;transition:all .2s ease}.logout-btn:hover{background:#ef444433;border-color:#ef444466}.logout-btn svg{width:18px;height:18px}.device-selector-section{display:flex;align-items:center;gap:16px;padding:16px 24px;background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:16px;margin-bottom:24px;flex-wrap:wrap}.device-selector-section label{font-weight:600;color:var(--text-secondary);font-size:.9rem}.device-select{flex:1;min-width:200px;max-width:350px;padding:12px 16px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:var(--text-primary);font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease}.device-select:hover{border-color:var(--primary);background:#6366f11a}.device-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #6366f133}.device-status-indicator{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:20px;font-size:.85rem;font-weight:600}.device-status-indicator:before{content:"";width:8px;height:8px;border-radius:50%;animation:pulse 2s infinite}.device-status-indicator.online{background:#22c55e26;color:var(--success)}.device-status-indicator.online:before{background:var(--success);box-shadow:0 0 10px var(--success)}.device-status-indicator.offline{background:#ef444426;color:var(--danger)}.device-status-indicator.offline:before{background:var(--danger);animation:none}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.stat-card{display:flex;align-items:center;gap:16px;padding:20px 24px;background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:16px;transition:all .3s ease}.stat-card:hover{transform:translateY(-4px);border-color:#ffffff26;box-shadow:0 20px 40px #0000004d}.stat-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center}.stat-icon svg{width:26px;height:26px}.stat-icon.blue{background:linear-gradient(135deg,#6366f133,#8b5cf633);color:#818cf8}.stat-icon.green{background:linear-gradient(135deg,#22c55e33,#10b98133);color:#4ade80}.stat-icon.orange{background:linear-gradient(135deg,#f59e0b33,#f9731633);color:#fbbf24}.stat-info{display:flex;flex-direction:column}.stat-value{font-size:1.5rem;font-weight:700;color:var(--text-primary);line-height:1.2}.stat-label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:4px}.config-section{background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:24px;margin-bottom:24px;overflow:hidden}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px}.section-header h2{font-size:1.2rem;font-weight:600;color:var(--text-primary)}.config-actions{display:flex;gap:12px;flex-wrap:wrap}.action-btn{display:flex;align-items:center;gap:10px;padding:12px 20px;border-radius:12px;font-size:.9rem;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);border:none;cursor:pointer}.action-btn svg{width:18px;height:18px}.action-btn.primary{background:linear-gradient(135deg,var(--primary),#7c3aed);color:#fff;box-shadow:0 4px 20px #6366f166}.action-btn.primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 30px #6366f180}.action-btn.secondary{background:#ffffff0d;color:var(--text-secondary);border:1px solid rgba(255,255,255,.1)}.action-btn.secondary:hover:not(:disabled){background:#ffffff1a;color:var(--text-primary);transform:translateY(-2px)}.action-btn.success{background:linear-gradient(135deg,var(--success),#10b981);color:#fff;box-shadow:0 4px 20px #22c55e66}.action-btn.success:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 30px #22c55e80}.pins-table-container{overflow-x:auto;margin:0 -24px;padding:0 24px}.pins-table{width:100%;border-collapse:separate;border-spacing:0}.pins-table th{padding:14px 20px;font-size:.75rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;text-align:left;border-bottom:1px solid rgba(255,255,255,.06);background:#ffffff05}.pins-table th:first-child{border-radius:12px 0 0}.pins-table th:last-child{border-radius:0 12px 0 0}.pins-table td{padding:16px 20px;font-size:.95rem;border-bottom:1px solid rgba(255,255,255,.04);transition:background .2s ease}.pins-table tbody tr{transition:all .2s ease}.pins-table tbody tr:hover{background:#ffffff08}.pins-table tbody tr:hover td{border-bottom-color:#ffffff14}.pins-table tbody tr:last-child td{border-bottom:none}.pin-badge{display:inline-flex;align-items:center;padding:6px 14px;background:linear-gradient(135deg,#6366f126,#8b5cf626);color:#a5b4fc;border-radius:8px;font-size:.85rem;font-weight:700;font-family:SF Mono,Monaco,Consolas,monospace;border:1px solid rgba(99,102,241,.2)}.type-badge{display:inline-flex;align-items:center;padding:5px 12px;border-radius:6px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.type-badge.output{background:#22c55e26;color:#4ade80;border:1px solid rgba(34,197,94,.2)}.type-badge.input{background:#3b82f626;color:#60a5fa;border:1px solid rgba(59,130,246,.2)}.state-badge{display:inline-flex;align-items:center;padding:5px 12px;border-radius:6px;font-size:.75rem;font-weight:600;text-transform:uppercase}.state-badge.on{background:#22c55e26;color:#4ade80}.state-badge.off{background:#64748b26;color:#94a3b8}.toggle-switch-mini{position:relative;display:inline-flex;align-items:center;gap:10px;padding:4px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:24px;cursor:pointer;transition:all .3s ease}.toggle-switch-mini:hover:not(.disabled){background:#ffffff14}.toggle-switch-mini.disabled{opacity:.5;cursor:not-allowed}.toggle-track-mini{width:44px;height:24px;background:#64748b4d;border-radius:12px;position:relative;transition:all .3s ease}.toggle-switch-mini.on .toggle-track-mini{background:linear-gradient(135deg,var(--success),#10b981);box-shadow:0 0 20px #22c55e66}.toggle-thumb-mini{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #0003}.toggle-switch-mini.on .toggle-thumb-mini{transform:translate(20px)}.toggle-label-mini{font-size:.75rem;font-weight:600;color:var(--text-muted);min-width:28px}.toggle-switch-mini.on .toggle-label-mini{color:var(--success)}.table-actions{display:flex;gap:8px}.icon-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;transition:all .2s ease;border:none;cursor:pointer}.icon-btn svg{width:18px;height:18px}.icon-btn.edit{background:#3b82f61a;color:#60a5fa}.icon-btn.edit:hover{background:#3b82f633;transform:translateY(-2px)}.icon-btn.delete{background:#ef44441a;color:#f87171}.icon-btn.delete:hover{background:#ef444433;transform:translateY(-2px)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000;animation:fadeIn .2s ease-out}.modal{width:100%;max-width:480px;background:linear-gradient(180deg,#1e1e2e,#1a1a2a);border:1px solid rgba(255,255,255,.1);border-radius:24px;overflow:hidden;animation:modalSlideIn .3s ease-out;box-shadow:0 25px 50px #00000080}@keyframes modalSlideIn{0%{transform:translateY(20px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px;border-bottom:1px solid rgba(255,255,255,.08)}.modal-header h2{font-size:1.2rem;font-weight:700;color:var(--text-primary)}.modal-close{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:10px;color:var(--text-secondary);transition:all .2s ease;cursor:pointer}.modal-close:hover{background:#ef444426;border-color:#ef44444d;color:var(--danger)}.modal form{padding:24px}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:.85rem;font-weight:600;color:var(--text-secondary);margin-bottom:10px;text-transform:uppercase;letter-spacing:.5px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:14px 18px;background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:var(--text-primary);font-size:1rem;transition:all .2s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);background:#6366f10d;outline:none;box-shadow:0 0 0 4px #6366f126}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal-actions{display:flex;gap:12px;padding:0 24px 24px;justify-content:flex-end}.btn-cancel{padding:12px 24px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:var(--text-secondary);border-radius:12px;font-size:.95rem;font-weight:600;transition:all .2s ease;cursor:pointer}.btn-cancel:hover{background:#ffffff1a;color:var(--text-primary)}.btn-save{padding:12px 28px;background:linear-gradient(135deg,var(--primary),#7c3aed);color:#fff;border:none;border-radius:12px;font-size:.95rem;font-weight:600;transition:all .2s ease;cursor:pointer;box-shadow:0 4px 20px #6366f166}.btn-save:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 30px #6366f180}.btn-save:disabled{opacity:.5;cursor:not-allowed}.pins-section{background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:24px}.pins-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.refresh-btn{display:flex;align-items:center;gap:8px;padding:10px 18px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:var(--text-secondary);font-size:.85rem;font-weight:500;transition:all .2s ease;cursor:pointer}.refresh-btn:hover:not(:disabled){background:#ffffff1a;color:var(--text-primary)}.refresh-btn.refreshing svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.refresh-btn svg{width:16px;height:16px}@media (max-width: 1024px){.panel-header{padding:16px 20px}.header-info h1{font-size:1.2rem}.nav-btn span{display:none}.nav-btn{padding:10px}.logout-btn span{display:none}.logout-btn{padding:10px}.stats-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 768px){.panel-page{padding:12px}.panel-header{padding:16px;border-radius:16px;gap:12px}.header-left{gap:12px}.logo{width:40px;height:40px;border-radius:12px}.logo svg{width:22px;height:22px}.header-info h1{font-size:1.1rem}.welcome-text{display:none}.header-right{gap:6px}.nav-btn{padding:8px;border-radius:10px}.nav-btn svg{width:20px;height:20px}.logout-btn{padding:8px;border-radius:10px}.device-selector-section{padding:14px 16px;border-radius:14px;flex-direction:column;align-items:stretch;gap:12px}.device-select{max-width:none;width:100%}.device-status-indicator{align-self:flex-start}.stats-grid{grid-template-columns:1fr 1fr;gap:12px}.stat-card{padding:16px;border-radius:14px}.stat-icon{width:44px;height:44px}.stat-value{font-size:1.3rem}.config-section,.pins-section{padding:16px;border-radius:16px}.section-header{flex-direction:column;align-items:flex-start}.config-actions{width:100%}.action-btn{flex:1;justify-content:center;padding:12px 16px}.pins-table-container{display:none}.pins-mobile-list{display:block}.pin-mobile-card{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:16px;margin-bottom:12px}.pin-mobile-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.pin-mobile-info{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:12px}.pin-mobile-field{display:flex;flex-direction:column;gap:4px}.pin-mobile-field label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.pin-mobile-actions{display:flex;justify-content:space-between;align-items:center;padding-top:12px;border-top:1px solid rgba(255,255,255,.06)}.modal{max-width:none;margin:0 12px;border-radius:20px;max-height:90vh;overflow-y:auto}.modal-header{padding:20px;position:sticky;top:0;background:inherit;z-index:1}.modal form{padding:20px}.form-row{grid-template-columns:1fr}.modal-actions{padding:0 20px 20px;flex-direction:column-reverse;gap:10px}.modal-actions button{width:100%}.pins-grid{grid-template-columns:1fr}}@media (max-width: 480px){.stats-grid{grid-template-columns:1fr}.stat-card{flex-direction:row;justify-content:flex-start}.config-actions{flex-direction:column}.action-btn{width:100%}}.pins-mobile-list{display:none}@media (max-width: 768px){.pins-mobile-list{display:block}}.devices-page{min-height:100vh;padding:20px;background:linear-gradient(135deg,#0f0f1a,#1a1a2e,#16213e)}.devices-container{max-width:1200px;margin:0 auto}.devices-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:20px;margin-bottom:24px;flex-wrap:wrap;gap:16px}.devices-title{display:flex;align-items:center;gap:16px}.devices-title h1{font-size:1.4rem;font-weight:700;background:linear-gradient(135deg,#fff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.devices-actions{display:flex;gap:12px;flex-wrap:wrap}.devices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}.device-card{background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:24px;transition:all .3s cubic-bezier(.4,0,.2,1)}.device-card:hover{transform:translateY(-4px);border-color:#ffffff26;box-shadow:0 20px 40px #0000004d}.device-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.device-card-info h3{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin-bottom:8px}.device-card-id{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:#6366f11a;border-radius:6px;font-size:.75rem;font-family:SF Mono,monospace;color:var(--text-muted)}.device-card-status{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:20px;font-size:.8rem;font-weight:600}.device-card-status.online{background:#22c55e26;color:var(--success)}.device-card-status.offline{background:#ef444426;color:var(--danger)}.device-card-status:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.device-card-details{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:20px}.device-detail{display:flex;flex-direction:column;gap:4px}.device-detail-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.device-detail-value{font-size:.9rem;font-weight:500;color:var(--text-secondary)}.device-card-actions{display:flex;gap:10px;padding-top:16px;border-top:1px solid rgba(255,255,255,.06)}.device-card-actions .action-btn{flex:1;justify-content:center;padding:10px 16px}.logic-page{min-height:100vh;padding:20px;background:linear-gradient(135deg,#0f0f1a,#1a1a2e,#16213e)}.logic-container{max-width:1400px;margin:0 auto}.logic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:20px}.logic-card{background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:24px;transition:all .3s ease}.logic-card:hover{transform:translateY(-4px);border-color:#ffffff26;box-shadow:0 20px 40px #0000004d}.logic-card.disabled{opacity:.6}.logic-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.logic-info h3{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin-bottom:8px}.logic-type-badge{display:inline-flex;align-items:center;padding:5px 12px;border-radius:6px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.logic-type-badge.input_trigger{background:#3b82f626;color:#60a5fa;border:1px solid rgba(59,130,246,.2)}.logic-type-badge.schedule{background:#f59e0b26;color:#fbbf24;border:1px solid rgba(245,158,11,.2)}.logic-type-badge.conditional{background:#8b5cf626;color:#a78bfa;border:1px solid rgba(139,92,246,.2)}.logic-description{font-size:.9rem;color:var(--text-secondary);margin-bottom:16px;line-height:1.5}.logic-details{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.logic-detail{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.detail-label{font-size:.8rem;color:var(--text-muted);min-width:70px}.detail-value{font-size:.9rem;font-weight:500;color:var(--text-secondary)}.detail-value.code{font-family:SF Mono,monospace;background:#0000004d;padding:4px 10px;border-radius:6px;font-size:.8rem}.detail-condition,.detail-action{font-size:.75rem;padding:4px 10px;border-radius:6px;font-weight:500}.detail-condition{background:#3b82f61a;color:#60a5fa}.detail-action{background:#22c55e1a;color:#4ade80}.schedule-days{display:flex;gap:4px}.logic-stats{display:flex;justify-content:space-between;padding:12px 0;border-top:1px solid rgba(255,255,255,.06);margin-bottom:12px;font-size:.8rem;color:var(--text-muted)}.logic-card-actions{display:flex;gap:10px;padding-top:12px;border-top:1px solid rgba(255,255,255,.06)}.icon-btn.trigger{background:#22c55e1a;color:#4ade80}.icon-btn.trigger:hover{background:#22c55e33;transform:translateY(-2px)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f0f1a,#1a1a2e,#16213e);padding:20px;position:relative;overflow:hidden}.login-layout{display:grid;grid-template-columns:1fr 1fr;gap:40px;max-width:1000px;width:100%;z-index:1}.login-container{display:flex;align-items:center;justify-content:center}.login-card{width:100%;max-width:420px;background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:24px;padding:40px}.login-header{text-align:center;margin-bottom:32px}.login-icon{width:64px;height:64px;margin:0 auto 20px;background:linear-gradient(135deg,var(--primary),#8b5cf6);border-radius:20px;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 8px 32px #6366f14d}.login-icon svg{width:32px;height:32px}.login-header h1{font-size:2rem;font-weight:700;background:linear-gradient(135deg,#fff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:8px}.login-subtitle{color:var(--text-muted);font-size:.95rem}.login-form{display:flex;flex-direction:column;gap:20px}.input-group{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:16px;color:var(--text-muted);pointer-events:none;transition:color .2s ease}.input-icon svg{width:20px;height:20px}.input-group input{width:100%;padding:16px 16px 16px 52px;background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:14px;color:var(--text-primary);font-size:1rem;transition:all .2s ease}.input-group input:focus{border-color:var(--primary);background:#6366f10d;outline:none;box-shadow:0 0 0 4px #6366f126}.input-group input:focus+.input-icon,.input-group:focus-within .input-icon{color:var(--primary)}.input-group input::placeholder{color:var(--text-muted)}.password-toggle{position:absolute;right:16px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#ffffff0d;border:none;border-radius:10px;color:var(--text-muted);cursor:pointer;transition:all .2s ease}.password-toggle:hover{background:#ffffff1a;color:var(--text-primary)}.password-toggle svg{width:18px;height:18px}.error-message,.success-message{display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:12px;font-size:.9rem}.error-message{background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:#f87171}.success-message{background:#22c55e1a;border:1px solid rgba(34,197,94,.2);color:#4ade80}.error-message svg,.success-message svg{width:20px;height:20px;flex-shrink:0}.submit-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px 24px;background:linear-gradient(135deg,var(--primary),#7c3aed);color:#fff;border:none;border-radius:14px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 20px #6366f166}.submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 30px #6366f180}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.submit-btn svg{width:20px;height:20px}.btn-loading{display:flex;align-items:center;gap:10px}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.auth-switch{text-align:center;margin-top:24px;font-size:.9rem;color:var(--text-muted)}.auth-switch a{color:var(--primary-light);text-decoration:none;font-weight:500;margin-left:6px;transition:color .2s ease}.auth-switch a:hover{color:var(--primary)}.manual-link{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;padding:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:12px;color:var(--text-secondary);text-decoration:none;font-size:.9rem;transition:all .2s ease}.manual-link:hover{background:#ffffff0f;color:var(--text-primary)}.manual-link svg{width:18px;height:18px}.login-manual-section{display:flex;align-items:center;justify-content:center}.login-manual-card{background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:24px;padding:40px;max-width:450px}.login-manual-header{display:flex;align-items:center;gap:12px;margin-bottom:24px;color:var(--primary-light)}.login-manual-header svg{width:28px;height:28px}.login-manual-header h2{font-size:1.3rem;font-weight:600}.login-manual-intro{color:var(--text-secondary);font-size:.95rem;line-height:1.6;margin-bottom:24px}.login-manual-features{display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.login-manual-feature{display:flex;align-items:flex-start;gap:16px}.feature-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.feature-icon svg{width:22px;height:22px}.feature-icon.blue{background:#3b82f626;color:#60a5fa}.feature-icon.green{background:#22c55e26;color:#4ade80}.feature-icon.purple{background:#8b5cf626;color:#a78bfa}.feature-icon.orange{background:#f59e0b26;color:#fbbf24}.login-manual-feature strong{display:block;color:var(--text-primary);font-size:.95rem;margin-bottom:4px}.login-manual-feature span{color:var(--text-muted);font-size:.85rem;line-height:1.4}.login-manual-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 24px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:var(--text-secondary);text-decoration:none;font-size:.95rem;font-weight:500;transition:all .2s ease}.login-manual-btn:hover{background:#ffffff1a;color:var(--text-primary);transform:translateY(-2px)}.login-manual-btn svg{width:18px;height:18px}.login-decoration{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.decoration-circle{position:absolute;border-radius:50%;filter:blur(80px);opacity:.5}.circle-1{width:400px;height:400px;background:#6366f14d;top:-100px;right:-100px}.circle-2{width:300px;height:300px;background:#8b5cf633;bottom:-50px;left:-50px}.circle-3{width:200px;height:200px;background:#22c55e33;top:50%;left:30%}.manual-page{min-height:100vh;background:linear-gradient(135deg,#0f0f1a,#1a1a2e,#16213e);padding:20px}.manual-container{max-width:900px;margin:0 auto}.manual-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:20px;margin-bottom:24px;flex-wrap:wrap;gap:16px}.manual-header h1{font-size:1.4rem;font-weight:700;background:linear-gradient(135deg,#fff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.manual-back-btn{display:flex;align-items:center;gap:8px;padding:10px 18px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:var(--text-secondary);text-decoration:none;font-size:.9rem;font-weight:500;transition:all .2s ease}.manual-back-btn:hover{background:#ffffff1a;color:var(--text-primary)}.manual-back-btn svg{width:18px;height:18px}.manual-content{background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:32px}.manual-section{margin-bottom:32px;padding-bottom:32px;border-bottom:1px solid rgba(255,255,255,.06)}.manual-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.manual-section h2{font-size:1.2rem;font-weight:600;color:var(--text-primary);margin-bottom:16px;display:flex;align-items:center;gap:12px}.manual-section h2 svg{width:24px;height:24px;color:var(--primary-light)}.manual-section p{color:var(--text-secondary);line-height:1.7;margin-bottom:16px}.manual-section ul,.manual-section ol{color:var(--text-secondary);line-height:1.7;margin-left:20px;margin-bottom:16px}.manual-section li{margin-bottom:8px}.manual-section code{background:#0000004d;padding:2px 8px;border-radius:6px;font-family:SF Mono,monospace;font-size:.9em;color:#a5b4fc}.manual-note{background:#3b82f61a;border:1px solid rgba(59,130,246,.2);border-radius:12px;padding:16px 20px;margin:16px 0}.manual-note-title{display:flex;align-items:center;gap:8px;font-weight:600;color:#60a5fa;margin-bottom:8px}.manual-note-title svg{width:18px;height:18px}.manual-note p{color:var(--text-secondary);margin:0;font-size:.9rem}.manual-table{width:100%;border-collapse:separate;border-spacing:0;margin:16px 0;overflow:hidden;border-radius:12px;border:1px solid rgba(255,255,255,.08)}.manual-table th,.manual-table td{padding:12px 16px;text-align:left;border-bottom:1px solid rgba(255,255,255,.06)}.manual-table th{background:#ffffff08;font-weight:600;color:var(--text-secondary);font-size:.85rem;text-transform:uppercase;letter-spacing:.5px}.manual-table td{color:var(--text-secondary);font-size:.9rem}.manual-table tr:last-child td{border-bottom:none}.manual-table tr:hover td{background:#ffffff05}@media (max-width: 900px){.login-layout{grid-template-columns:1fr;max-width:450px}.login-manual-section{display:none}.manual-link.mobile-only{display:flex}}@media (max-width: 480px){.login-card{padding:28px 20px;border-radius:20px}.login-header h1{font-size:1.6rem}.login-icon{width:56px;height:56px}.input-group input{padding:14px 14px 14px 48px}.submit-btn{padding:14px 20px}}@media (max-width: 768px){.devices-page{padding:12px}.devices-header{padding:16px;border-radius:16px}.devices-title h1{font-size:1.2rem}.devices-grid{grid-template-columns:1fr}.device-card{padding:20px;border-radius:16px}.device-card-actions{flex-direction:column}.device-card-actions .action-btn{width:100%}}@media (max-width: 768px){.logic-page{padding:12px}.logic-grid{grid-template-columns:1fr}.logic-card{padding:20px;border-radius:16px}.logic-card-header{flex-direction:column;gap:12px}.logic-card-actions{justify-content:space-between}}@media (max-width: 768px){.manual-page{padding:12px}.manual-header{padding:16px;border-radius:16px}.manual-header h1{font-size:1.2rem}.manual-content{padding:20px;border-radius:16px}.manual-section{padding-bottom:24px;margin-bottom:24px}.manual-table{font-size:.85rem}.manual-table th,.manual-table td{padding:10px 12px}}.notification{position:fixed;top:20px;right:20px;display:flex;align-items:center;gap:12px;padding:16px 20px;background:#ffffff08;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:14px;z-index:1000;animation:slideIn .3s ease;box-shadow:0 10px 40px #0000004d}.notification.success{border-color:#22c55e4d}.notification.success svg{color:var(--success)}.notification.error{border-color:#ef44444d}.notification.error svg{color:var(--danger)}.notification svg{width:22px;height:22px;flex-shrink:0}.notification span{font-size:.95rem;color:var(--text-primary)}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.manual-link.mobile-only{display:none}@media (max-width: 900px){.manual-link.mobile-only{display:flex}}.available-pins-section{margin-top:24px}.available-pins-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}.available-pin{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:12px;cursor:pointer;transition:all .2s ease}.available-pin:hover{background:#6366f11a;border-color:#6366f14d;transform:translateY(-2px)}.available-pin span{font-family:SF Mono,monospace;font-weight:600;font-size:.9rem;color:var(--text-secondary)}.available-pin:hover span{color:var(--primary-light)}.available-pin svg{width:16px;height:16px;color:var(--primary);opacity:0;transition:opacity .2s ease}.available-pin:hover svg{opacity:1}.input-indicator{padding:6px 12px;background:#3b82f626;color:#60a5fa;border-radius:8px;font-size:.75rem;font-weight:600}.mobile-menu-btn{display:none;flex-direction:column;justify-content:center;align-items:center;width:44px;height:44px;background:#ffffff0d;border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;z-index:1001;transition:all var(--transition-fast)}.mobile-menu-btn span{display:block;width:20px;height:2px;background:var(--text-primary);border-radius:2px;transition:all .3s ease;margin:2px 0}.mobile-menu-btn.open span:nth-child(1){transform:rotate(45deg) translate(4px,4px)}.mobile-menu-btn.open span:nth-child(2){opacity:0;transform:scaleX(0)}.mobile-menu-btn.open span:nth-child(3){transform:rotate(-45deg) translate(4px,-4px)}.mobile-menu-btn:hover{background:#ffffff1a}.mobile-nav{display:none;position:fixed;top:0;right:-100%;width:280px;max-width:85vw;height:100vh;background:#0f0f1afa;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-left:1px solid var(--border-color);z-index:1000;flex-direction:column;padding:80px 20px 20px;transition:right .3s ease;overflow-y:auto}.mobile-nav.open{right:0}.mobile-nav-item{display:flex;align-items:center;gap:14px;padding:16px 20px;color:var(--text-secondary);text-decoration:none;border-radius:var(--radius-md);font-size:1rem;font-weight:500;transition:all var(--transition-fast);margin-bottom:8px;background:transparent;border:none;width:100%;cursor:pointer}.mobile-nav-item:hover,.mobile-nav-item:focus{background:#6366f11a;color:var(--text-primary)}.mobile-nav-item svg{width:22px;height:22px;flex-shrink:0}.mobile-nav-item.logout{margin-top:auto;color:var(--danger)}.mobile-nav-item.logout:hover{background:#ef44441a}.mobile-nav-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#00000080;z-index:999;animation:fadeIn .3s ease;cursor:pointer}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mobile-nav-close{position:absolute;top:20px;right:20px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#ffffff0d;border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;color:var(--text-secondary);transition:all var(--transition-fast)}.mobile-nav-close:hover{background:#ffffff1a;color:var(--text-primary)}.mobile-nav-close svg{width:20px;height:20px}@media (max-width: 1024px){.panel-container{padding:0}.panel-page{padding:16px}.stats-grid{grid-template-columns:repeat(3,1fr);gap:12px}.pins-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}}@media (max-width: 768px){.mobile-menu-btn,.mobile-nav{display:flex}.desktop-nav{display:none!important}.panel-page{padding:12px;min-height:100vh;min-height:100dvh}.panel-header{flex-direction:row;justify-content:space-between;padding:16px;gap:12px;position:sticky;top:0;z-index:100;background:#0f0f1af2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);margin:-12px -12px 16px;border-radius:0;width:calc(100% + 24px)}.header-left{flex-direction:row;align-items:center;gap:12px}.logo{width:40px;height:40px}.logo svg{width:22px;height:22px}.header-info h1{font-size:1.1rem}.welcome-text{display:none}.device-selector-section{flex-direction:column;align-items:stretch;gap:12px;padding:16px}.device-selector-section label{font-size:.9rem}.device-select{width:100%;padding:14px 16px;font-size:16px}.device-status-indicator{align-self:flex-start}.stats-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}.stat-card{flex-direction:column;text-align:center;padding:12px 8px;gap:8px}.stat-icon{width:36px;height:36px}.stat-icon svg{width:18px;height:18px}.stat-value{font-size:1.1rem}.stat-label{font-size:.7rem}.pins-section{padding:16px;border-radius:var(--radius-md)}.section-header{flex-direction:column;gap:12px;align-items:stretch;margin-bottom:16px}.section-header h2{font-size:1.1rem;text-align:center}.refresh-btn{justify-content:center;padding:12px}.pins-grid{grid-template-columns:repeat(2,1fr);gap:10px}.pin-card{padding:16px 12px}.pin-icon{width:36px;height:36px}.pin-icon svg{width:18px;height:18px}.pin-name{font-size:.9rem}.pin-description{font-size:.75rem}.toggle-switch{width:52px;height:28px}.toggle-thumb{width:22px;height:22px}.toggle-switch.on .toggle-thumb{transform:translate(24px)}.login-layout{flex-direction:column;gap:20px}.login-manual-section{display:none}.login-container{max-width:100%}.login-card{padding:24px 20px;border-radius:var(--radius-lg)}.login-icon{width:56px;height:56px}.login-icon svg{width:28px;height:28px}.login-header h1{font-size:1.5rem}.login-subtitle{font-size:.85rem}.input-group input{padding:14px 14px 14px 48px;font-size:16px}.submit-btn{padding:14px 20px;font-size:1rem}.devices-page{padding:12px}.devices-header{flex-direction:column;gap:16px;padding:16px}.devices-header h1{font-size:1.25rem;text-align:center}.devices-grid{grid-template-columns:1fr;gap:12px}.device-card{padding:16px}.config-page{padding:12px}.config-header{flex-direction:column;gap:12px;padding:16px}.config-header h1{font-size:1.1rem;text-align:center}.nav-btn span{display:none}.nav-btn{padding:10px}.config-actions{flex-direction:column;gap:10px}.action-btn{justify-content:center;width:100%}.pins-table{display:none}.pins-mobile-list{display:flex;flex-direction:column;gap:12px}.pin-mobile-card{display:flex;flex-direction:column;gap:12px;background:#ffffff08;border:1px solid var(--border-color);border-radius:var(--radius-md);padding:16px}.pin-mobile-header{display:flex;justify-content:space-between;align-items:center}.pin-mobile-info{display:flex;flex-direction:column;gap:4px}.pin-mobile-info .pin-badge{display:inline-flex;width:fit-content}.pin-mobile-info .label-text{font-weight:600;color:var(--text-primary)}.pin-mobile-row{display:flex;justify-content:space-between;align-items:center;font-size:.9rem}.pin-mobile-row .row-label{color:var(--text-secondary)}.pin-mobile-actions{display:flex;gap:8px;padding-top:12px;border-top:1px solid var(--border-color)}.pin-mobile-actions .icon-btn{flex:1;justify-content:center;padding:12px}.logic-cards-grid{grid-template-columns:1fr;gap:12px}.logic-card{padding:16px}.modal-overlay{padding:12px}.modal{width:100%;max-width:none;max-height:90vh;margin:0;border-radius:var(--radius-lg)}.modal-header{padding:16px}.modal-header h2{font-size:1.1rem}.modal form{padding:16px}.modal-actions{flex-direction:column;padding:16px;gap:10px}.modal-actions button{width:100%;justify-content:center}.modal.code-modal{width:100%;max-width:none;max-height:95vh}.code-wrapper{max-height:50vh}.line-numbers{display:none}.code-container code{font-size:.75rem}.manual-page{padding:12px}.manual-sidebar{display:none}.manual-content{padding:16px}.manual-content h1{font-size:1.5rem}.manual-content h2{font-size:1.25rem}}@media (max-width: 480px){.panel-page{padding:8px}.panel-header{padding:12px;margin:-8px -8px 12px;width:calc(100% + 16px)}.logo{width:36px;height:36px}.header-info h1{font-size:1rem}.stats-grid{gap:6px}.stat-card{padding:10px 6px}.stat-icon{width:32px;height:32px}.stat-value{font-size:1rem}.stat-label{font-size:.65rem}.pins-section{padding:12px}.pins-grid{grid-template-columns:repeat(2,1fr);gap:8px}.pin-card{padding:12px 10px}.toggle-switch{width:48px;height:26px}.toggle-thumb{width:20px;height:20px}.toggle-switch.on .toggle-thumb{transform:translate(22px)}.login-page{padding:12px}.login-card{padding:20px 16px}.login-icon{width:48px;height:48px}.login-header h1{font-size:1.3rem}.pin-mobile-card{padding:14px}.pin-mobile-actions .icon-btn{padding:10px}}@media (max-width: 360px){.pins-grid{grid-template-columns:1fr 1fr;gap:6px}.pin-card{padding:10px 8px}.pin-name{font-size:.85rem}.toggle-switch{width:44px;height:24px}.toggle-thumb{width:18px;height:18px}.toggle-switch.on .toggle-thumb{transform:translate(20px)}}@media (max-width: 768px) and (orientation: landscape){.panel-page{padding:8px 16px}.panel-header{padding:10px 16px}.stats-grid,.pins-grid{grid-template-columns:repeat(3,1fr)}.login-page{padding:16px}.login-card{max-width:400px;padding:20px}.mobile-nav{width:300px;padding-top:60px}}@media (pointer: coarse){.nav-btn,.action-btn,.icon-btn,.submit-btn,.logout-btn,.refresh-btn{min-height:44px;min-width:44px}.toggle-switch{min-height:44px;padding:8px 0}.pin-card{min-height:100px}}@supports (padding-top: env(safe-area-inset-top)){.panel-header{padding-top:max(16px,env(safe-area-inset-top))}.mobile-nav{padding-top:max(80px,calc(60px + env(safe-area-inset-top)));padding-bottom:env(safe-area-inset-bottom)}}@media (min-width: 769px){.mobile-menu-btn,.mobile-nav{display:none!important}.desktop-nav{display:flex!important}.pins-mobile-list,.devices-mobile-list{display:none!important}.pins-table{display:table!important}}.verification-icon{background:linear-gradient(135deg,#22c55e,#16a34a)!important;box-shadow:0 8px 32px #22c55e66!important}.email-highlight{color:var(--primary-light);font-weight:600;font-size:1.1rem;margin-top:8px;word-break:break-all}.verification-info{display:flex;flex-direction:column;gap:12px;margin:24px 0;padding:16px;background:#ffffff08;border-radius:var(--radius-md);border:1px solid var(--border-color)}.info-item{display:flex;align-items:center;gap:12px;color:var(--text-secondary);font-size:.9rem}.info-item svg{width:20px;height:20px;color:var(--success);flex-shrink:0}.verification-actions{display:flex;flex-direction:column;gap:12px;margin-top:24px}.verification-actions .action-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 24px;border-radius:var(--radius-md);font-size:.95rem;font-weight:600;text-decoration:none;transition:all var(--transition-fast)}.verification-actions .action-btn.secondary{background:#ffffff0d;color:var(--text-secondary);border:1px solid var(--border-color)}.verification-actions .action-btn.secondary:hover:not(:disabled){background:#ffffff1a;color:var(--text-primary)}.verification-actions .action-btn.primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;border:none}.verification-actions .action-btn.primary:hover{transform:translateY(-2px);box-shadow:0 8px 24px #6366f166}.verification-actions .action-btn svg{width:20px;height:20px}.verification-actions .action-btn:disabled{opacity:.6;cursor:not-allowed}.lockout-container{text-align:center;padding:24px}.lockout-icon{width:80px;height:80px;margin:0 auto 20px;background:#ef444426;border-radius:50%;display:flex;align-items:center;justify-content:center}.lockout-icon svg{width:40px;height:40px;color:var(--danger)}.lockout-timer{font-size:2.5rem;font-weight:700;color:var(--danger);margin:16px 0;font-variant-numeric:tabular-nums}.lockout-message{color:var(--text-secondary);font-size:.95rem;margin-bottom:24px}.lockout-message strong{color:var(--text-primary)}.verification-required-container{text-align:center;padding:24px}.verification-required-icon{width:80px;height:80px;margin:0 auto 20px;background:#f59e0b26;border-radius:50%;display:flex;align-items:center;justify-content:center}.verification-required-icon svg{width:40px;height:40px;color:#f59e0b}.verification-required-icon.success-icon{background:#22c55e26}.verification-required-icon.success-icon svg{color:var(--success)}.verification-hint{color:var(--text-muted);font-size:.85rem;margin-top:8px}.verification-required-container h2{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin-bottom:12px}.verification-required-message{color:var(--text-secondary);font-size:.95rem;margin-bottom:8px}.verification-email{color:var(--primary);font-size:1rem;margin-bottom:20px}.verification-required-container .success-message{display:flex;align-items:center;gap:8px;justify-content:center;padding:12px 16px;background:#22c55e1a;border:1px solid rgba(34,197,94,.3);border-radius:var(--radius-md);color:var(--success);font-size:.9rem;margin-bottom:16px}.verification-required-container .success-message svg{width:18px;height:18px;flex-shrink:0}.verification-actions{display:flex;flex-direction:column;gap:12px;margin-top:20px}.resend-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px 20px;background:linear-gradient(135deg,var(--primary),var(--primary-dark));border:none;border-radius:var(--radius-md);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.resend-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #6366f166}.resend-btn:disabled{opacity:.7;cursor:not-allowed}.resend-btn svg{width:18px;height:18px}.back-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px 20px;background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);font-size:1rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.back-btn:hover{background:#ffffff0d;color:var(--text-primary);border-color:var(--primary)}.back-btn svg{width:18px;height:18px}.devices-mobile-list{display:none;flex-direction:column;gap:12px}.device-mobile-card{background:#ffffff08;border:1px solid var(--border-color);border-radius:var(--radius-md);padding:16px;transition:all var(--transition-fast)}.device-mobile-card:hover{background:#ffffff0d}.device-mobile-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--border-color)}.device-mobile-name{display:flex;align-items:center;gap:8px}.device-mobile-name .device-name{font-weight:600;font-size:1rem;color:var(--text-primary)}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.online{background:var(--success);box-shadow:0 0 8px var(--success)}.status-dot.offline{background:var(--text-muted)}.device-mobile-info{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.device-mobile-row{display:flex;justify-content:space-between;align-items:center;font-size:.9rem}.device-mobile-row .row-label{color:var(--text-secondary)}.device-mobile-actions{display:flex;gap:8px;padding-top:12px;border-top:1px solid var(--border-color)}.device-mobile-actions .icon-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;border-radius:var(--radius-md);font-size:.85rem;font-weight:500}.device-mobile-actions .icon-btn span{display:inline}.device-mobile-actions .icon-btn.edit{background:#6366f11a;color:var(--primary-light);border:1px solid rgba(99,102,241,.2)}.device-mobile-actions .icon-btn.delete{background:#ef44441a;color:var(--danger-light);border:1px solid rgba(239,68,68,.2)}@media (max-width: 768px){.devices-mobile-list{display:flex}}.firmware-panel{padding:20px}.firmware-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:16px}.firmware-info h3{font-size:1.25rem;font-weight:700;margin-bottom:4px}.firmware-info .device-name{font-size:.85rem;color:var(--text-secondary)}.firmware-actions{display:flex;align-items:center;gap:12px}.compiler-warning{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-sm);color:var(--warning);font-size:.8rem}.compiler-warning svg{width:16px;height:16px}.latest-firmware-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;margin-bottom:24px}.latest-firmware-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.latest-firmware-header .label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.latest-firmware-body{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}.version-display{font-size:1.5rem;font-weight:700;color:var(--primary-light)}.firmware-meta{display:flex;gap:16px;font-size:.85rem;color:var(--text-secondary)}.firmware-meta .checksum{font-family:monospace;font-size:.75rem;color:var(--text-muted)}.latest-firmware-actions{margin-top:16px;padding-top:16px;border-top:1px solid var(--border-color)}.firmware-history{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px}.firmware-history h4{font-size:1rem;font-weight:600;margin-bottom:16px;color:var(--text-primary)}.firmware-table{width:100%;border-collapse:collapse}.firmware-table th,.firmware-table td{padding:12px;text-align:left;border-bottom:1px solid var(--border-color)}.firmware-table th{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.firmware-table td{font-size:.9rem}.firmware-table tr:last-child td{border-bottom:none}.firmware-table tr.deleting{opacity:.5;pointer-events:none}.version-badge{display:inline-block;padding:4px 10px;background:#6366f11a;color:var(--primary-light);border-radius:var(--radius-sm);font-weight:600;font-size:.85rem}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500}.status-badge.pending{background:#94a3b81a;color:var(--text-secondary)}.status-badge.compiling{background:#6366f11a;color:var(--primary-light)}.status-badge.ready{background:#22c55e1a;color:var(--success)}.status-badge.failed{background:#ef44441a;color:var(--danger)}.status-badge.deployed{background:#22c55e26;color:var(--success-light);border:1px solid rgba(34,197,94,.3)}.date-cell,.size-cell{color:var(--text-secondary);font-size:.85rem}.icon-btn.download{color:var(--primary-light)}.icon-btn.download:hover{background:#6366f11a}.icon-btn.view{color:var(--text-secondary)}.icon-btn.view:hover{background:#ffffff0d;color:var(--text-primary)}.spinner-mini{display:inline-block;width:14px;height:14px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite}.compile-log-modal{max-width:800px;max-height:80vh}.compile-log-modal .modal-body{max-height:60vh;overflow-y:auto}.compile-log-content{background:#0000004d;padding:16px;border-radius:var(--radius-sm);font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.8rem;line-height:1.6;white-space:pre-wrap;word-break:break-all;color:var(--text-secondary);max-height:100%;overflow-y:auto}.firmware-panel .loading-state,.firmware-panel .empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.firmware-panel .empty-state svg{width:48px;height:48px;color:var(--text-muted);margin-bottom:16px}.firmware-panel .empty-state p{font-size:1rem;color:var(--text-secondary);margin-bottom:8px}.firmware-panel .empty-state span{font-size:.85rem;color:var(--text-muted)}.btn svg{width:18px;height:18px}.btn-sm{padding:8px 14px;font-size:.85rem}.btn-sm svg{width:16px;height:16px}@media (max-width: 768px){.firmware-header{flex-direction:column;align-items:flex-start}.firmware-actions{width:100%;flex-direction:column;align-items:stretch}.firmware-table{font-size:.85rem}.firmware-table th,.firmware-table td{padding:10px 8px}.firmware-meta{flex-direction:column;gap:4px}.latest-firmware-body{flex-direction:column;gap:8px}}.location-settings{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:16px;margin-top:16px}.location-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.location-title{display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:500;color:var(--text-primary)}.location-title svg{color:var(--primary)}.edit-location-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:#6366f11a;border:1px solid rgba(99,102,241,.2);border-radius:var(--radius-sm);color:var(--primary);transition:all var(--transition-fast)}.edit-location-btn:hover{background:#6366f133;border-color:var(--primary)}.location-error{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:var(--radius-sm);color:var(--danger);font-size:.85rem;margin-bottom:12px}.location-form{display:flex;flex-direction:column;gap:12px}.location-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.location-form .form-group{margin-bottom:0}.location-form .form-group label{font-size:.8rem;color:var(--text-secondary);margin-bottom:4px}.location-form .form-group input,.location-form .form-group select{background:#0003;border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:10px 12px;color:var(--text-primary);font-size:.9rem;width:100%;transition:border-color var(--transition-fast)}.location-form .form-group input:focus,.location-form .form-group select:focus{border-color:var(--primary)}.location-form .form-group input::placeholder{color:var(--text-muted)}.location-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px}.btn-get-location{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#6366f11a;border:1px solid rgba(99,102,241,.2);border-radius:var(--radius-sm);color:var(--primary);font-size:.85rem;font-weight:500;transition:all var(--transition-fast)}.btn-get-location:hover:not(:disabled){background:#6366f133;border-color:var(--primary)}.btn-get-location:disabled{opacity:.6;cursor:not-allowed}.btn-group{display:flex;gap:8px}.location-actions .btn-cancel,.location-actions .btn-save{padding:10px 20px;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;transition:all var(--transition-fast)}.location-actions .btn-cancel{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary)}.location-actions .btn-cancel:hover{border-color:var(--text-secondary);color:var(--text-primary)}.location-actions .btn-save{background:var(--primary);border:none;color:#fff}.location-actions .btn-save:hover:not(:disabled){background:var(--primary-dark)}.location-actions .btn-save:disabled{opacity:.6;cursor:not-allowed}.location-display{display:flex;flex-direction:column;gap:12px}.location-coords,.location-timezone{display:flex;align-items:center;gap:8px;font-size:.85rem}.coord-label{color:var(--text-secondary)}.coord-value{color:var(--text-primary);font-family:JetBrains Mono,monospace}.sun-times{display:flex;gap:16px;padding:12px;background:#0003;border-radius:var(--radius-sm);margin-top:4px}.sun-time{display:flex;align-items:center;gap:10px;flex:1}.sun-time svg{flex-shrink:0}.sun-time.sunrise svg{color:#f59e0b}.sun-time.sunset svg{color:#f97316}.sun-time>div{display:flex;flex-direction:column;gap:2px}.sun-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.sun-value{font-size:1rem;font-weight:600;color:var(--text-primary);font-family:JetBrains Mono,monospace}.sun-times-loading{display:flex;align-items:center;gap:8px;padding:12px;color:var(--text-secondary);font-size:.85rem}.location-not-set{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px;text-align:center;color:var(--text-secondary)}.location-not-set svg{color:var(--warning);opacity:.7}.location-not-set span{font-size:.9rem}.location-not-set small{font-size:.8rem;color:var(--text-muted)}.btn-spinner{width:14px;height:14px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite}.pwm-control{display:flex;align-items:center;gap:12px;margin-top:8px}.pwm-slider{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:6px;background:#ffffff1a;border-radius:3px;outline:none;cursor:pointer}.pwm-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;background:var(--primary);border-radius:50%;cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.pwm-slider::-webkit-slider-thumb:hover{transform:scale(1.1);box-shadow:0 0 12px #6366f180}.pwm-slider::-moz-range-thumb{width:18px;height:18px;background:var(--primary);border:none;border-radius:50%;cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.pwm-slider::-moz-range-thumb:hover{transform:scale(1.1);box-shadow:0 0 12px #6366f180}.pwm-slider:disabled{opacity:.5;cursor:not-allowed}.pwm-value{min-width:45px;text-align:right;font-size:.9rem;font-weight:600;color:var(--primary);font-family:JetBrains Mono,monospace}.pwm-spinner{width:14px;height:14px;border:2px solid transparent;border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@media (max-width: 480px){.location-form-row{grid-template-columns:1fr}.location-actions{flex-direction:column}.btn-get-location{width:100%;justify-content:center}.btn-group{width:100%}.btn-group .btn-cancel,.btn-group .btn-save{flex:1}.sun-times{flex-direction:column;gap:12px}}
