body{margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.dashboard-container{background:linear-gradient(135deg,#1a1a2e,#16213e);max-width:1600px;min-height:100vh;padding:20px}.dashboard-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0d;border-radius:12px;justify-content:space-between;margin-bottom:30px;padding:20px}.dashboard-header h1{color:#fff;font-size:28px;font-weight:600;margin:0}.dashboard-controls,.dashboard-header h1{align-items:center;display:flex;gap:12px}.period-selector{background:#ffffff1a;border:2px solid #fff3;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;padding:10px 16px;transition:all .3s ease}.period-selector:hover{background:#ffffff26;border-color:#fff6}.period-selector option{background:#1a1a2e;color:#fff}.auto-refresh-btn{align-items:center;background:#ffffff1a;border:2px solid #fff3;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:14px;gap:8px;padding:10px 16px;transition:all .3s ease}.auto-refresh-btn:hover{background:#ffffff26;border-color:#fff6}.auto-refresh-btn.active{background:#00c8534d;border-color:#00c853}.refresh-btn{background:#0088fe33;border:2px solid #0088fe80;border-radius:8px;font-size:14px;gap:8px;padding:10px 16px;transition:all .3s ease}.refresh-btn:hover{background:#0088fe4d;border-color:#0088fe;transform:translateY(-2px)}.refresh-btn .spinning{animation:spin 1s linear infinite}.error-message{background:#ff525233;border:2px solid #ff5252;color:#ff5252;margin-bottom:20px;padding:15px;text-align:center}.stats-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:30px}.stat-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:2px solid #ffffff1a;gap:16px;padding:20px;transition:all .3s ease}.stat-card:hover{border-color:#ffffff4d;box-shadow:0 10px 30px #0000004d;transform:translateY(-5px)}.stat-icon{align-items:center;border-radius:12px;display:flex;height:60px;justify-content:center;width:60px}.stat-icon.blue{background:linear-gradient(135deg,#0088fe,#06c)}.stat-icon.green{background:linear-gradient(135deg,#00c49f,#097)}.stat-icon.purple{background:linear-gradient(135deg,#8884d8,#66b)}.stat-icon.orange{background:linear-gradient(135deg,#ffbb28,#f90)}.stat-content h3{color:#999;font-size:14px;font-weight:500;letter-spacing:.5px;margin:0 0 8px;text-transform:uppercase}.stat-value{font-size:28px;line-height:1;margin:0}.stat-subtitle{color:#00c49f;font-size:14px;margin:4px 0 0}.chart-container{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0d;border:2px solid #ffffff1a;border-radius:12px;margin-bottom:30px;padding:24px}.chart-header{justify-content:space-between;margin-bottom:24px}.chart-header,.chart-header h2{align-items:center;display:flex}.chart-header h2{color:#fff;font-size:20px;font-weight:600;gap:12px;margin:0}.chart-period{color:#999;font-size:14px;font-weight:500}.no-data{align-items:center;color:#666;display:flex;font-size:16px;height:200px;justify-content:center}.charts-row{grid-gap:30px;display:grid;gap:30px;grid-template-columns:repeat(auto-fit,minmax(500px,1fr));margin-bottom:30px}.chart-container.half{margin-bottom:0}.custom-tooltip{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#1a1a2ef2;border:2px solid #fff3;border-radius:8px;padding:12px}.custom-tooltip .label{color:#fff;font-size:14px;font-weight:600;margin:0 0 8px}.custom-tooltip p{font-size:13px;margin:4px 0}.table-container{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0d;border:2px solid #ffffff1a;border-radius:12px;margin-bottom:30px;padding:24px}.table-header{margin-bottom:20px}.table-header h2{align-items:center;color:#fff;display:flex;font-size:20px;font-weight:600;gap:12px;margin:0}.actions-table,.energy-table{border-collapse:collapse;width:100%}.actions-table thead,.energy-table thead{background:#ffffff0d}.actions-table th,.energy-table th{border-bottom:2px solid #ffffff1a;color:#999;font-size:13px;font-weight:600;letter-spacing:.5px;padding:16px;text-align:left;text-transform:uppercase}.actions-table td,.energy-table td{border-bottom:1px solid #ffffff0d;color:#fff;font-size:14px;padding:14px 16px}.actions-table tbody tr:hover,.energy-table tbody tr:hover{background:#ffffff08}.total-row{background:#00c8531a;border-top:2px solid #00c8534d}.total-row td{color:#00c49f;font-weight:600;padding:16px}@media (max-width:1200px){.charts-row{grid-template-columns:1fr}}@media (max-width:768px){.dashboard-header{flex-direction:column;gap:16px}.dashboard-controls{flex-direction:column;width:100%}.auto-refresh-btn,.period-selector,.refresh-btn{justify-content:center;width:100%}.stats-grid{grid-template-columns:1fr}.stat-card{padding:16px}.stat-value{font-size:24px}.chart-container{padding:16px}.actions-table,.energy-table{font-size:12px}.actions-table td,.actions-table th,.energy-table td,.energy-table th{padding:10px 8px}}.recharts-cartesian-axis-tick-value{fill:#999}.recharts-legend-wrapper{padding-top:20px}.recharts-legend-item-text{color:#fff!important}.recharts-tooltip-wrapper{outline:none}.settings-container{background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;min-height:100vh;padding:1.5rem}.settings-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.settings-header .back-button{align-items:center;background:#475569cc;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-weight:600;gap:.5rem;padding:.5rem 1rem;transition:all .2s}.settings-header .back-button:hover{background:#475569}.header-title{flex:1 1;gap:1rem}.header-title p{color:#94a3b8;font-size:.875rem;margin:0}.refresh-btn{align-items:center;background:#ffffff26;border:2px solid #ffffff4d;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-weight:600;gap:.5rem;padding:.75rem 1rem;transition:all .2s}.refresh-btn:hover:not(:disabled){background:#ffffff40}.refresh-btn:disabled{cursor:not-allowed;opacity:.5}.message{border-radius:.5rem;font-weight:500;gap:.5rem;margin-bottom:1rem;padding:1rem}.message.error{background:#ef444433;border:1px solid #ef4444;color:#fca5a5}.message.success{background:#22c55e33;border:1px solid #22c55e;color:#86efac}.stats-bar{background:#1e293b99;border-radius:.75rem;display:flex;flex-wrap:wrap;gap:2rem;margin-bottom:1.5rem;padding:1rem 1.5rem}.stat-item{align-items:center;color:#e2e8f0;display:flex;gap:.5rem}.stat-item svg{color:#60a5fa}.stat-item .inactive{color:#94a3b8;font-size:.875rem}.tabs{border-bottom:2px solid #ffffff1a;margin-bottom:1.5rem;padding-bottom:.5rem}.tab,.tabs{display:flex;gap:.5rem}.tab{background:#0000;border-radius:.5rem .5rem 0 0;color:#94a3b8;font-size:1rem;font-weight:600;padding:.75rem 1.5rem;transition:all .2s}.tab:hover{background:#ffffff1a;color:#fff}.tab.active{background:#60a5fa33;border-bottom:2px solid #60a5fa;color:#60a5fa;margin-bottom:-2px}.tab-content{background:#1e293b99;border-radius:.75rem;padding:1.5rem}.content-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.5rem}.content-header h2{font-size:1.25rem;margin:0}.btn-add{background:linear-gradient(135deg,#2563eb,#1d4ed8);padding:.75rem 1.25rem}.form-card{background:#0f172a99;border:1px solid #ffffff1a;border-radius:.75rem;margin-bottom:1.5rem;padding:1.5rem}.form-card h3{color:#60a5fa;font-size:1.1rem;margin:0 0 1.5rem}.form-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:1.5rem}.form-group label{color:#e2e8f0}.form-group input,.form-group select{border:1px solid #fff3;padding:.75rem}.form-group.checkbox{align-items:center;flex-direction:row}.form-group.checkbox label{align-items:center;cursor:pointer;display:flex;gap:.5rem}.form-group.checkbox input[type=checkbox]{cursor:pointer;height:1.25rem;width:1.25rem}.form-actions{gap:.75rem;justify-content:flex-end}.btn-cancel,.btn-save{border:none;border-radius:.5rem;gap:.5rem;padding:.75rem 1.25rem}.btn-cancel{background:#475569cc}.btn-cancel:hover{background:#475569}.btn-save{background:linear-gradient(135deg,#22c55e,#16a34a)}.btn-save:hover:not(:disabled){box-shadow:0 4px 12px #22c55e66;transform:translateY(-2px)}.btn-save:disabled{cursor:not-allowed;opacity:.5}.devices-list{display:flex;flex-direction:column;gap:.75rem}.empty-state{color:#94a3b8;justify-content:center;padding:3rem}.empty-state p,.empty-state svg{margin-bottom:1rem}.empty-state p{font-size:1.1rem}.empty-state button{background:linear-gradient(135deg,#2563eb,#1d4ed8);border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-weight:600;padding:.75rem 1.5rem;transition:all .2s}.empty-state button:hover{transform:translateY(-2px)}.device-card{align-items:center;background:#0f172a99;border:1px solid #ffffff1a;border-radius:.75rem;gap:1rem;padding:1rem 1.25rem;transition:all .2s}.device-card:hover{background:#0f172acc;border-color:#60a5fa4d}.device-card.disabled{opacity:.6}.device-icon{align-items:center;background:linear-gradient(135deg,#2563eb,#1d4ed8);border-radius:.75rem;display:flex;flex-shrink:0;height:48px;justify-content:center;width:48px}.device-info{min-width:0}.device-info h4{color:#fff;font-size:1rem;margin:0 0 .25rem}.device-details{color:#94a3b8;display:flex;flex-wrap:wrap;font-size:.875rem;gap:1rem;margin:0}.device-details span{align-items:center;display:flex;gap:.25rem}.device-status{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.status{align-items:center;border-radius:.25rem;display:inline-flex;font-size:.75rem;font-weight:600;gap:.25rem;padding:.25rem .5rem}.status.online{background:#22c55e33;color:#22c55e}.status.offline{background:#ef444433;color:#ef4444}.status.testing{background:#fbbf2433;color:#fbbf24}.status.success{background:#22c55e33;color:#22c55e}.status.failed{background:#ef444433;color:#ef4444}.device-actions{display:flex;flex-shrink:0;gap:.5rem}.btn-icon{align-items:center;background:#47556999;border:1px solid #ffffff1a;border-radius:.5rem;color:#e2e8f0;cursor:pointer;display:flex;height:36px;justify-content:center;transition:all .2s;width:36px}.btn-icon:hover{background:#475569cc;border-color:#fff3}.btn-icon.danger:hover{background:#ef444433;border-color:#ef4444;color:#ef4444}@media (max-width:768px){.settings-container{padding:1rem}.settings-header{align-items:stretch;flex-direction:column}.header-title{justify-content:center;text-align:center}.header-title h1{font-size:1.5rem}.stats-bar{flex-direction:column;gap:.75rem}.tabs{flex-wrap:wrap}.tab{flex:1 1;font-size:.875rem;justify-content:center;padding:.5rem 1rem}.content-header{align-items:stretch;flex-direction:column;gap:1rem}.content-header h2{text-align:center}.form-grid{grid-template-columns:1fr}.device-card{flex-wrap:wrap}.device-info{flex:1 0 100%;margin-top:.5rem;order:1}.device-icon{order:0}.device-actions{margin-left:auto;order:0}.device-details{flex-direction:column;gap:.25rem}}@media (max-width:480px){.btn-add{justify-content:center;width:100%}.form-actions{flex-direction:column}.btn-cancel,.btn-save{justify-content:center;width:100%}.device-actions{justify-content:flex-end;margin-top:.5rem;width:100%}}.scheduler-container{background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;min-height:100vh}.scheduler-content{margin:0 auto;max-width:1200px;padding:2rem}.scheduler-loading{align-items:center;display:flex;flex-direction:column;gap:1rem;justify-content:center;min-height:60vh}.scheduler-loading p{color:#94a3b8;font-size:1.125rem}.scheduler-header{align-items:center;background:#1e293be6;border-radius:1rem;box-shadow:0 10px 30px #0000004d;display:flex;gap:1rem;margin-bottom:2rem;padding:1.5rem}.scheduler-header .btn-back{align-items:center;background:#ffffff1a;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:.75rem;transition:all .2s}.scheduler-header .btn-back:hover{background:#fff3}.header-title svg{color:#60a5fa}.btn-add{align-items:center;background:linear-gradient(135deg,#2563eb,#1e40af);border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-weight:600;gap:.5rem;padding:.75rem 1.5rem;transition:all .2s}.btn-add:hover{box-shadow:0 4px 12px #2563eb66;transform:translateY(-2px)}.summary-grid{grid-template-columns:repeat(3,1fr)}.summary-card{text-align:center}.summary-card.active{background:linear-gradient(135deg,#059669,#10b981)}.summary-card.inactive{background:linear-gradient(135deg,#6b7280,#9ca3af)}.summary-value{font-size:2.5rem;margin-bottom:.5rem}.summary-label{font-size:.875rem;opacity:.9}.modal-content{background:#1e293b;border-radius:1rem;box-shadow:0 20px 60px #00000080;max-width:500px}.modal-header{padding:1.5rem}.modal-header h2{font-size:1.25rem}.modal-close{display:flex;padding:.25rem}.schedule-form{display:flex;flex-direction:column;gap:1.25rem;padding:1.5rem}.form-group input,.form-group select{background:#0f172acc;border:1px solid #ffffff1a;border-radius:.5rem;font-size:1rem;outline:none;padding:.75rem 1rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus{border-color:#60a5fa}.form-group select{cursor:pointer}.form-group select option{background:#1e293b;color:#fff}.device-type-selector{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(2,1fr)}.device-type-btn{align-items:center;background:#ffffff0d;border:2px solid #ffffff1a;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-weight:500;gap:.5rem;justify-content:center;padding:.75rem;transition:all .2s}.device-type-btn:hover{background:#ffffff1a}.device-type-btn.active{background:rgba(var(--accent-color),.2);border-color:#60a5fa;border-color:var(--accent-color,#60a5fa)}.schedule-type-selector{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(3,1fr)}.schedule-type-btn{background:#ffffff0d;border:2px solid #ffffff1a;border-radius:.5rem;color:#fff;cursor:pointer;font-weight:500;padding:.75rem;transition:all .2s}.schedule-type-btn:hover{background:#ffffff1a}.schedule-type-btn.active{background:#2563eb33;border-color:#2563eb}.days-selector{display:flex;flex-wrap:wrap;gap:.5rem}.day-btn{background:#ffffff0d;border:2px solid #ffffff1a;border-radius:50%;color:#fff;cursor:pointer;font-size:.75rem;font-weight:600;height:44px;transition:all .2s;width:44px}.day-btn:hover{background:#ffffff1a}.day-btn.active{background:#2563eb;border-color:#2563eb}.form-actions{display:flex;gap:1rem;margin-top:.5rem}.btn-cancel,.btn-save{border-radius:.5rem;padding:.875rem}.btn-save{align-items:center;background:linear-gradient(135deg,#2563eb,#1e40af);cursor:pointer;display:flex;flex:1 1;font-weight:600;gap:.5rem;justify-content:center;transition:all .2s}.btn-save:hover{box-shadow:0 4px 12px #2563eb66}.schedules-list{display:flex;flex-direction:column;gap:1rem}.empty-state svg{color:#60a5fa}.btn-add-empty{align-items:center;background:linear-gradient(135deg,#2563eb,#1e40af);border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-weight:600;gap:.5rem;margin-top:1rem;padding:.875rem 1.5rem;transition:all .2s}.btn-add-empty:hover{box-shadow:0 4px 12px #2563eb66;transform:translateY(-2px)}.schedule-card{background:#1e293bcc;border-radius:1rem;box-shadow:0 4px 15px #0003;padding:1.25rem;transition:all .2s}.schedule-card:hover{box-shadow:0 8px 25px #0000004d;transform:translateY(-2px)}.schedule-card.disabled{opacity:.5}.schedule-main{gap:1rem;margin-bottom:1rem}.schedule-icon,.schedule-main{align-items:center;display:flex}.schedule-icon{background:#ffffff1a;border-radius:.75rem;flex-shrink:0;height:48px;justify-content:center;width:48px}.schedule-info{flex:1 1;min-width:0}.schedule-info h3{font-size:1.125rem;margin:0 0 .25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-device{color:#94a3b8;font-size:.875rem;margin:0 0 .25rem}.schedule-action{color:#60a5fa;font-size:.875rem;font-weight:500;margin:0}.schedule-time{align-items:center;background:#ffffff1a;border-radius:.5rem;display:flex;font-size:.875rem;gap:.5rem;padding:.5rem .75rem;white-space:nowrap}.schedule-time svg{color:#60a5fa}.schedule-actions{border-top:1px solid #ffffff1a;display:flex;gap:.5rem;padding-top:1rem}.btn-toggle{background:none;border:none;border-radius:.5rem;cursor:pointer;padding:.5rem;transition:all .2s}.btn-toggle.on{color:#22c55e}.btn-toggle.off{color:#6b7280}.btn-action,.btn-toggle:hover{background:#ffffff1a}.btn-action{align-items:center;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:all .2s}.btn-action:hover{background:#fff3}.btn-run:hover{background:#22c55e4d;color:#22c55e}.btn-edit:hover{background:#3b82f64d;color:#60a5fa}.btn-delete:hover{color:#ef4444}.schedule-meta{border-top:1px solid #ffffff0d;color:#6b7280;font-size:.75rem;margin-top:.75rem;padding-top:.75rem}@media (max-width:768px){.scheduler-content{padding:1rem}.scheduler-header{flex-wrap:wrap}.btn-add{justify-content:center;width:100%}.summary-grid{gap:.5rem;grid-template-columns:repeat(3,1fr)}.summary-card{padding:1rem}.summary-value{font-size:1.75rem}.device-type-selector{grid-template-columns:repeat(2,1fr)}.schedule-type-selector{grid-template-columns:1fr}.schedule-main{flex-wrap:wrap}.schedule-time{width:100%}.schedule-actions,.schedule-time{justify-content:center}}@media (max-width:480px){.summary-grid{grid-template-columns:1fr}.days-selector{justify-content:center}.modal-content{max-height:85vh}}.gates-container{background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;min-height:100vh}.gates-content{margin:0 auto;max-width:1200px;padding:2rem}.gates-loading{align-items:center;display:flex;flex-direction:column;gap:1rem;justify-content:center;min-height:60vh}.gates-loading p{color:#94a3b8;font-size:1.125rem}.gates-header{align-items:center;background:#1e293be6;border-radius:1rem;box-shadow:0 10px 30px #0000004d;display:flex;gap:1rem;margin-bottom:2rem;padding:1.5rem}.gates-header .btn-back{align-items:center;background:#ffffff1a;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:.75rem;transition:all .2s}.gates-header .btn-back:hover{background:#fff3}.header-title svg{color:#f59e0b}.btn-history,.btn-refresh{align-items:center;background:#ffffff1a;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:.75rem;transition:all .2s}.btn-history:hover,.btn-refresh:hover{background:#fff3}.empty-state{align-items:center;background:#1e293bcc;border-radius:1rem;display:flex;flex-direction:column;gap:1rem;padding:4rem 2rem;text-align:center}.empty-state svg{color:#f59e0b;opacity:.5}.empty-state h3{font-size:1.5rem;margin:0}.empty-state p{color:#94a3b8;margin:0}.gates-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.gate-card{align-items:center;background:#1e293be6;border-radius:1.5rem;box-shadow:0 10px 30px #0000004d;display:flex;flex-direction:column;overflow:hidden;padding:2rem;position:relative;text-align:center;transition:all .3s}.gate-card:hover{box-shadow:0 15px 40px #0006;transform:translateY(-5px)}.gate-card.online{border:2px solid #f59e0b4d}.gate-card.offline{border:2px solid #64748b4d;opacity:.6}.gate-card.triggering{animation:pulse-gate 1s ease-in-out infinite;border-color:#f59e0b;box-shadow:0 0 30px #f59e0b66}@keyframes pulse-gate{0%,to{box-shadow:0 0 30px #f59e0b66}50%{box-shadow:0 0 50px #f59e0b99}}.gate-status{position:absolute;right:1rem;top:1rem}.status-badge{border-radius:1rem;display:flex;gap:.375rem;padding:.375rem .75rem}.status-badge.online{background:#22c55e33;border:1px solid #22c55e66;color:#22c55e}.status-badge.offline{background:#64748b33;border:1px solid #64748b66;color:#94a3b8}.gate-info{margin-bottom:1.5rem}.gate-icon{align-items:center;background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:50%;box-shadow:0 10px 30px #f59e0b4d;display:flex;height:100px;justify-content:center;margin:0 auto 1rem;width:100px}.gate-icon svg{color:#fff}.gate-info h2{font-size:1.5rem;margin:0 0 .5rem}.gate-ip{color:#94a3b8;font-family:monospace;font-size:.875rem;margin:0}.btn-trigger{align-items:center;background:linear-gradient(135deg,#f59e0b,#d97706);border:none;border-radius:1rem;color:#fff;cursor:pointer;display:flex;font-size:1.125rem;font-weight:700;gap:.75rem;justify-content:center;margin-bottom:1rem;padding:1.25rem 2rem;transition:all .3s;width:100%}.btn-trigger:hover:not(:disabled){box-shadow:0 8px 25px #f59e0b66;transform:scale(1.02)}.btn-trigger:active:not(:disabled){transform:scale(.98)}.btn-trigger:disabled{background:linear-gradient(135deg,#64748b,#475569);cursor:not-allowed;opacity:.6}.btn-trigger.active{animation:pulse-button .5s ease-in-out;background:linear-gradient(135deg,#22c55e,#16a34a)}@keyframes pulse-button{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.gate-meta{align-items:center;color:#64748b;display:flex;font-size:.75rem;gap:.5rem}.modal-overlay{background:#000c;padding:1rem}.confirm-modal{background:#1e293b;border-radius:1.5rem;box-shadow:0 25px 50px #00000080;max-width:400px;padding:2rem;text-align:center;width:100%}.confirm-icon{align-items:center;background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:50%;display:flex;height:80px;justify-content:center;margin:0 auto 1.5rem;width:80px}.confirm-icon svg{color:#fff}.confirm-modal h3{font-size:1.5rem;margin:0 0 .75rem}.confirm-modal p{color:#94a3b8;margin:0 0 1.5rem}.confirm-modal strong{color:#f59e0b}.confirm-actions{display:flex;gap:1rem}.btn-cancel,.btn-confirm{border:none;border-radius:.75rem;cursor:pointer;flex:1 1;font-weight:600;padding:1rem;transition:all .2s}.btn-confirm{align-items:center;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;display:flex;gap:.5rem;justify-content:center}.btn-confirm:hover{box-shadow:0 4px 15px #f59e0b66;transform:translateY(-2px)}.history-modal{background:#1e293b;border-radius:1rem;box-shadow:0 25px 50px #00000080;display:flex;flex-direction:column;max-height:80vh;max-width:500px;overflow:hidden;width:100%}.history-header{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;justify-content:space-between;padding:1.5rem}.history-header h3{align-items:center;display:flex;font-size:1.25rem;gap:.75rem;margin:0}.history-header h3 svg{color:#f59e0b}.modal-close{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:1.75rem;line-height:1;padding:0;transition:color .2s}.modal-close:hover{color:#fff}.history-list{flex:1 1;overflow-y:auto;padding:1rem}.history-empty{color:#64748b;padding:2rem;text-align:center}.history-item{align-items:center;background:#ffffff0d;border-radius:.75rem;display:flex;gap:1rem;margin-bottom:.5rem;padding:1rem}.history-item svg{color:#f59e0b;flex-shrink:0}.history-info{display:flex;flex:1 1;flex-direction:column;gap:.25rem}.history-name{font-weight:600}.history-time{align-items:center;color:#64748b;display:flex;font-size:.75rem;gap:.375rem}.history-source{background:#ffffff1a;border-radius:.25rem;color:#94a3b8;font-size:.75rem;padding:.25rem .5rem}@media (max-width:768px){.gates-content{padding:1rem}.gates-header{flex-wrap:wrap}.header-actions{justify-content:flex-end;margin-top:.5rem;width:100%}.gates-grid{grid-template-columns:1fr}.gate-card{padding:1.5rem}.gate-icon{height:80px;width:80px}.gate-icon svg{height:36px;width:36px}}.auth-logs-container{background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;min-height:100vh}.auth-logs-content{margin:0 auto;max-width:1400px;padding:2rem}.auth-logs-loading{align-items:center;display:flex;flex-direction:column;gap:1rem;justify-content:center;min-height:60vh}.auth-logs-loading p{color:#94a3b8;font-size:1.125rem}.auth-logs-header{align-items:center;background:#1e293be6;border-radius:1rem;box-shadow:0 10px 30px #0000004d;display:flex;gap:1rem;margin-bottom:2rem;padding:1.5rem}.auth-logs-header .btn-back{align-items:center;background:#ffffff1a;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:.75rem;transition:all .2s}.auth-logs-header .btn-back:hover{background:#fff3}.header-info{flex:1 1}.header-title{align-items:center;display:flex;gap:.75rem}.header-title h1{font-size:1.75rem;font-weight:700;margin:0}.header-title svg{color:#a855f7}.header-subtitle{color:#ffffffb3;display:block;font-size:.875rem;margin-top:.25rem}.header-actions{gap:.5rem}.btn-cleanup,.btn-filter,.btn-refresh{align-items:center;background:#ffffff1a;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:.75rem;transition:all .2s}.btn-filter:hover,.btn-refresh:hover{background:#fff3}.btn-filter.active{background:#a855f7}.btn-cleanup{color:#fca5a5}.btn-cleanup:hover{background:#ef444433}.error-banner{gap:.75rem}.error-banner button{background:none;border:none;color:#fca5a5;cursor:pointer;font-size:1.5rem;line-height:1;margin-left:auto;padding:0}.summary-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(4,1fr);margin-bottom:2rem}.summary-card{align-items:center;background:#1e293bcc;border-radius:1rem;box-shadow:0 4px 15px #0003;display:flex;gap:1rem;padding:1.5rem}.summary-card svg{color:#94a3b8}.summary-card.success svg{color:#22c55e}.summary-card.danger svg{color:#ef4444}.summary-card.info svg{color:#3b82f6}.summary-info{display:flex;flex-direction:column}.summary-value{font-size:2rem;font-weight:700;line-height:1}.summary-label{color:#94a3b8;font-size:.75rem;letter-spacing:.5px;margin-top:.25rem;text-transform:uppercase}.filters-panel{background:#1e293bcc;border-radius:1rem;display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:2rem;padding:1.5rem}.filter-group{display:flex;flex:1 1;flex-direction:column;gap:.5rem;min-width:150px}.filter-group label{color:#94a3b8;font-size:.75rem;letter-spacing:.5px;text-transform:uppercase}.filter-group input,.filter-group select{background:#0f172acc;border:1px solid #ffffff1a;border-radius:.5rem;color:#fff;font-size:.875rem;outline:none;padding:.75rem 1rem;transition:border-color .2s}.filter-group input:focus,.filter-group select:focus{border-color:#a855f7}.filter-group select option{background:#1e293b;color:#fff}.logs-table-container{background:#1e293bcc;border-radius:1rem;box-shadow:0 10px 30px #0000004d;margin-bottom:2rem;overflow:hidden}.logs-table{border-collapse:collapse;width:100%}.logs-table thead{background:#0f172acc}.logs-table th{border-bottom:1px solid #ffffff1a;color:#94a3b8;font-size:.75rem;font-weight:600;letter-spacing:.5px;padding:1rem;text-align:left;text-transform:uppercase}.logs-table td{border-bottom:1px solid #ffffff0d;font-size:.875rem;padding:1rem}.logs-table tbody tr:hover{background:#ffffff0d}.log-row.login_failed{background:#ef44441a}.log-row.login_failed:hover{background:#ef444426}.empty-row{color:#64748b;padding:3rem!important;text-align:center}.event-type{font-weight:500}.event-type,.username{align-items:center;display:flex;gap:.5rem}.username svg{color:#60a5fa}.timestamp{align-items:center;color:#94a3b8;display:flex;gap:.5rem}.timestamp svg{color:#64748b}.ip-cell{color:#94a3b8;font-family:monospace;font-size:.8rem}.ua-cell{color:#64748b;font-size:.8rem}.details-cell{color:#94a3b8;font-size:.8rem;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.last-logins-section{background:#1e293bcc;border-radius:1rem;box-shadow:0 4px 15px #0003;padding:1.5rem}.last-logins-section h3{color:#94a3b8;font-size:1rem;margin:0 0 1rem}.last-logins-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.last-login-card{align-items:center;background:#ffffff0d;border-radius:.75rem;display:flex;gap:1rem;padding:1rem}.last-login-card svg{color:#22c55e}.login-info{display:flex;flex-direction:column;gap:.25rem}.login-username{font-weight:600}.login-time{color:#94a3b8;font-size:.75rem}.login-ip{color:#64748b;font-family:monospace;font-size:.75rem}@media (max-width:1024px){.summary-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.auth-logs-content{padding:1rem}.auth-logs-header{flex-wrap:wrap}.header-actions{justify-content:flex-end;margin-top:.5rem;width:100%}.summary-grid{grid-template-columns:1fr 1fr}.summary-card{padding:1rem}.summary-value{font-size:1.5rem}.filters-panel{flex-direction:column}.logs-table-container{overflow-x:auto}.logs-table{min-width:700px}}@media (max-width:480px){.summary-grid{grid-template-columns:1fr}}.tenant-manager{margin:0 auto;max-width:1200px;padding:20px}.tm-header{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;justify-content:space-between;margin-bottom:24px;padding-bottom:16px}.tm-header h2{color:#fff;font-size:1.5rem;font-weight:600;margin:0}.btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:inline-flex;font-size:14px;font-weight:500;gap:8px;padding:10px 16px;transition:all .2s ease}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-1px)}.btn-secondary{background:#ffffff1a;border:1px solid #fff3;color:#fff}.btn-secondary:hover:not(:disabled){background:#ffffff26}.btn-icon{background:#ffffff0d;border-radius:6px;padding:8px}.btn-icon:hover{background:#ffffff1a}.btn-danger{color:#ef4444}.btn-danger:hover{background:#ef44441a}.btn-small{font-size:12px;padding:4px 8px}.button-group{display:flex;gap:12px;margin-top:16px}.tenant-list{display:flex;flex-direction:column;gap:12px}.tenant-card{align-items:center;background:#ffffff08;border:1px solid #ffffff14;border-radius:12px;display:flex;justify-content:space-between;padding:16px 20px;transition:all .2s ease}.tenant-card:hover{background:#ffffff0d;border-color:#ffffff1f}.tenant-card.inactive{opacity:.5}.tenant-info h3{color:#fff;font-size:1.1rem;font-weight:600;margin:0 0 4px}.tenant-slug{color:#fff6;font-family:monospace;font-size:13px}.tenant-address{color:#fff9;font-size:13px;margin:8px 0 0}.tenant-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.badge{background:#ffffff14;color:#ffffffb3;font-size:11px;font-weight:500;gap:4px;padding:4px 10px}.badge-melcloud{background:#3b82f626;color:#60a5fa}.badge-melcloud .building-id{font-family:monospace;font-size:10px;margin-left:4px;opacity:.8}.badge-sungrow{background:#eab30826;color:#fbbf24}.badge-users{background:#a855f726;color:#c084fc}.tenant-actions{display:flex;gap:8px}.empty-state,.loading-state{color:#ffffff80;padding:60px 20px;text-align:center}.empty-state p,.loading-state{margin-bottom:20px}.error-message{background:#ef44441a;border:1px solid #ef44444d;border-radius:8px;justify-content:space-between;margin-bottom:16px;padding:12px 16px}.error-message button{background:none;border:none;color:#fca5a5;cursor:pointer;font-size:18px;padding:0 4px}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:#1a1a2e;border:1px solid #ffffff1a;border-radius:16px;display:flex;flex-direction:column;max-height:85vh;max-width:600px;overflow:hidden;width:100%}.modal-header{border-bottom:1px solid #ffffff14}.modal-header h3{color:#fff;font-size:1.2rem;font-weight:600;margin:0}.modal-tabs{border-bottom:1px solid #ffffff14;display:flex;gap:4px;padding:12px 24px 0}.tab{align-items:center;background:none;border:none;border-bottom:2px solid #0000;color:#ffffff80;cursor:pointer;display:inline-flex;font-size:14px;font-weight:500;gap:6px;margin-bottom:-1px;padding:10px 16px;transition:all .2s ease}.tab:hover{color:#fffc}.tab.active{border-bottom-color:#3b82f6;color:#3b82f6}.modal-body{flex:1 1;overflow-y:auto}.tab-content{animation:fadeIn .2s ease}.form-group label{color:#fffc;font-size:14px}.form-group input,.form-group select{background:#0000004d;border:1px solid #ffffff26;border-radius:8px;color:#fff;font-size:14px;padding:12px 14px;transition:all .2s ease;width:100%}.form-group input:focus,.form-group select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633;outline:none}.form-group input::placeholder{color:#ffffff4d}.form-group input:disabled{opacity:.5}.form-group small{color:#fff6;display:block;font-size:12px;margin-top:6px}@media (max-width:640px){.form-row{grid-template-columns:1fr}}.form-hint{color:#fff6;display:block;font-size:12px;margin-top:6px}.info-box{background:#3b82f61a;border:1px solid #3b82f640;border-radius:10px;margin-top:24px;padding:16px 20px}.info-box h5{color:#60a5fa;font-size:14px;font-weight:600;margin:0 0 12px}.info-box ol{margin:0;padding-left:20px}.info-box li{color:#ffffffb3;font-size:13px;line-height:1.8}.info-box a{color:#60a5fa;text-decoration:underline}.info-box a:hover{color:#93c5fd}.modules-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.module-checkbox{align-items:center;background:#ffffff08;border:1px solid #ffffff14;border-radius:8px;cursor:pointer;display:flex;gap:10px;padding:10px 12px;transition:all .2s ease}.module-checkbox:hover{background:#ffffff0f}.module-checkbox input[type=checkbox]{accent-color:#3b82f6;height:16px;width:16px}.module-label{align-items:center;color:#fffc;display:flex;font-size:13px;gap:6px}.config-section{border-bottom:1px solid #ffffff0f;margin-bottom:28px;padding-bottom:24px}.config-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.config-section h4{align-items:center;color:#fff;display:flex;font-size:15px;font-weight:600;gap:8px;margin:0 0 16px}.config-section h4 .btn{margin-left:auto}.section-help{color:#ffffff80;font-size:13px;line-height:1.5;margin:0 0 16px}.test-result{align-items:center;border-radius:8px;display:flex;font-size:14px;gap:8px;margin-top:16px;padding:12px 16px}.test-result.success{background:#22c55e1a;border:1px solid #22c55e4d;color:#86efac}.test-result.error{background:#ef44441a;border:1px solid #ef44444d;color:#fca5a5}.buildings-list{display:flex;flex-direction:column;gap:10px}.building-card{align-items:center;background:#ffffff08;border:1px solid #ffffff14;border-radius:10px;cursor:pointer;display:flex;justify-content:space-between;padding:14px 16px;transition:all .2s ease}.building-card:hover{background:#ffffff0f;border-color:#ffffff1f}.building-card.selected{background:#3b82f61a;border-color:#3b82f666}.building-info{display:flex;flex-direction:column;gap:2px}.building-info strong{color:#fff;font-size:14px}.building-info .building-id{color:#fff6;font-family:monospace;font-size:12px}.building-info .building-address{color:#ffffff80;font-size:12px}.building-devices{align-items:center;display:flex;gap:12px}.device-count{align-items:center;color:#fff9;display:flex;font-size:13px;gap:4px}.building-devices .check-icon{color:#22c55e}.empty-buildings{background:#ffffff05;border:1px dashed #ffffff1a;border-radius:8px;color:#fff6;font-size:13px;padding:24px;text-align:center}.selected-building-info{background:#22c55e14;border-radius:8px;color:#86efac;font-size:14px;margin-top:16px;padding:12px 16px}.placeholder-message{background:#ffffff05;border:1px dashed #ffffff1a;border-radius:12px;color:#ffffff80;padding:40px 20px;text-align:center}.placeholder-message svg{height:40px;margin-bottom:16px;opacity:.3;width:40px}.placeholder-message p{font-size:15px;margin:0 0 8px}.placeholder-message small{font-family:monospace;font-size:12px;opacity:.6}.modal-footer{background:#0003;border-top:1px solid #ffffff14;padding:16px 24px}.spinner{animation:spin 1s linear infinite}@media (max-width:640px){.tenant-manager{padding:16px}.tm-header{align-items:stretch;flex-direction:column;gap:16px}.tm-header .btn{justify-content:center}.tenant-card{align-items:stretch;flex-direction:column;gap:16px}.tenant-actions{justify-content:flex-end}.modal{max-height:95vh}.modal-tabs{overflow-x:auto;padding-bottom:12px}.modules-grid{grid-template-columns:1fr}.button-group{flex-direction:column}}.tenant-selector{max-width:450px}.tenant-empty,.tenant-loading{align-items:center;color:#fff9;display:flex;flex-direction:column;gap:16px;justify-content:center;padding:40px 20px}.tenant-loading svg{animation:spin 1s linear infinite}.tenant-list-select{display:flex;flex-direction:column;gap:12px;padding:20px 0}.tenant-option{align-items:center;background:#ffffff08;border:1px solid #ffffff14;border-radius:12px;cursor:pointer;display:flex;gap:16px;padding:16px 20px;transition:all .2s ease}.tenant-option:hover{background:#ffffff14;border-color:#3b82f666;transform:translateX(4px)}.tenant-option-icon{align-items:center;background:#3b82f626;border-radius:10px;color:#60a5fa;display:flex;height:48px;justify-content:center;width:48px}.tenant-option-info{flex:1 1}.tenant-option-info h3{color:#fff;font-size:16px;font-weight:600;margin:0 0 4px}.tenant-option-info span{color:#ffffff80;font-size:13px}.tenant-option-arrow{color:#ffffff4d;transition:transform .2s ease}.tenant-option:hover .tenant-option-arrow{color:#60a5fa;transform:translateX(4px)}.tenant-badge{align-items:center;background:#3b82f626;border:1px solid #3b82f64d;border-radius:20px;color:#60a5fa;cursor:pointer;display:inline-flex;font-size:14px;font-weight:500;gap:6px;margin-top:12px;padding:8px 16px;transition:all .2s ease}.tenant-badge:hover{background:#3b82f640;border-color:#3b82f680}.solar-container{background:linear-gradient(135deg,#0a1628,#1a365d 50%,#0d2137);color:#fff;min-height:100vh;padding:20px}.solar-loading{align-items:center;color:#fbbf24;display:flex;flex-direction:column;justify-content:center;min-height:60vh}.solar-loading p{color:#94a3b8;font-size:1.2rem;margin-top:20px}.spin{animation:spin 2s linear infinite}.solar-header{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:15px}.solar-header h1{color:#fbbf24;font-size:1.8rem;margin:0}.header-actions,.solar-header h1{align-items:center;display:flex;gap:12px}.auto-refresh-toggle{align-items:center;color:#94a3b8;cursor:pointer;display:flex;font-size:.9rem;gap:6px}.auto-refresh-toggle input{cursor:pointer}.refresh-button{background:#fbbf2433;border:1px solid #fbbf244d;border-radius:8px;color:#fbbf24;cursor:pointer;padding:8px;transition:all .2s}.refresh-button:hover{background:#fbbf244d}.refresh-button.spinning svg{animation:spin 1s linear infinite}.solar-status-bar{background:#ffffff0d;border-radius:10px;display:flex;gap:20px;margin-bottom:24px;padding:12px 16px}.status-item{align-items:center;color:#94a3b8;display:flex;font-size:.9rem;gap:8px}.status-indicator.online{color:#22c55e;font-weight:600}.status-indicator.offline{color:#ef4444;font-weight:600}.solar-error{background:#ef44441a;border:1px solid #ef44444d;border-radius:12px;padding:40px;text-align:center}.solar-error p{color:#ef4444;font-size:1.1rem;margin-bottom:20px}.retry-button{align-items:center;background:#ef444433;border:1px solid #ef444466;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;gap:8px;padding:12px 24px;transition:all .2s}.retry-button:hover{background:#ef44444d}.power-flow-diagram{background:#ffffff0d;border-radius:16px;margin-bottom:24px;padding:24px}.power-flow-diagram h2{color:#fbbf24;font-size:1.3rem;margin-bottom:24px;text-align:center}.flow-grid{grid-gap:20px;align-items:center;display:grid;gap:20px;grid-template-columns:1fr 1fr 1fr;grid-template-rows:auto auto auto;justify-items:center;margin:0 auto;max-width:800px;position:relative}.flow-node{align-items:center;background:#ffffff14;border-radius:16px;display:flex;flex-direction:column;min-width:140px;padding:20px;transition:all .3s}.flow-node:hover{background:#ffffff1f;transform:translateY(-2px)}.node-icon{margin-bottom:12px;position:relative}.solar-node{grid-column:2;grid-row:1}.solar-icon{color:#fbbf24}.home-node{grid-column:2;grid-row:3}.home-icon{color:#60a5fa}.battery-node{grid-column:1;grid-row:3}.battery-icon{color:#22c55e;position:relative}.battery-soc{background:#22c55e33;border-radius:4px;bottom:-8px;color:#22c55e;font-size:.7rem;font-weight:700;left:50%;padding:2px 6px;position:absolute;transform:translateX(-50%)}.grid-node{grid-column:3;grid-row:3}.grid-icon{color:#a78bfa}.node-value{color:#fff;font-size:1.4rem;font-weight:700;margin-bottom:4px}.node-label{color:#94a3b8;font-size:.85rem}.battery-bar{background:#ffffff1a;border-radius:3px;height:6px;margin-top:10px;overflow:hidden;width:100%}.battery-fill{background:linear-gradient(90deg,#22c55e,#4ade80);border-radius:3px;height:100%;transition:width .5s ease}.flow-line{align-items:center;display:flex;flex-direction:column;gap:4px;opacity:.3;transition:all .3s}.flow-line.active{opacity:1}.flow-line.active .flow-arrow{animation:pulse 1.5s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.pv-to-home{grid-column:2;grid-row:2}.pv-to-home .flow-arrow{color:#fbbf24}.battery-home{grid-column:1;left:33%;transform:translateX(-50%)}.battery-home,.home-grid{grid-row:3;position:absolute}.home-grid{grid-column:3;right:33%;transform:translateX(50%)}.flow-arrow{color:#60a5fa}.flow-value{background:#0000004d;border-radius:4px;color:#94a3b8;font-size:.75rem;padding:2px 8px}.solar-stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:24px}.stat-card{align-items:center;background:#ffffff0d;border-left:4px solid;border-radius:12px;display:flex;gap:12px;padding:16px;transition:all .2s}.stat-card:hover{background:#ffffff14;transform:translateY(-2px)}.stat-card.production{border-color:#fbbf24}.stat-card.production .stat-icon{color:#fbbf24}.stat-card.consumption{border-color:#60a5fa}.stat-card.consumption .stat-icon{color:#60a5fa}.stat-card.export{border-color:#22c55e}.stat-card.export .stat-icon{color:#22c55e}.stat-card.import{border-color:#ef4444}.stat-card.import .stat-icon{color:#ef4444}.stat-card.battery-charge{border-color:#10b981}.stat-card.battery-charge .stat-icon{color:#10b981}.stat-card.battery-discharge{border-color:#f59e0b}.stat-card.battery-discharge .stat-icon{color:#f59e0b}.stat-icon{flex-shrink:0}.stat-content{flex:1 1;min-width:0}.stat-label{color:#94a3b8;font-size:.8rem;margin-bottom:4px}.stat-value{color:#fff;font-size:1.2rem;font-weight:700}.solar-info-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:24px}.info-card{align-items:center;background:#ffffff0d;border-radius:12px;display:flex;gap:12px;padding:16px;transition:all .2s}.info-card:hover{background:#ffffff14}.info-icon{color:#a78bfa;flex-shrink:0}.info-content{flex:1 1}.info-label{color:#94a3b8;font-size:.8rem;margin-bottom:4px}.info-value{color:#fff;font-size:1.1rem}.battery-details-card{background:#ffffff0d;border-radius:16px;margin-bottom:24px;padding:24px}.battery-details-card h3{align-items:center;color:#22c55e;display:flex;font-size:1.2rem;gap:10px;margin-bottom:20px}.battery-details-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin-bottom:20px}.battery-detail{display:flex;flex-direction:column;gap:4px}.detail-label{color:#94a3b8;font-size:.8rem}.detail-value{color:#fff;font-size:1.2rem;font-weight:700}.battery-large-bar{background:#ffffff1a;border-radius:16px;height:32px;overflow:hidden;width:100%}.battery-large-fill{align-items:center;border-radius:16px;color:#fff;display:flex;font-weight:700;height:100%;justify-content:center;text-shadow:0 1px 2px #0000004d;transition:width .5s ease}.battery-large-fill.high{background:linear-gradient(90deg,#22c55e,#4ade80)}.battery-large-fill.medium{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.battery-large-fill.low{background:linear-gradient(90deg,#ef4444,#f87171)}.plant-info-card{background:#ffffff0d;border-radius:16px;padding:24px}.plant-info-card h3{align-items:center;color:#fbbf24;display:flex;font-size:1.2rem;gap:10px;margin-bottom:20px}.plant-info-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.plant-info-item{display:flex;gap:8px}.info-key{color:#94a3b8;font-size:.9rem}.info-val{color:#fff;font-weight:500}@media (max-width:768px){.solar-header{align-items:flex-start;flex-direction:column;gap:12px}.solar-header h1{font-size:1.4rem}.flow-grid{grid-template-columns:1fr;grid-template-rows:auto}.battery-node,.grid-node,.home-node,.solar-node{grid-column:1;grid-row:auto}.flow-line{display:none}.solar-info-grid,.solar-stats-grid{grid-template-columns:repeat(2,1fr)}.stat-value{font-size:1rem}}@media (max-width:480px){.solar-container{padding:12px}.solar-info-grid,.solar-stats-grid{grid-template-columns:1fr}.battery-details-grid{grid-template-columns:repeat(2,1fr)}}.user-management-container{background:linear-gradient(135deg,#0a1628,#1a365d 50%,#0d2137);color:#fff;min-height:100vh;padding:20px}.user-loading{align-items:center;color:#60a5fa;display:flex;flex-direction:column;justify-content:center;min-height:60vh}.user-loading p{color:#94a3b8;font-size:1.1rem;margin-top:20px}.spin{animation:spin 1s linear infinite}.user-header{border-bottom:1px solid #ffffff1a;justify-content:space-between;margin-bottom:24px;padding-bottom:16px}.user-header,.user-header h1{align-items:center;display:flex}.user-header h1{color:#60a5fa;font-size:1.6rem;gap:12px;margin:0}.back-button{background:#ffffff1a;border-radius:8px;gap:8px;padding:10px 16px}.back-button:hover{background:#fff3}.btn-refresh{background:#60a5fa33;border:1px solid #60a5fa4d;border-radius:8px;color:#60a5fa;padding:10px;transition:all .2s}.btn-refresh:hover{background:#60a5fa4d}.message{align-items:center;animation:slideIn .3s ease;border-radius:10px;display:flex;gap:12px;margin-bottom:20px;padding:14px 18px}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.message.error{background:#ef444426;border:1px solid #ef44444d;color:#f87171}.message.success{background:#22c55e26;border:1px solid #22c55e4d;color:#4ade80}.message button{background:none;border:none;color:inherit;cursor:pointer;margin-left:auto;opacity:.7;padding:4px}.message button:hover{opacity:1}.user-toolbar{gap:16px;justify-content:space-between;margin-bottom:24px}.search-box,.user-toolbar{align-items:center;display:flex}.search-box{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:10px;flex:1 1;gap:10px;max-width:400px;padding:10px 16px}.search-box svg{color:#64748b}.search-box input{background:#0000;border:none;color:#fff;font-size:1rem;outline:none;width:100%}.search-box input::placeholder{color:#64748b}.btn-create{align-items:center;background:linear-gradient(135deg,#22c55e,#16a34a);border:none;border-radius:10px;color:#fff;cursor:pointer;display:flex;font-size:.95rem;font-weight:600;gap:8px;padding:12px 20px;transition:all .2s}.btn-create:hover{box-shadow:0 4px 12px #22c55e4d;transform:translateY(-2px)}.users-list{background:#ffffff0d;border-radius:16px;overflow:hidden}.no-users{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.no-users svg{margin-bottom:16px;opacity:.5}.users-table{border-collapse:collapse;width:100%}.users-table th{background:#0003;color:#94a3b8;font-size:.85rem;font-weight:600;letter-spacing:.5px;padding:16px 20px;text-align:left;text-transform:uppercase}.users-table td{border-bottom:1px solid #ffffff0d;padding:16px 20px}.users-table tbody tr{transition:background .2s}.users-table tbody tr:hover{background:#ffffff08}.user-name{align-items:center;display:flex;font-weight:500;gap:12px}.user-info{display:flex;flex-direction:column}.user-info .username{font-weight:500}.user-info .fullname{color:#64748b;font-size:.8rem}.user-avatar{align-items:center;background:linear-gradient(135deg,#60a5fa,#3b82f6);border-radius:50%;display:flex;flex-shrink:0;font-size:1rem;font-weight:700;height:36px;justify-content:center;width:36px}.badge{align-items:center;border-radius:20px;display:inline-flex;font-size:.8rem;font-weight:600;gap:6px;padding:6px 12px}.badge.super-admin{background:#a855f733;color:#a855f7}.badge.admin{background:#fbbf2433;color:#fbbf24}.badge.user{background:#94a3b833;color:#94a3b8}.status-badge{border-radius:12px;font-size:.75rem;padding:4px 10px}.status-badge.active{background:#22c55e33;color:#22c55e}.status-badge.inactive{background:#ef444433;color:#ef4444}.tenant-cell{color:#94a3b8;font-size:.9rem}.actions-cell{display:flex;gap:8px}.btn-delete,.btn-edit{border:none;border-radius:8px;cursor:pointer;padding:8px;transition:all .2s}.btn-edit{background:#60a5fa33;color:#60a5fa}.btn-edit:hover{background:#60a5fa4d}.btn-delete{background:#ef444433;color:#ef4444}.btn-delete:hover{background:#ef44444d}.modal-overlay{align-items:center;animation:fadeIn .2s ease;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{animation:slideUp .3s ease;background:linear-gradient(135deg,#1e293b,#0f172a);border:1px solid #ffffff1a;border-radius:16px;max-height:90vh;max-width:520px;overflow-y:auto;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{border-bottom:1px solid #ffffff1a;justify-content:space-between;padding:20px 24px}.modal-header,.modal-header h2{align-items:center;display:flex}.modal-header h2{color:#60a5fa;font-size:1.3rem;gap:10px;margin:0}.btn-close{background:#0000;border:none;color:#94a3b8;cursor:pointer;padding:4px;transition:color .2s}.btn-close:hover{color:#fff}.modal-body{padding:24px}.form-group{margin-bottom:20px}.form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.form-group label{color:#94a3b8;display:block;font-size:.9rem;font-weight:500;margin-bottom:8px}.form-group input[type=email],.form-group input[type=password],.form-group input[type=text],.form-group select{background:#0000004d;border:1px solid #ffffff1a;border-radius:10px;box-sizing:border-box;color:#fff;font-size:1rem;outline:none;padding:12px 16px;transition:border-color .2s;width:100%}.role-select{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;cursor:pointer;padding-right:40px!important}.role-select option{background:#1e293b;color:#fff}.form-group input.error{border-color:#ef4444}.form-group input:disabled{cursor:not-allowed;opacity:.6}.password-input{position:relative}.password-input input{padding-right:48px}.toggle-password{background:#0000;border:none;color:#64748b;cursor:pointer;padding:4px;position:absolute;right:12px;top:50%;transform:translateY(-50%)}.toggle-password:hover{color:#94a3b8}.field-error{color:#ef4444;display:block;font-size:.8rem;margin-top:6px}.form-error.global{align-items:center;background:#ef444426;border:1px solid #ef44444d;border-radius:10px;color:#f87171;display:flex;font-size:.9rem;gap:8px;margin-bottom:20px;padding:12px 16px}.checkbox-group{margin-top:24px}.checkbox-label{align-items:center;color:#fff!important;cursor:pointer;display:flex!important;font-size:1rem!important;gap:10px}.checkbox-label input[type=checkbox]{cursor:pointer;height:20px;width:20px}.help-text{color:#64748b;font-size:.8rem;line-height:1.4;margin-top:8px}.modal-footer{border-top:1px solid #ffffff1a;display:flex;gap:12px;justify-content:flex-end;padding:20px 24px}.btn-cancel,.btn-save{align-items:center;border-radius:10px;cursor:pointer;display:flex;font-size:.95rem;font-weight:600;gap:8px;padding:12px 20px;transition:all .2s}.btn-cancel{background:#ffffff1a;border:1px solid #fff3;color:#fff}.btn-cancel:hover{background:#ffffff26}.btn-save{background:linear-gradient(135deg,#60a5fa,#3b82f6);border:none;color:#fff}.btn-save:hover{box-shadow:0 4px 12px #3b82f64d;transform:translateY(-2px)}@media (max-width:768px){.user-header{flex-wrap:wrap;gap:12px}.user-header h1{font-size:1.3rem;justify-content:center;order:1;width:100%}.back-button{order:0}.btn-refresh{order:2}.user-toolbar{align-items:stretch;flex-direction:column}.search-box{max-width:none}.users-table td:nth-child(3),.users-table th:nth-child(3){display:none}.modal-content{max-width:100%}.form-row{grid-template-columns:1fr}}@media (max-width:480px){.user-management-container,.users-table td,.users-table th{padding:12px}.user-avatar{font-size:.9rem;height:32px;width:32px}}.tenants-section{border-top:1px solid #ffffff1a;margin-top:20px;padding-top:20px}.tenants-section label{align-items:center;display:flex;gap:8px}.tenants-list{background:#0003;border-radius:10px;margin-top:8px;max-height:200px;overflow-y:auto;padding:12px}.tenants-list::-webkit-scrollbar{width:6px}.tenants-list::-webkit-scrollbar-track{background:#ffffff0d;border-radius:3px}.tenants-list::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.tenant-checkbox{align-items:center;background:#ffffff0d;border-radius:8px;cursor:pointer;display:flex!important;gap:12px;margin-bottom:4px;padding:10px 12px;transition:all .2s}.tenant-checkbox:hover{background:#ffffff1a}.tenant-checkbox input[type=checkbox]{accent-color:#60a5fa;cursor:pointer;height:18px;width:18px}.tenant-checkbox .tenant-name{color:#fff;font-size:.95rem}.no-tenants{color:#64748b;font-size:.9rem;padding:20px;text-align:center}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.login-container{align-items:center;background:linear-gradient(135deg,#0f172a,#1e3a8a);display:flex;justify-content:center;min-height:100vh;padding:1.5rem}.login-box{background:#1e293be6;border-radius:1rem;box-shadow:0 20px 60px #00000080;max-width:400px;padding:2rem;width:100%}.login-header{align-items:center;color:#fff;display:flex;gap:1rem;margin-bottom:2rem}.login-header svg{color:#60a5fa}.login-header h1{font-size:1.5rem;margin-bottom:.25rem}.login-header p{color:#94a3b8;font-size:.875rem}.login-form{gap:1rem}.form-group,.login-form{display:flex;flex-direction:column}.form-group{gap:.5rem}.form-group label{color:#fff;font-size:.875rem;font-weight:600}.form-group input{background:#0f172acc;border:1px solid #ffffff1a;border-radius:.5rem;color:#fff;font-size:1rem;outline:none;padding:.75rem 1rem;transition:border-color .2s}.form-group input:focus{border-color:#60a5fa}.error-message{background:#ef444433;border:1px solid #ef4444;border-radius:.5rem;color:#fca5a5;font-size:.875rem;padding:.75rem}.error-message,.login-button{align-items:center;display:flex;gap:.5rem}.login-button{background:#2563eb;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;justify-content:center;padding:.75rem 1rem;transition:background .2s}.login-button:hover:not(:disabled){background:#1d4ed8}.login-button:disabled{cursor:not-allowed;opacity:.5}.login-footer{border-top:1px solid #ffffff1a;margin-top:20px;padding-top:20px;text-align:center}.login-footer p{color:#9ca3af;font-size:12px;gap:6px;margin:0}.login-footer p,.menu-container{align-items:center;display:flex;justify-content:center}.menu-container{background:linear-gradient(135deg,#0f172a,#1e3a8a);min-height:100vh;padding:2rem}.menu-content{max-width:1200px;width:100%}.menu-header{color:#fff;margin-bottom:3rem;padding-top:40px;position:relative;text-align:center}.menu-header svg{color:#60a5fa;margin-bottom:1rem}.menu-header h1{font-size:3rem;margin-bottom:.5rem}.menu-header p{color:#94a3b8;font-size:1.25rem}.menu-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:2rem}@media (min-width:1200px){.menu-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width:1600px){.menu-grid{grid-template-columns:repeat(4,1fr)}}.menu-card{background:#1e293be6;border:2px solid #ffffff1a;border-radius:1.5rem;color:#fff;cursor:pointer;padding:3rem 2rem;text-align:center;transition:all .3s}.menu-card:hover{background:#2563eb33;border-color:#60a5fa;box-shadow:0 20px 60px #60a5fa4d;transform:translateY(-10px)}.menu-card svg{color:#60a5fa;margin-bottom:1.5rem}.menu-card h2{font-size:1.75rem;margin-bottom:.5rem}.menu-card p{color:#94a3b8;font-size:1rem;margin-bottom:1rem}.menu-badge{background:#60a5fa33;border:1px solid #60a5fa;border-radius:.5rem;color:#60a5fa;display:inline-block;font-size:.875rem;font-weight:600;padding:.5rem 1rem}.logout-button{background:#ef444433;border:1px solid #ef4444;border-radius:.75rem;color:#fca5a5;cursor:pointer;font-size:1rem;font-weight:600;padding:1rem;transition:all .2s;width:100%}.logout-button:hover{background:#ef44444d}.user-badge{background:#22c55e33;border-radius:20px;color:#22c55e;display:inline-block;font-size:.9rem;font-weight:500;margin-top:.5rem;padding:.5rem 1rem}.dashboard{background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;min-height:100vh;padding:1.5rem}.dashboard-container{margin:0 auto;max-width:1400px}.dashboard-header{flex-wrap:wrap;gap:1rem;margin-bottom:2rem}.back-button,.dashboard-header{align-items:center;display:flex}.back-button{background:#475569cc;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-weight:600;gap:.5rem;padding:.5rem 1rem;transition:all .2s}.back-button:hover{background:#475569}.header-left{align-items:center;display:flex;flex:1 1;gap:1rem}.header-left svg{color:#60a5fa;flex-shrink:0}.header-left h1{font-size:2rem;margin-bottom:.25rem}.header-left p{color:#94a3b8;font-size:.875rem}.btn-refresh{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:2px solid #ffffff4d;border-radius:12px;box-shadow:0 4px 12px #0003;color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:8px;padding:12px;position:relative;transition:all .3s ease}.btn-refresh:hover:not(:disabled){background:#ffffff40;border-color:#ffffff80;box-shadow:0 6px 16px #0000004d;transform:translateY(-2px)}.btn-refresh:hover:not(:disabled) svg{animation:spin 1s linear infinite}.btn-refresh:disabled{cursor:not-allowed;opacity:.5}.error-banner{align-items:center;background:#ef444433;border:1px solid #ef4444;border-radius:.75rem;color:#fca5a5;display:flex;gap:.5rem;margin-bottom:1.5rem;padding:1rem}.loading-state{background:#1e293bcc;border-radius:1rem;padding:3rem;text-align:center}.loading-container{align-items:center;background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:100vh}.loading-container p,.loading-state p{color:#94a3b8;font-size:1.25rem;margin-top:1rem}.loading-spinner{animation:spin 1s linear infinite;border:4px solid #fff3;border-radius:50%;border-top-color:#4dabf7;height:48px;margin-bottom:16px;width:48px}.devices-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.device-card{background:#1e293bcc;border-radius:1rem;box-shadow:0 10px 30px #0000004d;display:flex;flex-direction:column;padding:1.5rem;transition:all .3s}.device-card.active{background:linear-gradient(135deg,#2563eb,#0ea5e9)}.device-card.inactive{opacity:.75}.device-header{gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.device-header,.device-title{align-items:center;display:flex}.device-title{flex:1 1;gap:.75rem;min-width:0}.device-title h2{font-size:1.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.offline-badge{background:#dc2626;border-radius:.25rem;display:inline-block;font-size:.75rem;font-weight:600;padding:.125rem .5rem}.power-button{align-items:center;border:none;border-radius:.5rem;cursor:pointer;display:flex;flex-shrink:0;font-weight:600;gap:.5rem;padding:.5rem 1rem;transition:all .2s}.power-button.on{background:#fff;color:#2563eb}.power-button.off{background:#475569cc;color:#fff}.power-button:hover{transform:scale(1.05)}.temperature-control{background:#ffffff1a;border-radius:.75rem;margin-bottom:1rem;padding:1.5rem}.temperature-control.disabled{background:#4755694d;opacity:.5}.temp-display{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr;margin-bottom:1rem}.temp-item{text-align:center}.temp-label{font-size:.875rem;margin-bottom:.5rem;opacity:.8}.temp-value{align-items:center;display:flex;font-size:2rem;font-weight:700;gap:.25rem;justify-content:center}.temp-buttons{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:1fr 1fr}.temp-btn{background:#fff3;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:1.25rem;font-weight:700;padding:.75rem;transition:all .2s}.temp-btn:hover{background:#ffffff4d;transform:scale(.95)}.device-info{display:flex;flex:1 1;flex-direction:column;gap:.75rem}.info-item{background:#ffffff1a;border-radius:.5rem;display:flex;flex-direction:column;gap:.75rem;padding:.75rem}.info-label{font-size:.875rem;opacity:.8}.info-label,.info-value{font-weight:600}.mode-selector{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(4,1fr)}.mode-btn{align-items:center;background:#ffffff1a;border:2px solid #0000;border-radius:.5rem;cursor:pointer;display:flex;font-size:1.5rem;justify-content:center;padding:.75rem;transition:all .2s}.mode-btn:hover{background:#fff3;transform:scale(1.05)}.mode-btn.active{background:#ffffff4d;border-color:#fff;box-shadow:0 0 10px #ffffff4d}.fan-selector{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(4,1fr)}.fan-btn{background:#ffffff1a;border:2px solid #0000;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.75rem;font-weight:600;padding:.5rem;transition:all .2s}.fan-btn:hover{background:#fff3;transform:scale(1.05)}.fan-btn.active{background:#ffffff4d;border-color:#fff;box-shadow:0 0 10px #ffffff4d}.cameras-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.camera-card{background:#1e293be6;border:2px solid #0000;border-radius:1rem;box-shadow:0 10px 30px #0000004d;padding:1.5rem;transition:all .3s ease}.camera-card:hover{box-shadow:0 15px 40px #0006;transform:translateY(-4px)}.camera-card.live-mode{animation:live-pulse 2s ease-in-out infinite;border-color:#ef4444;box-shadow:0 0 20px #ef44444d}@keyframes live-pulse{0%,to{box-shadow:0 0 20px #ef44444d}50%{box-shadow:0 0 30px #ef444480}}.camera-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.camera-header h3{color:#fff;font-size:1.25rem}.camera-status{color:#22c55e;font-size:.875rem;font-weight:600}.camera-status.live{animation:blink 1.5s ease-in-out infinite;color:#ef4444}@keyframes blink{0%,to{opacity:1}50%{opacity:.5}}.camera-preview{align-items:center;background:#0f172acc;border-radius:.75rem;display:flex;flex-direction:column;justify-content:center;margin-bottom:1rem;min-height:200px;padding:1rem;position:relative;text-align:center}.camera-image-container{height:100%;position:relative;width:100%}.camera-image{border-radius:.5rem;cursor:pointer;height:auto;transition:transform .2s;width:100%}.camera-image:hover{transform:scale(1.02)}.camera-loading-overlay{align-items:center;background:#000000b3;border-radius:50%;display:flex;justify-content:center;padding:8px;position:absolute;right:10px;top:10px}.camera-loading-overlay .spin{color:#fff}.camera-timestamp{background:#000000b3;border-radius:4px;bottom:10px;color:#fff;font-size:12px;font-weight:500;left:10px;padding:4px 8px;position:absolute}.camera-preview svg{color:#60a5fa;margin-bottom:1rem}.camera-preview p{color:#94a3b8;font-size:1.125rem;margin-bottom:.5rem}.camera-actions{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:1fr 1fr}.camera-btn{align-items:center;background:#2563eb;border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-weight:600;gap:.5rem;justify-content:center;padding:.75rem;transition:all .2s}.camera-btn:hover:not(:disabled){background:#1d4ed8;transform:translateY(-2px)}.camera-btn:disabled{cursor:not-allowed;opacity:.5}.camera-btn.live-active{background:#ef4444}.camera-btn.live-active:hover{background:#dc2626}.blind-card{background:#1e293bcc;border-radius:1rem;box-shadow:0 10px 30px #0000004d;padding:1.5rem;transition:all .3s}.blind-card.active{background:linear-gradient(135deg,#059669,#10b981)}.blind-card.inactive{opacity:.6}.blind-status{display:flex;gap:.5rem}.status-badge{align-items:center;border-radius:.5rem;display:inline-flex;font-size:.875rem;font-weight:600;gap:.25rem;padding:.25rem .75rem}.status-open{background:#22c55e33;border:1px solid #22c55e;color:#22c55e}.status-closed{background:#ef444433;border:1px solid #ef4444;color:#fca5a5}.status-closing,.status-opening{background:#3b82f633;border:1px solid #3b82f6;color:#60a5fa}.status-stopped{background:#fbbf2433;border:1px solid #f59e0b;color:#fbbf24}.blind-position{background:#ffffff1a;border-radius:.75rem;margin-bottom:1rem;padding:1.5rem}.position-display{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.position-label{font-size:.875rem;opacity:.8}.position-value{font-size:2rem;font-weight:700}.position-bar{background:#fff3;border-radius:.5rem;height:1rem;overflow:hidden;position:relative}.position-fill{background:linear-gradient(90deg,#22c55e,#10b981);border-radius:.5rem;box-shadow:0 0 10px #22c55e80;height:100%;transition:width .5s ease}.blind-controls{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:1fr 1fr 1fr;margin-bottom:1rem}.blind-btn{align-items:center;border:none;border-radius:.75rem;color:#fff;cursor:pointer;display:flex;font-weight:600;gap:.5rem;justify-content:center;padding:1rem;transition:all .2s}.blind-btn:disabled{cursor:not-allowed;opacity:.5}.blind-btn-open{background:linear-gradient(135deg,#22c55e,#10b981)}.blind-btn-open:hover:not(:disabled){background:linear-gradient(135deg,#16a34a,#059669);transform:translateY(-2px)}.blind-btn-stop{background:linear-gradient(135deg,#f59e0b,#f97316)}.blind-btn-stop:hover:not(:disabled){background:linear-gradient(135deg,#d97706,#ea580c);transform:translateY(-2px)}.blind-btn-close{background:linear-gradient(135deg,#3b82f6,#2563eb)}.blind-btn-close:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-2px)}.blind-presets{background:#ffffff0d;border-radius:.75rem;margin-bottom:1rem;padding:1rem}.preset-label{font-size:.875rem;font-weight:600;margin-bottom:.75rem;opacity:.8}.preset-buttons{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(5,1fr)}.preset-btn{background:#ffffff1a;border:2px solid #0000;border-radius:.5rem;color:#fff;cursor:pointer;font-weight:600;padding:.75rem;transition:all .2s}.preset-btn:hover:not(:disabled){background:#fff3;border-color:#fff6;transform:scale(1.05)}.preset-btn:disabled{cursor:not-allowed;opacity:.5}.blind-info{background:#ffffff0d;border-radius:.5rem;display:flex;flex-direction:column;gap:.5rem;padding:1rem}.info-row{display:flex;font-size:.875rem;justify-content:space-between}.info-row span:first-child{opacity:.8}.info-row span:last-child{font-weight:600}@keyframes pulse-state{0%,to{opacity:1}50%{opacity:.6}}.blind-card .status-closing,.blind-card .status-opening{animation:pulse-state 1.5s ease-in-out infinite}.app-container{background:linear-gradient(135deg,#0f172a,#1e3a8a);min-height:100vh}.app-content{margin:0 auto;max-width:1400px;padding:2rem}.view-header{background:#1e293be6;border-radius:1rem;box-shadow:0 10px 30px #0000004d;gap:1rem;margin-bottom:2rem;padding:1.5rem}.btn-back,.view-header{align-items:center;display:flex}.btn-back{background:#ffffff1a;border:none;border-radius:.5rem;color:#fff;cursor:pointer;gap:.5rem;padding:.75rem 1rem;transition:all .2s}.btn-back:hover{background:#ffffff26}.view-header-content{flex:1 1}.view-header-title{align-items:center;color:#fff;display:flex;gap:1rem}.view-header-title h1{font-size:1.75rem;font-weight:700;margin:0}.view-subtitle{color:#ffffffb3;font-size:.875rem;margin-top:.25rem}.status-indicator{align-items:center;display:flex;font-size:14px;font-weight:500;gap:8px}.status-dot{border-radius:50%;height:8px;width:8px}.status-dot.online{background:#51cf66;box-shadow:0 0 8px #51cf6680}.status-dot.offline{background:#868e96}.power-badge{border-radius:16px;font-size:12px;font-weight:600;letter-spacing:.5px;padding:6px 16px;text-transform:uppercase}.power-badge.on{background:#51cf6633;color:#51cf66}.power-badge.off{background:#ffffff26;color:#ffffffb3}.heatpump-container,.vmc-container{display:flex;flex-direction:column;gap:2rem}.heatpump-status-card,.vmc-status-card{background:#1e293be6;border-radius:1rem;box-shadow:0 10px 30px #0000004d;color:#fff;padding:2rem;transition:all .3s}.vmc-status-card.online{background:linear-gradient(135deg,#0891b2,#06b6d4)}.heatpump-status-card.online{background:linear-gradient(135deg,#dc2626,#f97316)}.heatpump-status-card.offline,.vmc-status-card.offline{opacity:.7}.heatpump-status-header,.vmc-status-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.5rem}.vmc-power-section{display:flex;justify-content:center;padding:1rem 0}.btn-power-vmc{align-items:center;background:#fff3;border:none;border-radius:.75rem;color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:.75rem;padding:1rem 2rem;transition:all .2s}.btn-power-vmc:hover:not(:disabled){background:#ffffff4d;transform:translateY(-2px)}.btn-power-vmc.on{background:#22c55e4d}.btn-power-vmc:disabled{cursor:not-allowed;opacity:.5}.temp-display-section{grid-gap:24px;align-items:center;display:grid;gap:24px;grid-template-columns:1fr auto 1fr;margin-bottom:24px}.temp-display-main,.temp-display-target{align-items:center;display:flex;gap:16px}.target-icon,.temp-icon{flex-shrink:0;opacity:.9}.temp-reading{display:flex;flex-direction:column}.temp-divider{background:#ffffff4d;height:70px;width:2px}.temp-progress{margin-top:20px}.progress-bar{background:#00000026;border-radius:5px;height:10px;margin-bottom:8px;overflow:hidden}.progress-fill{background:#fff;border-radius:5px;height:100%;transition:width .5s ease}.progress-labels{display:flex;font-size:12px;justify-content:space-between;opacity:.85}.heatpump-controls-card{background:#fffffff2;border-radius:1rem;box-shadow:0 10px 30px #00000026;color:#1f2937;padding:2rem}.heatpump-controls-card h3{font-size:1.25rem;font-weight:600;margin:0 0 1.5rem}.control-section{margin-bottom:1.5rem}.control-section:last-child{margin-bottom:0}.control-header{color:#495057;font-size:.9rem;margin-bottom:1rem}.btn-power,.control-header{align-items:center;display:flex;font-weight:600;gap:.75rem}.btn-power{border:none;border-radius:.75rem;cursor:pointer;font-size:1rem;justify-content:center;padding:1rem;transition:all .3s ease;width:100%}.btn-power.on{background:linear-gradient(135deg,#51cf66,#40c057);box-shadow:0 4px 12px #40c05740;color:#fff}.btn-power.off{background:linear-gradient(135deg,#868e96,#adb5bd);color:#fff}.btn-power:hover:not(:disabled){transform:translateY(-2px)}.btn-power:disabled{cursor:not-allowed;opacity:.5}.temp-slider-container{padding:.5rem 0}.temp-slider{-webkit-appearance:none;background:#e9ecef;border-radius:4px;height:8px;margin-bottom:1rem;outline:none;width:100%}.temp-slider::-webkit-slider-thumb{-webkit-appearance:none;background:#2563eb;border-radius:50%;box-shadow:0 2px 8px #2563eb66;cursor:pointer;height:24px;width:24px}.temp-quick-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.temp-quick-btn{background:#fff;border:2px solid #e9ecef;border-radius:.5rem;color:#495057;cursor:pointer;flex:1 1;font-weight:600;min-width:50px;padding:.75rem;transition:all .2s}.temp-quick-btn:hover:not(:disabled){border-color:#2563eb;color:#2563eb}.temp-quick-btn.active{background:#2563eb;border-color:#2563eb;color:#fff}.temp-quick-btn:disabled{cursor:not-allowed;opacity:.5}.heatpump-info-card{background:#fffffff2;border-radius:1rem;box-shadow:0 10px 30px #00000026;color:#1f2937;padding:2rem}.heatpump-info-card h3{font-size:1.25rem;font-weight:600;margin:0 0 1.5rem}.info-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.info-grid .info-item{align-items:center;background:#f8f9fa;border-radius:.75rem;display:flex;gap:1rem;padding:1rem}.info-grid .info-item svg{color:#2563eb;flex-shrink:0}.info-grid .info-label{color:#6c757d;font-size:.75rem;margin-bottom:.25rem;text-transform:uppercase}.info-grid .info-value{color:#212529;font-size:1rem;font-weight:600}.vmc-metrics-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:1.5rem}.metric-card{align-items:center;background:#fffffff2;border-radius:1rem;box-shadow:0 4px 20px #00000026;display:flex;gap:1.25rem;padding:1.5rem;transition:all .3s}.metric-card:hover{box-shadow:0 8px 30px #00000040;transform:translateY(-5px)}.metric-icon{align-items:center;border-radius:.75rem;display:flex;flex-shrink:0;height:56px;justify-content:center;width:56px}.metric-card.temp-indoor .metric-icon{background:linear-gradient(135deg,#ef4444,#f87171);color:#fff}.metric-card.temp-outdoor .metric-icon{background:linear-gradient(135deg,#3b82f6,#60a5fa);color:#fff}.metric-card.humidity-indoor .metric-icon{background:linear-gradient(135deg,#10b981,#34d399);color:#fff}.metric-card.humidity-outdoor .metric-icon{background:linear-gradient(135deg,#06b6d4,#22d3ee);color:#fff}.metric-card.co2 .metric-icon{background:linear-gradient(135deg,#8b5cf6,#a78bfa);color:#fff}.metric-card.filter .metric-icon{background:linear-gradient(135deg,#f59e0b,#fbbf24);color:#fff}.metric-content{flex:1 1}.metric-label{color:#6b7280;font-size:.875rem;font-weight:600;letter-spacing:.5px;margin-bottom:.5rem;text-transform:uppercase}.metric-value{color:#111827;font-size:2rem;font-weight:700;line-height:1}.co2-status{border-radius:.25rem;display:inline-block;font-size:.75rem;font-weight:600;margin-top:.5rem;padding:.25rem .5rem}.co2-status.good{background:#10b9811a;color:#10b981}.co2-status.medium{background:#f59e0b1a;color:#f59e0b}.co2-status.bad{background:#ef44441a;color:#ef4444}.filter-bar,.humidity-bar{background:#e5e7eb;border-radius:4px;height:8px;margin-top:.75rem;overflow:hidden}.humidity-fill{background:linear-gradient(90deg,#10b981,#34d399)}.filter-fill,.humidity-fill{border-radius:4px;height:100%;transition:width .5s ease}.filter-fill{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.filter-fill.warning{background:linear-gradient(90deg,#ef4444,#f87171)}.filter-warning{color:#ef4444;display:block;font-size:.75rem;margin-top:.5rem}.vmc-climate-comparison{background:#fffffff2;border-radius:1rem;box-shadow:0 10px 30px #00000026;color:#1f2937;padding:2rem}.vmc-climate-comparison h3{font-size:1.25rem;font-weight:600;margin:0 0 1.5rem}.climate-bars{gap:1.5rem}.climate-bars,.climate-item{display:flex;flex-direction:column}.climate-item{gap:.75rem}.climate-label{color:#374151;font-weight:600}.climate-compare{display:flex;flex-direction:column;gap:.5rem}.compare-bar{grid-gap:1rem;align-items:center;display:grid;gap:1rem;grid-template-columns:80px 1fr 60px}.compare-bar span:first-child{color:#6b7280;font-size:.875rem}.compare-bar span:last-child{font-weight:600;text-align:right}.compare-bar .bar{background:#e5e7eb;border-radius:6px;height:12px;overflow:hidden}.compare-bar .bar>div{border-radius:6px;height:100%;transition:width .5s ease}.compare-bar .bar.indoor>div{background:linear-gradient(90deg,#ef4444,#f87171)}.compare-bar .bar.outdoor>div{background:linear-gradient(90deg,#3b82f6,#60a5fa)}.spin,.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.dashboard{padding:1rem}.dashboard-header{align-items:flex-start;flex-direction:column}.header-left h1{font-size:1.5rem}.cameras-grid,.devices-grid{grid-template-columns:1fr}.menu-header h1{font-size:2rem}.blind-controls,.menu-grid{grid-template-columns:1fr}.preset-buttons{grid-template-columns:repeat(3,1fr)}.position-value{font-size:1.5rem}.temp-display-section,.vmc-metrics-grid{grid-template-columns:1fr}.temp-display-section{gap:1rem}.temp-divider{display:none}.app-content{padding:1rem}.camera-actions{grid-template-columns:1fr}}@media (max-width:480px){.fan-selector,.mode-selector{grid-template-columns:repeat(2,1fr)}.temp-quick-buttons{grid-template-columns:repeat(3,1fr)}.metric-card{padding:1rem}.metric-icon{height:48px;width:48px}.metric-value{font-size:1.5rem}}
/*# sourceMappingURL=main.bc535eb7.css.map*/