:root{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--text-primary: #f1f5f9;--text-secondary: #cbd5e1;--text-muted: #94a3b8;--border-color: #334155;--border-light: #475569;--accent-primary: #0ea5e9;--accent-secondary: #06b6d4;--success: #10b981;--warning: #f59e0b;--error: #ef4444;--info: #3b82f6;--shadow: rgba(0, 0, 0, .3);--shadow-lg: rgba(0, 0, 0, .5);--gradient-primary: linear-gradient(135deg, #0ea5e9 0%, #06b6d4 100%);--gradient-secondary: linear-gradient(135deg, #1e293b 0%, #334155 100%);--scada-blue: #0ea5e9;--scada-cyan: #06b6d4;--scada-green: #10b981;--scada-orange: #f97316;--scada-red: #ef4444;--scada-yellow: #eab308;--scada-panel: #1e293b;--scada-grid: rgba(14, 165, 233, .1);--scada-glow: rgba(14, 165, 233, .5);--status-online: #10b981;--status-offline: #64748b;--status-warning: #f59e0b;--status-alarm: #ef4444;--status-unknown: #6b7280}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg-primary);color:var(--text-primary);transition:background-color .3s ease,color .3s ease}button{border-radius:8px;border:1px solid var(--border-color);padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:all .25s ease}button:hover{background-color:var(--bg-tertiary);border-color:var(--accent-primary)}button:focus,button:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}input,select,textarea{background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);border-radius:8px;padding:.75rem;font-family:inherit;transition:all .2s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #4f46e51a}a{color:var(--accent-primary);text-decoration:none;font-weight:500}a:hover{color:var(--accent-secondary)}.spinner{animation:spin 1s linear infinite}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;gap:1rem;color:var(--text-secondary)}.loading-container .spinner{font-size:2rem;color:var(--accent-primary)}.error-banner{background:var(--error);color:#fff;padding:1rem 2rem;margin:1rem 2rem;border-radius:8px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 4px 12px #ef44444d}.error-banner button{background:none;border:none;color:#fff;padding:.5rem;cursor:pointer;border-radius:4px}.error-banner button:hover{background:#fff3}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.modal{background:var(--bg-primary);border-radius:16px;box-shadow:0 20px 60px var(--shadow-lg);max-width:500px;width:90%;max-height:90vh;overflow-y:auto;border:1px solid var(--border-color)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:2rem 2rem 1rem;border-bottom:1px solid var(--border-light)}.modal-header h2{margin:0;font-size:1.5rem;font-weight:700;color:var(--text-primary)}.modal-header button{background:none;border:none;font-size:1.25rem;color:var(--text-secondary);padding:.5rem;border-radius:8px;cursor:pointer}.modal-header button:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-body{padding:2rem}.modal-footer{display:flex;gap:1rem;justify-content:flex-end;padding:1rem 2rem 2rem;border-top:1px solid var(--border-light)}.form-group.checkbox{display:flex;align-items:center;gap:.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;color:var(--text-primary)}.form-group input,.form-group select{width:100%}.form-group.checkbox input{width:auto}.btn-primary{background:var(--accent-primary);color:#fff;border:none}.btn-primary:hover{background:var(--accent-secondary)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.btn-danger{background:var(--error);color:#fff;border:none}@media(max-width:768px){.modal{margin:1rem;width:calc(100% - 2rem)}.modal-header,.modal-body,.modal-footer{padding:1rem}.modal-footer{flex-direction:column}.modal-footer button{width:100%}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460)}.login-background{position:absolute;inset:0;overflow:hidden}.grid-overlay{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:50px 50px;animation:grid-move 20s linear infinite}@keyframes grid-move{0%{transform:translate(0)}to{transform:translate(50px,50px)}}.login-card{position:relative;z-index:1;background:#fffffff2;border-radius:20px;padding:3rem;width:100%;max-width:450px;box-shadow:0 20px 60px #0000004d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.login-header{text-align:center;margin-bottom:2.5rem}.logo-container{display:inline-flex;align-items:center;justify-content:center;width:250px;height:auto;background:transparent}.login-container .logo-icon{display:block;width:200px;height:auto;object-fit:contain}.login-header h1{margin:0;font-size:2rem;font-weight:700;color:#1a1a2e;margin-bottom:.5rem}.subtitle{margin:0;font-size:.95rem;color:#666;font-weight:400}.login-form{margin-bottom:2rem}.error-message{background:#fee;border:1px solid #fcc;border-radius:8px;padding:1rem;margin-bottom:1.5rem;color:#c33;font-size:.9rem;display:flex;align-items:center;gap:.5rem}.form-group{margin-bottom:1.5rem}.form-group label{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;color:#333;margin-bottom:.5rem}.input-icon{color:#667eea;font-size:1rem}.form-group input{width:100%;padding:.875rem 1rem;border:2px solid #e0e0e0;border-radius:10px;font-size:1rem;transition:all .3s ease;background:#fff;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input:disabled{background:#f5f5f5;cursor:not-allowed}.login-button{width:100%;padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:10px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:.5rem;box-shadow:0 4px 15px #667eea66}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea80}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.7;cursor:not-allowed}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.login-footer{text-align:center;padding-top:1.5rem;border-top:1px solid #e0e0e0}.default-credentials{margin:0;font-size:.85rem;color:#666;margin-bottom:.5rem}.default-credentials strong{color:#667eea;font-family:Courier New,monospace}.version{margin:0;font-size:.75rem;color:#999}@media(max-width:1000px){.login-card{padding:2rem 1.5rem;margin:1rem;border-radius:15px}.login-header h1{font-size:1.75rem}.logo-container{width:280px;height:auto}.login-container .logo-icon{width:220px;height:auto}}@media(min-width:1001px){.logo-container{width:280px;height:auto}.login-container .logo-icon{width:220px;height:auto}}.sidebar{--header-height: 56px;position:fixed;left:0;top:var(--header-height);width:280px;height:calc(100vh - var(--header-height));background:var(--bg-secondary);border-right:1px solid var(--border-color);box-shadow:none;z-index:1000;overflow-y:auto}.sidebar-fixed{transform:none!important}.sidebar-header{padding:1.5rem 1.25rem;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.sidebar-header h3{margin:0;font-size:1.5rem;font-weight:700;color:var(--text-primary)}.sidebar-nav{padding:1rem 0;display:flex;flex-direction:column;gap:.5rem}.sidebar-item{display:flex;align-items:center;gap:1rem;padding:.9rem 1.25rem;background:none;border:none;color:var(--text-secondary);font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease;position:relative;text-align:left;width:100%}.sidebar-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:transparent;transition:background .2s ease}.sidebar-item:hover{background:var(--bg-tertiary);color:var(--text-primary);transform:none;border-left:4px solid var(--accent-primary);padding-left:calc(1.25rem - 4px)}.sidebar-item:hover:before{background:transparent}.sidebar-item.active{background:var(--bg-tertiary);color:var(--accent-primary);font-weight:700;border-left:4px solid var(--accent-primary);padding-left:calc(1.25rem - 4px)}.sidebar-item.active:before{background:transparent}.sidebar-icon{font-size:1.25rem;min-width:20px;transition:transform .2s ease}.sidebar-item:hover .sidebar-icon{transform:scale(1.1)}.sidebar-item.active .sidebar-icon{color:var(--accent-primary)}@media(max-width:768px){.sidebar{width:100%;max-width:320px;top:56px;height:calc(100vh - 56px)}.sidebar-header{padding:1.5rem}.sidebar-item{padding:1rem 1.5rem}}@media(max-width:480px){.sidebar{width:100vw;max-width:none}}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-track{background:var(--bg-tertiary)}.sidebar::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.sidebar-item{animation:slideInFromLeft .3s ease-out}.sidebar-item:nth-child(2){animation-delay:.05s}.sidebar-item:nth-child(3){animation-delay:.1s}.sidebar-item:nth-child(4){animation-delay:.15s}.sidebar-item:nth-child(5){animation-delay:.2s}.sidebar-item:nth-child(6){animation-delay:.25s}@keyframes slideInFromLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.sidebar-item:focus{outline:2px solid var(--accent-primary);outline-offset:-2px}.sidebar-close:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.sidebar-group{display:flex;flex-direction:column}.sidebar-item .expand-icon{margin-left:auto;font-size:.875rem;transition:transform .2s ease}.sidebar-submenu{display:flex;flex-direction:column;gap:.25rem;padding-left:0;background:var(--bg-tertiary);animation:slideDown .2s ease-out}.submenu-item{padding-left:3rem!important;font-size:.9rem}.submenu-item:hover,.submenu-item.active{padding-left:calc(3rem - 4px)!important}@keyframes slideDown{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:500px}}.profile-session .header-icon{font-size:var(--ps-font-topic);color:var(--accent-primary);filter:drop-shadow(0 0 8px var(--accent-primary))}.profile-session .sub-header{color:var(--text-secondary);margin:0;font-size:var(--ps-font-subtopic);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.profile-session{padding:2rem;max-width:1600px;margin:0 auto;background:transparent;min-height:0;position:relative;--ps-font-topic: 1rem;--ps-font-subtopic: .8125rem;--ps-font-content: .75rem;font-size:var(--ps-font-content)}.profile-session .page-header{margin-bottom:2rem}.profile-session .header-content{display:flex;justify-content:space-between;align-items:center;gap:2rem;background:var(--bg-secondary);padding:1.5rem;border-radius:12px;border:1px solid var(--border-color);box-shadow:0 4px 12px var(--shadow);position:relative;overflow:hidden}.profile-session .header-content:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--accent-primary),var(--accent-secondary));box-shadow:0 0 10px var(--scada-glow)}.profile-session .header-left{display:flex;align-items:center;gap:1rem}.profile-session .header-left h2{margin:0 0 .25rem;font-size:var(--ps-font-topic);font-weight:800;color:var(--text-primary);text-transform:uppercase;letter-spacing:1px}.profile-session .section-header{display:flex;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid var(--border-color);background:var(--bg-secondary);border-radius:0;border:1px solid var(--border-color);box-shadow:none;position:relative;overflow:hidden;gap:1rem}.profile-session .section-icon{font-size:var(--ps-font-topic);color:var(--accent-primary);margin-right:1rem}.profile-session .section-header h2{margin:0;color:var(--text-primary);font-weight:600;font-size:var(--ps-font-topic);text-transform:uppercase;letter-spacing:1px}.profile-session .profile-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;margin-bottom:2rem;width:100%}.profile-session .profile-card{background:var(--bg-secondary);border-radius:16px;box-shadow:0 4px 12px var(--shadow);border:1px solid var(--border-color);overflow:hidden;transition:transform .2s,box-shadow .2s}.profile-session .profile-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px var(--shadow)}.profile-session .card-header{background:var(--bg-tertiary);color:var(--text-primary);padding:1.5rem;display:flex;align-items:center;border-bottom:1px solid var(--border-color)}.profile-session .card-icon{font-size:var(--ps-font-subtopic);margin-right:.75rem;color:var(--accent-primary)}.profile-session .card-header h3{margin:0;font-weight:600;font-size:var(--ps-font-subtopic);color:var(--text-primary);text-transform:uppercase;letter-spacing:.5px}.profile-session .card-content{padding:1.5rem}.profile-session .profile-avatar{display:flex;align-items:center;margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.profile-session .avatar-circle{width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));display:flex;align-items:center;justify-content:center;color:#fff;font-size:var(--ps-font-topic);font-weight:600;margin-right:1rem;flex-shrink:0}.profile-session .avatar-info h4{margin:0 0 .25rem;color:var(--text-primary);font-weight:600;font-size:var(--ps-font-subtopic)}.profile-session .username{color:var(--text-secondary);font-size:var(--ps-font-content)}.profile-session .profile-details{display:flex;flex-direction:column;gap:1rem}.profile-session .detail-row{display:flex;align-items:center;gap:.75rem}.profile-session .detail-icon{color:var(--text-secondary);font-size:var(--ps-font-content);width:16px}.profile-session .detail-icon.active{color:var(--success)}.profile-session .detail-icon.inactive{color:var(--error)}.profile-session .detail-label{font-weight:600;color:var(--text-primary);min-width:80px;font-size:var(--ps-font-subtopic)}.profile-session .detail-value{color:var(--text-primary);flex:1;font-size:var(--ps-font-content)}.profile-session .detail-value.description{font-style:italic;color:var(--text-secondary)}.profile-session .status-badge{padding:.25rem .75rem;border-radius:9999px;font-size:var(--ps-font-content);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.profile-session .status-badge.active{background:#10b98126;color:var(--success);border:1px solid var(--success)}.profile-session .status-badge.inactive{background:#ef444426;color:var(--error);border:1px solid var(--error)}.profile-session .role-badge-large{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:1rem;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));color:#fff;border-radius:8px;margin-bottom:1.5rem;font-weight:600;font-size:var(--ps-font-topic)}.profile-session .role-details{display:flex;flex-direction:column;gap:1rem}.profile-session .session-stats{display:flex;flex-direction:column;gap:.75rem}.profile-session .stat-item{display:flex;align-items:flex-start;gap:.75rem;padding:.5rem .75rem;background:var(--bg-tertiary);border-radius:6px;border:1px solid var(--border-color);border-left:3px solid var(--accent-primary)}.profile-session .stat-icon{background:var(--accent-primary);color:#fff;padding:.35rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--ps-font-content);flex-shrink:0}.profile-session .stat-content{display:flex;flex-direction:column;gap:.125rem;flex:1}.profile-session .session-card .card-header,.profile-session .session-card .card-content{padding:1rem}.profile-session .session-card .stat-item{align-items:center}.profile-session .session-card .stat-label,.profile-session .session-card .stat-value,.profile-session .session-card .stat-subtitle{line-height:1.2}.profile-session .stat-label{font-weight:600;color:var(--text-primary);font-size:var(--ps-font-subtopic)}.profile-session .stat-value{color:var(--text-primary);font-weight:500;font-size:var(--ps-font-content)}.profile-session .stat-subtitle{color:var(--text-secondary);font-size:var(--ps-font-content);font-style:italic}.profile-session .permissions-card{grid-column:1 / -1}.profile-session .permissions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.profile-session .permission-group h4{margin:0 0 .75rem;color:var(--text-primary);font-weight:600;font-size:var(--ps-font-subtopic);padding-bottom:.5rem;border-bottom:1px solid var(--border-color)}.profile-session .permission-badges{display:flex;flex-wrap:wrap;gap:.5rem}.profile-session .perm-badge{padding:.25rem .75rem;border-radius:9999px;font-size:var(--ps-font-content);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.profile-session .perm-badge.granted{background:#10b98126;color:var(--success);border:1px solid var(--success)}.profile-session .perm-badge.denied{background:#ef444426;color:var(--error);border:1px solid var(--error)}@media(max-width:1024px){.profile-session{padding:1rem}.profile-session .profile-grid{grid-template-columns:1fr;gap:1rem}.profile-session .profile-card{margin-bottom:1rem}.profile-session .card-header,.profile-session .card-content{padding:1rem}}.dark .profile-session .profile-card{background:var(--bg-secondary);border:1px solid var(--border-color);box-shadow:0 4px 12px var(--shadow)}.dark .profile-session .profile-card:hover{box-shadow:0 8px 20px var(--shadow)}.dark .profile-session .card-header{background:var(--bg-tertiary)}.user-management{padding:2rem;max-width:1600px;margin:0 auto;background:transparent;min-height:0;position:relative}.user-management:before{content:none}.user-management .page-header{margin-bottom:2rem;position:relative;z-index:1}.user-management .header-content{display:flex;justify-content:space-between;align-items:center;gap:2rem;background:var(--bg-secondary);padding:2rem;border-radius:0;border:1px solid var(--border-color);box-shadow:none;position:relative;overflow:hidden}.user-management .header-content:before{display:none}.user-management .header-left{display:flex;align-items:center;gap:1rem}.user-management .header-icon{font-size:2.5rem;color:var(--accent-primary);filter:drop-shadow(0 0 8px var(--accent-primary))}.user-management .page-header h1{font-size:2rem;font-weight:800;margin:0 0 .5rem;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-transform:uppercase;letter-spacing:1px}.user-management .page-header p{color:var(--text-secondary);margin:0;font-size:1rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.user-management .add-user-btn{display:flex;align-items:center;gap:.75rem;padding:1rem 2rem;background:var(--accent-primary);color:#fff;border:none;border-radius:10px;font-weight:700;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px #2563eb66;text-transform:uppercase;letter-spacing:.5px;font-size:.95rem}.user-management .add-user-btn:hover{background:var(--accent-secondary);transform:translateY(-2px);box-shadow:0 6px 20px #2563eb80}.user-management .add-user-btn svg{font-size:1.1rem}.user-management .stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem;margin-bottom:2rem;position:relative;z-index:1}.user-management .stat-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:0;padding:1.75rem;box-shadow:none;transition:all .3s ease;position:relative;overflow:hidden}.stat-card:before,.stat-card:after{display:none}.stat-card:hover{transform:none;box-shadow:0 2px 8px var(--shadow);border-color:var(--accent-primary)}.stat-card h3{font-size:.8rem;font-weight:700;color:var(--text-secondary);margin:0 0 .75rem;text-transform:uppercase;letter-spacing:1px}.stat-number{font-size:2.5rem;font-weight:900;color:var(--accent-primary);margin:0;line-height:1;text-shadow:0 0 20px rgba(37,99,235,.3)}.search-container{margin-bottom:2rem}.search-box{position:relative;max-width:400px}.search-icon{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:1rem}.search-box input{width:100%;padding:.75rem 1rem .75rem 3rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font-size:1rem;transition:all .2s ease}.search-box input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #4f46e51a}.users-table-container{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:16px;overflow:hidden;box-shadow:0 4px 12px var(--shadow);position:relative;z-index:1}.users-table{width:100%;border-collapse:collapse}.users-table td .user-info{align-items:center;gap:1rem}.users-table td .user-name,.users-table td .user-email,.users-table td .user-email-full{display:block;line-height:1.2}.users-table td .role-badge,.users-table td .status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:80px;min-height:32px;font-size:.85rem}.users-table td .action-buttons{display:flex;align-items:center;justify-content:flex-start;gap:.5rem}.users-table td .date-info{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem}.users-table td .time-since{font-size:.75rem;color:var(--text-muted);margin-top:.1rem}.user-info.user-info-row{display:flex;flex-direction:row;align-items:center;gap:1.25rem}.user-info.user-info-row .user-avatar{margin-right:1rem}.user-info.user-info-row .user-details{display:flex;flex-direction:column;justify-content:center;gap:.1rem}.user-info.user-info-row .user-name,.user-info.user-info-row .user-email,.user-info.user-info-row .user-email-full{margin-right:0;margin-bottom:0;line-height:1.2}.user-avatar{width:48px;height:48px;border-radius:12px;background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:.875rem}.user-name{font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.user-email{font-size:.75rem;color:var(--text-muted);margin-bottom:.125rem}.user-email-full{font-size:.75rem;color:var(--text-secondary)}.role-badge{display:inline-block;padding:.375rem .75rem;border-radius:6px;color:#fff;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.user-management .status-badge{display:inline-block;padding:.375rem .75rem;border-radius:6px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.user-management .status-badge.active{background:var(--success);color:#fff}.user-management .status-badge.inactive{background:var(--text-muted);color:#fff}.user-management .date-info{font-size:.875rem}.user-management .time-since{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}.user-management .action-buttons{display:flex;gap:.5rem}.user-management .action-btn{width:36px;height:36px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;padding:0}.user-management .action-btn svg{font-size:1rem;width:16px;height:16px}.user-management .action-btn.view{color:var(--info)}.user-management .action-btn.edit{color:var(--warning)}.user-management .action-btn.delete{color:var(--error)}.user-management .action-btn.view:hover{background:var(--info);color:#fff;border-color:var(--info);transform:scale(1.1);box-shadow:0 2px 8px #3b82f666}.user-management .action-btn.edit:hover{background:var(--warning);color:#fff;border-color:var(--warning);transform:scale(1.1);box-shadow:0 2px 8px #f59e0b66}.user-management .action-btn.delete:hover{background:var(--error);color:#fff;border-color:var(--error);transform:scale(1.1);box-shadow:0 2px 8px #ef444466}.user-management .empty-state{text-align:center;padding:4rem 2rem;color:var(--text-muted)}.user-management .empty-state svg{font-size:3rem;margin-bottom:1rem;opacity:.5}.user-management .empty-state h3{margin:0 0 .5rem;color:var(--text-secondary)}.user-management .empty-state p{margin:0;font-size:.875rem}.user-management .loading-container,.user-management .error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center;color:var(--text-secondary)}.loading-spinner{width:40px;height:40px;border:4px solid var(--border-light);border-top:4px solid var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-message{color:var(--error);margin-bottom:1rem;font-weight:600}.retry-button{padding:.5rem 1rem;background:var(--accent-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:500;transition:background .2s ease}.retry-button:hover{background:var(--accent-secondary)}.user-management .modal{background:var(--bg-primary)}.user-management .modal-header{background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-tertiary) 100%)}.section-header{display:flex;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid var(--border-color)}.section-icon{font-size:1.5rem;color:var(--accent-primary);margin-right:1rem}.section-header h2{margin:0;color:var(--text-primary);font-weight:600}.management-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;gap:1rem}.search-input{width:100%;padding:.75rem 1rem .75rem 2.5rem;border:1px solid var(--border-color);border-radius:8px;font-size:.9rem;background:var(--bg-secondary);color:var(--text-primary);transition:border-color .2s,box-shadow .2s}.search-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #4f46e51a}.add-button{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:var(--success);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.add-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #10b98166}.stat-value{font-size:2rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.stat-label{color:var(--text-secondary);font-size:.9rem;font-weight:500}.users-table thead{background:var(--bg-tertiary);border-bottom:1px solid var(--border-color)}.user-row{border-bottom:1px solid var(--border-light);transition:background-color .2s}.user-row:hover{background-color:var(--bg-tertiary)}.user-details{display:flex;flex-direction:column;gap:.125rem}.user-username{color:var(--text-secondary);font-size:.8rem}.role-admin{background:var(--error)}.role-engineer{background:var(--info)}.user-management .role-operator{background:var(--warning)}.user-management .role-viewer{background:var(--success)}.user-management .role-default{background:var(--text-muted)}.user-management .date-cell{color:var(--text-secondary);font-size:.875rem}.user-management .view-btn{background:var(--info);color:#fff}.user-management .view-btn:hover{background:var(--info);opacity:.9;transform:scale(1.05)}.user-management .edit-btn{background:var(--warning);color:#fff}.user-management .edit-btn:hover{background:var(--warning);opacity:.9;transform:scale(1.05)}.user-management .delete-btn{background:var(--error);color:#fff}.user-management .delete-btn:hover{background:var(--error);opacity:.9;transform:scale(1.05)}.user-management .no-results{padding:3rem;text-align:center;color:var(--text-muted)}@media(max-width:1024px){.user-management .users-table-container{overflow-x:auto}.user-management .users-table{min-width:800px}}@media(max-width:768px){.user-management{padding:1rem}.header-content{flex-direction:column;align-items:stretch;gap:1rem}.management-controls{flex-direction:column;align-items:stretch}.search-container{max-width:none}.stats-grid{grid-template-columns:repeat(2,1fr);gap:1rem}.stat-card{padding:1rem}.stat-number{font-size:1.5rem}.user-management .users-table th,.user-management .users-table td{padding:.75rem .5rem}.user-management .user-info{gap:.75rem;min-width:200px}.user-management .user-avatar{width:40px;height:40px;font-size:.75rem}.user-management .action-buttons{flex-direction:column;gap:.25rem}.user-management .action-btn{width:28px;height:28px;font-size:.75rem}}@media(max-width:480px){.user-management .stats-grid{grid-template-columns:1fr}.user-management .page-header h1{font-size:1.5rem}.user-management .users-table{min-width:600px}.user-management .users-table th,.user-management .users-table td{padding:.5rem;font-size:.875rem}}.role-management .header-left{display:flex;flex-direction:row;align-items:flex-start;gap:1rem}.role-management .header-left>div{display:flex;flex-direction:column;align-items:flex-start}.role-management{padding:2rem;max-width:1600px;margin:0 auto;background:transparent;min-height:0;position:relative}.role-management .page-header{margin-bottom:2rem;position:relative;z-index:1}.role-management .header-content{display:flex;justify-content:space-between;align-items:center;gap:2rem;background:var(--bg-secondary);padding:2rem;border-radius:0;border:1px solid var(--border-color);box-shadow:none;position:relative;overflow:hidden}.role-management .header-icon{font-size:2.5rem;color:var(--accent-primary);filter:drop-shadow(0 0 8px var(--accent-primary));margin-right:1rem}.role-management .header-left h2{font-size:1.5rem;font-weight:700;margin:0 0 .25rem;color:var(--accent-primary);text-transform:uppercase;letter-spacing:1px}.role-management .sub-header{color:var(--text-secondary);margin:0;font-size:1rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.role-management .add-user-btn{display:flex;align-items:center;gap:.75rem;padding:1rem 2rem;background:var(--accent-primary);color:#fff;border:none;border-radius:10px;font-weight:700;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px #2563eb66;text-transform:uppercase;letter-spacing:.5px;font-size:.95rem}.role-management .add-user-btn:hover{background:var(--accent-secondary);transform:translateY(-2px);box-shadow:0 6px 20px #2563eb80}.role-management .add-user-btn svg{font-size:1.1rem}.users-table-container{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:16px;overflow:hidden;box-shadow:0 4px 12px var(--shadow);position:relative;z-index:1;max-width:100%}.users-table{width:100%;min-width:800px;border-collapse:collapse}.users-table th{background:linear-gradient(135deg,var(--bg-tertiary) 0%,var(--bg-secondary) 100%);color:var(--text-primary);font-weight:700;padding:1.25rem 1rem;text-align:left;border-bottom:2px solid var(--border-color);font-size:.85rem;text-transform:uppercase;letter-spacing:1px}.users-table td{padding:1.25rem 1rem;border-bottom:1px solid var(--border-light);vertical-align:middle;text-align:left}.users-table tbody tr{transition:all .2s ease}.users-table tbody tr:hover{background:var(--bg-tertiary);box-shadow:inset 4px 0 0 var(--accent-primary)}.action-btn{width:36px;height:36px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;padding:0;margin-right:.5rem}.action-btn:last-child{margin-right:0}.action-btn.edit{color:var(--warning)}.action-btn.delete{color:var(--error)}.action-btn.edit:hover{background:var(--warning);color:#fff;border-color:var(--warning);transform:scale(1.1);box-shadow:0 2px 8px #f59e0b66}.action-btn.delete:hover{background:var(--error);color:#fff;border-color:var(--error);transform:scale(1.1);box-shadow:0 2px 8px #ef444466}.loading-container{display:flex;align-items:center;gap:1rem;color:var(--text-secondary);font-size:1.1rem;padding:2rem 0;justify-content:center}.modal{background:var(--bg-primary);border-radius:12px;box-shadow:0 8px 32px #0000002e;min-width:350px;max-width:95vw;width:400px;padding:0;overflow:hidden}.modal-header{background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-tertiary) 100%);padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-color)}.role-management .modal-header h3{margin:0;font-size:1.1rem;font-weight:700;color:var(--accent-primary)}.role-management .modal-header button{background:none;border:none;color:var(--text-secondary);font-size:1.2rem;cursor:pointer}.role-management .modal-body{padding:1.5rem}.role-management .form-group{margin-bottom:1.25rem}.role-management .form-group label{display:block;font-weight:600;color:var(--text-primary);margin-bottom:.5rem}.role-management .form-group input{width:100%;padding:.75rem 1rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font-size:1rem;transition:all .2s ease}.role-management .form-group input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #4f46e51a}.role-management .modal-footer{padding:1rem 1.5rem;background:var(--bg-secondary);display:flex;justify-content:flex-end;gap:1rem;border-top:1px solid var(--border-color)}.role-management .btn-primary{background:var(--accent-primary);color:#fff;border:none;border-radius:8px;padding:.75rem 1.5rem;font-weight:700;cursor:pointer;transition:background .2s;display:flex;align-items:center;gap:.5rem}.role-management .btn-primary:disabled{opacity:.7;cursor:not-allowed}.role-management .btn-primary:hover:not(:disabled){background:var(--accent-secondary)}.role-management .btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:none;border-radius:8px;padding:.75rem 1.5rem;font-weight:600;cursor:pointer;transition:background .2s}.role-management .btn-secondary:hover{background:var(--bg-secondary)}.organization-settings{padding:2rem;width:100%}.organization-settings .upload-area{flex-direction:column;align-items:center;justify-content:center;padding:2.5rem;background:var(--bg-tertiary);border:2px dashed var(--border-color);border-radius:12px;cursor:pointer;transition:all .2s;gap:.5rem}.organization-settings .upload-area:hover{border-color:var(--accent-primary);filter:brightness(.98)}.organization-settings .upload-icon{font-size:2rem;color:var(--accent-primary)}.organization-settings .upload-text{font-size:.95rem;font-weight:700;color:var(--text-primary)}.organization-settings .upload-hint{font-size:.8rem;color:var(--text-secondary)}.organization-settings .settings-header p{margin:0;color:var(--text-secondary);font-size:.9rem}.organization-settings .loading-state,.organization-settings .error-state{padding:2rem;text-align:center;color:var(--text-secondary)}.organization-settings .alert{padding:1rem 1.5rem;border-radius:8px;margin-bottom:1.5rem;border-left:4px solid;font-weight:500;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.organization-settings .alert-success{background:#10b98126;border-color:var(--success);color:var(--success)}.organization-settings .alert-error{background:#ef444426;border-color:var(--error);color:var(--error)}.organization-settings .settings-form{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;padding:2rem;margin-bottom:2rem;box-shadow:0 4px 12px var(--shadow)}.organization-settings .form-section{margin-bottom:1.5rem}.organization-settings .form-section:last-child{margin-bottom:0}.organization-settings .form-section h3{margin:0 0 1rem;font-size:1.25rem;color:var(--text-primary);border-bottom:2px solid var(--border-color);padding-bottom:.75rem;text-transform:uppercase;letter-spacing:.5px}.organization-settings .form-group{margin-bottom:1.25rem}.organization-settings .form-group label{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-weight:600;color:var(--text-primary);font-size:.875rem}.organization-settings .form-control{width:100%;padding:.75rem .9rem;border:1px solid var(--border-color);border-radius:8px;font-size:.95rem;transition:all .2s;box-sizing:border-box;font-family:inherit;background:var(--bg-tertiary);color:var(--text-primary)}.organization-settings .form-control:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #3b82f626}.organization-settings .form-control:disabled{opacity:.6;cursor:not-allowed}.organization-settings .input-help{margin:.5rem 0 0;font-size:.8rem;color:var(--text-secondary)}.organization-settings .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:768px){.organization-settings .form-row{grid-template-columns:1fr}}.logo-upload-section{margin-top:12px}.logo-preview-container{display:flex;flex-direction:column;gap:12px;align-items:center}.logo-preview{padding:20px;background:#f5f5f5;border:2px dashed #ddd;border-radius:8px;display:flex;align-items:center;justify-content:center;min-height:120px}.dark .logo-preview{background:#2a2a2a;border-color:#444}.logo-preview img{max-width:200px;max-height:100px;object-fit:contain}.upload-area{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;background:#f9f9f9;border:2px dashed #ddd;border-radius:8px;cursor:pointer;transition:all .2s;gap:8px}.upload-area:hover{background:#f0f0f0;border-color:#1976d2}.dark .upload-area{background:#2a2a2a;border-color:#444}.dark .upload-area:hover{background:#333;border-color:#42a5f5}.upload-icon{font-size:32px;color:#1976d2}.upload-text{font-size:14px;font-weight:500;color:#333}.dark .upload-text{color:#e0e0e0}.upload-hint{font-size:12px;color:#666}.dark .upload-hint{color:#999}.organization-settings .color-input-group{display:flex;gap:.75rem;align-items:center}.organization-settings .color-picker{width:56px;height:42px;border:1px solid var(--border-color);border-radius:8px;cursor:pointer;padding:2px;background:var(--bg-tertiary)}.organization-settings .color-input-group .form-control{flex:1}.organization-settings .preview-section{background:var(--bg-tertiary);padding:1.25rem;border-radius:12px;border:1px solid var(--border-color)}.organization-settings .preview-navbar{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;margin-top:.75rem;box-shadow:0 4px 12px var(--shadow)}.organization-settings .preview-logo{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary);border-radius:10px;overflow:hidden;border:1px solid var(--border-color)}.preview-logo img{width:100%;height:100%;object-fit:contain}.organization-settings .preview-text h1{margin:0;font-size:1.1rem;color:var(--text-primary);font-weight:800;text-transform:uppercase;letter-spacing:.5px}.organization-settings .form-actions{display:flex;justify-content:flex-end;gap:.75rem;padding-top:1.25rem;border-top:1px solid var(--border-color);margin-top:1.5rem}.organization-settings .btn{padding:.75rem 1rem;border:1px solid transparent;border-radius:8px;font-size:.9rem;font-weight:700;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:.5rem}.organization-settings .btn:disabled{opacity:.5;cursor:not-allowed}.organization-settings .btn-primary{background:var(--accent-primary);color:#fff}.organization-settings .btn-primary:hover:not(:disabled){filter:brightness(.95)}.organization-settings .btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-color)}.organization-settings .btn-secondary:hover:not(:disabled){border-color:var(--accent-primary)}.organization-settings .btn-sm{padding:.5rem .75rem;font-size:.85rem}.organization-settings .info-section{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;padding:2rem;box-shadow:0 4px 12px var(--shadow)}.organization-settings .info-section h3{margin:0 0 1rem;font-size:1.25rem;color:var(--text-primary);text-transform:uppercase;letter-spacing:.5px}.organization-settings .info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.organization-settings .info-item{display:flex;flex-direction:column;gap:.25rem}.organization-settings .info-label{font-size:.75rem;color:var(--text-secondary);font-weight:700;text-transform:uppercase;letter-spacing:.5px}.organization-settings .info-value{font-size:.95rem;color:var(--text-primary);font-weight:600}.plant-management{padding:2rem;width:100%;min-height:100vh;background:transparent}.plant-management .settings-header{display:flex;align-items:center;gap:1.5rem;margin-bottom:2rem;padding:1.5rem;background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-color);box-shadow:0 4px 12px var(--shadow);position:relative;overflow:hidden}.plant-management .settings-header:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--accent-primary),var(--accent-secondary));box-shadow:0 0 10px var(--scada-glow)}.plant-management .settings-header .header-icon{font-size:2.5rem;color:var(--accent-primary);filter:drop-shadow(0 0 8px var(--scada-glow));animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{filter:drop-shadow(0 0 8px var(--scada-glow))}50%{filter:drop-shadow(0 0 12px var(--scada-glow))}}.plant-management .settings-header>div{flex:1}.plant-management .settings-header h2{margin:0 0 .25rem;color:var(--text-primary);font-size:1.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px}.plant-management .settings-header p{margin:0;color:var(--text-secondary);font-size:.9rem}.plant-management .alert{padding:1rem 1.5rem;border-radius:8px;margin-bottom:1.5rem;display:flex;align-items:center;gap:.75rem;border-left:4px solid;font-weight:500;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.plant-management .alert-success{background:#10b98126;border-color:var(--success);color:var(--success)}.plant-management .alert-error{background:#ef444426;border-color:var(--error);color:var(--error)}.plant-management .plant-form-container{background:var(--bg-secondary);border-radius:12px;padding:2rem;margin-bottom:2rem;box-shadow:0 4px 12px var(--shadow);border:1px solid var(--border-color)}.plant-management .plant-form h3{margin:0 0 1.5rem;color:var(--text-primary);font-size:1.5rem;font-weight:600;padding-bottom:1rem;border-bottom:2px solid var(--border-color);text-transform:uppercase;letter-spacing:.5px}.plant-management .form-section{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1.5rem}.plant-management .form-group{display:flex;flex-direction:column;gap:.5rem}.plant-management .form-group label{color:var(--text-primary);font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.plant-management .form-control{padding:.75rem 1rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:1rem;transition:all .2s ease}.plant-management .form-control:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #0ea5e91a,0 0 10px #0ea5e933}.plant-management .form-control:disabled{opacity:.5;cursor:not-allowed}.plant-management textarea.form-control{resize:vertical;min-height:100px;font-family:inherit}.plant-management .input-help{font-size:.75rem;color:var(--text-muted);margin:0}.plant-management .form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.plant-management .form-actions{display:flex;gap:1rem;justify-content:flex-end;padding-top:1.5rem;border-top:1px solid var(--border-color)}.plant-management .btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;border-radius:8px;cursor:pointer;transition:all .2s ease;border:none;white-space:nowrap}.plant-management .btn:disabled{opacity:.5;cursor:not-allowed}.plant-management .btn-primary{background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));color:#fff;box-shadow:0 2px 8px #0ea5e94d}.plant-management .btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #0ea5e966}.plant-management .btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.plant-management .btn-secondary:hover:not(:disabled){background:var(--bg-secondary);border-color:var(--accent-primary)}.plant-management .btn-danger{background:var(--error);color:#fff;box-shadow:0 2px 8px #ef44444d}.plant-management .btn-danger:hover:not(:disabled){filter:brightness(.9);transform:translateY(-2px);box-shadow:0 4px 12px #ef444466}.plant-management .btn-icon{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);padding:.5rem;border-radius:6px;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center}.plant-management .btn-icon:hover{background:var(--bg-tertiary);color:var(--accent-primary);border-color:var(--accent-primary);box-shadow:0 0 8px #0ea5e94d}.plant-management .btn-icon.btn-danger{border-color:var(--error);color:var(--error);background:transparent}.plant-management .btn-icon.btn-danger:hover{background:var(--error);color:#fff;box-shadow:0 0 8px #ef44444d}.plant-management .plants-list-section{background:var(--bg-secondary);border-radius:12px;padding:1.5rem;border:1px solid var(--border-color);box-shadow:0 4px 12px var(--shadow)}.plant-management .list-controls{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap;align-items:center}.plant-management .search-box{position:relative;flex:1;min-width:250px}.plant-management .search-icon{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:1rem}.plant-management .search-input{width:100%;padding:.75rem 1rem .75rem 2.75rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:.95rem;transition:all .2s ease}.plant-management .search-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #0ea5e91a}.plant-management .search-input::placeholder{color:var(--text-muted)}.plant-management .filter-controls{display:flex;gap:1rem;flex-wrap:wrap}.plant-management .checkbox-label{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .2s ease;font-size:.9rem;font-weight:500;color:var(--text-secondary)}.plant-management .checkbox-label:hover{border-color:var(--accent-primary);background:var(--bg-tertiary)}.plant-management .checkbox-label input[type=checkbox]{cursor:pointer;width:18px;height:18px;accent-color:var(--accent-primary)}.plant-management .loading-state{text-align:center;padding:4rem 2rem;color:var(--text-secondary);font-size:1.1rem}.plant-management .empty-state{text-align:center;padding:4rem 2rem;color:var(--text-secondary)}.plant-management .empty-icon{font-size:4rem;color:var(--text-muted);margin-bottom:1rem;opacity:.5}.plant-management .empty-state h3{margin:0 0 .5rem;color:var(--text-primary);font-size:1.5rem}.plant-management .empty-state p{margin:0 0 1.5rem;color:var(--text-secondary)}.plant-management .plants-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}.plant-management .plant-card{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;transition:all .3s ease;position:relative;overflow:hidden}.plant-management .plant-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--accent-primary),var(--accent-secondary));opacity:0;transition:opacity .3s ease}.plant-management .plant-card:hover{border-color:var(--accent-primary);box-shadow:0 8px 24px var(--shadow);transform:translateY(-4px)}.plant-management .plant-card:hover:before{opacity:1}.plant-management .plant-card.inactive{opacity:.6}.plant-management .plant-card.inactive:before{background:var(--text-muted)}.plant-management .plant-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;gap:1rem}.plant-management .plant-info h3{margin:0 0 .5rem;color:var(--text-primary);font-size:1.25rem;font-weight:600}.plant-management .plant-actions{display:flex;gap:.5rem;flex-shrink:0}.plant-management .badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.plant-management .badge-success{background:#10b98133;color:var(--success);border:1px solid var(--success);box-shadow:0 0 8px #10b9814d}.plant-management .badge-inactive{background:#64748b33;color:var(--text-muted);border:1px solid var(--border-color)}.plant-management .plant-description{color:var(--text-secondary);font-size:.9rem;line-height:1.5;margin:0 0 1rem}.plant-management .plant-detail{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;color:var(--text-secondary);font-size:.9rem}.plant-management .detail-icon{color:var(--accent-primary);font-size:1rem;flex-shrink:0}.plant-management .plant-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem;margin:1rem 0;padding:1rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.plant-management .stat-item{display:flex;flex-direction:column;gap:.25rem}.plant-management .stat-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.plant-management .stat-value{font-size:1.25rem;font-weight:700;color:var(--text-primary)}.plant-management .stat-detail{font-size:.75rem;color:var(--text-secondary);font-weight:400}.plant-management .stat-warning{background:#ef44441a;padding:.5rem;border-radius:6px;border:1px solid var(--error)}.plant-management .stat-warning .stat-value{color:var(--error)}.plant-management .plant-footer{display:flex;justify-content:space-between;padding-top:1rem;margin-top:1rem;border-top:1px solid var(--border-color);font-size:.75rem;color:var(--text-muted)}@media(max-width:1200px){.plant-management .plants-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}@media(max-width:768px){.plant-management{padding:1rem}.plant-management .settings-header{flex-direction:column;align-items:flex-start;gap:1rem}.plant-management .settings-header .btn{width:100%;justify-content:center}.plant-management .list-controls{flex-direction:column}.plant-management .search-box{width:100%}.plant-management .filter-controls{width:100%;flex-direction:column}.plant-management .checkbox-label{width:100%;justify-content:center}.plant-management .plants-grid{grid-template-columns:1fr}.plant-management .form-actions{flex-direction:column}.plant-management .form-actions .btn{width:100%;justify-content:center}.plant-management .plant-stats{grid-template-columns:1fr}.plant-management .plant-card-header{flex-direction:column}.plant-management .plant-actions{width:100%;justify-content:flex-end}}@media(max-width:480px){.plant-management .settings-header h2{font-size:1.25rem}.plant-management .plant-form-container,.plant-management .plants-list-section{padding:1rem}}.modal-overlay{position:fixed;inset:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}.modal-content{background:#fff;border-radius:12px;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px #0003}.dark .modal-content{background:#1e1e1e;color:#e0e0e0}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:24px;border-bottom:1px solid #e0e0e0}.dark .modal-header{border-bottom-color:#333}.modal-title{display:flex;align-items:center;gap:12px}.modal-icon{font-size:24px;color:#1976d2}.modal-title h2{margin:0;font-size:20px;font-weight:600}.modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.modal-close:hover{background:#f0f0f0;color:#333}.dark .modal-close:hover{background:#333;color:#fff}.modal-body{padding:24px}.setup-message{margin-bottom:24px}.warning-text{background:#fff3cd;border:1px solid #ffc107;color:#856404;padding:12px 16px;border-radius:6px;margin:0;line-height:1.6}.dark .warning-text{background:#3e3000;border-color:#856404;color:#ffc107}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:#333}.dark .form-group label{color:#e0e0e0}.form-control{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:all .2s;box-sizing:border-box}.form-control:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 3px #1976d21a}.dark .form-control{background:#2a2a2a;border-color:#444;color:#e0e0e0}.dark .form-control:focus{border-color:#42a5f5;box-shadow:0 0 0 3px #42a5f51a}.form-control:disabled{background:#f5f5f5;cursor:not-allowed}.dark .form-control:disabled{background:#1a1a1a}.error-message{background:#ffebee;border:1px solid #ef5350;color:#c62828;padding:12px 16px;border-radius:6px;margin-bottom:16px;font-size:14px}.dark .error-message{background:#3e0000;border-color:#c62828;color:#ef5350}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.btn{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:8px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#1976d2;color:#fff}.btn-primary:hover:not(:disabled){background:#1565c0;transform:translateY(-1px);box-shadow:0 4px 8px #1976d24d}.btn-secondary{background:#757575;color:#fff}.btn-secondary:hover:not(:disabled){background:#616161}.dark .btn-secondary{background:#424242}.dark .btn-secondary:hover:not(:disabled){background:#616161}@media(max-width:576px){.modal-content{max-width:100%;margin:10px}.modal-header,.modal-body{padding:16px}.form-actions{flex-direction:column}.btn{width:100%;justify-content:center}}.plant-view{height:100%;display:flex;flex-direction:column;overflow:auto}.plant-view-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:20px;padding:20px;background:var(--card-bg);border-radius:8px;box-shadow:var(--shadow-md)}.header-content h1{margin:0 0 5px;color:var(--text-primary);font-size:28px}.header-content p{margin:0;color:var(--text-secondary);font-size:14px}.plant-selector label{display:flex;align-items:center;gap:10px;color:var(--text-primary)}.plant-selector strong{font-size:14px}.plant-select{padding:10px 40px 10px 12px;border:1px solid var(--border-color);border-radius:6px;font-size:14px;background:var(--input-bg);color:var(--text-primary);cursor:pointer;min-width:250px;transition:all .2s}.plant-select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px var(--primary-color-light)}.loading-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;color:var(--text-primary)}.spinner{width:50px;height:50px;border:4px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}.error-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;padding:40px;text-align:center}.error-icon{font-size:48px;font-weight:700;width:80px;height:80px;background:#f8d7da;color:#dc3545;border-radius:4px;display:flex;align-items:center;justify-content:center;border:2px solid #dc3545}.dark .error-icon{background:#5a1a1a;border-color:#dc3545}.error-state h3{margin:0;color:var(--text-primary);font-size:24px}.error-state p{margin:0;color:var(--text-secondary);font-size:14px;max-width:500px}.error-hint{background:var(--card-bg);padding:15px 20px;border-radius:6px;border-left:4px solid var(--primary-color);margin-top:10px!important}.error-hint strong{color:var(--primary-color)}.welcome-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:40px;text-align:center}.welcome-icon{width:100px;height:100px;background:var(--primary-color);color:#fff;font-size:40px;font-weight:700;border-radius:4px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;border:2px solid var(--primary-color)}.welcome-icon:before{content:"SCADA";font-size:18px;letter-spacing:2px}.welcome-state h2{margin:0;color:var(--text-primary);font-size:24px;font-weight:700;text-transform:uppercase;letter-spacing:1px}.welcome-state>p{margin:0;color:var(--text-secondary);font-size:14px;max-width:500px;font-weight:500}.welcome-features{display:flex;gap:30px;margin-top:30px;flex-wrap:wrap;justify-content:center}.feature{display:flex;align-items:center;gap:12px;padding:16px 28px;background:var(--card-bg);border-radius:4px;border:1px solid var(--border-color);color:var(--text-primary);font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.5px;transition:all .2s}.feature:hover{border-color:var(--primary-color);transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.feature-icon{width:6px;height:6px;background:var(--primary-color);border-radius:50%}.plant-dashboard{flex:1;display:flex;flex-direction:column;min-height:0}.plant-info{display:flex;gap:30px;flex-wrap:wrap;padding:20px;background:var(--card-bg);border-radius:8px;box-shadow:var(--shadow-sm)}.info-item{display:flex;gap:8px;align-items:center}.info-label{font-weight:600;color:var(--text-secondary);font-size:13px}.info-value{color:var(--text-primary);font-size:14px;font-weight:500}.info-value.status-active{color:#4caf50}.info-value.status-inactive{color:#ff9800}.info-value.status-error{color:#f44336}.plant-widgets-grid{flex:1;padding:1rem;background:var(--card-bg);border-radius:8px;box-shadow:var(--shadow-md);display:grid;grid-template-columns:repeat(12,1fr);gap:15px;overflow-y:auto}.plant-widgets-grid.scada-view-bg,.empty-layout.scada-view-bg,.dark .plant-widgets-grid.scada-view-bg,.dark .empty-layout.scada-view-bg,.plant-widgets-grid.sld-view-bg,.dark .plant-widgets-grid.sld-view-bg{background:#f0f2f7}.plant-svg-layout{grid-column:1 / -1;display:flex;justify-content:flex-start;padding:20px;overflow:visible;position:relative;min-height:100%}.plant-svg-layout svg{max-width:100%;height:auto;display:block}.plant-svg-layout .svg-scale-wrapper{display:inline-block}.empty-layout{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--text-secondary);background:#f8f9fa;border:2px dashed #dee2e6;border-radius:4px}.dark .empty-layout{background:#1a202c;border-color:#b0b0b0}.empty-layout .error-icon{margin-bottom:20px}.empty-layout p{margin:8px 0;font-size:15px;font-weight:600}.empty-hint{font-size:13px;color:var(--text-tertiary);font-weight:500;margin-top:12px!important}.plant-widget{background:#fff;border:2px solid var(--border-color);border-radius:8px;padding:15px;display:flex;flex-direction:column;box-shadow:var(--shadow-sm);transition:all .2s;overflow:hidden}.plant-widget:hover{border-color:var(--primary-color);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.plant-widget-header{padding-bottom:10px;border-bottom:2px solid var(--border-color);margin-bottom:15px}.plant-widget-title{font-weight:600;color:var(--text-primary);font-size:15px}.plant-widget-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.plant-widget-icon{font-size:56px;margin-bottom:15px;opacity:.8}.plant-widget-type{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1.5px;font-weight:600;margin-bottom:15px}.plant-widget-placeholder{width:100%;padding:20px;background:var(--canvas-bg);border-radius:6px;border:1px dashed var(--border-color)}.plant-widget-placeholder p{margin:0 0 8px;color:var(--text-secondary);font-size:13px}.plant-widget-placeholder small{color:var(--text-tertiary);font-size:11px}:root{--primary-color: #2196F3;--primary-dark: #1976D2;--primary-color-light: rgba(33, 150, 243, .2);--border-color: #ddd;--text-primary: #333;--text-secondary: #666;--text-tertiary: #999;--card-bg: #fff;--input-bg: #fff;--canvas-bg: #f5f5f5;--shadow-sm: 0 1px 3px rgba(0,0,0,.1);--shadow-md: 0 4px 6px rgba(0,0,0,.1);--shadow-lg: 0 10px 20px rgba(0,0,0,.15)}.dark{--primary-color: #42A5F5;--primary-dark: #1E88E5;--primary-color-light: rgba(66, 165, 245, .2);--border-color: #444;--text-primary: #e0e0e0;--text-secondary: #b0b0b0;--text-tertiary: #808080;--card-bg: #2a2a2a;--input-bg: #333;--canvas-bg: #1a1a1a;--shadow-sm: 0 1px 3px rgba(0,0,0,.3);--shadow-md: 0 4px 6px rgba(0,0,0,.3);--shadow-lg: 0 10px 20px rgba(0,0,0,.4)}@media(max-width:1024px){.plant-widgets-grid{grid-template-columns:repeat(6,1fr)}.welcome-features{flex-direction:column;gap:15px}}@media(max-width:768px){.plant-view-header{flex-direction:column;align-items:flex-start}.plant-selector label{width:100%;flex-direction:column;align-items:flex-start}.plant-select{width:100%}.plant-info{flex-direction:column;gap:12px}.plant-widgets-grid{grid-template-columns:repeat(3,1fr)}}.plant-sidebar-nav{display:flex;flex-direction:column;gap:4px;padding:.5rem}.sidebar-nav-tab{width:100%;padding:.55rem .85rem;border:none;background:transparent;color:var(--text-secondary);font-size:.78rem;font-weight:600;border-radius:6px;cursor:pointer;transition:all .2s;text-align:left;text-transform:uppercase;letter-spacing:.5px}.sidebar-nav-tab:hover{background:var(--canvas-bg);color:var(--text-primary)}.sidebar-nav-tab.active{background:var(--primary-color);color:#fff;box-shadow:0 2px 4px #0000001a}.sidebar-inverter-list{display:flex;flex-direction:column;border-left:2px solid var(--primary-color);margin:2px 0 4px 12px}.sidebar-inverter-item{display:flex;align-items:center;gap:6px;padding:.45rem .75rem;font-size:.78rem;font-weight:500;color:var(--text-secondary);cursor:pointer;border-radius:4px;transition:background .15s,color .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-inverter-item:hover{background:var(--canvas-bg);color:var(--text-primary)}.sidebar-inverter-empty{cursor:default;font-style:italic;opacity:.6}.sidebar-inverter-item .inv-status-dot{width:7px;height:7px;border-radius:50%;background:#64748b;flex-shrink:0}.sidebar-inverter-item .inv-status-dot.online{background:#22c55e}.sidebar-inverter-item .inv-status-dot.offline{background:#ef4444}.sidebar-inverter-item .inv-name{flex:1;overflow:hidden;text-overflow:ellipsis}.sidebar-inverter-item .inv-arrow{font-size:.9rem;color:var(--primary-color);font-weight:700;flex-shrink:0}.communication-container{padding:2rem;min-height:100vh;background:var(--canvas-bg)}.device-status-grid{display:flex;flex-direction:column;gap:2rem}.device-type-section{background:var(--card-bg);border-radius:8px;padding:1.5rem;box-shadow:var(--shadow-md)}.device-type-header{margin:0 0 1rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color);color:var(--text-primary);font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:1px}.device-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.device-status-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--canvas-bg);border:1px solid var(--border-color);border-radius:6px;transition:all .2s}.device-status-item:hover{border-color:var(--primary-color);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.device-status-icon{flex-shrink:0;font-size:32px;width:50px;height:50px;display:flex;align-items:center;justify-content:center;background:var(--card-bg);border-radius:8px}.device-status-info{flex:1;min-width:0}.device-status-name{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.device-status-type{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.device-status-indicator{flex-shrink:0;width:16px;height:16px;border-radius:50%;border:2px solid var(--card-bg);box-shadow:0 0 8px #0003}.device-status-indicator.online{background:#10b981;animation:pulse-green 2s ease-in-out infinite}.device-status-indicator.offline{background:#ef4444;animation:pulse-red 2s ease-in-out infinite}@keyframes pulse-green{0%,to{box-shadow:0 0 8px #10b98180}50%{box-shadow:0 0 16px #10b981cc}}@keyframes pulse-red{0%,to{box-shadow:0 0 8px #ef444480}50%{box-shadow:0 0 16px #ef4444cc}}.plant-sub-navbar{display:flex;gap:4px;background:var(--card-bg);border-radius:8px;padding-top:.2rem;padding-bottom:.2rem;box-shadow:var(--shadow-sm)}.sub-nav-tab{flex:1;padding:.5rem;border:true;background:#dfdddd;color:var(--text-secondary);font-size:.875rem;font-weight:600;border-radius:6px;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:.5px}.sub-nav-tab:hover{background:var(--canvas-bg);color:var(--text-primary)}.sub-nav-tab.active{background:var(--primary-color);color:#fff;box-shadow:0 2px 4px #0000001a}.sub-nav-tab:disabled{opacity:.5;cursor:not-allowed}.sub-nav-tab:disabled:hover{background:transparent;color:var(--text-secondary);transform:none}.export-snapshot-btn{margin-left:auto;padding:10px 20px;border:2px solid var(--primary-color);background:#fff;color:var(--primary-color);font-size:13px;font-weight:700;border-radius:6px;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center;gap:8px}.export-snapshot-btn:hover{background:var(--primary-color);color:#fff;transform:translateY(-1px);box-shadow:0 4px 8px #2196f34d}.export-snapshot-btn:active{transform:translateY(0);box-shadow:0 2px 4px #2196f333}.dark .export-snapshot-btn{background:#2d3748;border-color:var(--primary-color)}.dark .export-snapshot-btn:hover{background:var(--primary-color);color:#fff}.plant-tab-content{flex:1;display:flex;flex-direction:column;min-height:0;overflow:visible;padding-top:0rem;position:relative}.architecture-tab-container{width:100%;padding:1rem;box-sizing:border-box;display:flex;justify-content:center}.plant-overview-with-panel{display:flex;gap:20px;width:100%;max-width:100%;height:calc(100vh - 200px)}.plant-overview-container{flex:1;width:100%;max-width:100%;background:#fafbfc;border-radius:8px;border:1px solid #e0e0e0;overflow-y:auto;overflow-x:visible;display:flex;flex-direction:column;align-items:center;box-sizing:border-box;height:100%;position:relative}.dark .plant-overview-container{background:#1a202c;border-color:#4a5568}.overview-header{margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;align-items:center;width:100%;max-width:1400px}.dark .overview-header{border-bottom-color:#4a5568}.overview-header h3{margin:0;color:var(--text-primary);font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px}.overview-subtitle{margin:0;color:var(--text-secondary);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.device-hierarchy{display:flex;flex-wrap:wrap;gap:12px;padding:4px;justify-content:center;width:100%;max-width:1400px;align-items:flex-start;margin-top:5rem}.device-hierarchy-item{display:flex;flex-direction:column;gap:8px;transition:all .3s ease;position:relative;flex:0 0 auto;min-width:220px;width:auto}.device-box{background:#fff;border:1px solid #e0e0e0;border-left:5px solid #6c757d;border-radius:0;padding:0;transition:all .15s ease;cursor:pointer;position:relative;box-shadow:0 1px 3px #0000000f;width:220px}.dark .device-box{background:#2d3748;border-color:#4a5568}.device-box:hover,.device-box.hovered{border-left-color:var(--primary-color);box-shadow:0 2px 8px #0000001a;transform:translate(2px)}.device-box.parent-device{border-left-color:var(--primary-color);border-left-width:5px;background:#fafbfc}.dark .device-box.parent-device{background:#374151}.device-box-header{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.dark .device-box-header{background:#1a202c;border-bottom-color:#4a5568}.device-icon{font-size:10px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--primary-color);color:#fff;border-radius:2px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;flex-shrink:0}.device-info{flex:1;min-width:0}.device-name{margin:0 0 3px;font-size:12px;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px;letter-spacing:.3px}.parent-badge{display:inline-block;padding:2px 6px;background:var(--primary-color);color:#fff;font-size:7px;font-weight:700;border-radius:2px;text-transform:uppercase;letter-spacing:.8px}.device-category{font-size:9px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;font-weight:600}.device-status-indicator{width:8px;height:8px;border-radius:1px;border:1px solid rgba(0,0,0,.15);flex-shrink:0}.device-data-inline{padding:8px 12px;background:#f8f9fa;border-top:1px solid #e0e0e0;display:flex;flex-direction:column;gap:6px}.dark .device-data-inline{background:#1a202c;border-top-color:#4a5568}.data-point-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.data-point-label{font-size:9px;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.5px;flex:1}.data-point-value{font-size:11px;color:var(--text-primary);font-weight:700;font-family:Consolas,Courier New,monospace;text-align:right}.device-children{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px;padding:0;margin:12px 0 0;position:relative;border:2px dashed #ff00ff;background:#ff00ff0d;width:fit-content;max-width:100%}.dark .device-children{border-left-color:#42a5f5}.device-realtime-data{position:absolute;top:100px;left:20px;width:350px;background:#fff;border:1px solid #dee2e6;border-left:4px solid var(--primary-color);border-radius:4px;padding:0;box-shadow:0 4px 16px #00000026;z-index:10000;animation:slideLeft .15s ease;pointer-events:none}.dark .device-realtime-data{background:#2d3748;border-color:#4a5568;border-left-color:var(--primary-color)}@keyframes slideLeft{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}.realtime-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f8f9fa;border-bottom:1px solid #dee2e6}.dark .realtime-header{background:#1a202c;border-bottom-color:#4a5568}.realtime-header strong{color:var(--text-primary);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px}.live-indicator{font-size:9px;font-weight:700;color:#dc3545;text-transform:uppercase;letter-spacing:1px;display:flex;align-items:center;gap:6px}.live-indicator:before{content:"";display:inline-block;width:6px;height:6px;background:#dc3545;border-radius:50%;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;box-shadow:0 0 #dc3545b3}50%{opacity:.8;box-shadow:0 0 0 4px #dc354500}}.realtime-row{display:grid;grid-template-columns:110px 1fr;align-items:center;padding:10px 16px;border-bottom:1px solid #f0f0f0;gap:16px}.dark .realtime-row{border-bottom-color:#374151}.realtime-row:last-child{border-bottom:none}.realtime-label{font-size:10px;color:var(--text-secondary);font-weight:700;text-transform:uppercase;letter-spacing:.5px}.realtime-value{font-size:13px;color:var(--text-primary);font-weight:700;font-family:Consolas,Courier New,monospace;text-align:right}.device-hierarchy-item{animation:fadeInUp .2s ease forwards;opacity:0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.device-hierarchy-item:nth-child(1){animation-delay:0s}.device-hierarchy-item:nth-child(2){animation-delay:.02s}.device-hierarchy-item:nth-child(3){animation-delay:.04s}.device-hierarchy-item:nth-child(4){animation-delay:.06s}.device-hierarchy-item:nth-child(5){animation-delay:.08s}.device-hierarchy-item:nth-child(n+6){animation-delay:.1s}.realtime-data-panel{width:400px;min-width:400px;background:#fff;border:1px solid #e0e0e0;border-radius:8px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 2px 8px #0000001a}.dark .realtime-data-panel{background:#2d3748;border-color:#4a5568}.realtime-panel-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#f8f9fa;border-bottom:2px solid #e0e0e0}.dark .realtime-panel-header{background:#1a202c;border-bottom-color:#4a5568}.realtime-panel-header strong{color:var(--text-primary);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:1px}.realtime-panel-content{flex:1;overflow-y:auto;padding:12px}.no-data-message{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;color:var(--text-secondary)}.no-data-message p{margin:0 0 8px;font-size:14px;font-weight:600}.no-data-message small{font-size:12px;color:var(--text-tertiary)}.device-data-section{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:12px;overflow:hidden}.dark .device-data-section{background:#1a202c;border-color:#4a5568}.device-data-header{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#fff;border-bottom:1px solid #e0e0e0}.dark .device-data-header{background:#2d3748;border-bottom-color:#4a5568}.device-icon-small{font-size:9px;display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--primary-color);color:#fff;border-radius:2px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;flex-shrink:0}.device-name-small{font-size:12px;font-weight:700;color:var(--text-primary);letter-spacing:.3px}.device-data-points{padding:8px 14px}.device-data-points .realtime-row{display:grid;grid-template-columns:140px 1fr;align-items:center;padding:8px 0;border-bottom:1px solid #f0f0f0;gap:12px}.dark .device-data-points .realtime-row{border-bottom-color:#374151}.device-data-points .realtime-row:last-child{border-bottom:none}@media(max-width:1400px){.realtime-data-panel{width:350px;min-width:350px}}@media(max-width:1200px){.plant-overview-with-panel{flex-direction:column}.realtime-data-panel{width:100%;min-width:100%;max-height:400px}}.pv-plant-dashboard{padding:1.5rem 2rem;max-width:1200px}.pv-dash-section-title{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted, #64748b);margin-bottom:.8rem}.pv-dash-totals{display:flex;flex-wrap:wrap;gap:.8rem}.pv-dash-total-card{background:var(--card-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:10px;padding:.8rem 1.1rem;min-width:120px;display:flex;flex-direction:column;gap:.25rem;box-shadow:0 1px 4px #0000002e}.pv-dash-badge{display:inline-block;font-size:.6rem;font-weight:700;border-radius:4px;padding:.15rem .5rem;letter-spacing:.04em;align-self:flex-start;color:#fff;white-space:nowrap}.pv-dash-total-card.kw .pv-dash-badge{background:#2563eb}.pv-dash-total-card.kvar .pv-dash-badge{background:#7c3aed}.pv-dash-total-card.kwh .pv-dash-badge{background:#059669}.pv-dash-total-card.mwh .pv-dash-badge{background:#0891b2}.pv-dash-total-card.temp .pv-dash-badge{background:#d97706}.pv-dash-total-card.pf .pv-dash-badge{background:#db2777}.pv-dash-total-value{font-size:1.4rem;font-weight:800;font-family:Consolas,Monaco,monospace;color:var(--text-primary, #e2e8f0);line-height:1}.pv-dash-total-label{font-size:.58rem;color:var(--text-muted, #64748b);font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-top:.1rem}.pv-dash-table-wrap{overflow-x:auto;border-radius:8px;border:1px solid var(--border-color, #334155)}.pv-dash-table{width:100%;border-collapse:collapse;font-size:.76rem}.pv-dash-table th{background:var(--bg-primary, #0f172a);padding:.5rem .8rem;text-align:left;font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted, #64748b);border-bottom:1px solid var(--border-color, #334155);white-space:nowrap}.pv-dash-table td{padding:.55rem .8rem;border-bottom:1px solid #1e293b;color:var(--text-primary, #e2e8f0);font-family:Consolas,Monaco,monospace;font-size:.76rem;white-space:nowrap}.pv-dash-table tbody tr:last-child td{border-bottom:none}.pv-dash-inv-row{cursor:pointer;transition:background .1s}.pv-dash-inv-row:hover td{background:#1e293b8c}.pv-dash-chart-wrap{background:var(--card-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:8px;padding:.75rem .5rem .5rem}.pv-dash-chart-wrap .recharts-legend-item-text{font-size:.68rem!important;color:var(--text-secondary, #94a3b8)!important}.pv-dash-inv-name{font-family:inherit!important;font-weight:700;color:#3b82f6!important}.pv-dash-status-dot,.pv-dash-state-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:.3rem;vertical-align:middle}.inverter-detail-overlay{position:fixed;inset:56px 0 0;background:#0000008c;z-index:11000;display:flex;align-items:stretch;justify-content:flex-end;animation:fadeInOverlay .2s ease}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}.inverter-detail-panel{display:flex;flex-direction:column;width:min(100vw,1150px);height:100%;background:var(--bg-primary, #0f172a);color:var(--text-primary, #e2e8f0);box-shadow:-6px 0 32px #00000080;animation:slideInPanel .25s cubic-bezier(.22,1,.36,1);overflow:hidden}@keyframes slideInPanel{0%{transform:translate(80px);opacity:0}to{transform:translate(0);opacity:1}}.inverter-detail-header{display:flex;align-items:center;gap:.6rem;padding:.68rem 1rem;background:var(--bg-secondary, #1e293b);border-bottom:1px solid var(--border-color, #334155);flex-shrink:0}.inverter-detail-header .header-icon{font-size:1.12rem;line-height:1}.inverter-detail-header h2{flex:1;margin:0;font-size:.88rem;font-weight:700;color:var(--text-primary, #f1f5f9)}.inverter-detail-header .device-id-badge{font-size:.58rem;padding:.16rem .48rem;background:var(--accent-primary, #3b82f6);color:#fff;border-radius:999px;font-weight:600;letter-spacing:.03em}.inverter-detail-header .close-btn{background:none;border:1px solid var(--border-color, #334155);color:var(--text-secondary, #94a3b8);border-radius:5px;padding:.28rem .56rem;font-size:.88rem;cursor:pointer;transition:background .15s,color .15s;line-height:1}.inverter-detail-header .close-btn:hover{background:#ef4444;border-color:#ef4444;color:#fff}.inverter-status-row{display:flex;align-items:center;gap:.48rem;padding:.4rem 1rem;background:var(--bg-secondary, #1e293b);border-bottom:1px solid var(--border-color, #334155);font-size:.62rem;flex-shrink:0}.inverter-status-row .status-dot{width:7px;height:7px;border-radius:50%;background:#94a3b8;flex-shrink:0}.inverter-status-row .status-dot.online{background:#22c55e;box-shadow:0 0 6px #22c55e88}.inverter-status-row .status-dot.offline{background:#ef4444}.inverter-status-row .status-label{font-weight:600;color:var(--text-secondary, #94a3b8);text-transform:uppercase;letter-spacing:.05em}.inverter-status-row .last-seen{margin-left:auto;color:var(--text-muted, #64748b)}.inverter-content-wrapper{display:flex;flex:1;overflow:hidden}.inverter-left-col{display:flex;flex-direction:column;flex:1;overflow:hidden;min-width:0}.inverter-detail-body{display:flex;flex:1;overflow:hidden}.inverter-tabs-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.inverter-tab-bar{display:flex;border-bottom:1px solid var(--border-color, #334155);background:var(--bg-secondary, #1e293b);flex-shrink:0}.inverter-tab-btn{padding:.56rem 1.12rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary, #94a3b8);font-size:.68rem;font-weight:600;cursor:pointer;transition:color .15s,border-color .15s;letter-spacing:.02em;white-space:nowrap}.inverter-tab-btn:hover{color:var(--text-primary, #f1f5f9)}.inverter-tab-btn.active{color:#3b82f6;border-bottom-color:#3b82f6}.inverter-tab-content{flex:1;overflow-y:auto;padding:1rem}.inverter-data-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:.68rem}.inverter-data-card{background:var(--bg-secondary, #1e293b);border:1px solid var(--border-color, #334155);border-radius:8px;padding:.8rem .88rem;display:flex;flex-direction:column;gap:.28rem;transition:border-color .15s,box-shadow .15s}.inverter-data-card:hover{border-color:#3b82f640;box-shadow:0 2px 12px #3b82f61a}.inverter-data-card .card-tag{font-size:.56rem;font-weight:700;color:var(--text-muted, #64748b);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inverter-data-card .card-value{font-size:1.16rem;font-weight:800;font-family:Consolas,Monaco,monospace;letter-spacing:-.02em;line-height:1.1;color:#f1f5f9}.inverter-data-card .card-value.alarm{color:#ef4444}.inverter-data-card .card-value.warning{color:#f59e0b}.inverter-data-card .card-value.ok{color:#22c55e}.inverter-data-card .card-value.nodata{color:#64748b}.inverter-data-card .card-value-unit{font-size:.65rem;font-weight:500;opacity:.75;font-family:inherit;letter-spacing:0}.plot-section-title{font-size:.8rem;font-weight:700;color:var(--text-secondary, #94a3b8);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.75rem}.plot-chart-wrapper{background:var(--bg-secondary, #1e293b);border:1px solid var(--border-color, #334155);border-radius:10px;padding:1rem}.inverter-sidebar{width:180px;flex-shrink:0;background:var(--bg-secondary, #1e293b);border-left:1px solid var(--border-color, #334155);padding:.75rem .65rem;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto}.inverter-sidebar h3{margin:0 0 .3rem;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted, #64748b)}.sidebar-category-title{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#3b82f6;padding:.3rem 0 .15rem;border-bottom:1px solid #3b82f620;margin-top:.2rem}.sidebar-metric-card{background:var(--bg-primary, #0f172a);border:1px solid var(--border-color, #334155);border-radius:5px;padding:.42rem .55rem;display:flex;flex-direction:column;gap:.1rem}.sidebar-metric-card .metric-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted, #64748b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-metric-card .metric-value-row{display:flex;align-items:baseline;gap:.3rem}.sidebar-metric-card .metric-value{font-size:1rem;font-weight:800;font-family:Consolas,Monaco,monospace;color:#f1f5f9;line-height:1.1}.sidebar-metric-card .metric-value.nodata{color:#64748b;font-size:.7rem}.sidebar-metric-card .metric-unit{font-size:.58rem;color:var(--text-secondary, #94a3b8);font-weight:600}.inverter-sidebar h4{margin:0 0 .26rem;font-size:.46rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted, #64748b)}.sidebar-metric-card{background:var(--bg-primary, #0f172a);border:1px solid var(--border-color, #334155);border-radius:5px;padding:.32rem .44rem;display:flex;flex-direction:column;gap:.08rem}.sidebar-metric-card .metric-label{font-size:.42rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted, #64748b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-metric-card .metric-value{font-size:.74rem;font-weight:800;font-family:Consolas,Monaco,monospace;color:#f1f5f9;line-height:1}.sidebar-metric-card .metric-value.alarm{color:#ef4444}.sidebar-metric-card .metric-value.warning{color:#f59e0b}.sidebar-metric-card .metric-value.ok{color:#22c55e}.sidebar-metric-card .metric-value.nodata{color:#64748b;font-size:.54rem}.sidebar-metric-card .metric-unit{font-size:.43rem;color:var(--text-secondary, #94a3b8);font-weight:500}.inverter-loading,.inverter-no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;height:180px;color:var(--text-muted, #64748b);gap:.6rem;font-size:.9rem}.inverter-spinner{width:32px;height:32px;border:3px solid var(--border-color, #334155);border-top-color:#3b82f6;border-radius:50%;animation:spin .8s linear infinite}.inverter-section-header{display:flex;align-items:center;gap:.4rem;margin-bottom:.72rem}.inverter-section-header .section-icon{font-size:.8rem}.inverter-section-header h3{margin:0;font-size:.72rem;font-weight:700;color:var(--text-primary, #f1f5f9)}.inverter-section-header .tag-count{margin-left:auto;font-size:.56rem;padding:.12rem .4rem;background:#334155;border-radius:999px;color:#94a3b8;font-weight:600}.digital-io-container{padding:.25rem 0}.digital-registers-wrap{display:flex;flex-direction:column;gap:1rem}.digital-register-block{background:var(--bg-secondary, #1e293b);border:1px solid var(--border-color, #334155);border-left:3px solid var(--dig-accent, #3b82f6);border-radius:8px;overflow:hidden}.digital-register-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .85rem;background:var(--bg-primary, #0f172a);border-bottom:1px solid var(--border-color, #334155)}.dig-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--dig-accent, #3b82f6)}.dig-raw{font-size:.65rem;font-family:monospace;color:var(--text-muted, #64748b)}.digital-bits-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0}.dig-bit-row{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:.45rem;padding:.3rem .75rem;border-bottom:1px solid var(--border-color, #1e293b);font-size:.68rem;transition:background .15s}.dig-bit-row:last-child{border-bottom:none}.dig-bit-indicator{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dig-bit-row.dig-on .dig-bit-indicator{background:#22c55e;box-shadow:0 0 5px #22c55e88}.dig-bit-row.dig-off .dig-bit-indicator{background:#475569}.dig-bit-row.dig-nodata .dig-bit-indicator{background:#374151}.dig-bit-row.dig-alarm .dig-bit-indicator{background:#ef4444;box-shadow:0 0 5px #ef444488}.dig-bit-row.dig-ok .dig-bit-indicator{background:#22c55e;box-shadow:0 0 5px #22c55e66}.dig-bit-label{color:var(--text-primary, #e2e8f0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dig-bit-row.dig-off .dig-bit-label{color:var(--text-muted, #64748b)}.dig-bit-row.dig-nodata .dig-bit-label{color:#374151}.dig-bit-status{font-size:.6rem;font-weight:700;letter-spacing:.04em;padding:.1rem .3rem;border-radius:4px;min-width:26px;text-align:center}.dig-bit-row.dig-on .dig-bit-status{background:#14532d;color:#4ade80}.dig-bit-row.dig-off .dig-bit-status{background:#1e293b;color:#475569}.dig-bit-row.dig-nodata .dig-bit-status{background:#1e293b;color:#374151}.dig-bit-row.dig-alarm .dig-bit-status{background:#450a0a;color:#f87171}.dig-bit-row.dig-ok .dig-bit-status{background:#14532d;color:#4ade80}.dig-bit-row.dig-alarm .dig-bit-label{color:#fca5a5}.dig-bit-row.dig-ok .dig-bit-label{color:#86efac}.dig-enum-body{padding:.75rem .85rem;display:flex;flex-direction:column;gap:.55rem}.dig-enum-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;display:inline-block;margin-right:.5rem;vertical-align:middle}.dig-enum-label{font-size:1.05rem;font-weight:700;letter-spacing:.02em}.dig-enum-all{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.25rem}.dig-enum-chip{font-size:.62rem;padding:.15rem .5rem;border-radius:999px;border:1px solid #334155;color:#475569;background:transparent;font-weight:500;transition:all .15s}.dig-enum-chip.active{font-weight:700}.dig-bit-num{font-size:.58rem;color:#475569;font-family:monospace;text-align:right}@media(max-width:600px){.digital-bits-grid{grid-template-columns:1fr}}.inv-categories{display:flex;flex-direction:column;gap:1.2rem}.inv-category-section{display:flex;flex-direction:column;gap:.55rem}.inv-category-title{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.09em;padding-bottom:.3rem;border-bottom:1px solid}.smu-table-scroll{overflow-x:auto;overflow-y:auto}.smu-grid-container{display:flex;flex-direction:column;gap:.5rem}.smu-hint{font-size:.68rem;color:var(--text-muted, #64748b);text-align:right;margin:.2rem 0 0}.smu-status-table{border-collapse:collapse;width:100%;min-width:640px;font-size:.8rem}.smu-status-table thead tr{background:var(--bg-secondary, #1e293b);border-bottom:2px solid var(--border-color, #334155)}.smu-th-name{text-align:left!important;padding:.5rem .5rem .5rem .75rem!important;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary, #94a3b8);white-space:nowrap;min-width:100px}.smu-th-smu{padding:.5rem .3rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary, #94a3b8);text-align:center;min-width:58px;white-space:nowrap}.smu-grid-row{border-bottom:1px solid var(--border-color, #334155);cursor:pointer;transition:background .12s}.smu-grid-row:hover{background:#3b82f612}.smu-row-selected{background:#3b82f61f!important}.smu-td-name{padding:.42rem .5rem .42rem .75rem;color:var(--text-primary, #e2e8f0);font-weight:600;font-size:.8rem;white-space:nowrap}.smu-td-status{text-align:center;padding:.3rem .15rem}.smu-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:.65rem;font-weight:900;line-height:1}.smu-icon.online{background:#14532d;color:#4ade80;border:1.5px solid #4ade80}.smu-icon.offline{background:#450a0a;color:#f87171;border:1.5px solid #f87171}.smu-detail-container{display:flex;flex-direction:column;gap:.75rem}.smu-inv-selector{display:flex;flex-wrap:wrap;gap:.35rem}.smu-inv-btn{padding:.28rem .6rem;border-radius:4px;border:1px solid var(--border-color, #334155);background:var(--bg-secondary, #1e293b);color:var(--text-muted, #64748b);font-size:.72rem;cursor:pointer;transition:all .15s}.smu-inv-btn:hover{color:var(--text-primary, #e2e8f0);border-color:#3b82f6}.smu-inv-btn.active{background:#1d4ed8;color:#fff;border-color:#3b82f6;font-weight:700}.smu-detail-table{border-collapse:collapse;width:100%;min-width:1080px;font-size:.76rem}.smu-detail-table thead tr{background:var(--bg-secondary, #1e293b);border-bottom:2px solid var(--border-color, #334155);position:sticky;top:0;z-index:2}.smu-th-series{text-align:left!important;padding:.5rem .4rem .5rem .75rem!important;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary, #94a3b8);min-width:68px;white-space:nowrap}.smu-th-ts{padding:.5rem .4rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary, #94a3b8);min-width:140px;white-space:nowrap}.smu-th-str{padding:.5rem .3rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary, #94a3b8);text-align:center;min-width:52px;white-space:nowrap}.smu-th-status{padding:.5rem .3rem;font-size:.68rem;font-weight:700;text-transform:uppercase;color:var(--text-secondary, #94a3b8);text-align:center;min-width:52px}.smu-tr-even{background:var(--bg-primary, #0f172a)}.smu-tr-odd{background:#ffffff05}.smu-detail-table tbody tr{border-bottom:1px solid var(--border-color, #334155)}.smu-td-series{padding:.38rem .4rem .38rem .75rem;color:var(--text-primary, #e2e8f0)!important;font-weight:600;white-space:nowrap;font-size:.78rem}.smu-td-ts{padding:.38rem .4rem;color:var(--text-muted, #64748b);font-size:.7rem;white-space:nowrap;font-variant-numeric:tabular-nums}.smu-td-val{padding:.38rem .3rem;text-align:center}.smu-td-status-cell{text-align:center;padding:.38rem .3rem}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.plant-map-page{display:flex;flex-direction:column;height:100vh;width:100%;background:#f5f5f5;position:fixed;inset:0;z-index:9999}.map-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1rem 2rem;box-shadow:0 2px 8px #0000001a;z-index:10000}.map-header h2{margin:0 0 .25rem;font-size:1.5rem;font-weight:700;letter-spacing:.5px}.plant-count{margin:0;font-size:.9rem;opacity:.9;font-weight:400}.map-container-full{flex:1;position:relative;width:100%;height:calc(100vh - 80px);overflow:hidden}.map{width:100%;height:100%;z-index:1}.plant-marker-icon{animation:markerBounce 1.5s ease-in-out infinite,markerZoomIn .6s ease-out;filter:drop-shadow(0 4px 8px rgba(0,0,0,.3));transition:transform .3s ease}.plant-marker-icon:hover{transform:scale(1.15);filter:drop-shadow(0 6px 12px rgba(0,0,0,.4))}.plant-name-tooltip{background:#000000d9!important;border:none!important;border-radius:8px!important;box-shadow:0 4px 12px #0000004d!important;padding:8px 16px!important;font-size:14px!important;color:#fff!important;font-weight:700!important;white-space:nowrap!important;animation:fadeIn .5s ease-out;cursor:pointer!important;transition:all .3s ease!important;pointer-events:auto!important}.plant-name-tooltip:hover{background:#667eeaf2!important;transform:scale(1.05);box-shadow:0 6px 16px #667eea80!important}.plant-name-tooltip:before{border-top-color:#000000d9!important}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes markerBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes markerZoomIn{0%{transform:scale(0) translateY(-50px);opacity:0}60%{transform:scale(1.2)}to{transform:scale(1) translateY(0);opacity:1}}.plant-popup .leaflet-popup-content-wrapper{border-radius:12px;box-shadow:0 8px 24px #00000026;padding:0;min-width:320px}.plant-popup .leaflet-popup-content{margin:0;padding:0;min-width:320px}.popup-content{padding:1.5rem}.popup-content h3{margin:0 0 1rem;font-size:1.4rem;color:#1f2937;font-weight:700}.popup-content .description{color:#6b7280;margin:0 0 1rem;font-size:.9rem;line-height:1.5}.info-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.info-row .label{font-weight:600;color:#4b5563;font-size:.9rem}.info-row .value{color:#1f2937;font-size:.9rem}.status-badge{padding:.25rem .75rem;border-radius:12px;font-size:.85rem;font-weight:600}.status-badge.active{background:#d1fae5;color:#065f46}.status-badge.inactive{background:#fee2e2;color:#991b1b}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;margin:1rem 0;padding:1rem;background:#f9fafb;border-radius:8px}.stat-item{display:flex;flex-direction:column;align-items:center;gap:.25rem}.stat-label{font-size:.75rem;color:#6b7280;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:1.5rem;color:#1f2937;font-weight:700}.stat-value.alarm{color:#ef4444}.view-button{width:100%;padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;margin-top:.5rem}.view-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.view-button:active{transform:translateY(0)}@media(max-width:768px){.map-container-full{height:calc(100vh - 120px)}}.loading-state,.error-state,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;width:100vw;position:fixed;top:0;left:0;padding:2rem;text-align:center;background:#f5f5f5}.loading-state .spinner{width:50px;height:50px;border:4px solid #e5e7eb;border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.error-state h3,.empty-state h3{color:#1f2937;margin-bottom:1rem}.error-state p,.empty-state p{color:#6b7280;margin-bottom:.5rem}.empty-state .hint{font-size:.9rem;color:#9ca3af;font-style:italic}.retry-button{padding:.75rem 1.5rem;background:#667eea;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;margin-top:1rem}.retry-button:hover{background:#5568d3;transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}@media(max-width:1024px){.map-container{width:60%}.plants-sidebar{width:40%}}@media(max-width:768px){.plant-map-page{flex-direction:column}.map-container{width:100%;height:60vh}.plants-sidebar{position:relative;width:100%;height:40vh;top:0;box-shadow:0 -2px 8px #0000001a}}.symbol-state-manager{padding:12px;background:#1e293b;border-radius:8px;border:1px solid #334155}.state-manager-empty{padding:16px;text-align:center}.state-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.state-title{font-size:14px;font-weight:600;color:#cbd5e1;margin:0}.state-indicator{width:12px;height:12px;border-radius:50%;box-shadow:0 0 8px currentColor;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.state-buttons{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.state-button{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border:2px solid;border-radius:6px;background:transparent;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s ease;position:relative;overflow:hidden}.state-button:hover{transform:translate(4px);box-shadow:0 2px 8px #0000004d}.state-button.active{font-weight:600;box-shadow:0 4px 12px #0006}.state-button.active:before{content:"";position:absolute;left:0;top:0;width:4px;height:100%;background:currentColor}.state-label{flex:1;text-align:left;margin-left:8px;font-size:15px;font-weight:600}.checkmark{font-size:16px;font-weight:700}.state-info{padding:10px;background:#0f172a;border-radius:6px;margin-bottom:12px}.state-description{margin:0;font-size:12px;color:#94a3b8;line-height:1.5}.state-current{display:flex;gap:8px;align-items:center;padding:8px 12px;background:#0f172a;border-radius:6px;font-size:13px}.state-current .label{color:#94a3b8}.state-current .value{font-weight:600}.state-history{margin-top:12px;padding-top:12px;border-top:1px solid #334155}.history-summary{font-size:12px;color:#94a3b8;cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0}.history-summary:hover{color:#cbd5e1}.history-list{margin-top:8px;display:flex;flex-direction:column;gap:6px}.history-item{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#0f172a;border-radius:4px;font-size:11px;font-family:monospace}.history-from,.history-to{padding:2px 6px;background:#1e293b;border-radius:3px;color:#e2e8f0}.history-arrow{color:#64748b}.history-trigger{margin-left:auto;color:#64748b;font-size:10px}.symbol-properties-panel{position:absolute;top:0;right:0;bottom:0;width:320px;background:#fff;border-left:1px solid #e2e8f0;box-shadow:-4px 0 12px #00000026;display:flex;flex-direction:column;overflow:hidden;z-index:1000}.symbol-properties-panel .panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #e2e8f0;background:#f8fafc;flex-shrink:0}.symbol-properties-panel .panel-header h3{margin:0;font-size:1rem;font-weight:600;color:#1e293b;display:flex;align-items:center;gap:.5rem}.symbol-properties-panel .close-btn{background:none;border:none;font-size:1.25rem;color:#64748b;cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:4px;transition:all .2s}.symbol-properties-panel .close-btn:hover{background:#e2e8f0;color:#1e293b}.panel-content{flex:1;overflow-y:auto;padding:1rem}.multi-badge{margin-left:.5rem;padding:.125rem .5rem;background:#3b82f6;color:#fff;border-radius:10px;font-size:.75rem;font-weight:600}.multi-select-info{padding:2rem 1rem;text-align:center;color:#64748b}.multi-select-info p{margin:.5rem 0}.help-text{font-size:.875rem;color:#94a3b8}.section{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #e2e8f0}.section:last-child{border-bottom:none}.section h4{margin:0 0 .75rem;font-size:.875rem;font-weight:600;color:#1e293b;text-transform:uppercase;letter-spacing:.025em}.section-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.section-header .symbol-icon{font-size:1.5rem}.section-header h4{margin:0;font-size:1rem;text-transform:none}.info-row{display:flex;justify-content:space-between;padding:.5rem 0;font-size:.875rem}.info-label{color:#64748b;font-weight:500}.info-value{color:#1e293b;font-weight:600}.param-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.param-row:last-child{margin-bottom:0}.param-label{flex-shrink:0;min-width:80px;font-size:.875rem;font-weight:500;color:#475569;display:flex;align-items:center}.required{color:#ef4444;margin-left:.125rem}.param-input{flex:1;padding:.5rem;border:1px solid #cbd5e1;border-radius:4px;font-size:.875rem;color:#1e293b;background:#fff;transition:all .2s}.param-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.param-input[type=number]::-webkit-inner-spin-button,.param-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.param-input[type=number]{-moz-appearance:textfield;appearance:textfield}.param-input.small{width:80px;flex:none}.param-input[type=range]{padding:0}.unit{flex-shrink:0;font-size:.875rem;color:#64748b;font-weight:500;min-width:2rem}.color-input-wrapper{flex:1;display:flex;gap:.5rem;align-items:center}.color-input{width:40px;height:32px;padding:0;border:1px solid #cbd5e1;border-radius:4px;cursor:pointer;flex-shrink:0}.color-input::-webkit-color-swatch-wrapper{padding:2px}.color-input::-webkit-color-swatch{border:none;border-radius:2px}.color-text-input{flex:1;padding:.5rem;border:1px solid #cbd5e1;border-radius:4px;font-size:.875rem;font-family:Courier New,monospace;color:#1e293b}.color-text-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.checkbox-label{flex:1;display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:#475569}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}select.param-input{cursor:pointer}select.param-input option{padding:.5rem}.panel-content::-webkit-scrollbar{width:8px}.panel-content::-webkit-scrollbar-track{background:#f1f5f9}.panel-content::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.panel-content::-webkit-scrollbar-thumb:hover{background:#94a3b8}@media(max-width:1280px){.symbol-properties-panel{width:300px}.param-label{min-width:70px}}@media(max-width:768px){.symbol-properties-panel{width:280px}}.config-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.config-row:last-child{margin-bottom:0}.config-label{flex-shrink:0;min-width:80px;font-size:.875rem;font-weight:500;color:#475569;display:flex;align-items:center}.config-input{padding:.5rem;border:1px solid #cbd5e1;border-radius:4px;font-size:.875rem;color:#1e293b;background:#fff;transition:all .2s}.config-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.config-input[type=number]::-webkit-inner-spin-button,.config-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.config-input[type=number]{-moz-appearance:textfield;appearance:textfield}.config-group{background:#f8fafc;padding:.75rem;border-radius:6px;border:1px solid #e2e8f0}.preset-btn{padding:.5rem 1rem;border:1px solid #cbd5e1;border-radius:4px;background:#fff;color:#475569;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.preset-btn:hover{background:#3b82f6;color:#fff;border-color:#3b82f6}.preset-btn:active{transform:scale(.95)}.wire-type-selector{position:fixed;right:20px;top:120px;width:320px;max-height:calc(100vh - 140px);background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px #00000026;display:flex;flex-direction:column;z-index:1000}.wire-selector-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #eee;background:#f8f9fa;border-radius:8px 8px 0 0}.wire-selector-header h3{margin:0;font-size:16px;font-weight:600;color:#333}.wire-selector-header .close-btn{background:none;border:none;font-size:20px;color:#666;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.wire-selector-header .close-btn:hover{background:#e9ecef;color:#333}.wire-type-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:16px;overflow-y:auto;flex:1}.wire-type-item{border:2px solid #e0e0e0;border-radius:6px;padding:8px;cursor:pointer;transition:all .2s;background:#fff;display:flex;flex-direction:column;align-items:center;gap:8px}.wire-type-item:hover{border-color:#1976d2;box-shadow:0 2px 8px #1976d233;transform:translateY(-2px)}.wire-type-item.selected{border-color:#1976d2;background:#e3f2fd;box-shadow:0 0 0 2px #1976d233}.wire-preview{width:100%;height:80px;display:flex;align-items:center;justify-content:center;background:#f5f5f5;border-radius:4px;overflow:hidden}.wire-preview svg{max-width:100%;max-height:100%;width:auto;height:auto}.wire-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#999;font-size:12px}.wire-name{font-size:11px;color:#555;text-align:center;font-weight:500;line-height:1.2;min-height:28px;display:flex;align-items:center}.wire-selector-footer{padding:12px 16px;border-top:1px solid #eee;background:#f8f9fa;border-radius:0 0 8px 8px}.wire-selector-footer .help-text{margin:0;font-size:12px;color:#666;text-align:center;line-height:1.4}.wire-type-grid::-webkit-scrollbar{width:6px}.wire-type-grid::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.wire-type-grid::-webkit-scrollbar-thumb{background:#888;border-radius:3px}.wire-type-grid::-webkit-scrollbar-thumb:hover{background:#555}.connection-guide{position:fixed;top:120px;left:50%;transform:translate(-50%);width:480px;max-width:90vw;background:#fff;border:2px solid #3b82f6;border-radius:12px;box-shadow:0 8px 24px #3b82f64d;z-index:2000;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translate(-50%) translateY(-20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.guide-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:10px 10px 0 0;color:#fff}.guide-header h3{margin:0;font-size:18px;font-weight:600}.guide-close{background:#fff3;border:none;color:#fff;font-size:20px;width:28px;height:28px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.guide-close:hover{background:#ffffff4d;transform:rotate(90deg)}.guide-content{padding:20px}.guide-step{display:flex;gap:16px;margin-bottom:20px;align-items:flex-start}.step-number{flex-shrink:0;width:36px;height:36px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px;box-shadow:0 2px 8px #3b82f64d}.step-text{flex:1}.step-text strong{display:block;color:#1e293b;font-size:15px;margin-bottom:4px}.step-text p{margin:0;color:#64748b;font-size:14px;line-height:1.5}.port-indicator{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle;margin:0 2px}.port-indicator.green{color:#10b981}.port-indicator.red{color:#ef4444}.guide-note{margin-top:24px;padding:16px;background:#f8fafc;border-left:4px solid #3b82f6;border-radius:6px}.guide-note strong{display:block;color:#1e293b;font-size:14px;margin-bottom:8px}.guide-note ul{margin:0;padding-left:20px;color:#64748b;font-size:13px;line-height:1.8}.guide-note li{margin-bottom:4px}.guide-note kbd{display:inline-block;padding:2px 6px;background:#fff;border:1px solid #cbd5e1;border-radius:4px;font-family:monospace;font-size:12px;color:#1e293b;box-shadow:0 1px 2px #0000000d}.guide-note em{color:#3b82f6;font-style:normal;font-weight:600}.layout-editor{display:flex;flex-direction:column;height:100vh;background:#f8fafc;overflow:hidden;position:relative}.layout-toolbar{display:flex;align-items:center;gap:1rem;padding:.75rem .5rem;background:#fff;border-bottom:1px solid #e2e8f0;box-shadow:0 1px 3px #0000001a;flex-shrink:0}.toolbar-section{display:flex;align-items:center;gap:.5rem;padding:0 .75rem;border-right:1px solid #e2e8f0}.toolbar-section:last-child{border-right:none;margin-left:auto}.toolbar-section h2{margin:0;font-size:1.25rem;color:#1e293b;display:flex;align-items:center;gap:.5rem}.plant-badge{padding:.25rem .75rem;background:#3b82f6;color:#fff;border-radius:12px;font-size:.75rem;font-weight:600}.tool-btn{padding:.5rem 1rem;border:1px solid #cbd5e1;background:#fff;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;color:#475569;transition:all .2s;display:flex;align-items:center;gap:.25rem}.tool-btn:hover{background:#f1f5f9;border-color:#94a3b8}.tool-btn.active,.tool-btn.primary{background:#3b82f6;color:#fff;border-color:#3b82f6}.tool-btn.primary:hover{background:#2563eb}.tool-btn.danger{background:#ef4444;color:#fff;border-color:#ef4444}.tool-btn.danger:hover{background:#dc2626}.tool-btn:disabled{opacity:.5;cursor:not-allowed}.zoom-display{min-width:3rem;text-align:center;font-size:.875rem;font-weight:600;color:#475569}.toggle-label{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#475569;cursor:pointer}.toggle-label input[type=checkbox]{cursor:pointer}.readonly-badge{padding:.5rem 1rem;background:#fef3c7;color:#92400e;border-radius:6px;font-size:.875rem;font-weight:600;border:1px solid #fde68a}.layout-workspace{display:flex;flex:1;overflow:hidden;position:relative}.symbol-library-panel{width:200px;background:#f5f5f5;border-right:1px solid #d0d0d0;display:flex;flex-direction:column;overflow:hidden;flex-shrink:0}.panel-header{padding:8px;border-bottom:1px solid #d0d0d0;background:#fff}.search-input{width:100%;padding:6px 8px;border:1px solid #d0d0d0;border-radius:3px;font-size:13px;outline:none;box-sizing:border-box}.search-input:focus{border-color:#4d90fe}.category-selector{padding:8px;background:#fff;border-bottom:1px solid #d0d0d0}.category-dropdown{width:100%;padding:4px 6px;border:1px solid #d0d0d0;border-radius:3px;font-size:12px;background:#fff;cursor:pointer;outline:none}.category-dropdown:hover{background:#f8f8f8}.symbols-grid{flex:1;overflow-y:auto;background:#fff;padding:12px 8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:8px;align-content:start}.symbol-grid-item{display:flex;flex-direction:column;align-items:center;padding:8px 4px;border:1px solid transparent;border-radius:4px;cursor:move;transition:all .15s;background:#fff}.symbol-grid-item:hover{border-color:#4d90fe;background:#f0f7ff;box-shadow:0 1px 3px #0000001a}.symbol-grid-item:active{transform:scale(.95)}.symbol-preview{width:48px;height:48px;margin-bottom:4px;display:flex;align-items:center;justify-content:center}.symbol-preview svg{width:100%;height:100%;max-width:48px;max-height:48px}.symbol-label{font-size:10px;color:#5f6368;text-align:center;line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-sections{border-top:1px solid #d0d0d0;background:#fff;padding:4px 0}.section-toggle{width:100%;padding:6px 12px;border:none;background:transparent;text-align:left;font-size:12px;color:#5f6368;cursor:pointer;transition:background .15s;display:flex;align-items:center;gap:4px}.section-toggle:hover{background:#f5f5f5}.more-shapes-btn{width:calc(100% - 16px);margin:8px;padding:6px 12px;border:1px solid #4d90fe;background:#fff;color:#4d90fe;border-radius:3px;font-size:12px;cursor:pointer;transition:all .15s;font-weight:500}.more-shapes-btn:hover{background:#f0f7ff}.canvas-container{flex:1;position:relative;overflow:auto;background:#f9fafb;scroll-behavior:smooth}.canvas-viewport{width:max-content;height:max-content;overflow:visible;cursor:default;position:relative;min-width:100%;min-height:100%;padding:50px;box-sizing:border-box}.canvas-viewport.panning{cursor:grab}.canvas-viewport.panning:active{cursor:grabbing}.canvas-viewport svg{display:block;-webkit-user-select:none;user-select:none}.canvas-stats{position:absolute;bottom:1rem;left:1rem;background:#fffffff2;padding:.5rem 1rem;border-radius:6px;box-shadow:0 2px 8px #0000001a;font-size:.75rem;color:#475569;display:flex;gap:1rem;pointer-events:none}.canvas-stats div{font-weight:600}.show-library-btn{position:absolute;top:1rem;left:1rem;width:48px;height:48px;border:1px solid #cbd5e1;background:#fff;border-radius:8px;cursor:pointer;font-size:1.5rem;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0000001a;transition:all .2s}.show-library-btn:hover{background:#3b82f6;border-color:#3b82f6;transform:scale(1.05)}svg g{transition:opacity .2s}svg g:hover rect{stroke-width:3}@media(max-width:1024px){.symbol-library-panel{width:240px}.toolbar-section{gap:.375rem;padding:0 .5rem}.tool-btn{padding:.375rem .75rem;font-size:.8125rem}}@media(max-width:768px){.layout-toolbar{flex-wrap:wrap;padding:.5rem}.toolbar-section{border-right:none;padding:.25rem}.symbol-library-panel{position:absolute;left:0;top:0;bottom:0;z-index:10;box-shadow:2px 0 8px #0000001a}.canvas-stats{font-size:.6875rem;gap:.5rem;padding:.375rem .75rem}}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#1e293b80;z-index:1000;display:flex;align-items:center;justify-content:center}.modal{background:var(--bg-primary, #fff);border-radius:16px;box-shadow:0 8px 32px #0000002e;min-width:350px;max-width:95vw;width:400px;padding:0;overflow:hidden;border:2px solid var(--border-color, #e2e8f0)}.success-modal .modal-header{background:linear-gradient(135deg,var(--success, #16a34a) 0%,var(--bg-secondary, #f0fdf4) 100%);padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-color, #e2e8f0)}.success-modal .modal-header h3{margin:0;font-size:1.1rem;font-weight:700;color:#fff}.failed-modal .modal-header{background:linear-gradient(135deg,var(--error, #ef4444) 0%,var(--bg-secondary, #fef2f2) 100%);padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-color, #e2e8f0)}.failed-modal .modal-header h3{margin:0;font-size:1.1rem;font-weight:700;color:#fff}.success-modal .modal-header button{background:none;border:none;color:var(--text-secondary, #64748b);font-size:1.2rem;cursor:pointer}.success-modal .modal-body{padding:1.5rem;color:var(--text-primary, #1e293b);font-size:1rem;text-align:center}.success-modal .modal-footer{padding:1rem 1.5rem;background:var(--bg-secondary, #f8fafc);display:flex;justify-content:flex-end;gap:1rem;border-top:1px solid var(--border-color, #e2e8f0)}.layout-editor-page{display:flex;flex-direction:column;height:100%;background:#f8fafc;overflow:hidden}.page-header{background:#fff;border-bottom:2px solid #e2e8f0;padding:.75rem 0;box-shadow:0 2px 4px #0000000d;flex-shrink:0}.page-header.compact{padding:.5rem 0}.header-content h1{margin:0 0 .25rem;font-size:1.75rem;color:#1e293b;display:flex;align-items:center;gap:.5rem}.header-content p{margin:0;color:#64748b;font-size:.95rem}.header-controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.control-group{display:flex;align-items:center;gap:.5rem}.control-group label{font-size:.875rem;font-weight:600;color:#475569}.plant-select,.layout-select{min-width:200px;padding:.5rem 1rem;border:1px solid #cbd5e1;border-radius:6px;font-size:.875rem;color:#1e293b;background:#fff;cursor:pointer;transition:all .2s}.plant-select:focus,.layout-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.plant-select:disabled,.layout-select:disabled{opacity:.5;cursor:not-allowed}.btn{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.25rem}.btn:hover{transform:translateY(-1px);box-shadow:0 2px 8px #00000026}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary:hover{background:#2563eb}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover{background:#dc2626}.error-banner{display:flex;align-items:center;justify-content:space-between;padding:1rem 2rem;background:#fef2f2;border-bottom:2px solid #fecaca;color:#991b1b;font-size:.875rem;font-weight:600}.error-banner button{background:none;border:none;color:#991b1b;font-size:1.25rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s}.error-banner button:hover{background:#991b1b1a}.editor-area{flex:1;overflow:hidden;position:relative}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem;text-align:center}.empty-icon{font-size:4rem;margin-bottom:1rem;opacity:.5}.empty-state h2{margin:0 0 .5rem;font-size:1.5rem;color:#1e293b}.empty-state p{margin:0 0 1.5rem;color:#64748b;font-size:1rem}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem}.spinner{width:48px;height:48px;border:4px solid #e2e8f0;border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-state p{margin-top:1rem;color:#64748b;font-size:1rem;font-weight:600}.help-panel{position:fixed;bottom:1rem;right:1rem;max-width:300px;padding:1rem;background:#fffffff2;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 12px #0000001a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:1000}.help-panel h3{margin:0 0 .75rem;font-size:.875rem;color:#1e293b;display:flex;align-items:center;gap:.25rem}.help-panel ul{margin:0;padding-left:1.25rem;list-style-type:disc}.help-panel li{margin-bottom:.5rem;font-size:.8125rem;color:#475569;line-height:1.5}.help-panel li:last-child{margin-bottom:0}@media(max-width:1024px){.page-header{padding:1rem 1.5rem}.header-content h1{font-size:1.5rem}.header-controls{gap:.75rem}.plant-select,.layout-select{min-width:160px}.help-panel{max-width:260px;padding:.875rem}}@media(max-width:768px){.page-header{padding:1rem}.header-content h1{font-size:1.25rem}.header-controls{flex-direction:column;align-items:stretch;gap:.75rem}.control-group{flex-direction:column;align-items:stretch}.plant-select,.layout-select{min-width:0;width:100%}.btn{width:100%;justify-content:center}.help-panel{position:static;max-width:100%;margin:1rem}.empty-state{padding:1.5rem 1rem}.empty-icon{font-size:3rem}.empty-state h2{font-size:1.25rem}.empty-state p{font-size:.875rem}}.page-header{width:100%;margin-bottom:1rem}.page-header-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.page-header-title h1{margin:0;font-size:1.5rem;font-weight:600}.page-header-title .subtitle{margin:0;color:var(--text-secondary);font-size:.95rem}.page-header-actions{display:flex;align-items:center;gap:.75rem;flex-shrink:0}@media(max-width:768px){.page-header-row{flex-direction:column;align-items:flex-start;gap:.5rem}.page-header-actions{width:100%;justify-content:flex-start;gap:.5rem}}.generation-forecast-container{padding:2rem;min-height:100vh}.forecast-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.forecast-header h2{margin:0;color:var(--text-primary);font-size:1.8rem}.forecast-header p{margin:.25rem 0 0;color:var(--text-secondary);font-size:.9rem}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-bottom:2rem}.card-icon{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;flex-shrink:0}.summary-card.actual .card-icon{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.summary-card.forecast .card-icon{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.summary-card.accuracy .card-icon{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.card-content .value{font-size:2rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.inverter-table-container{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;overflow-x:auto}.inverter-table-container h3{margin:0 0 1rem;color:var(--text-primary);font-size:1.2rem}.inverter-table{width:100%;border-collapse:collapse}.inverter-table thead{background:var(--hover-bg)}.inverter-table th{padding:1rem;text-align:left;color:var(--text-primary);font-weight:600;border-bottom:2px solid var(--border-color)}.inverter-table td{padding:.875rem 1rem;color:var(--text-secondary);border-bottom:1px solid var(--border-color)}.inverter-table tbody tr:hover{background:var(--hover-bg)}.inverter-table tbody tr:last-child td{border-bottom:none}@media(max-width:768px){.generation-forecast-container{padding:1rem}.forecast-header{flex-direction:column;align-items:flex-start}.summary-cards{grid-template-columns:1fr}.time-range-selector{width:100%}.range-btn{flex:1}}.oem-data-container{padding:2rem;min-height:100vh}.oem-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.oem-header h2{margin:0;color:var(--text-primary);font-size:1.8rem}.oem-header p{margin:.25rem 0 0;color:var(--text-secondary);font-size:.9rem}.add-btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s}.add-btn:hover{background:var(--primary-hover);transform:translateY(-2px);box-shadow:0 4px 8px #0003}.alert{padding:1rem 1.5rem;border-radius:8px;margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:center}.alert-success{background:#d1fae5;color:#065f46;border:1px solid #6ee7b7}.alert-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:inherit;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.summary-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;display:flex;gap:1.25rem;transition:transform .2s,box-shadow .2s}.summary-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px #0000001a}.card-icon{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;flex-shrink:0;background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-hover) 100%);color:#fff}.card-content{flex:1}.card-content h3{margin:0 0 .5rem;color:var(--text-secondary);font-size:.9rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.card-content .value{font-size:1.8rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.card-content .subtitle{font-size:.85rem;color:var(--text-secondary)}.form-container{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;margin-bottom:2rem}.form-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.form-header h3{margin:0;color:var(--text-primary);font-size:1.2rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group.full-width{grid-column:1 / -1}.form-group label{color:var(--text-primary);font-weight:500;font-size:.9rem}.form-group small{display:block;color:var(--text-secondary);font-size:.75rem;margin-top:.25rem;font-style:italic}.section-divider{grid-column:1 / -1;margin:1.5rem 0 1rem;padding:1rem;background:linear-gradient(135deg,#3b82f61a,#10b9811a);border-left:4px solid var(--primary-color);border-radius:8px}.section-divider h4{margin:0 0 .5rem;color:var(--text-primary);font-size:1.1rem;display:flex;align-items:center;gap:.5rem}.section-subtitle{margin:0;color:var(--text-secondary);font-size:.85rem}.form-group input,.form-group select,.form-group textarea{padding:.75rem;border:1px solid var(--border-color);border-radius:6px;background:var(--input-bg);color:var(--text-primary);font-size:.95rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary-color)}.input-group{display:flex;gap:.5rem}.input-group input{flex:1}.input-group select{width:100px}.form-actions{display:flex;justify-content:flex-end;gap:1rem}.cancel-btn{padding:.75rem 1.5rem;background:transparent;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s}.cancel-btn:hover{background:var(--hover-bg);color:var(--text-primary)}.submit-btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s}.submit-btn:hover{background:var(--primary-hover)}.table-container{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;overflow-x:auto}.table-container h3{margin:0 0 1rem;color:var(--text-primary);font-size:1.2rem}.loading-state,.empty-state{text-align:center;padding:4rem;color:var(--text-secondary)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:1rem}.empty-state svg{font-size:4rem;opacity:.3}.oem-table{width:100%;border-collapse:collapse;min-width:800px}.oem-table thead{background:var(--hover-bg)}.oem-table th{padding:1rem;text-align:left;color:var(--text-primary);font-weight:600;border-bottom:2px solid var(--border-color);white-space:nowrap}.oem-table td{padding:.875rem 1rem;color:var(--text-secondary);border-bottom:1px solid var(--border-color)}.oem-table tbody tr:hover{background:var(--hover-bg)}.oem-table tbody tr:last-child td{border-bottom:none}.action-buttons{display:flex;gap:.5rem}.edit-btn,.delete-btn{padding:.5rem;border:none;border-radius:6px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.edit-btn{background:#3b82f6;color:#fff}.edit-btn:hover{background:#2563eb}.delete-btn{background:#ef4444;color:#fff}.delete-btn:hover{background:#dc2626}@media(max-width:768px){.oem-data-container{padding:1rem}.oem-header{flex-direction:column;align-items:flex-start}.form-grid{grid-template-columns:1fr}.add-btn{width:100%;justify-content:center}}.performance-ratio-container{padding:2rem;min-height:100vh}.pr-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.header-content{display:flex;align-items:center;gap:1rem}.header-icon{font-size:2.5rem;color:var(--primary-color)}.pr-header h2{margin:0;color:var(--text-primary);font-size:1.8rem}.pr-header p{margin:.25rem 0 0;color:var(--text-secondary);font-size:.9rem}.time-range-selector{display:flex;gap:.5rem;background:var(--card-bg);padding:.25rem;border-radius:8px;border:1px solid var(--border-color)}.range-btn{padding:.5rem 1.25rem;border:none;background:transparent;color:var(--text-secondary);border-radius:6px;cursor:pointer;font-weight:500;transition:all .2s}.range-btn:hover{background:var(--hover-bg);color:var(--text-primary)}.range-btn.active{background:var(--primary-color);color:#fff}.loading-state{text-align:center;padding:4rem;color:var(--text-secondary);font-size:1.1rem}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem;margin-bottom:2rem}.metric-card{background:var(--card-bg);border:2px solid var(--border-color);border-radius:12px;padding:1.5rem;transition:transform .2s,box-shadow .2s}.metric-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px #0000001a}.metric-card.primary{border-width:3px}.metric-header{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;color:var(--text-secondary)}.metric-header svg{font-size:1.2rem}.metric-label{font-size:.9rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.metric-value{font-size:2.5rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem;line-height:1}.metric-status{font-size:.95rem;font-weight:600}.metric-subtitle{font-size:.85rem;color:var(--text-secondary)}.formula-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;margin-bottom:2rem}.formula-card h3{margin:0 0 1rem;color:var(--text-primary);font-size:1.2rem}.formula{background:var(--hover-bg);border-left:4px solid var(--primary-color);padding:1rem 1.5rem;border-radius:8px;margin-bottom:1.5rem}.formula-text{font-size:1.1rem;font-weight:600;color:var(--text-primary);font-family:Courier New,monospace}.formula-details{display:grid;gap:.75rem}.detail-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:var(--hover-bg);border-radius:6px}.detail-label{color:var(--text-secondary);font-weight:500}.detail-value{color:var(--text-primary);font-weight:700;font-size:1.1rem}.chart-container{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;margin-bottom:2rem}.chart-container h3{margin:0 0 1.5rem;color:var(--text-primary);font-size:1.2rem}.loss-analysis{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem}.loss-analysis h3{margin:0 0 1.5rem;color:var(--text-primary);font-size:1.2rem}.loss-breakdown{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.loss-item{display:flex;align-items:center}.loss-bar{display:flex;align-items:center;padding:.75rem 1rem;border-radius:8px;color:#fff;font-weight:600;transition:all .3s;min-width:120px}.loss-bar span{white-space:nowrap}.loss-notes{background:var(--hover-bg);border-radius:8px;padding:1.5rem}.loss-notes p{margin:0 0 1rem;color:var(--text-primary);font-weight:600}.loss-notes ul{margin:0;padding-left:1.5rem;color:var(--text-secondary)}.loss-notes li{margin-bottom:.5rem}@media(max-width:768px){.performance-ratio-container{padding:1rem}.pr-header{flex-direction:column;align-items:flex-start}.metrics-grid{grid-template-columns:1fr}.time-range-selector{width:100%}.range-btn{flex:1}.detail-item{flex-direction:column;align-items:flex-start;gap:.5rem}}.page-container{min-height:100vh;background:var(--bg-primary);color:var(--text-primary);transition:all .3s ease;position:relative}.page-container:before{content:"";position:fixed;inset:0;background-image:linear-gradient(var(--scada-grid) 1px,transparent 1px),linear-gradient(90deg,var(--scada-grid) 1px,transparent 1px);background-size:20px 20px;pointer-events:none;opacity:.3;z-index:0}.page-content{padding:2rem;width:100%;margin:0 auto;position:relative;z-index:1}.page-header{margin-bottom:1rem;text-align:center;padding:.75rem 1rem;background:var(--bg-secondary);border-radius:0;border:1px solid var(--border-color);box-shadow:none;position:relative;overflow:hidden}.page-header:before{display:none}.page-header h1{font-size:1.5rem;font-weight:700;margin-bottom:.25rem;color:var(--text-primary);text-transform:uppercase;letter-spacing:.5px}.welcome-section{text-align:center;padding:4rem 2rem;margin-bottom:2rem}.welcome-section h1{font-size:3.5rem;font-weight:900;margin-bottom:1rem;color:var(--text-primary);text-transform:uppercase;letter-spacing:2px}.subtitle{font-size:.875rem;color:var(--text-secondary);margin-bottom:0;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.grid-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));margin-top:-1.5rem}.grid-item{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:0;padding:0rem 2rem 2rem;box-shadow:none;transition:all .3s ease;position:relative;overflow:hidden}.grid-item:before{display:none}.grid-item:after{content:"";position:absolute;top:1rem;right:1rem;width:12px;height:12px;background:var(--success);border-radius:50%;box-shadow:0 0 8px var(--success);animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}.grid-item:hover{transform:none;box-shadow:0 2px 8px var(--shadow);border-color:var(--accent-primary)}.grid-item h3{font-size:1.35rem;font-weight:700;margin-bottom:1rem;color:var(--text-primary);text-transform:uppercase;letter-spacing:.5px}.grid-item p{color:var(--text-secondary);line-height:1.6;margin:0;font-size:.95rem}.placeholder{min-height:220px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-tertiary) 100%);border:2px dashed var(--border-color)}.placeholder h3{margin-bottom:1rem;font-size:1.5rem;color:var(--accent-primary)}.placeholder p{font-style:italic;opacity:.8;color:var(--text-muted)}.settings-info{grid-column:1 / -1;text-align:center;padding:4rem 2rem;background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-color);margin:0 2rem}.settings-info p{font-size:1.1rem;color:var(--text-secondary);margin:0}@media(max-width:768px){.page-content{padding:1rem}.welcome-section{padding:2rem 0}.welcome-section h1,.page-header h1{font-size:2rem}.grid-container{grid-template-columns:1fr;gap:1rem}.grid-item{padding:1.5rem}.placeholder{min-height:150px}}@media(max-width:480px){.welcome-section h1,.page-header h1{font-size:1.75rem}.subtitle{font-size:1rem}.grid-item{padding:1rem}}.page-container.dark,.page-container.light{background:var(--bg-primary)}.grid-item{animation:fadeIn .6s ease-out}.grid-item:nth-child(2){animation-delay:.1s}.grid-item:nth-child(3){animation-delay:.2s}.grid-item:nth-child(4){animation-delay:.3s}.grid-item{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.grid-item:hover:before{background:var(--gradient-secondary)}.grid-item:focus-within{outline:2px solid var(--accent-primary);outline-offset:2px}.customization-tabs{display:flex;gap:.3rem;margin-bottom:.2rem;margin-top:-1.6rem;padding:.5rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color);position:relative;z-index:10}.tab-button{flex:1;padding:.5rem 1rem;background:transparent;border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;text-align:center}.tab-button:hover{background:var(--hover-bg, rgba(0, 0, 0, .05));border-color:var(--accent-primary)}.tab-button.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.customization-content{background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color);padding:20px;min-height:500px;position:relative;z-index:1}.layout-editor-container{margin:10px -20px -20px;height:calc(100vh - 220px);min-height:600px;overflow:hidden;border-radius:8px;position:relative;z-index:1}@media(max-width:768px){.customization-tabs{flex-direction:column}.tab-button{width:100%}}.historian-filter{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-bottom:-1rem}.historian-device-dropdown{min-width:220px}.historian-datapoint-dropdown{flex:3 1 400px;min-width:0}.hf-field{display:flex;flex-direction:column;gap:6px;min-width:160px;margin-top:.6rem}.hf-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.6px}.hf-input{padding:8px;font-size:.9rem;border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);border-radius:6px;width:100%;box-sizing:border-box}.hf-multiselect{min-height:84px;padding:6px 8px;font-size:.85rem;border-radius:6px}.hf-param .hf-multiselect{min-height:110px}.hf-param{flex:1 1 100%;margin-top:8px}.hf-param .hf-multiselect{display:inline-block;width:-moz-fit-content;width:fit-content;max-width:100%;min-width:220px;padding:6px 8px}.hf-param-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 12px;max-height:360px;overflow:auto;padding:8px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);width:100%;box-sizing:border-box}.hf-param-item{display:flex;align-items:center;gap:8px;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hf-param-item input[type=checkbox]{width:16px;height:16px}.hf-param-label{color:var(--text-primary)}@media(max-width:1100px){.hf-param-list{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.hf-param-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:420px){.hf-param-list{grid-template-columns:1fr}}.hf-actions{display:flex;flex-direction:row;gap:8px;margin-top:0;align-items:center;flex-shrink:0}.hf-actions .hf-quick{font-size:.85rem;color:var(--text-secondary);margin-left:6px}.hf-quick-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;overflow-x:visible;flex:1 1 auto}.hf-btn{padding:.55rem;min-width:44px;border-radius:6px;border:1px solid var(--border-color);background:transparent;cursor:pointer;font-size:.9rem;flex:0 1 auto;white-space:nowrap}.hf-btn:disabled{opacity:.5;cursor:not-allowed}.hf-tip{font-size:.8rem;color:var(--text-secondary)}.hf-apply-group{margin-left:auto;display:flex;gap:8px;align-items:center;flex-shrink:0}.hf-btn.hf-apply{background:#f7f5f5;border:1px solid #dfdddd;color:var(--text-secondary);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:8px 12px;min-width:72px;border-radius:8px;cursor:pointer;transition:all .2s ease;white-space:nowrap}.hf-btn.hf-apply:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary);border-bottom:2px solid var(--accent-primary);border-radius:10px}.hf-btn.hf-apply:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.hf-btn.hf-clear{background:#f7f5f5;border:1px solid #dfdddd;color:var(--text-secondary);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:8px 12px;min-width:72px;border-radius:8px;cursor:pointer;transition:all .2s ease;white-space:nowrap}.hf-btn.hf-clear:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary);border-bottom:2px solid var(--accent-primary);border-radius:10px}.hf-btn.hf-clear:focus{outline:2px solid var(--accent-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){.hf-btn.hf-apply,.hf-btn.hf-clear{transition:none!important;transform:none!important}}.hf-live{position:relative;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(90deg,#16a34a,#0891b2 60%);border:1px solid rgba(255,255,255,.12);box-shadow:0 6px 18px #0891b21f,0 2px 6px #16a34a14;padding-left:10px;animation:hf-blink 1.2s ease-in-out infinite}.hf-live:before{content:"";width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff,#ffffffe6 10%,#fff3 40%),#ef4444;margin-right:8px;box-shadow:0 0 8px #ef444499}@keyframes hf-blink{0%{transform:translateZ(0) scale(1);box-shadow:0 6px 18px #0891b21f}50%{transform:translateZ(0) scale(1.04);box-shadow:0 10px 28px #0891b22e}to{transform:translateZ(0) scale(1);box-shadow:0 6px 18px #0891b21f}}.hf-live:hover,.hf-live:focus{box-shadow:0 12px 36px #0891b238;transform:translateZ(0) scale(1.05)}@media(prefers-reduced-motion:reduce){.hf-live,.hf-live:before{animation:none!important;transition:none!important}}.device-management{padding:0}.controls-section{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:16px;flex-wrap:wrap}.filter-controls{display:flex;gap:12px;align-items:center}.filter-controls label{display:flex;flex-direction:column;gap:4px;font-size:14px}.filter-controls select{padding:8px 12px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);font-size:14px;min-width:180px}.devices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-top:20px}.device-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;padding:20px;transition:transform .2s,box-shadow .2s}.device-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.device-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border-color)}.device-card-header h3{margin:0;font-size:18px;color:var(--text-primary)}.status-badge{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;color:#fff;text-transform:uppercase}.device-card-body{margin-bottom:16px}.device-info p{margin:8px 0;font-size:14px;color:var(--text-secondary)}.device-info strong{color:var(--text-primary);margin-right:8px}.device-stats{display:flex;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border-color);font-size:13px}.alarm-badge{color:#ef4444;font-weight:600}.metadata-section{margin-top:12px;padding:12px;background:var(--bg-primary);border-radius:6px;border:1px solid var(--border-color)}.metadata-section summary{cursor:pointer;font-weight:600;color:var(--text-primary);font-size:13px}.metadata-content{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-color)}.metadata-content p{margin:6px 0;font-size:12px}.device-card-actions{display:flex;gap:8px;justify-content:flex-end}.device-card{display:flex;flex-direction:column}.device-card-body{flex:1 1 auto}.device-card-actions{margin-top:auto}.btn-edit,.btn-delete{padding:8px 16px;border-radius:6px;font-size:14px;cursor:pointer;transition:all .12s ease-in-out;display:inline-flex;align-items:center;gap:8px}.btn-edit{background:transparent;color:#3b82f6;border:1px solid #3b82f6}.btn-edit:hover{background:#3b82f60f}.btn-delete{background:transparent;color:#ef4444;border:1px solid #ef4444}.btn-delete:hover{background:#ef44440f}.btn-outlined{background:transparent;border:1px solid transparent}.btn-primary.btn-outlined{color:#3b82f6;background:transparent;border:1px solid #3b82f6}.btn-primary.btn-outlined:hover{background:#3b82f60f}.icon{display:inline-block;vertical-align:middle;width:1em;height:1em}.btn-text{display:inline-block}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.modal-content{background:var(--bg-secondary);border-radius:12px;max-width:700px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--border-color)}.modal-header h2{margin:0;color:var(--text-primary)}.close-btn{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-secondary);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.close-btn:hover{background:var(--bg-primary);color:var(--text-primary)}.modal-content form{padding:20px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:24px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:14px;font-weight:600;color:var(--text-primary)}.form-group input,.form-group select{padding:10px 12px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);font-size:14px}.form-group input:focus,.form-group select:focus{outline:none;border-color:#3b82f6}.custom-params-section{margin-bottom:24px;padding:16px;background:var(--bg-primary);border-radius:8px;border:1px solid var(--border-color)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-header h3{margin:0;font-size:16px;color:var(--text-primary)}.custom-param-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin-bottom:8px}.custom-param-row input{padding:8px 12px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);font-size:14px}.btn-remove{padding:8px 12px;background:#ef4444;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:all .2s}.btn-remove:hover{background:#dc2626}.hint-text{font-size:13px;color:var(--text-secondary);font-style:italic;margin:8px 0 0}.modal-actions{display:flex;justify-content:flex-end;gap:12px;padding-top:20px;border-top:1px solid var(--border-color)}.btn-primary,.btn-secondary{padding:10px 24px;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary{background:#3b82f6;color:#fff}.btn-primary:hover:not(:disabled){background:#2563eb}.btn-secondary{background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover{background:var(--bg-secondary)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-secondary)}.error-message{padding:12px 16px;background:#fee2e2;border:1px solid #fecaca;border-radius:6px;color:#991b1b;margin-bottom:16px}.loading{text-align:center;padding:40px;color:var(--text-secondary)}@media(max-width:768px){.devices-grid,.form-grid{grid-template-columns:1fr}.controls-section{flex-direction:column;align-items:stretch}}.datapoint-management{padding:0}.success-message{padding:12px 20px;margin-bottom:20px;background:#d1fae5;color:#065f46;border:1px solid #10b981;border-radius:8px;font-size:14px;font-weight:500;display:flex;align-items:center;gap:8px}.error-message{padding:12px 20px;margin-bottom:20px;background:#fee2e2;color:#991b1b;border:1px solid #ef4444;border-radius:8px;font-size:14px;font-weight:500;white-space:pre-wrap}.controls-section{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:16px;flex-wrap:wrap}.action-buttons-group{display:flex;gap:12px;align-items:center}.btn-secondary{padding:10px 20px;background:#fff;color:#3b82f6;border:1px solid #3b82f6;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:8px}.btn-secondary:hover{background:#eff6ff}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.upload-help{margin-top:16px;margin-bottom:16px}.upload-help details{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:12px}.upload-help summary{cursor:pointer;font-weight:600;color:var(--text-primary);-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:8px}.upload-help summary:hover{color:#3b82f6}.help-content{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-color)}.help-content h4{margin:0 0 8px;color:var(--text-primary);font-size:14px}.help-content ul{margin:8px 0;padding-left:24px;list-style:disc}.help-content li{margin-bottom:6px;color:var(--text-secondary);font-size:13px;line-height:1.6}.help-content li strong{color:var(--text-primary);font-family:Courier New,monospace;background:var(--bg-primary);padding:2px 6px;border-radius:3px}.help-content p{margin:12px 0 0;color:var(--text-secondary);font-size:13px;padding:8px;background:#eff6ff;border-left:3px solid #3b82f6;border-radius:4px}.datapoints-table-container{margin-top:20px;overflow-x:auto;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px}.datapoints-table{width:100%;border-collapse:collapse;font-size:14px}.datapoints-table thead{background:var(--bg-primary)}.datapoints-table th{padding:12px 16px;text-align:left;font-weight:600;color:var(--text-primary);border-bottom:2px solid var(--border-color);white-space:nowrap}.datapoints-table tbody tr{border-bottom:1px solid var(--border-color);transition:background-color .2s}.datapoints-table tbody tr:hover{background:var(--bg-primary)}.datapoints-table td{padding:12px 16px;color:var(--text-secondary)}.datapoints-table td strong{color:var(--text-primary)}.datapoints-table code{background:var(--bg-primary);padding:2px 6px;border-radius:4px;font-size:13px;color:#10b981;font-family:Courier New,monospace}.device-status{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;text-transform:uppercase}.device-status.online{background:#d1fae5;color:#065f46}.device-status.offline{background:#e5e7eb;color:#374151}.device-status.error{background:#fee2e2;color:#991b1b}.inline-metadata{cursor:pointer;position:relative}.inline-metadata summary{color:#3b82f6;font-weight:500;list-style:none;-webkit-user-select:none;user-select:none}.inline-metadata summary:hover{text-decoration:underline}.metadata-popup{position:absolute;top:100%;left:0;margin-top:4px;padding:12px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:100;min-width:200px;font-size:12px}.metadata-popup div{padding:4px 0;color:var(--text-secondary)}.metadata-popup strong{color:var(--text-primary);margin-right:6px}.action-buttons{display:flex;gap:8px;justify-content:center}.btn-sm{padding:6px 12px;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s}.btn-sm.btn-edit{background:#3b82f6;color:#fff}.btn-sm.btn-edit:hover{background:#2563eb}.btn-sm.btn-delete{background:#ef4444;color:#fff}.btn-sm.btn-delete:hover{background:#dc2626}@media(max-width:1200px){.datapoints-table{font-size:13px}.datapoints-table th,.datapoints-table td{padding:10px 12px}}@media(max-width:768px){.datapoints-table-container{overflow-x:scroll}.datapoints-table{min-width:1000px}}.dashboard-layout{min-height:100vh;--header-height: 68px;--sidebar-width: 280px;background:#0000;color:var(--text-primary);transition:all .3s ease;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF UI Display,system-ui,Segoe UI,Roboto,Arial,sans-serif}.main-header{background:var(--bg-secondary);border-bottom:1px solid var(--border-color);box-shadow:0 1px 3px var(--shadow);position:fixed;top:0;left:0;right:0;width:100%;z-index:100;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.main-header::-webkit-scrollbar{display:none}.header-content{--header-height: 68px;display:flex;align-items:center;justify-content:space-between;padding:0 1.2rem;width:100%;min-width:0;height:var(--header-height);box-sizing:border-box;gap:.6rem;flex-wrap:nowrap}.header-left{display:flex;align-items:center;gap:.8rem;flex-shrink:0;min-width:fit-content;margin-left:-.4rem}.mobile-menu-toggle{display:none;background:none;border:none;color:var(--text-primary);font-size:1.25rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:all .2s ease}.mobile-menu-toggle:hover{background:var(--bg-tertiary)}.logo-icon{width:6rem;height:2rem;color:#fff}.logo-icon img{width:100%;height:100%;object-fit:contain}.logo-text h1{font-size:.96rem;font-weight:600;margin:.08rem;color:var(--text-primary);text-transform:none;letter-spacing:1px;white-space:nowrap;display:inline-block;align-items:center}.logo-text span{font-size:.56rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:1.5px}.main-nav{display:flex;align-items:center;gap:.35rem;transition:all .3s ease;flex:1;justify-content:flex-start;padding:0 .4rem;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;min-width:0;scrollbar-width:none;-ms-overflow-style:none}.main-nav::-webkit-scrollbar{display:none}.nav-item{display:flex;align-items:center;gap:.35rem;padding:.5rem .7rem;background:none;border:1px solid #dfdddd;background-color:#f7f5f5;color:var(--text-secondary);font-size:.75rem;font-weight:600;cursor:pointer;border-radius:8px;transition:all .2s ease;position:relative;text-decoration:none;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;flex-shrink:0}.nav-item:before{display:none}.nav-item:hover{background:var(--bg-tertiary);color:var(--text-primary);border-bottom:2px solid var(--accent-primary);border-radius:10px}.nav-item.active{background:var(--accent-primary);color:#fff;font-weight:700;border:none;border-radius:10px}.nav-item svg{font-size:1rem}.header-plant-select .plant-select-header{min-width:300px;width:300px;max-width:60vw;padding:8px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--input-bg);color:var(--text-primary);font-weight:600}.header-right{display:flex;align-items:center;gap:.4rem;flex-shrink:0;min-width:fit-content}.global-plant-filter{display:flex;align-items:center;gap:.5rem}.plant-filter-select{padding:.4rem .5rem;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-tertiary);color:var(--text-primary);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s ease;min-width:120px;max-width:180px;outline:none}.plant-filter-select:hover{border-color:var(--accent-primary);background:var(--bg-secondary)}.plant-filter-select:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #3b82f61a}.plant-filter-select:disabled{opacity:.5;cursor:not-allowed}.plant-filter-select option{background:var(--bg-secondary);color:var(--text-primary);padding:.5rem}.theme-toggle{background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);padding:.4rem;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;font-size:.8rem}.theme-toggle:hover{background:var(--accent-primary);color:#fff;transform:scale(1.05)}.user-info{display:flex;flex-direction:column;align-items:flex-end;gap:.125rem}.user-name{font-size:.78rem;font-weight:600;color:var(--text-primary)}.user-role{font-size:.65rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.logout-button{display:flex;align-items:center;gap:.4rem;padding:.45rem .9rem;background:var(--error);border:none;color:#fff;border-radius:8px;cursor:pointer;font-size:.78rem;font-weight:500;transition:all .2s ease;margin-left:.5rem;margin-right:-.4rem;white-space:nowrap;flex-shrink:0}.logout-button:hover{background:#dc2626;transform:translateY(-1px);box-shadow:0 4px 12px #ef44444d}.main-layout{display:flex;flex:1;min-height:0;margin-top:68px}.main-content{flex:1;transition:margin-left .3s ease;min-height:calc(100vh - 68px);overflow-y:auto}.main-content.with-sidebar{margin-left:var(--sidebar-width, 280px)}.mobile-open{transform:translateY(0)}.mobile-overlay{position:fixed;inset:0;background:#00000080;z-index:150;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.placeholder-content{padding:4rem 2rem;text-align:center;background:var(--bg-secondary);margin:2rem;border-radius:12px;border:1px solid var(--border-color);min-height:400px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;color:var(--text-secondary);background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-tertiary) 100%)}@media(max-width:1024px){.main-content.with-sidebar{margin-left:0}.user-info{display:none}}@media(max-width:768px){.header-content{padding:1rem}.mobile-menu-toggle{display:flex}.main-nav{position:fixed;top:68px;left:0;right:0;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-direction:column;gap:0;padding:1rem;transform:translateY(-100%);z-index:200;box-shadow:0 4px 20px var(--shadow-lg)}.main-nav.mobile-open{transform:translateY(0)}.nav-item{width:100%;justify-content:flex-start;padding:.5rem;border-radius:8px;margin-bottom:.5rem}.logo-text h1{font-size:1.25rem}.logo-text span,.logout-button span{display:none}.theme-toggle{padding:.75rem}}@media(max-width:480px){.header-content{padding:.75rem}.logo-text h1{font-size:1rem}.logo-icon{width:32px;height:32px;font-size:1.25rem}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.main-content{animation:fadeIn .5s ease-out}.nav-item:focus,.theme-toggle:focus,.logout-button:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.dashboard-layout.dark,.dashboard-layout.light{background:var(--bg-primary)}#root{width:100%;min-height:100vh;margin:0;padding:0}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}
