.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-2);background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-md);color:inherit;cursor:pointer;transition:all var(--transition-fast);position:relative}.theme-toggle:hover{background:#fff3;border-color:#ffffff4d}.theme-toggle:focus-visible{outline:none;box-shadow:0 0 0 2px #ffffff80}.theme-toggle:active{transform:scale(.95)}.theme-toggle__icon{display:flex;align-items:center;justify-content:center;transition:transform var(--transition-normal)}.theme-toggle__icon svg{width:18px;height:18px}.theme-toggle:hover .theme-toggle__icon{transform:rotate(15deg)}.theme-toggle__label{font-size:var(--text-xs);font-weight:var(--font-medium);white-space:nowrap}.theme-toggle__indicator{position:absolute;top:2px;right:2px;width:6px;height:6px;background:var(--color-success-400);border-radius:50%;animation:pulse-indicator 2s ease-in-out infinite}@keyframes pulse-indicator{0%,to{opacity:1}50%{opacity:.5}}.theme-toggle--sm{padding:var(--space-1)}.theme-toggle--sm .theme-toggle__icon svg{width:14px;height:14px}.theme-toggle--md{padding:var(--space-2)}.theme-toggle--lg{padding:var(--space-3)}.theme-toggle--lg .theme-toggle__icon svg{width:22px;height:22px}.theme-toggle--standalone{background:var(--bg-surface-1);border-color:var(--border-default);color:var(--text-primary)}.theme-toggle--standalone:hover{background:var(--bg-surface-2);border-color:var(--border-emphasis)}.theme-toggle--standalone:focus-visible{box-shadow:0 0 0 2px var(--color-primary-200)}[data-theme=light] .theme-toggle,:root:not([data-theme=dark]) .theme-toggle{background:#0000001a;border-color:#0003}[data-theme=light] .theme-toggle:hover,:root:not([data-theme=dark]) .theme-toggle:hover{background:#00000026;border-color:#0000004d}[data-theme=light] .theme-toggle:focus-visible,:root:not([data-theme=dark]) .theme-toggle:focus-visible{box-shadow:0 0 0 2px #0000004d}[data-theme=dark] .theme-toggle--standalone{background:var(--bg-surface-2);border-color:var(--border-default)}[data-theme=dark] .theme-toggle--standalone:hover{background:var(--bg-surface-3);border-color:var(--border-emphasis)}.app{min-height:100vh;display:flex;flex-direction:column;background:var(--bg-base)}.header{background:var(--gradient-brand);color:#fff;padding:var(--space-3) 0;box-shadow:var(--shadow-md);position:sticky;top:0;z-index:var(--z-sticky)}.header-content{max-width:var(--content-max-width);margin:0 auto;padding:0 var(--space-4);display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}.logo{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}.logo h1{font-size:var(--text-xl);font-weight:var(--font-bold);margin:0;white-space:nowrap}.version{font-size:var(--text-xs);opacity:.8;padding:var(--space-1) var(--space-2);background:#fff3;border-radius:var(--radius-md)}.nav{display:flex;gap:var(--space-1);flex-wrap:wrap;justify-content:center}.nav-link{color:#fff;text-decoration:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);transition:background-color var(--transition-fast);font-weight:var(--font-medium);font-size:var(--text-sm);white-space:nowrap}.nav-link:hover{background-color:#ffffff26;text-decoration:none;color:#fff}.nav-link.active{background-color:#ffffff40}.header-actions{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}.user-info{display:flex;align-items:center;gap:var(--space-2)}.user-info .username{font-size:var(--text-sm);font-weight:var(--font-medium);opacity:.9}.role-badge{font-size:var(--text-xs);font-weight:var(--font-medium);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);text-transform:capitalize}.role-badge.role-admin{background:#ffffff40;color:#fff}.role-badge.role-viewer{background:#ffffff26;color:#ffffffe6}.logout-btn{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.3);padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:background-color var(--transition-fast)}.logout-btn:hover{background:#ffffff40}.main-content{flex:1;max-width:var(--content-max-width);width:100%;margin:0 auto;padding:var(--space-6) var(--space-4)}.footer{background-color:var(--bg-surface-1);color:var(--text-muted);text-align:center;padding:var(--space-3);margin-top:auto;border-top:var(--border-width) solid var(--border-default)}.footer p{margin:0;font-size:var(--text-xs)}@media (max-width: 1024px){.header-content{flex-wrap:wrap;gap:var(--space-3)}.nav{order:3;width:100%;justify-content:center}.header-actions{order:2}}@media (max-width: 640px){.header{padding:var(--space-2) 0}.logo h1{font-size:var(--text-lg)}.nav-link{padding:var(--space-1-5) var(--space-2);font-size:var(--text-xs)}.main-content{padding:var(--space-4) var(--space-3)}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-base);padding:var(--space-4)}.login-card{width:100%;max-width:400px;background:var(--bg-surface-1);border:1px solid var(--border-emphasis);border-radius:var(--radius-lg);padding:var(--space-8)}.login-header{text-align:center;margin-bottom:var(--space-6)}.login-header h1{font-size:var(--text-2xl);font-weight:600;color:var(--text-primary);margin:0 0 var(--space-2) 0}.login-header p{font-size:var(--text-sm);color:var(--text-secondary);margin:0}.login-error{background:var(--color-danger-100);color:var(--color-danger-700);border:1px solid var(--color-danger-500);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-4);font-size:var(--text-sm)}.login-form{display:flex;flex-direction:column;gap:var(--space-4)}.form-group{display:flex;flex-direction:column;gap:var(--space-1)}.form-group label{font-size:var(--text-sm);font-weight:500;color:var(--text-primary)}.form-group input{height:40px;padding:0 var(--space-3);background:var(--bg-base);border:1px solid var(--border-emphasis);border-radius:var(--radius-md);font-size:var(--text-base);color:var(--text-primary);transition:border-color .15s ease,box-shadow .15s ease}.form-group input:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-100)}.login-button{height:40px;background:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:500;cursor:pointer;transition:background-color .15s ease;margin-top:var(--space-2)}.login-button:hover:not(:disabled){background:var(--color-primary-700)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-footer{margin-top:var(--space-6);text-align:center;padding-top:var(--space-4);border-top:1px solid var(--border-default)}.login-footer p{font-size:var(--text-xs);color:var(--text-muted);margin:0}.dashboard{text-align:left;padding:var(--space-4)}.dashboard--desktop{max-width:var(--content-max-width);margin:0 auto}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.dashboard-header h2{margin:0;font-size:var(--text-xl);color:var(--color-primary-600)}.dashboard-header__status{display:flex;align-items:center;gap:var(--space-3)}.system-status{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--font-semibold);text-transform:uppercase}.system-status--healthy,.system-status--ok{background:var(--color-success-100);color:var(--color-success-700)}.system-status--degraded{background:var(--color-warning-100);color:var(--color-warning-700)}.system-status--unhealthy,.system-status--error{background:var(--color-danger-100);color:var(--color-danger-700)}.system-status--unknown{background:var(--color-neutral-100);color:var(--color-neutral-600)}.last-update{font-size:var(--text-xs);color:var(--text-muted)}.stats-row{display:flex;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}.stat-widget{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--bg-base);border:1px solid var(--border-emphasis);border-radius:var(--radius-lg);min-width:180px;flex:1}.stat-widget--alert{border-color:var(--color-danger-300);background:var(--color-danger-50)}.stat-widget__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);flex-shrink:0}.stat-widget__icon--primary{background:var(--color-primary-100);color:var(--color-primary-600)}.stat-widget__icon--success{background:var(--color-success-100);color:var(--color-success-600)}.stat-widget__icon--info{background:var(--color-info-100);color:var(--color-info-600)}.stat-widget__icon--warning{background:var(--color-warning-100);color:var(--color-warning-600)}.stat-widget__icon--danger{background:var(--color-danger-100);color:var(--color-danger-600)}.stat-widget__content{flex:1;min-width:0}.stat-widget__value{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--text-primary);line-height:1.2}.stat-widget__label{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.stat-widget__detail{font-size:var(--text-xs);color:var(--text-secondary);white-space:nowrap}.detail-highlight{font-weight:var(--font-semibold);color:var(--color-primary-600)}.detail-sent{color:var(--color-success-600);font-weight:var(--font-medium)}.detail-received{color:var(--color-primary-600);font-weight:var(--font-medium)}.detail-sep{color:var(--text-muted);margin:0 2px}.detail-danger{color:var(--color-danger-600);font-weight:var(--font-semibold)}.dashboard-content{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}@media (max-width: 1024px){.dashboard-content{grid-template-columns:1fr}}.dashboard-panel{background:var(--bg-base);border:1px solid var(--border-emphasis);border-radius:var(--radius-lg);overflow:hidden}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-muted);background:var(--bg-surface-1)}.panel-header h3{margin:0;font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-primary);text-transform:uppercase;letter-spacing:.5px}.panel-header-actions{display:flex;align-items:center;gap:var(--space-2)}.sort-btn{background:none;border:none;color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:all var(--transition-fast);display:inline-flex;align-items:center;gap:4px}.sort-btn:hover{color:var(--color-primary-500);background:var(--bg-surface-2)}.panel-divider{height:1px;background:var(--border-default);margin:var(--space-3) 0}.station-list{padding:var(--space-2)}.station-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2);border-radius:var(--radius-md);transition:background-color var(--transition-fast)}.station-row:hover{background:var(--bg-surface-1)}.station-row__status{flex-shrink:0}.status-dot{display:block;width:10px;height:10px;border-radius:50%}.status-dot.status--connected{background:var(--color-success-500);box-shadow:0 0 0 3px var(--color-success-100)}.status-dot.status--connecting{background:var(--color-warning-500);animation:pulse 1.5s ease-in-out infinite}.status-dot.status--disconnected{background:var(--color-danger-500)}.status-dot.status--unknown{background:var(--color-neutral-400)}.station-row__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.station-row__name{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.station-row__id{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-muted)}.station-row__meta{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.station-row__protocol{font-size:var(--text-xs);font-weight:var(--font-semibold);padding:2px 6px;background:var(--color-primary-100);color:var(--color-primary-700);border-radius:var(--radius-sm)}.station-row__connectors{font-size:var(--text-xs);color:var(--text-muted)}.more-items{text-align:center;padding:var(--space-2);font-size:var(--text-sm);color:var(--text-muted);font-style:italic}.empty-panel{padding:var(--space-6);text-align:center}.empty-panel p{color:var(--text-muted);margin-bottom:var(--space-3)}.system-info{padding:var(--space-2) var(--space-4)}.info-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0;border-bottom:1px solid var(--border-muted)}.info-row__label{font-size:var(--text-sm);color:var(--text-secondary)}.info-row__value{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary)}.info-row__value--healthy,.info-row__value--connected,.info-row__value--success{color:var(--color-success-600)}.info-row__value--danger{color:var(--color-danger-600)}.message-stats-compact{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);padding:var(--space-3) var(--space-4)}.msg-stat{display:flex;flex-direction:column;align-items:center;padding:var(--space-2);background:var(--bg-surface-1);border-radius:var(--radius-md)}.msg-stat__value{font-size:var(--text-lg);font-weight:var(--font-bold);color:var(--text-primary)}.msg-stat__value--sent{color:var(--color-success-600)}.msg-stat__value--received{color:var(--color-primary-600)}.msg-stat__value--danger{color:var(--color-danger-600)}.msg-stat__label{font-size:var(--text-xs);color:var(--text-muted)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-6);margin-bottom:var(--space-8)}.stat-card{background:var(--gradient-brand);color:#fff;padding:var(--space-6);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);transition:transform var(--transition-fast)}.stat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.stat-card h3{margin:0 0 var(--space-4) 0;font-size:var(--text-base);font-weight:var(--font-medium);opacity:.9}.stat-value{font-size:var(--text-4xl);font-weight:var(--font-bold);margin-bottom:var(--space-2)}.stat-label{font-size:var(--text-sm);opacity:.8;margin-bottom:var(--space-2)}.stat-detail{font-size:var(--text-sm);opacity:.7;padding-top:var(--space-2);border-top:1px solid rgba(255,255,255,.2)}.info-section{background:var(--bg-surface-1);padding:var(--space-6);border-radius:var(--radius-xl);margin-top:var(--space-8);border:1px solid var(--border-default)}.info-section h3{margin:0 0 var(--space-4) 0;color:var(--color-primary-500)}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}.info-item{padding:var(--space-3);background:var(--bg-base);border-radius:var(--radius-md);border-left:3px solid var(--color-primary-500)}.info-item strong{display:block;margin-bottom:var(--space-1);color:var(--text-primary)}@media (max-width: 768px){.stats-row{flex-direction:column}.stat-widget{min-width:100%}.message-stats-compact{grid-template-columns:repeat(2,1fr)}}[data-theme=dark] .dashboard-header h2{color:var(--color-primary-400)}[data-theme=dark] .stat-widget,[data-theme=dark] .dashboard-panel{background:var(--bg-surface-1)}[data-theme=dark] .panel-header,[data-theme=dark] .msg-stat,[data-theme=dark] .station-row:hover{background:var(--bg-surface-2)}[data-theme=dark] .status-dot.status--connected{box-shadow:0 0 0 3px var(--color-success-100)}[data-theme=dark] .station-row__protocol{background:var(--color-primary-100)}[data-theme=dark] .info-item{background:var(--bg-surface-2)}.station-form-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--bg-overlay);display:flex;justify-content:center;align-items:flex-start;z-index:var(--z-modal);overflow-y:auto;padding:var(--space-5)}.station-form-container{background:var(--bg-base);border-radius:var(--radius-xl);width:100%;max-width:900px;margin:auto;box-shadow:var(--shadow-lg);color:var(--text-primary)}.form-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-5);border-bottom:1px solid var(--border-default)}.form-header h2{margin:0;font-size:var(--text-2xl);color:var(--text-primary)}.templates-section{padding:var(--space-4) var(--space-5);background-color:var(--bg-surface-1);border-bottom:1px solid var(--border-default)}.templates-section label{display:block;margin-bottom:var(--space-2);font-weight:var(--font-medium);color:var(--text-secondary)}.templates-section select{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--bg-base);color:var(--text-primary)}form{padding:var(--space-5)}.form-section{margin-bottom:var(--space-8)}.form-section h3{margin:0 0 var(--space-4) 0;font-size:var(--text-lg);color:var(--text-primary);border-bottom:2px solid var(--color-primary-500);padding-bottom:var(--space-2)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-4)}.form-field{display:flex;flex-direction:column}.form-field label{margin-bottom:var(--space-1);font-weight:var(--font-medium);color:var(--text-secondary);font-size:var(--text-sm)}.form-field input,.form-field select{padding:var(--space-2) var(--space-3);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--text-sm);transition:border-color var(--transition-fast);background:var(--bg-base);color:var(--text-primary)}.form-field input:focus,.form-field select:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-100)}.form-field input:disabled{background-color:var(--bg-surface-2);color:var(--text-muted);cursor:not-allowed}.checkbox-field label{display:flex;align-items:center;gap:var(--space-2);font-weight:var(--font-normal);cursor:pointer;padding:var(--space-2) 0}.checkbox-label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;padding:var(--space-1-5);border-radius:var(--radius-md);transition:background-color var(--transition-fast);color:var(--text-secondary);font-size:var(--text-sm)}.checkbox-label:hover{background-color:var(--bg-surface-2)}.checkbox-label input[type=checkbox]{width:16px;height:16px;cursor:pointer}.connector-item{background-color:var(--bg-surface-1);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-2)}.connector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);font-weight:var(--font-semibold);color:var(--text-primary)}.btn-small{padding:var(--space-1-5) var(--space-3);font-size:var(--text-sm);border:none;border-radius:var(--radius-md);cursor:pointer;background-color:var(--color-primary-500);color:#fff;font-weight:var(--font-medium);transition:background-color var(--transition-fast)}.btn-small:hover{background-color:var(--color-primary-600)}.btn-remove{padding:var(--space-1) var(--space-3);font-size:var(--text-sm);border:none;border-radius:var(--radius-md);cursor:pointer;background-color:var(--color-danger-500);color:#fff;transition:background-color var(--transition-fast)}.btn-remove:hover{background-color:var(--color-danger-600)}.tags-input{display:flex;gap:var(--space-2);margin-bottom:var(--space-2)}.tags-input input{flex:1;padding:var(--space-2) var(--space-3);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--bg-base);color:var(--text-primary)}.tags-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag{display:inline-flex;align-items:center;gap:var(--space-1-5);padding:var(--space-1) var(--space-2);background-color:var(--color-primary-100);color:var(--color-primary-700);border-radius:var(--radius-full);font-size:var(--text-sm)}.tag button{background:none;border:none;color:var(--color-primary-700);font-size:1.2rem;cursor:pointer;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color var(--transition-fast)}.tag button:hover{background-color:var(--color-primary-200)}.form-actions{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);padding-top:var(--space-5);border-top:1px solid var(--border-default)}.btn-primary{padding:var(--space-2) var(--space-6);background-color:var(--color-primary-500);color:#fff;border:none;border-radius:var(--radius-md);font-weight:var(--font-semibold);cursor:pointer;transition:background-color var(--transition-fast)}.btn-primary:hover{background-color:var(--color-primary-600)}.btn-secondary{padding:var(--space-2) var(--space-6);background-color:var(--bg-base);color:var(--text-primary);border:1px solid var(--border-default);border-radius:var(--radius-md);font-weight:var(--font-semibold);cursor:pointer;transition:all var(--transition-fast)}.btn-secondary:hover{background-color:var(--bg-surface-2);border-color:var(--border-emphasis)}.btn-danger{padding:var(--space-2) var(--space-6);background-color:var(--color-danger-500);color:#fff;border:none;border-radius:var(--radius-md);font-weight:var(--font-semibold);cursor:pointer;transition:background-color var(--transition-fast)}.btn-danger:hover{background-color:var(--color-danger-600)}@media (max-width: 768px){.station-form-container{max-width:100%;margin:0;border-radius:0}.form-grid,.checkbox-group{grid-template-columns:1fr}.form-actions{flex-direction:column;gap:12px}.form-actions-left,.form-actions-right{width:100%;flex-direction:column}.form-actions-left button,.form-actions-right button{width:100%}}[data-theme=dark] .station-form-container{background:var(--bg-surface-1);box-shadow:var(--shadow-xl)}[data-theme=dark] .templates-section,[data-theme=dark] .connector-item{background-color:var(--bg-surface-2)}[data-theme=dark] .form-field input,[data-theme=dark] .form-field select,[data-theme=dark] .tags-input input{background:var(--bg-surface-2)}.station-config-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.station-config-modal{background:#fff;border-radius:12px;width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 10px 40px #0000004d}.station-config-header{position:relative;padding:24px 24px 16px;border-bottom:2px solid #e0e0e0}.station-config-header h2{margin:0 0 8px;font-size:24px;color:#333}.config-subtitle{margin:0;font-size:14px;color:#666}.station-config-header .btn-close{position:absolute;top:20px;right:20px;width:32px;height:32px;background:#f8f9fa;border:none;border-radius:6px;font-size:20px;cursor:pointer;transition:all .2s ease}.station-config-header .btn-close:hover{background:#e0e0e0}.station-config-tabs{display:flex;gap:4px;padding:0 24px;border-bottom:2px solid #e0e0e0;background:#f8f9fa}.tab-btn{padding:12px 20px;background:transparent;border:none;border-bottom:3px solid transparent;font-size:14px;font-weight:600;color:#666;cursor:pointer;transition:all .2s ease;position:relative;bottom:-2px}.tab-btn:hover{color:#007bff;background:#007bff0d}.tab-btn.active{color:#007bff;border-bottom-color:#007bff;background:#fff}.station-config-body{flex:1;overflow-y:auto;padding:24px}.config-tab{display:flex;flex-direction:column;gap:24px}.config-section{background:#f8f9fa;padding:20px;border-radius:8px;border:1px solid #e0e0e0}.config-section h3{margin:0 0 16px;font-size:16px;font-weight:600;color:#333;border-bottom:2px solid #e0e0e0;padding-bottom:8px}.config-note{margin:0;font-size:14px;color:#666;line-height:1.6}.config-field{margin-bottom:16px}.config-field:last-child{margin-bottom:0}.config-field label{display:block;margin-bottom:6px;font-weight:600;color:#333;font-size:14px}.config-field input[type=text],.config-field input[type=number],.config-field input[type=password],.config-field select{width:100%;padding:10px 12px;border:1px solid #ced4da;border-radius:6px;font-size:14px;background:#fff;transition:border-color .2s ease}.config-field input[type=text]:focus,.config-field input[type=number]:focus,.config-field input[type=password]:focus,.config-field select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.config-field input.disabled-input{background:#e9ecef;color:#6c757d;cursor:not-allowed}.config-field small{display:block;margin-top:4px;font-size:12px;color:#666;font-style:italic}.checkbox-field label{display:flex;align-items:center;gap:10px;cursor:pointer;margin-bottom:0}.checkbox-field input[type=checkbox]{width:18px;height:18px;cursor:pointer}.checkbox-field label span{font-weight:600}.station-config-footer{display:flex;justify-content:flex-end;gap:12px;padding:20px 24px;border-top:2px solid #e0e0e0;background:#f8f9fa}.btn-cancel{padding:10px 24px;background:#6c757d;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-save{padding:10px 24px;background:#007bff;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-save:hover:not(:disabled){background:#0056b3}.btn-save:disabled{opacity:.6;cursor:not-allowed}[data-theme=dark] .station-config-overlay{background:#000000bf}[data-theme=dark] .station-config-modal{background:var(--bg-surface-1);box-shadow:0 10px 40px #00000080}[data-theme=dark] .station-config-header{border-bottom-color:var(--border-default)}[data-theme=dark] .station-config-header h2{color:var(--text-primary)}[data-theme=dark] .config-subtitle{color:var(--text-muted)}[data-theme=dark] .station-config-header .btn-close{background:var(--bg-surface-2);color:var(--text-secondary)}[data-theme=dark] .station-config-header .btn-close:hover{background:var(--bg-surface-3);color:var(--text-primary)}[data-theme=dark] .station-config-tabs{background:var(--bg-surface-1);border-bottom-color:var(--border-default)}[data-theme=dark] .tab-btn{color:var(--text-muted)}[data-theme=dark] .tab-btn:hover{color:var(--color-primary-400);background:#667eea1a}[data-theme=dark] .tab-btn.active{color:var(--color-primary-400);border-bottom-color:var(--color-primary-500);background:var(--bg-surface-1)}[data-theme=dark] .config-section{background:var(--bg-surface-2);border-color:var(--border-default)}[data-theme=dark] .config-section h3{color:var(--text-primary);border-bottom-color:var(--border-default)}[data-theme=dark] .config-note{color:var(--text-muted)}[data-theme=dark] .config-field label{color:var(--text-primary)}[data-theme=dark] .config-field input[type=text],[data-theme=dark] .config-field input[type=number],[data-theme=dark] .config-field input[type=password],[data-theme=dark] .config-field select{background:var(--bg-surface-1);border-color:var(--border-default);color:var(--text-primary)}[data-theme=dark] .config-field input[type=text]:focus,[data-theme=dark] .config-field input[type=number]:focus,[data-theme=dark] .config-field input[type=password]:focus,[data-theme=dark] .config-field select:focus{border-color:var(--color-primary-500);box-shadow:0 0 0 3px #667eea33}[data-theme=dark] .config-field input.disabled-input{background:var(--bg-base);color:var(--text-muted)}[data-theme=dark] .config-field small{color:var(--text-muted)}[data-theme=dark] .station-config-footer{border-top-color:var(--border-default);background:var(--bg-surface-1)}[data-theme=dark] .btn-cancel{background:var(--color-neutral-600)}[data-theme=dark] .btn-cancel:hover{background:var(--color-neutral-500)}[data-theme=dark] .btn-save{background:var(--color-primary-600)}[data-theme=dark] .btn-save:hover:not(:disabled){background:var(--color-primary-500)}@media (max-width: 768px){.station-config-modal{max-width:100%;margin:10px}.station-config-tabs{overflow-x:auto}.tab-btn{white-space:nowrap}}.templates-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.templates-container{background:#fff;border-radius:8px;width:100%;max-width:1200px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a}.templates-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #e5e7eb}.templates-header h2{margin:0;font-size:1.5rem;color:#1f2937}.templates-actions{padding:15px 20px;border-bottom:1px solid #e5e7eb;display:flex;gap:10px}.import-btn{cursor:pointer}.templates-grid{padding:20px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.template-card{background:#fff;border:2px solid #e5e7eb;border-radius:8px;padding:20px;cursor:pointer;transition:all .2s}.template-card:hover{border-color:#3b82f6;box-shadow:0 4px 6px #3b82f61a}.template-card.selected{border-color:#3b82f6;background-color:#eff6ff}.template-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.template-header h3{margin:0;font-size:1.125rem;color:#1f2937;flex:1}.template-protocol{padding:4px 8px;background-color:#dbeafe;color:#1e40af;border-radius:4px;font-size:.75rem;font-weight:600}.template-description{margin:0 0 15px;color:#6b7280;font-size:.875rem;line-height:1.5}.template-details{margin-bottom:15px;padding:12px;background-color:#f9fafb;border-radius:4px}.detail-item{display:flex;justify-content:space-between;padding:4px 0;font-size:.875rem}.detail-label{font-weight:600;color:#374151}.template-actions{display:flex;gap:8px;flex-wrap:wrap}.btn-use{background-color:#3b82f6;color:#fff}.btn-use:hover{background-color:#2563eb}.btn-export{background-color:#10b981;color:#fff}.btn-export:hover{background-color:#059669}.btn-delete{background-color:#ef4444;color:#fff}.btn-delete:hover{background-color:#dc2626}.empty-templates{grid-column:1 / -1;text-align:center;padding:40px;color:#6b7280}.empty-templates p{margin:8px 0}@media (max-width: 768px){.templates-grid{grid-template-columns:1fr}.templates-container{max-width:100%;max-height:100vh;border-radius:0}}[data-theme=dark] .templates-overlay{background-color:#000000bf}[data-theme=dark] .templates-container{background:var(--bg-surface-1);box-shadow:0 4px 6px #0006}[data-theme=dark] .templates-header{border-bottom-color:var(--border-default)}[data-theme=dark] .templates-header h2{color:var(--text-primary)}[data-theme=dark] .templates-actions{border-bottom-color:var(--border-default)}[data-theme=dark] .template-card{background:var(--bg-surface-1);border-color:var(--border-default)}[data-theme=dark] .template-card:hover{border-color:var(--color-primary-500);box-shadow:0 4px 6px #3b82f633}[data-theme=dark] .template-card.selected{border-color:var(--color-primary-500);background-color:#3b82f61a}[data-theme=dark] .template-header h3{color:var(--text-primary)}[data-theme=dark] .template-protocol{background-color:#3b82f633;color:var(--color-primary-400)}[data-theme=dark] .template-description{color:var(--text-muted)}[data-theme=dark] .template-details{background-color:var(--bg-surface-2)}[data-theme=dark] .detail-item{color:var(--text-secondary)}[data-theme=dark] .detail-label{color:var(--text-primary)}[data-theme=dark] .btn-use{background-color:var(--color-primary-600)}[data-theme=dark] .btn-use:hover{background-color:var(--color-primary-500)}[data-theme=dark] .btn-export{background-color:var(--color-success-600)}[data-theme=dark] .btn-export:hover{background-color:var(--color-success-500)}[data-theme=dark] .btn-delete{background-color:var(--color-danger-600)}[data-theme=dark] .btn-delete:hover{background-color:var(--color-danger-500)}[data-theme=dark] .empty-templates{color:var(--text-muted)}.import-export-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.import-export-container{background:#fff;border-radius:8px;width:100%;max-width:800px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a}.import-export-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #e5e7eb}.import-export-header h2{margin:0;font-size:1.5rem;color:#1f2937}.import-export-content{padding:20px;overflow-y:auto;flex:1}.ie-section{margin-bottom:30px;padding-bottom:30px;border-bottom:1px solid #e5e7eb}.ie-section:last-child{border-bottom:none}.ie-section h3{margin:0 0 10px;font-size:1.25rem;color:#1f2937}.ie-description{margin:0 0 20px;color:#6b7280;font-size:.875rem;line-height:1.5}.export-actions{margin-bottom:20px}.export-list h4{margin:0 0 15px;font-size:1rem;color:#374151}.station-list{border:1px solid #e5e7eb;border-radius:6px;max-height:300px;overflow-y:auto}.station-item{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;border-bottom:1px solid #e5e7eb;transition:background-color .2s}.station-item:last-child{border-bottom:none}.station-item:hover{background-color:#f9fafb}.station-info{display:flex;flex-direction:column;gap:4px}.station-id{font-family:monospace;font-weight:600;color:#1f2937;font-size:.875rem}.station-name{color:#6b7280;font-size:.875rem}.import-area{text-align:center;padding:40px;background-color:#f9fafb;border:2px dashed #d1d5db;border-radius:8px;margin-bottom:20px}.import-button{display:inline-block;padding:12px 32px;background-color:#3b82f6;color:#fff;border-radius:6px;font-weight:600;cursor:pointer;transition:background-color .2s}.import-button:hover{background-color:#2563eb}.import-button span{display:inline-block}.import-note{margin:12px 0 0;color:#6b7280;font-size:.875rem}.import-results{padding:20px;background-color:#f0fdf4;border:1px solid #86efac;border-radius:6px}.import-results.has-errors{background-color:#fef2f2;border-color:#fca5a5}.import-results h4{margin:0 0 15px;font-size:1.125rem;color:#1f2937}.results-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;margin-bottom:15px}.result-item{display:flex;justify-content:space-between;padding:10px;background-color:#fff;border-radius:4px;border:1px solid #e5e7eb}.result-item.success-item{border-color:#86efac;background-color:#f0fdf4}.result-item.error-item{border-color:#fca5a5;background-color:#fef2f2}.result-item .label{font-weight:600;color:#374151}.result-item .value{font-weight:700;font-size:1.125rem}.import-errors{margin-top:15px;padding-top:15px;border-top:1px solid #fca5a5}.import-errors h5{margin:0 0 10px;color:#991b1b;font-size:1rem}.import-errors .error-item{padding:8px 12px;background-color:#fff;border-left:3px solid #ef4444;margin-bottom:8px;font-size:.875rem;color:#991b1b}.import-errors .error-item strong{display:block;margin-bottom:4px}.import-export-footer{padding:15px 20px;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end}@media (max-width: 768px){.import-export-container{max-width:100%;max-height:100vh;border-radius:0}.results-summary{grid-template-columns:1fr}}[data-theme=dark] .import-export-overlay{background-color:#000000bf}[data-theme=dark] .import-export-container{background:var(--bg-surface-1);box-shadow:0 4px 6px #0006}[data-theme=dark] .import-export-header{border-bottom-color:var(--border-default)}[data-theme=dark] .import-export-header h2{color:var(--text-primary)}[data-theme=dark] .ie-section{border-bottom-color:var(--border-default)}[data-theme=dark] .ie-section h3{color:var(--text-primary)}[data-theme=dark] .ie-description{color:var(--text-muted)}[data-theme=dark] .export-list h4{color:var(--text-secondary)}[data-theme=dark] .station-list{border-color:var(--border-default)}[data-theme=dark] .station-item{border-bottom-color:var(--border-default)}[data-theme=dark] .station-item:hover{background-color:var(--bg-surface-2)}[data-theme=dark] .station-id{color:var(--text-primary)}[data-theme=dark] .station-name{color:var(--text-muted)}[data-theme=dark] .import-area{background-color:var(--bg-surface-2);border-color:var(--border-default)}[data-theme=dark] .import-button{background-color:var(--color-primary-600)}[data-theme=dark] .import-button:hover{background-color:var(--color-primary-500)}[data-theme=dark] .import-note{color:var(--text-muted)}[data-theme=dark] .import-results{background-color:var(--color-success-900);border-color:var(--color-success-700)}[data-theme=dark] .import-results.has-errors{background-color:var(--color-danger-900);border-color:var(--color-danger-700)}[data-theme=dark] .import-results h4{color:var(--text-primary)}[data-theme=dark] .result-item{background-color:var(--bg-surface-1);border-color:var(--border-default)}[data-theme=dark] .result-item.success-item{background-color:var(--color-success-900);border-color:var(--color-success-700)}[data-theme=dark] .result-item.error-item{background-color:var(--color-danger-900);border-color:var(--color-danger-700)}[data-theme=dark] .result-item .label{color:var(--text-secondary)}[data-theme=dark] .result-item .value{color:var(--text-primary)}[data-theme=dark] .import-errors{border-top-color:var(--color-danger-700)}[data-theme=dark] .import-errors h5{color:var(--color-danger-400)}[data-theme=dark] .import-errors .error-item{background-color:var(--bg-surface-1);border-left-color:var(--color-danger-500);color:var(--color-danger-400)}[data-theme=dark] .import-export-footer{border-top-color:var(--border-default)}.connector-card{background:var(--bg-base);border:1px solid var(--border-emphasis);border-radius:var(--radius-xl);padding:var(--space-4);margin-bottom:var(--space-3)}.connector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.connector-id{display:flex;flex-direction:column;gap:var(--space-1)}.connector-id .label{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary)}.connector-id .type{font-size:var(--text-xs);color:var(--text-muted);background:var(--bg-surface-2);padding:var(--space-0-5) var(--space-2);border-radius:var(--radius-md);width:fit-content}.connector-state{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase}.connector-state.success{background:var(--color-success-100);color:var(--color-success-700)}.connector-state.charging{background:var(--color-warning-100);color:var(--color-warning-700);animation:pulse 2s ease-in-out infinite}.connector-state.preparing{background:var(--color-info-100);color:var(--color-info-700)}.connector-state.finishing{background:var(--bg-surface-3);color:var(--text-secondary)}.connector-state.error{background:var(--color-danger-100);color:var(--color-danger-700)}.connector-state.unavailable{background:var(--bg-surface-2);color:var(--text-muted)}.connector-state.default{background:var(--bg-surface-2);color:var(--text-secondary)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.connector-info{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-3)}.connector-info .info-item{display:flex;justify-content:space-between;font-size:var(--text-sm)}.connector-info .info-item.error{color:var(--color-danger-700);background:var(--color-danger-100);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md)}.connector-info .label{color:var(--text-muted);font-weight:var(--font-medium)}.connector-info .value{color:var(--text-primary);font-weight:var(--font-semibold)}.transaction-info{background:var(--bg-surface-1);border-radius:var(--radius-lg);padding:var(--space-3);margin-bottom:var(--space-3)}.transaction-info h4{margin:0 0 var(--space-2) 0;font-size:var(--text-sm);color:var(--text-primary);font-weight:var(--font-semibold)}.transaction-details{display:flex;flex-direction:column;gap:var(--space-1-5)}.transaction-details .detail-row{display:flex;justify-content:space-between;font-size:var(--text-sm)}.transaction-details .label{color:var(--text-muted)}.transaction-details .value{color:var(--text-primary);font-weight:var(--font-medium)}.connector-actions{display:flex;gap:var(--space-2);flex-direction:column}.btn-action{padding:var(--space-2) var(--space-4);border:none;border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;transition:all var(--transition-fast)}.btn-action:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn-action:disabled{opacity:.6;cursor:not-allowed}.btn-start-charging{background:var(--color-success-500);color:#fff}.btn-stop-charging{background:var(--color-danger-500);color:#fff}.charge-form{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--bg-surface-1);border-radius:var(--radius-lg)}.charge-form input{padding:var(--space-2) var(--space-3);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--bg-base);color:var(--text-primary)}.charge-form input:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 2px var(--color-primary-100)}.form-actions{display:flex;gap:var(--space-2)}.form-actions .btn-action{flex:1}.btn-start{background:var(--color-primary-500);color:#fff}.btn-start:hover:not(:disabled){background:var(--color-primary-600)}.btn-cancel{background:var(--color-neutral-500);color:#fff}.btn-cancel:hover:not(:disabled){background:var(--color-neutral-600)}.connection-warning{background:var(--color-warning-100);border:1px solid var(--color-warning-500);border-radius:var(--radius-lg);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-warning-700);text-align:center}[data-theme=dark] .connector-card{background:var(--bg-surface-1)}[data-theme=dark] .transaction-info,[data-theme=dark] .charge-form{background:var(--bg-surface-2)}[data-theme=dark] .charge-form input{background:var(--bg-surface-1)}.stations{padding:var(--space-4);max-width:var(--content-max-width);margin:0 auto}.loading,.error{text-align:center;padding:var(--space-8);font-size:var(--text-base)}.error{color:var(--color-danger-500)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);gap:var(--space-3)}.page-header__title{display:flex;align-items:baseline;gap:var(--space-3)}.page-header h2{margin:0;font-size:var(--text-xl);color:var(--text-primary)}.station-count{font-size:var(--text-sm);color:var(--text-muted);font-weight:var(--font-medium)}.view-toggle{display:flex;background:var(--bg-surface-1);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:2px}.view-toggle__btn{display:flex;align-items:center;justify-content:center;width:32px;height:28px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.view-toggle__btn:hover{color:var(--text-primary);background:var(--bg-surface-2)}.view-toggle__btn.active{background:var(--color-primary-500);color:#fff}.empty-state{text-align:center;padding:var(--space-14) var(--space-5);background-color:var(--bg-surface-1);border-radius:var(--radius-xl);border:2px dashed var(--border-emphasis)}.empty-state h3{margin:0 0 var(--space-2) 0;font-size:var(--text-2xl);color:var(--text-primary)}.empty-state p{margin:0 0 var(--space-8) 0;color:var(--text-secondary);font-size:var(--text-base)}.empty-state-actions{display:flex;gap:var(--space-2);justify-content:center;flex-wrap:wrap}.stations-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-3)}.stations-list{display:flex;flex-direction:column;gap:var(--space-2)}.stations-table-wrapper{overflow-x:auto;border:1px solid var(--border-default);border-radius:var(--radius-lg);background:var(--bg-base)}.stations-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.stations-table th,.stations-table td{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--border-muted)}.stations-table th{background:var(--bg-surface-1);font-weight:var(--font-semibold);color:var(--text-secondary);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.sort-header-btn{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:color var(--transition-fast)}.sort-header-btn:hover{color:var(--color-primary-500)}.sort-indicator{font-size:var(--text-xs);color:var(--color-primary-500)}.stations-table tbody tr:hover{background:var(--bg-surface-1)}.stations-table tbody tr:last-child td{border-bottom:none}.stations-table .cell-name{font-weight:var(--font-semibold);color:var(--text-primary)}.stations-table .cell-id{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted)}.stations-table .cell-vendor{color:var(--text-secondary);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stations-table .cell-connectors{text-align:center;font-weight:var(--font-medium)}.stations-table .cell-actions{display:flex;gap:var(--space-1);justify-content:flex-end}.status-badge--sm{padding:2px 8px;font-size:.65rem}.station-card{background:var(--bg-base);border:1px solid var(--border-emphasis);border-radius:var(--radius-lg);padding:var(--space-3);transition:all var(--transition-fast);display:flex;flex-direction:column}.station-card:hover{border-color:var(--color-primary-500);box-shadow:0 2px 8px var(--color-primary-100)}.station-card--horizontal{flex-direction:row;align-items:center;padding:var(--space-2) var(--space-3)}.station-card--horizontal .station-card__main{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-4)}.station-card--horizontal .station-header{flex:0 0 200px;margin-bottom:0}.station-card--horizontal .station-info{flex:1;margin-bottom:0}.station-card--horizontal .station-info__grid{display:flex;gap:var(--space-4)}.station-card--horizontal .station-url{display:none}.station-card--horizontal .station-actions{flex:0 0 auto;display:flex;gap:var(--space-1);padding-top:0;border-top:none}.station-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-3);gap:var(--space-2)}.station-header__info{flex:1;min-width:0}.station-header h3{margin:0;font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.station-id-inline{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted)}.station-info__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2);margin-bottom:var(--space-2)}.info-cell{display:flex;flex-direction:column;gap:2px}.info-cell__label{font-size:var(--text-xs);color:var(--text-muted)}.info-cell__value{font-size:var(--text-sm);color:var(--text-primary);font-weight:var(--font-medium)}.info-cell__value.url{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.station-url{display:flex;gap:var(--space-2);align-items:baseline;padding-top:var(--space-2);border-top:1px solid var(--border-muted)}.status-badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;white-space:nowrap}.status-badge.connected{background-color:var(--color-success-100);color:var(--color-success-700)}.status-badge.disconnected,.status-badge.not_connected{background-color:var(--color-danger-100);color:var(--color-danger-700)}.status-badge.connecting{background-color:var(--color-warning-100);color:var(--color-warning-700)}.status-badge.unknown{background-color:var(--bg-surface-2);color:var(--text-secondary)}.station-info{flex:1;margin-bottom:var(--space-5)}.info-row{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--space-2) 0;border-bottom:1px solid var(--border-muted);gap:var(--space-2)}.info-row:last-child{border-bottom:none}.info-row .label{font-weight:var(--font-semibold);color:var(--text-muted);font-size:var(--text-sm);min-width:90px}.info-row .value{color:var(--text-primary);font-size:var(--text-sm);text-align:right;flex:1;word-break:break-word}.value.station-id{font-family:var(--font-mono);font-weight:var(--font-semibold);color:var(--color-primary-500)}.value.url{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted)}.protocol-badge{padding:var(--space-0-5) var(--space-2);border-radius:var(--radius-md);font-size:var(--text-2xs);font-weight:var(--font-bold);text-transform:uppercase;letter-spacing:.3px}.connector-types{color:var(--text-muted);font-size:var(--text-xs)}.badge{padding:var(--space-0-5) var(--space-2);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--font-semibold)}.badge.enabled{background-color:var(--color-success-100);color:var(--color-success-700)}.badge.disabled{background-color:var(--color-danger-100);color:var(--color-danger-700)}.value.tags{display:flex;flex-wrap:wrap;gap:var(--space-1);justify-content:flex-end}.value.tags .tag{padding:var(--space-0-5) var(--space-2);background-color:var(--color-primary-100);color:var(--color-primary-700);border-radius:var(--radius-full);font-size:var(--text-xs);white-space:nowrap}.station-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--border-default)}.btn-action,.btn-action.btn{padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--space-1)}.stations .btn-stop{background-color:var(--color-warning-500);color:#fff;border-color:transparent}.stations .btn-stop:hover{background-color:var(--color-warning-600)}.stations .btn-connectors{background-color:var(--color-info-500);color:#fff;border-color:transparent}.stations .btn-connectors:hover{background-color:var(--color-info-600)}.stations .btn-config{background-color:var(--color-info-500);color:#fff;border-color:transparent}.stations .btn-config:hover{background-color:var(--color-info-600)}.stations .btn-edit{background-color:var(--color-primary-500);color:#fff;border-color:transparent}.stations .btn-edit:hover{background-color:var(--color-primary-600)}.stations .btn-template{background-color:var(--color-info-500);color:#fff;border-color:transparent}.stations .btn-template:hover{background-color:var(--color-info-600)}.stations .btn-delete{background-color:var(--color-danger-500);color:#fff;border-color:transparent}.stations .btn-delete:hover{background-color:var(--color-danger-600)}.close-btn{background:none;border:none;font-size:2rem;color:var(--text-muted);cursor:pointer;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:background-color var(--transition-fast)}.close-btn:hover{background-color:var(--bg-surface-2);color:var(--text-primary)}@media (max-width: 768px){.stations{padding:15px}.page-header{flex-direction:column;align-items:stretch}.header-actions{width:100%;flex-direction:column}.header-actions button{width:100%}.stations-grid{grid-template-columns:1fr}.station-actions{grid-template-columns:repeat(2,1fr)}.empty-state-actions{flex-direction:column}.empty-state-actions button{width:100%}}@media (max-width: 480px){.info-row{flex-direction:column;gap:4px}.info-row .value{text-align:left}.value.tags{justify-content:flex-start}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--bg-overlay);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-5)}.modal-content{background:var(--bg-base);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);max-width:900px;width:100%;max-height:90vh;display:flex;flex-direction:column}@media (min-width: 1280px){.connectors-modal .connectors-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1536px){.connectors-modal{max-width:1600px}.connectors-modal .connectors-grid{grid-template-columns:repeat(4,1fr)}}@media (min-width: 1920px){.connectors-modal{max-width:1800px}.connectors-modal .connectors-grid{grid-template-columns:repeat(5,1fr);gap:var(--space-4)}}.modal-header{padding:var(--space-6);border-bottom:1px solid var(--border-default);display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;font-size:var(--text-2xl);color:var(--text-primary)}.auto-refresh-controls{display:flex;gap:var(--space-2);align-items:center;padding:var(--space-1-5) var(--space-3);background:var(--bg-surface-1);border-radius:var(--radius-lg)}.auto-refresh-toggle{display:flex;align-items:center;gap:var(--space-1-5);cursor:pointer;font-size:var(--text-sm);color:var(--text-primary);-webkit-user-select:none;user-select:none}.auto-refresh-toggle input[type=checkbox]{cursor:pointer;width:16px;height:16px}.auto-refresh-toggle span{font-weight:var(--font-medium)}.refresh-indicator{color:var(--color-success-500);font-size:var(--text-xs);animation:pulse 2s ease-in-out infinite}.refresh-interval-select{padding:var(--space-1) var(--space-2);border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-base);font-size:var(--text-sm);color:var(--text-primary);cursor:pointer}.refresh-interval-select:focus{outline:none;border-color:var(--color-primary-500)}.connectors-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:var(--space-4)}@media (max-width: 768px){.modal-overlay{padding:0}.modal-content{max-height:100vh;border-radius:0}.modal-header{flex-direction:column;align-items:flex-start;gap:12px}.modal-header h2{font-size:1.25rem}.modal-header-actions{width:100%;justify-content:space-between}.auto-refresh-controls{flex-direction:column;align-items:flex-start;gap:6px;padding:8px}.auto-refresh-toggle{font-size:13px}.connectors-grid{grid-template-columns:1fr}}[data-theme=dark] .station-card,[data-theme=dark] .stations-table-wrapper,[data-theme=dark] .modal-content{background:var(--bg-surface-1)}[data-theme=dark] .station-card:hover{box-shadow:0 4px 6px #3b82f633}[data-theme=dark] .stations-table th,[data-theme=dark] .stations-table tbody tr:hover,[data-theme=dark] .auto-refresh-controls,[data-theme=dark] .view-toggle{background:var(--bg-surface-2)}.messages{text-align:left;padding:var(--space-4)}.messages--desktop{display:flex;flex-direction:column;height:calc(100vh - 60px);max-width:var(--content-max-width);margin:0 auto;padding:0;overflow:hidden}.messages-header{flex-shrink:0;background:var(--bg-base);border-bottom:1px solid var(--border-default);z-index:10}.messages-header__top{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border-muted)}.messages-header__top h2{margin:0;font-size:var(--text-lg);color:var(--color-primary-600)}.header-actions{display:flex;gap:var(--space-2);align-items:center}.stats-inline{display:flex;gap:var(--space-3);padding:0 var(--space-3);border-left:1px solid var(--border-muted);border-right:1px solid var(--border-muted)}.stat-inline{display:flex;align-items:baseline;gap:var(--space-1)}.stat-inline__value{font-size:var(--text-base);font-weight:var(--font-bold);color:var(--text-primary)}.stat-inline__label{font-size:var(--text-xs);color:var(--text-muted)}.stat-inline--sent .stat-inline__value{color:var(--color-success-600)}.stat-inline--received .stat-inline__value{color:var(--color-primary-600)}.filters-bar{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--bg-surface-1)}.search-input--compact{width:200px;padding:var(--space-1-5) var(--space-2);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--text-sm)}.search-input--compact:focus{outline:none;border-color:var(--color-primary-500)}.filters-inline{display:flex;gap:var(--space-2);flex:1}.filter-select,.filter-input{padding:var(--space-1-5) var(--space-2);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--bg-base);color:var(--text-primary)}.filter-select:focus,.filter-input:focus{outline:none;border-color:var(--color-primary-500)}.filter-select--sm{width:70px}.filter-input{width:120px}.results-count{font-size:var(--text-sm);color:var(--text-muted);font-weight:var(--font-medium);white-space:nowrap}.messages-content{display:flex;flex:1;overflow:hidden}.messages-list-panel{display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--border-default)}.messages-detail-panel{display:flex;flex-direction:column;overflow:hidden;background:var(--bg-surface-1)}.resize-handle{width:8px;background:var(--bg-surface-1);cursor:col-resize;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color var(--transition-fast)}.resize-handle:hover,.resize-handle.resizing{background:var(--color-primary-100)}.resize-handle__grip{width:4px;height:40px;background:var(--border-default);border-radius:2px}.resize-handle:hover .resize-handle__grip,.resize-handle.resizing .resize-handle__grip{background:var(--color-primary-400)}.messages-list--compact{flex:1;overflow-y:auto;overflow-x:hidden}.message-row{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1-5) var(--space-3);border-bottom:1px solid var(--border-muted);cursor:pointer;transition:background-color var(--transition-fast);font-size:var(--text-sm)}.message-row:hover{background:var(--bg-surface-1)}.message-row.selected{background:var(--color-primary-50);border-left:3px solid var(--color-primary-500);padding-left:calc(var(--space-3) - 3px)}.message-row.sent{border-left:3px solid var(--color-success-500);padding-left:calc(var(--space-3) - 3px)}.message-row.received{border-left:3px solid var(--color-primary-500);padding-left:calc(var(--space-3) - 3px)}.message-row.selected.sent,.message-row.selected.received{border-left-width:3px;background:var(--color-primary-100)}.direction-indicator{font-weight:var(--font-bold);font-size:var(--text-base);width:20px;text-align:center}.direction-indicator.sent{color:var(--color-success-600)}.direction-indicator.received{color:var(--color-primary-600)}.message-row__time{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);width:70px;flex-shrink:0}.message-row__type{font-size:var(--text-xs);font-weight:var(--font-semibold);padding:2px 6px;border-radius:var(--radius-sm);width:50px;text-align:center;flex-shrink:0}.message-row__type--call{background:var(--color-primary-100);color:var(--color-primary-700)}.message-row__type--callresult{background:var(--color-success-100);color:var(--color-success-700)}.message-row__type--callerror{background:var(--color-danger-100);color:var(--color-danger-700)}.message-row__action{font-weight:var(--font-medium);color:var(--text-primary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-row__station{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-detail{display:flex;flex-direction:column;height:100%;overflow:hidden}.message-detail__header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-default);background:var(--bg-base)}.message-detail__title{display:flex;align-items:center;gap:var(--space-2)}.message-detail__action{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary)}.direction-badge--lg{padding:var(--space-1) var(--space-2);font-size:var(--text-xs)}.message-type-badge{padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-semibold)}.message-detail__meta{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-default);background:var(--bg-base)}.meta-row{display:flex;justify-content:space-between;padding:var(--space-1) 0}.meta-row--error{background:var(--color-danger-50);margin:0 calc(-1 * var(--space-4));padding:var(--space-1) var(--space-4)}.meta-label{font-size:var(--text-sm);color:var(--text-muted);font-weight:var(--font-medium)}.meta-value{font-size:var(--text-sm);color:var(--text-primary)}.meta-value--mono{font-family:var(--font-mono);font-size:var(--text-xs)}.meta-value--error{color:var(--color-danger-600);font-weight:var(--font-medium)}.message-detail__payload{flex:1;display:flex;flex-direction:column;overflow:hidden}.payload-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-4);background:var(--bg-surface-2);border-bottom:1px solid var(--border-default)}.payload-title{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-secondary)}.payload-content{flex:1;margin:0;padding:var(--space-3) var(--space-4);background:var(--bg-base);font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.6;overflow:auto;white-space:pre-wrap;word-break:break-word}.payload-content--highlighted{color:var(--text-primary)}.payload-content--highlighted .json-key{color:var(--color-primary-600);font-weight:var(--font-medium)}.payload-content--highlighted .json-string{color:var(--color-success-600)}.payload-content--highlighted .json-number{color:var(--color-warning-600)}.payload-content--highlighted .json-boolean{color:var(--color-info-600);font-weight:var(--font-medium)}.payload-content--highlighted .json-null{color:var(--color-danger-500);font-style:italic}.payload-content--highlighted .json-brace,.payload-content--highlighted .json-bracket{color:var(--text-secondary);font-weight:var(--font-semibold)}.payload-content--highlighted .json-colon,.payload-content--highlighted .json-comma{color:var(--text-muted)}.message-detail__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted)}.empty-detail-icon{font-size:3rem;margin-bottom:var(--space-2);opacity:.5}.message-detail__empty p{font-size:var(--text-sm)}.empty-state--compact{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:var(--space-4);text-align:center}.empty-state--compact p{color:var(--text-muted);margin-bottom:var(--space-2)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8)}.page-header h2{margin:0;color:var(--color-primary-600)}.export-dropdown{position:relative}.export-menu{position:absolute;top:100%;right:0;margin-top:var(--space-2);background:var(--bg-base);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:180px;z-index:1000;overflow:hidden}.export-menu button{display:block;width:100%;padding:var(--space-3) var(--space-4);background:var(--bg-base);border:none;text-align:left;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary);cursor:pointer;transition:background-color var(--transition-fast)}.export-menu button:hover{background:var(--bg-surface-1)}.export-menu button:not(:last-child){border-bottom:1px solid var(--border-default)}.live-updates-toggle{display:flex;align-items:center;padding:var(--space-2) var(--space-4);background:var(--bg-surface-1);border-radius:var(--radius-md)}.live-updates-toggle label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary)}.live-updates-toggle input[type=checkbox]{cursor:pointer;width:18px;height:18px}.ws-indicator{font-size:var(--text-xl);line-height:1;margin-left:var(--space-1)}.ws-indicator.connected{color:var(--color-success-500);animation:pulse 2s ease-in-out infinite}.ws-indicator.disconnected{color:var(--color-danger-500)}.message-stats{display:flex;gap:var(--space-4);padding:var(--space-4);background:var(--gradient-brand);border-radius:var(--radius-lg);margin-bottom:var(--space-8)}.stat-item{display:flex;flex-direction:column;gap:var(--space-2)}.stat-label{font-size:var(--text-sm);color:#fffc;font-weight:var(--font-medium)}.stat-value{font-size:var(--text-2xl);color:#fff;font-weight:var(--font-bold)}.filters-container{display:flex;flex-direction:column;gap:var(--space-4);margin-bottom:var(--space-8)}.search-bar{display:flex;gap:var(--space-4);align-items:center}.search-input{flex:1;padding:var(--space-3) var(--space-4);border:2px solid var(--border-default);border-radius:var(--radius-lg);font-size:var(--text-base);background:var(--bg-base);color:var(--text-primary);transition:all var(--transition-fast)}.search-input:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px #667eea1a}.filters{display:flex;gap:var(--space-4);padding:var(--space-4);background:var(--bg-surface-1);border-radius:var(--radius-lg);flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:var(--space-2);flex:1;min-width:150px}.filter-group label{font-weight:var(--font-medium);font-size:var(--text-sm);color:var(--text-muted)}.filter-group input,.filter-group select{padding:var(--space-2);border:1px solid var(--border-default);border-radius:var(--radius-sm);font-size:var(--text-sm);background:var(--bg-base);color:var(--text-primary)}.filter-group input:focus,.filter-group select:focus{outline:none;border-color:var(--color-primary-500)}.active-filters{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;padding:var(--space-4);background:var(--color-info-100);border:1px solid var(--color-info-200);border-radius:var(--radius-md)}.active-filters-label{font-weight:var(--font-semibold);font-size:var(--text-sm);color:var(--color-info-700)}.filter-tag{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1-5) var(--space-3);background:var(--bg-base);border:1px solid var(--color-primary-500);border-radius:var(--radius-full);font-size:var(--text-sm);color:var(--color-primary-600);font-weight:var(--font-medium)}.filter-tag button{background:none;border:none;color:var(--color-primary-500);font-size:var(--text-lg);line-height:1;cursor:pointer;padding:0;margin:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;transition:color var(--transition-fast)}.filter-tag button:hover{color:var(--color-danger-500)}.results-info{padding:var(--space-3) var(--space-4);background:var(--bg-surface-1);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-muted);font-weight:var(--font-medium);text-align:center}.empty-state{text-align:center;padding:var(--space-8);background:var(--bg-surface-1);border-radius:var(--radius-lg);margin-top:var(--space-8)}.empty-state p{font-size:var(--text-xl);color:var(--text-muted);margin-bottom:var(--space-4)}.messages-list{display:flex;flex-direction:column;gap:var(--space-4)}.message-card{background:var(--bg-base);border:1px solid var(--border-emphasis);border-radius:var(--radius-lg);padding:var(--space-4);transition:box-shadow var(--transition-fast)}.message-card:hover{box-shadow:var(--shadow-md)}.message-card.sent{border-left:4px solid var(--color-success-500)}.message-card.received{border-left:4px solid var(--color-primary-500)}.message-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);padding-bottom:var(--space-4);border-bottom:2px solid var(--border-muted)}.message-info{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}.direction-badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase}.direction-badge.sent{background:var(--color-success-100);color:var(--color-success-700)}.message-type{font-weight:var(--font-semibold);color:var(--text-primary);font-size:var(--text-sm)}.message-station,.message-timestamp{color:var(--text-muted);font-size:var(--text-sm)}.message-details{margin-bottom:var(--space-4)}.detail-row{display:flex;justify-content:space-between;padding:var(--space-2) 0;border-bottom:1px solid var(--border-muted)}.detail-row:last-child{border-bottom:none}.detail-label{font-weight:var(--font-medium);color:var(--text-muted);font-size:var(--text-sm)}.detail-value{color:var(--text-primary);font-size:var(--text-sm)}.message-payload{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border-muted)}.message-payload summary{cursor:pointer;font-weight:var(--font-medium);color:var(--color-primary-600);font-size:var(--text-sm);-webkit-user-select:none;user-select:none}.message-payload summary:hover{color:var(--color-primary-700)}.message-payload pre{margin-top:var(--space-4);padding:var(--space-4);background:var(--bg-surface-1);border-radius:var(--radius-sm);overflow-x:auto;font-size:var(--text-xs);line-height:1.5}@media (max-width: 768px){.message-stats{flex-direction:column;gap:1rem}.filters{flex-direction:column}.message-header{flex-direction:column;align-items:flex-start;gap:.5rem}.message-timestamp{font-size:.75rem}}[data-theme=dark] .page-header h2,[data-theme=dark] .messages-header__top h2{color:var(--color-primary-400)}[data-theme=dark] .messages-header,[data-theme=dark] .message-detail__header,[data-theme=dark] .message-detail__meta,[data-theme=dark] .message-card{background:var(--bg-surface-1)}[data-theme=dark] .resize-handle{background:var(--bg-surface-2)}[data-theme=dark] .resize-handle:hover,[data-theme=dark] .resize-handle.resizing{background:var(--color-primary-900)}[data-theme=dark] .message-row__type--call,[data-theme=dark] .message-type-badge--call{background:var(--color-primary-900);color:var(--color-primary-300)}[data-theme=dark] .message-row__type--callresult,[data-theme=dark] .message-type-badge--callresult{background:var(--color-success-900);color:var(--color-success-300)}[data-theme=dark] .message-row__type--callerror,[data-theme=dark] .message-type-badge--callerror{background:var(--color-danger-900);color:var(--color-danger-300)}[data-theme=dark] .direction-badge.sent{background:var(--color-success-900);color:var(--color-success-300)}[data-theme=dark] .direction-badge.received{background:var(--color-info-900);color:var(--color-info-300)}[data-theme=dark] .message-row.selected,[data-theme=dark] .message-row.selected.sent,[data-theme=dark] .message-row.selected.received{background:var(--color-primary-900)}[data-theme=dark] .active-filters{background:#3b82f626;border-color:#3b82f64d}[data-theme=dark] .active-filters-label{color:var(--color-info-300)}[data-theme=dark] .filter-tag{background:var(--bg-surface-1);color:var(--color-primary-400)}[data-theme=dark] .filter-tag button{color:var(--color-primary-400)}[data-theme=dark] .meta-row--error{background:#ef444426}[data-theme=dark] .message-payload summary{color:var(--color-primary-400)}[data-theme=dark] .message-payload summary:hover{color:var(--color-primary-300)}[data-theme=dark] .payload-content--highlighted .json-key{color:var(--color-primary-400)}[data-theme=dark] .payload-content--highlighted .json-string{color:var(--color-success-400)}[data-theme=dark] .payload-content--highlighted .json-number{color:var(--color-warning-400)}[data-theme=dark] .payload-content--highlighted .json-boolean{color:var(--color-info-400)}[data-theme=dark] .payload-content--highlighted .json-null{color:var(--color-danger-400)}[data-theme=dark] .payload-content--highlighted .json-brace,[data-theme=dark] .payload-content--highlighted .json-bracket{color:var(--text-secondary)}[data-theme=dark] .payload-content--highlighted .json-colon,[data-theme=dark] .payload-content--highlighted .json-comma{color:var(--text-muted)}.template-library-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.template-library-modal{background:#fff;border-radius:12px;width:100%;max-width:1400px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 10px 40px #0000004d}.template-library-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e0e0e0}.template-library-header h2{margin:0;font-size:20px;color:#333}.header-actions{display:flex;gap:12px;align-items:center}.btn-save-template{padding:8px 16px;background:#28a745;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-save-template:hover{background:#218838}.btn-close{width:32px;height:32px;background:#f8f9fa;border:none;border-radius:6px;font-size:18px;cursor:pointer;transition:all .2s ease}.btn-close:hover{background:#e0e0e0}.template-library-body{display:grid;grid-template-columns:200px 1fr 400px;gap:20px;padding:20px 24px;overflow:hidden;flex:1}.template-categories{display:flex;flex-direction:column;gap:12px}.template-categories h3{margin:0;font-size:14px;font-weight:600;color:#666;text-transform:uppercase}.category-list{display:flex;flex-direction:column;gap:4px}.category-btn{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#f8f9fa;border:1px solid transparent;border-radius:6px;text-align:left;font-size:14px;font-weight:500;color:#333;cursor:pointer;transition:all .2s ease}.category-btn:hover{background:#e9ecef}.category-btn.active{background:#007bff;color:#fff;border-color:#007bff}.category-count{font-size:12px;opacity:.7}.template-list{display:flex;flex-direction:column;gap:12px;overflow-y:auto}.template-list h3{margin:0;font-size:16px;font-weight:600;color:#333}.templates-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.template-card{padding:16px;background:#f8f9fa;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s ease}.template-card:hover{background:#e9ecef;border-color:#007bff}.template-card.selected{background:#e7f3ff;border-color:#007bff}.template-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.template-card h4{margin:0;font-size:14px;font-weight:600;color:#333;flex:1}.btn-delete-small{background:none;border:none;font-size:16px;cursor:pointer;opacity:.6;transition:opacity .2s ease;padding:0;margin-left:8px}.btn-delete-small:hover{opacity:1}.template-description{margin:0 0 8px;font-size:12px;color:#666;line-height:1.4}.template-meta{display:flex;justify-content:space-between;align-items:center;gap:8px}.template-action{font-size:12px;font-weight:600;color:#007bff;font-family:Monaco,Menlo,monospace}.badge-builtin{padding:2px 8px;background:#28a745;color:#fff;border-radius:4px;font-size:10px;font-weight:600;text-transform:uppercase}.template-preview{display:flex;flex-direction:column;gap:12px;overflow-y:auto;border-left:1px solid #e0e0e0;padding-left:20px}.template-preview h3{margin:0;font-size:16px;font-weight:600;color:#333}.preview-info{display:flex;flex-direction:column;gap:8px}.preview-info .info-row{display:flex;flex-direction:column;gap:4px}.preview-info .label{font-size:12px;font-weight:600;color:#666;text-transform:uppercase}.preview-info .value{font-size:14px;color:#333}.preview-payload{display:flex;flex-direction:column;gap:8px}.preview-payload strong{font-size:12px;font-weight:600;color:#666;text-transform:uppercase}.preview-payload pre{margin:0;padding:12px;background:#2d2d2d;color:#f8f8f2;border-radius:6px;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,monospace;font-size:12px;line-height:1.6;overflow-x:auto;max-height:400px;overflow-y:auto}.btn-use-template{padding:12px;background:#007bff;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-use-template:hover{background:#0056b3}.empty-state{padding:40px;text-align:center;color:#999;font-size:14px}.save-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1100}.save-dialog{background:#fff;border-radius:8px;padding:24px;width:100%;max-width:500px;box-shadow:0 4px 20px #0000004d}.save-dialog h3{margin:0 0 20px;font-size:18px;color:#333}.save-dialog .form-group{margin-bottom:16px}.save-dialog .form-group label{display:block;margin-bottom:6px;font-weight:600;color:#333;font-size:14px}.save-dialog .form-group input{width:100%;padding:10px 12px;border:1px solid #ced4da;border-radius:6px;font-size:14px}.save-dialog .form-group input:focus{outline:none;border-color:#007bff}.dialog-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}.btn-cancel{padding:10px 20px;background:#6c757d;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-cancel:hover{background:#5a6268}.btn-save{padding:10px 20px;background:#28a745;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-save:hover{background:#218838}@media (prefers-color-scheme: dark){.template-library-modal{background:#2d2d2d}.template-library-header{border-bottom-color:#444}.template-library-header h2{color:#e0e0e0}.btn-close{background:#3a3a3a;color:#e0e0e0}.btn-close:hover{background:#4a4a4a}.template-categories h3,.template-list h3,.template-preview h3{color:#e0e0e0}.category-btn{background:#3a3a3a;color:#e0e0e0}.category-btn:hover{background:#4a4a4a}.template-card{background:#3a3a3a}.template-card:hover{background:#4a4a4a}.template-card.selected{background:#1e3a5f}.template-card h4{color:#e0e0e0}.template-description{color:#aaa}.template-preview{border-left-color:#444}.preview-info .label{color:#aaa}.preview-info .value{color:#e0e0e0}.preview-payload strong{color:#aaa}.save-dialog{background:#2d2d2d}.save-dialog h3,.save-dialog .form-group label{color:#e0e0e0}.save-dialog .form-group input{background:#3a3a3a;border-color:#444;color:#e0e0e0}.empty-state{color:#666}}.message-crafter{padding:var(--space-5);max-width:1200px;margin:0 auto}.message-crafter--desktop{max-width:var(--content-max-width);height:calc(100vh - 60px);max-height:700px;display:flex;flex-direction:column;padding:0;overflow:hidden}.crafter-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border-default);background:var(--bg-base);flex-shrink:0}.crafter-header__title{display:flex;align-items:baseline;gap:var(--space-3)}.crafter-header__title h2{margin:0;font-size:var(--text-lg);color:var(--color-primary-600)}.crafter-header__subtitle{font-size:var(--text-sm);color:var(--text-muted)}.crafter-layout{display:grid;grid-template-columns:240px 1fr 320px;flex:1;overflow:hidden}@media (max-width: 1200px){.crafter-layout{grid-template-columns:220px 1fr 280px}}@media (max-width: 1024px){.crafter-layout{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}}.crafter-column{display:flex;flex-direction:column;overflow:hidden}.crafter-column--settings{background:var(--bg-surface-1);border-right:1px solid var(--border-default);padding:var(--space-3);overflow-y:auto;display:flex;flex-direction:column}.settings-group{margin-bottom:var(--space-3)}.settings-group--send{margin-top:auto;padding-top:var(--space-3);border-top:1px solid var(--border-muted)}.settings-label{display:block;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-1)}.settings-select,.settings-input{width:100%;padding:var(--space-1-5) var(--space-2);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--bg-base)}.settings-select:focus,.settings-input:focus{outline:none;border-color:var(--color-primary-500)}.settings-input--mono{font-family:var(--font-mono);font-size:var(--text-xs)}.station-meta{display:flex;gap:var(--space-2);margin-top:var(--space-1-5)}.protocol-tag{padding:2px 6px;border-radius:var(--radius-sm);font-size:var(--text-2xs);font-weight:var(--font-bold);text-transform:uppercase}.protocol-tag.ocpp16{background:var(--color-primary-100);color:var(--color-primary-700)}.protocol-tag.ocpp201{background:var(--color-success-100);color:var(--color-success-700)}.protocol-tag.ocpp21{background:var(--color-warning-100);color:var(--color-warning-700)}.status-tag{padding:2px 6px;border-radius:var(--radius-sm);font-size:var(--text-2xs);font-weight:var(--font-medium)}.status-tag--connected{background:var(--color-success-100);color:var(--color-success-700)}.warning-inline{margin-top:var(--space-1-5);padding:var(--space-1) var(--space-2);background:var(--color-warning-100);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--color-warning-700)}.type-selector{display:flex;gap:2px;background:var(--bg-surface-2);padding:2px;border-radius:var(--radius-md)}.type-btn--compact{flex:1;padding:var(--space-1) var(--space-1-5);border:none;border-radius:var(--radius-sm);background:transparent;font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.type-btn--compact:hover{background:var(--bg-surface-3)}.type-btn--compact.active{background:var(--color-primary-500);color:#fff}.validation-row{display:flex;flex-direction:column;gap:var(--space-2)}.toggle-compact{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer}.toggle-compact input{width:16px;height:16px}.mode-toggle{display:flex;gap:2px;background:var(--bg-surface-2);padding:2px;border-radius:var(--radius-sm)}.mode-btn--sm{flex:1;padding:4px 8px;border:none;border-radius:3px;background:transparent;font-size:var(--text-2xs);font-weight:var(--font-medium);color:var(--text-muted);cursor:pointer}.mode-btn--sm:hover{background:var(--bg-surface-3)}.mode-btn--sm.active{background:var(--color-primary-500);color:#fff}.message-crafter .btn-send--compact{width:100%}.crafter-column--editor{display:flex;flex-direction:column;overflow:hidden}.editor-panel{display:flex;flex-direction:column;flex:1;overflow:hidden}.editor-panel__header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);background:var(--bg-surface-1);border-bottom:1px solid var(--border-default)}.editor-panel__title{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-primary)}.editor-container{flex:1;overflow:hidden}.editor-status{padding:var(--space-1-5) var(--space-3);font-size:var(--text-xs);font-weight:var(--font-medium);border-top:1px solid var(--border-default)}.editor-status--valid{background:var(--color-success-100);color:var(--color-success-700)}.editor-status--warning{background:var(--color-warning-100);color:var(--color-warning-700)}.editor-status--error{background:var(--color-danger-100);color:var(--color-danger-700)}.crafter-column--preview{background:var(--bg-surface-1);border-left:1px solid var(--border-default);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2)}.preview-panel,.validation-panel,.result-panel{background:var(--bg-base);border:1px solid var(--border-default);border-radius:var(--radius-md);overflow:hidden}.preview-panel__header,.validation-panel__header{padding:var(--space-2) var(--space-3);background:var(--bg-surface-2);border-bottom:1px solid var(--border-muted)}.preview-panel__title,.validation-panel__title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-secondary)}.validation-panel__hint{font-size:var(--text-2xs);font-weight:var(--font-normal);color:var(--text-muted);margin-left:var(--space-2)}.preview-content{padding:var(--space-3);margin:0;font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.6;background:var(--terminal-bg);color:var(--terminal-text);overflow-x:auto;white-space:pre;word-break:break-word;text-align:left}.validation-panel__content{padding:var(--space-2)}.validation-item{display:flex;flex-direction:column;gap:2px;padding:var(--space-1-5);margin-bottom:var(--space-1);border-radius:var(--radius-sm);font-size:var(--text-xs)}.validation-item:last-child{margin-bottom:0}.validation-item--error{background:var(--color-danger-50);border-left:3px solid var(--color-danger-500)}.validation-item--warning{background:var(--color-warning-50);border-left:3px solid var(--color-warning-500)}.validation-item code{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-muted)}.validation-item span{color:var(--text-primary)}.result-panel__header{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-semibold)}.result-panel--success .result-panel__header{background:var(--color-success-100);color:var(--color-success-700)}.result-panel--error .result-panel__header{background:var(--color-danger-100);color:var(--color-danger-700)}.result-panel__content pre{padding:var(--space-2);margin:0;font-family:var(--font-mono);font-size:var(--text-xs);background:var(--terminal-bg);color:var(--terminal-text);overflow-x:auto;white-space:pre;text-align:left}.result-panel__error{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);color:var(--color-danger-600)}.page-header{margin-bottom:30px;display:flex;justify-content:space-between;align-items:center;gap:20px}.page-header h2{margin:0 0 8px;color:var(--text-primary)}.page-header p{margin:0;color:var(--text-secondary);font-size:var(--text-base)}.crafter-container{display:flex;flex-direction:column;gap:24px}.crafter-section{background:var(--bg-base);border:1px solid var(--border-default);border-radius:8px;padding:20px}.crafter-section h3{margin:0 0 16px;font-size:var(--text-lg);font-weight:600;color:var(--text-primary)}.station-select{width:100%;padding:10px 12px;border:1px solid var(--border-default);border-radius:6px;font-size:var(--text-base);background:var(--bg-base);cursor:pointer}.station-select:focus{outline:none;border-color:var(--color-primary-500)}.station-info{margin-top:12px;padding:12px;background:var(--bg-surface-1);border-radius:6px}.station-info .info-row{display:flex;justify-content:space-between;margin-bottom:8px}.station-info .info-row:last-child{margin-bottom:0}.station-info .label{font-weight:500;color:var(--text-secondary)}.station-info .value{color:var(--text-primary);font-weight:600}.station-info .status-connected{color:var(--color-success-500)}.protocol-badge{padding:4px 10px;border-radius:4px;font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.5px}.protocol-badge.ocpp16{background:var(--color-ocpp16-bg);color:var(--color-ocpp16);border:1px solid var(--color-ocpp16-border)}.protocol-badge.ocpp201{background:var(--color-ocpp201-bg);color:var(--color-ocpp201);border:1px solid var(--color-ocpp201-border)}.protocol-badge.ocpp21{background:var(--color-ocpp21-bg);color:var(--color-ocpp21);border:1px solid var(--color-ocpp21-border)}.protocol-note{margin-top:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--color-success-100);border-left:3px solid var(--color-success-500);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--text-sm);color:var(--color-success-700)}.warning{padding:var(--space-3);background:var(--color-warning-100);border:1px solid var(--color-warning-500);border-radius:var(--radius-md);color:var(--color-warning-700);font-size:var(--text-sm);margin-top:var(--space-3)}.message-type-selector{display:flex;gap:12px}.type-btn{flex:1;padding:12px;border:2px solid var(--border-default);border-radius:6px;background:var(--bg-base);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:all .2s ease}.type-btn:hover{border-color:var(--color-primary-500);background:var(--bg-surface-1)}.type-btn.active{border-color:var(--color-primary-500);background:var(--color-primary-500);color:#fff}.type-btn:disabled{opacity:.6;cursor:not-allowed}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:8px;font-weight:600;color:var(--text-primary);font-size:var(--text-base)}.action-select,.unique-id-input{width:100%;padding:10px 12px;border:1px solid var(--border-default);border-radius:6px;font-size:var(--text-base);background:var(--bg-base)}.action-select:focus,.unique-id-input:focus{outline:none;border-color:var(--color-primary-500)}.editor-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.editor-header label{margin-bottom:0}.monaco-editor-container{border:1px solid var(--border-default);border-radius:6px;overflow:hidden}.json-error{margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-warning-100);border:1px solid var(--color-warning-500);border-radius:var(--radius-sm);color:var(--color-warning-700);font-size:var(--text-xs);font-family:var(--font-mono)}.message-preview{background:var(--bg-surface-3);color:var(--text-primary);padding:var(--space-4);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--text-sm);line-height:1.6;overflow-x:auto;margin:0}.result{padding:var(--space-4);border-radius:var(--radius-md);border:1px solid}.result.success{background:var(--color-success-100);border-color:var(--color-success-500);color:var(--color-success-700)}.result.error{background:var(--color-danger-100);border-color:var(--color-danger-500);color:var(--color-danger-700)}.result-header{font-weight:600;margin-bottom:12px}.result-details{margin-top:12px}.result-details strong{display:block;margin-bottom:8px}.result-details pre{background:var(--bg-surface-2);padding:var(--space-3);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-xs);margin:0;overflow-x:auto}.validation-controls{display:flex;flex-direction:column;gap:16px}.validation-toggle{display:flex;align-items:center}.toggle-label{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:600;color:var(--text-primary);font-size:var(--text-base)}.toggle-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.validation-mode{display:flex;flex-direction:column;gap:12px;padding:16px;background:var(--bg-surface-1);border-radius:6px}.validation-mode label{font-weight:600;color:var(--text-primary);font-size:var(--text-base);margin:0}.mode-selector{display:flex;gap:12px}.mode-btn{flex:1;padding:10px;border:2px solid var(--border-default);border-radius:6px;background:var(--bg-base);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:all .2s ease}.mode-btn:hover{border-color:var(--color-primary-500);background:var(--bg-surface-1)}.mode-btn.active{border-color:var(--color-primary-500);background:var(--color-primary-500);color:#fff}.mode-description{margin:0;font-size:var(--text-sm);color:var(--text-secondary);line-height:1.5}.validation-result{padding:14px;border-radius:6px;border:2px solid;margin-top:8px}.validation-result.valid{background:var(--color-success-100);border-color:var(--color-success-500);color:var(--color-success-700)}.validation-result.warning{background:var(--color-warning-100);border-color:var(--color-warning-500);color:var(--color-warning-700)}.validation-result.error{background:var(--color-danger-100);border-color:var(--color-danger-500);color:var(--color-danger-700)}.validation-header{font-weight:600;font-size:var(--text-base);margin-bottom:8px}.validation-messages{margin-top:12px}.validation-messages strong{display:block;margin-bottom:8px;font-size:var(--text-sm)}.validation-messages ul{margin:0;padding-left:20px}.validation-messages li{margin-bottom:6px;font-size:var(--text-sm);line-height:1.5}.validation-messages code{background:var(--bg-surface-2);padding:var(--space-0-5) var(--space-1-5);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-xs)}[data-theme=dark] .message-crafter{color:var(--text-primary)}[data-theme=dark] .crafter-header{background:var(--bg-surface-1);border-bottom-color:var(--border-default)}[data-theme=dark] .crafter-header__title h2{color:var(--color-primary-400)}[data-theme=dark] .crafter-header__subtitle{color:var(--text-muted)}[data-theme=dark] .crafter-column--settings{background:var(--bg-surface-1);border-right-color:var(--border-default)}[data-theme=dark] .settings-group--send{border-top-color:var(--border-muted)}[data-theme=dark] .settings-label{color:var(--text-muted)}[data-theme=dark] .settings-select,[data-theme=dark] .settings-input{background:var(--bg-base);border-color:var(--border-default);color:var(--text-primary)}[data-theme=dark] .settings-select:focus,[data-theme=dark] .settings-input:focus{border-color:var(--color-primary-500)}[data-theme=dark] .protocol-tag.ocpp16{background:var(--color-primary-900);color:var(--color-primary-300)}[data-theme=dark] .protocol-tag.ocpp201{background:var(--color-success-900);color:var(--color-success-300)}[data-theme=dark] .protocol-tag.ocpp21{background:var(--color-warning-900);color:var(--color-warning-300)}[data-theme=dark] .status-tag--connected{background:var(--color-success-900);color:var(--color-success-300)}[data-theme=dark] .warning-inline{background:var(--color-warning-900);color:var(--color-warning-300)}[data-theme=dark] .type-selector{background:var(--bg-surface-2)}[data-theme=dark] .type-btn--compact{color:var(--text-muted)}[data-theme=dark] .type-btn--compact:hover{background:var(--bg-surface-3)}[data-theme=dark] .type-btn--compact.active{background:var(--color-primary-400);color:#fff}[data-theme=dark] .toggle-compact{color:var(--text-secondary)}[data-theme=dark] .mode-toggle{background:var(--bg-surface-2)}[data-theme=dark] .mode-btn--sm{color:var(--text-muted)}[data-theme=dark] .mode-btn--sm:hover{background:var(--bg-surface-3)}[data-theme=dark] .mode-btn--sm.active{background:var(--color-primary-400);color:#fff}[data-theme=dark] .editor-panel__header{background:var(--bg-surface-1);border-bottom-color:var(--border-default)}[data-theme=dark] .editor-panel__title{color:var(--text-primary)}[data-theme=dark] .editor-status{border-top-color:var(--border-default)}[data-theme=dark] .editor-status--valid{background:var(--color-success-900);color:var(--color-success-300)}[data-theme=dark] .editor-status--warning{background:var(--color-warning-900);color:var(--color-warning-300)}[data-theme=dark] .editor-status--error{background:var(--color-danger-900);color:var(--color-danger-300)}[data-theme=dark] .crafter-column--preview{background:var(--bg-surface-1);border-left-color:var(--border-default)}[data-theme=dark] .preview-panel,[data-theme=dark] .validation-panel,[data-theme=dark] .result-panel{background:var(--bg-surface-2);border-color:var(--border-default)}[data-theme=dark] .preview-panel__header,[data-theme=dark] .validation-panel__header{background:var(--bg-surface-3);border-bottom-color:var(--border-muted)}[data-theme=dark] .preview-panel__title,[data-theme=dark] .validation-panel__title{color:var(--text-muted)}[data-theme=dark] .validation-item--error{background:var(--color-danger-100)}[data-theme=dark] .validation-item--warning{background:var(--color-warning-100)}[data-theme=dark] .validation-item code{color:var(--text-muted)}[data-theme=dark] .validation-item span{color:var(--text-primary)}[data-theme=dark] .result-panel--success .result-panel__header{background:var(--color-success-900);color:var(--color-success-300)}[data-theme=dark] .result-panel--error .result-panel__header{background:var(--color-danger-900);color:var(--color-danger-300)}[data-theme=dark] .result-panel__error{color:var(--color-danger-400)}[data-theme=dark] .page-header h2{color:var(--text-primary)}[data-theme=dark] .page-header p{color:var(--text-muted)}[data-theme=dark] .crafter-section{background:var(--bg-surface-1);border-color:var(--border-default)}[data-theme=dark] .crafter-section h3{color:var(--text-primary)}[data-theme=dark] .station-select,[data-theme=dark] .action-select,[data-theme=dark] .unique-id-input{background:var(--bg-surface-2);border-color:var(--border-default);color:var(--text-primary)}[data-theme=dark] .station-select:focus,[data-theme=dark] .action-select:focus,[data-theme=dark] .unique-id-input:focus{border-color:var(--color-primary-500)}[data-theme=dark] .station-info{background:var(--bg-surface-2)}[data-theme=dark] .station-info .label{color:var(--text-muted)}[data-theme=dark] .station-info .value{color:var(--text-primary)}[data-theme=dark] .station-info .status-connected{color:var(--color-success-400)}[data-theme=dark] .protocol-badge.ocpp16{background:var(--color-ocpp16-bg);color:var(--color-ocpp16);border-color:var(--color-ocpp16)}[data-theme=dark] .protocol-badge.ocpp201{background:var(--color-ocpp201-bg);color:var(--color-ocpp201);border-color:var(--color-ocpp201)}[data-theme=dark] .protocol-badge.ocpp21{background:var(--color-ocpp21-bg);color:var(--color-ocpp21);border-color:var(--color-ocpp21)}[data-theme=dark] .protocol-note{background:var(--color-success-900);border-left-color:var(--color-success-500);color:var(--color-success-300)}[data-theme=dark] .warning{background:var(--color-warning-900);border-color:var(--color-warning-600);color:var(--color-warning-300)}[data-theme=dark] .form-group label{color:var(--text-primary)}[data-theme=dark] .monaco-editor-container{border-color:var(--border-default)}[data-theme=dark] .json-error{background:var(--color-warning-900);border-color:var(--color-warning-600);color:var(--color-warning-300)}[data-theme=dark] .type-btn{background:var(--bg-surface-2);border-color:var(--border-default);color:var(--text-primary)}[data-theme=dark] .type-btn:hover{background:var(--bg-surface-3);border-color:var(--color-primary-500)}[data-theme=dark] .type-btn.active{background:var(--color-primary-400);border-color:var(--color-primary-400);color:#fff}[data-theme=dark] .result.success{background:var(--color-success-900);border-color:var(--color-success-700);color:var(--color-success-300)}[data-theme=dark] .result.error{background:var(--color-danger-900);border-color:var(--color-danger-700);color:var(--color-danger-300)}[data-theme=dark] .result-details pre{background:var(--bg-base);color:var(--text-primary)}[data-theme=dark] .toggle-label{color:var(--text-primary)}[data-theme=dark] .validation-mode{background:var(--bg-surface-2)}[data-theme=dark] .validation-mode label{color:var(--text-primary)}[data-theme=dark] .mode-btn{background:var(--bg-surface-1);border-color:var(--border-default);color:var(--text-primary)}[data-theme=dark] .mode-btn:hover{background:var(--bg-surface-3);border-color:var(--color-primary-500)}[data-theme=dark] .mode-btn.active{background:var(--color-primary-400);border-color:var(--color-primary-400);color:#fff}[data-theme=dark] .mode-description{color:var(--text-muted)}[data-theme=dark] .validation-result.valid{background:var(--color-success-900);border-color:var(--color-success-500);color:var(--color-success-300)}[data-theme=dark] .validation-result.warning{background:var(--color-warning-900);border-color:var(--color-warning-500);color:var(--color-warning-300)}[data-theme=dark] .validation-result.error{background:var(--color-danger-900);border-color:var(--color-danger-500);color:var(--color-danger-300)}[data-theme=dark] .validation-messages code{background:var(--bg-surface-3)}.scenario-runner{padding:var(--space-4);height:100%;display:flex;flex-direction:column;background:var(--bg-base)}.scenario-runner.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);color:var(--text-secondary)}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-emphasis);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin 1s linear infinite}.sr-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:2px solid var(--border-emphasis)}.sr-header h1{margin:0;font-size:1.5rem;color:var(--text-primary);font-weight:700}.sr-header-status{display:flex;align-items:center;gap:var(--space-3)}.execution-status{padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;border:1px solid}.status-running{background:var(--color-success-100);color:var(--color-success-700);border-color:var(--color-success-500)}.status-paused{background:var(--color-warning-100);color:var(--color-warning-700);border-color:var(--color-warning-500)}.status-completed{background:var(--color-success-100);color:var(--color-success-700);border-color:var(--color-success-500)}.status-failed{background:var(--color-danger-100);color:var(--color-danger-700);border-color:var(--color-danger-500)}.status-cancelled{background:var(--bg-surface-2);color:var(--text-secondary);border-color:var(--border-emphasis)}.status-pending{background:var(--bg-surface-2);color:var(--text-muted);border-color:var(--border-default)}.ws-status{font-size:.75rem;font-weight:500;padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);background:var(--bg-surface-2);border:1px solid var(--border-default)}.ws-status.connected{color:var(--color-success-500)}.ws-status.disconnected{color:var(--text-muted)}.error-banner{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);background:var(--color-danger-100);border:1px solid var(--color-danger-500);border-radius:var(--radius-lg);margin-bottom:var(--space-4);color:var(--color-danger-700);font-weight:500}.error-banner button{background:none;border:none;color:var(--color-danger-700);cursor:pointer;font-size:1.2rem;padding:0;line-height:1;opacity:.7;transition:opacity .15s}.error-banner button:hover{opacity:1}.sr-content{display:grid;grid-template-columns:320px 1fr 380px;gap:var(--space-4);flex:1;min-height:0}.sr-panel{background:var(--bg-surface-1);border-radius:var(--radius-xl);border:1px solid var(--border-emphasis);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-sm)}.sr-panel h2{margin:0;padding:var(--space-3) var(--space-4);font-size:.85rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border-emphasis);background:var(--bg-surface-2);flex-shrink:0}.scenario-list{flex:1;overflow-y:auto;padding:var(--space-3)}.scenario-item{padding:var(--space-3);border-radius:var(--radius-lg);cursor:pointer;margin-bottom:var(--space-2);border:1px solid var(--border-emphasis);background:var(--bg-base);transition:all .15s ease;box-shadow:var(--shadow-xs)}.scenario-item:last-child{margin-bottom:0}.scenario-item:hover{background:var(--bg-surface-2);border-color:var(--color-neutral-400);box-shadow:var(--shadow-sm)}.scenario-item.selected{background:var(--color-primary-100);border-color:var(--color-primary-500);box-shadow:0 0 0 1px var(--color-primary-500),var(--shadow-sm)}.scenario-item-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-2);margin-bottom:var(--space-2)}.scenario-name{font-weight:600;color:var(--text-primary);font-size:.9rem;line-height:1.3}.builtin-badge{font-size:.6rem;padding:2px 6px;background:var(--bg-surface-2);border:1px solid var(--border-emphasis);border-radius:var(--radius-md);color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;flex-shrink:0;font-weight:600}.scenario-desc{font-size:.8rem;color:var(--text-secondary);margin:0 0 var(--space-2);line-height:1.4}.scenario-meta{display:flex;align-items:center;gap:var(--space-2);font-size:.75rem;color:var(--text-muted);padding-top:var(--space-2);border-top:1px solid var(--border-default)}.tags{display:flex;gap:4px;flex-wrap:wrap}.tag{background:var(--bg-surface-2);padding:2px 8px;border-radius:var(--radius-md);font-size:.7rem;border:1px solid var(--border-default);color:var(--text-secondary)}.sr-execution{display:flex;flex-direction:column}.execution-controls{padding:var(--space-4);display:flex;gap:var(--space-3);align-items:center;border-bottom:1px solid var(--border-emphasis);flex-shrink:0;background:var(--bg-surface-2)}.execution-controls select{flex:1;padding:var(--space-2) var(--space-3);border-radius:var(--radius-lg);border:1px solid var(--border-emphasis);background:var(--bg-base);color:var(--text-primary);font-size:.875rem;cursor:pointer;transition:border-color .15s}.execution-controls select:hover:not(:disabled){border-color:var(--color-neutral-400)}.execution-controls select:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 2px var(--color-primary-100)}.control-buttons{display:flex;gap:var(--space-2)}.scenario-runner .btn-primary{box-shadow:var(--shadow-sm)}.scenario-runner .btn-primary:hover:not(:disabled){box-shadow:var(--shadow-md)}.scenario-runner .btn-danger{box-shadow:var(--shadow-sm)}.scenario-runner .btn-danger:hover:not(:disabled){box-shadow:var(--shadow-md)}.execution-progress{padding:var(--space-4);border-bottom:1px solid var(--border-emphasis);flex-shrink:0;background:var(--bg-base)}.progress-bar{height:8px;background:var(--bg-surface-3);border-radius:4px;overflow:hidden;margin-bottom:var(--space-2);border:1px solid var(--border-default)}.progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary-500),var(--color-info-400));transition:width .3s ease}.progress-text{font-size:.8rem;color:var(--text-secondary);font-weight:500}.current-step-desc{color:var(--text-muted);font-weight:400}.execution-steps{flex:1;overflow-y:auto;padding:var(--space-4);background:var(--bg-base)}.execution-steps-label{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-3)}.step{display:flex;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-lg);margin-bottom:var(--space-2);background:var(--bg-surface-1);border:1px solid var(--border-emphasis);transition:all .15s ease}.step:last-child{margin-bottom:0}.step.running{border-color:var(--color-primary-500);background:var(--color-primary-100);box-shadow:0 0 0 1px var(--color-primary-300)}.step.success{border-color:var(--color-success-500);background:var(--color-success-100)}.step.failed{border-color:var(--color-danger-500);background:var(--color-danger-100)}.step-status{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:.85rem;flex-shrink:0;font-weight:600;border:2px solid}.step-pending{color:var(--text-muted);background:var(--bg-surface-2);border-color:var(--border-emphasis)}.step-running{color:var(--color-primary-500);background:var(--color-primary-100);border-color:var(--color-primary-500);animation:pulse 1.5s infinite}.step-success{color:var(--color-success-500);background:var(--color-success-100);border-color:var(--color-success-500)}.step-failed{color:var(--color-danger-500);background:var(--color-danger-100);border-color:var(--color-danger-500)}.step-skipped{color:var(--text-muted);background:var(--bg-surface-2);border-color:var(--border-default)}@keyframes pulse{0%,to{opacity:1;box-shadow:0 0 #3b82f666}50%{opacity:.8;box-shadow:0 0 0 4px #3b82f600}}.step-content{flex:1;min-width:0}.step-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-1)}.step-type{font-size:.65rem;text-transform:uppercase;color:var(--text-muted);font-weight:700;letter-spacing:.5px;padding:2px 6px;background:var(--bg-surface-2);border-radius:var(--radius-sm);border:1px solid var(--border-default)}.step-duration{font-size:.75rem;color:var(--text-muted);font-family:var(--font-mono)}.step-desc{margin:0;font-size:.85rem;color:var(--text-primary);line-height:1.4}.step-error{margin:var(--space-2) 0 0;font-size:.8rem;color:var(--color-danger-700);background:var(--color-danger-100);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-danger-500)}.sr-messages{display:flex;flex-direction:column}.message-feed{flex:1;overflow-y:auto;padding:var(--space-3);background:var(--bg-base)}.message-item{padding:var(--space-3);border-radius:var(--radius-lg);margin-bottom:var(--space-2);background:var(--bg-surface-1);border:1px solid var(--border-emphasis);font-size:.8rem;transition:all .15s ease}.message-item:last-child{margin-bottom:0}.message-item:hover{box-shadow:var(--shadow-sm)}.message-item.sent{border-left:4px solid var(--color-primary-500)}.message-item.received{border-left:4px solid var(--color-success-500)}.message-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--border-default)}.direction{font-weight:700;font-size:1rem}.direction.sent{color:var(--color-primary-500)}.direction.received{color:var(--color-success-500)}.action{font-weight:600;color:var(--text-primary);font-size:.85rem}.time{margin-left:auto;color:var(--text-muted);font-size:.7rem;font-family:var(--font-mono)}.message-payload{margin:0;padding:var(--space-2) var(--space-3);background:var(--bg-surface-2);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:.7rem;overflow-x:auto;max-height:120px;color:var(--text-secondary);border:1px solid var(--border-default);line-height:1.5}.empty-message{text-align:center;color:var(--text-muted);font-size:.85rem;padding:var(--space-6);background:var(--bg-surface-2);border-radius:var(--radius-lg);border:1px dashed var(--border-emphasis);margin:var(--space-2)}@media (max-width: 1200px){.sr-content{grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr}.sr-scenarios{grid-column:1 / -1;max-height:220px}.scenario-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.scenario-item{margin-bottom:0}}@media (max-width: 768px){.sr-content{grid-template-columns:1fr}.sr-scenarios{max-height:180px}.scenario-list{grid-template-columns:1fr}.execution-controls{flex-direction:column;align-items:stretch}.control-buttons{justify-content:flex-end}}#root{width:100%;margin:0 auto;text-align:center}.app{min-height:100vh;display:flex;flex-direction:column}.loading{display:flex;justify-content:center;align-items:center;min-height:200px;font-size:var(--text-lg);color:var(--text-muted)}.error{color:var(--color-danger-700);padding:var(--space-4);margin:var(--space-4) 0;border:1px solid var(--color-danger-500);border-radius:var(--radius-md);background-color:var(--color-danger-100)}.success{color:var(--color-success-700);padding:var(--space-4);margin:var(--space-4) 0;border:1px solid var(--color-success-500);border-radius:var(--radius-md);background-color:var(--color-success-100)}:root{--color-primary-50: #eff6ff;--color-primary-100: #dbeafe;--color-primary-200: #bfdbfe;--color-primary-300: #93c5fd;--color-primary-400: #60a5fa;--color-primary-500: #3b82f6;--color-primary-600: #2563eb;--color-primary-700: #1d4ed8;--color-primary-800: #1e40af;--color-primary-900: #1e3a8a;--color-success-50: #ecfdf5;--color-success-100: #d1fae5;--color-success-200: #a7f3d0;--color-success-300: #6ee7b7;--color-success-400: #34d399;--color-success-500: #10b981;--color-success-600: #059669;--color-success-700: #047857;--color-success-800: #065f46;--color-success-900: #064e3b;--color-warning-50: #fffbeb;--color-warning-100: #fef3c7;--color-warning-200: #fde68a;--color-warning-300: #fcd34d;--color-warning-400: #fbbf24;--color-warning-500: #f59e0b;--color-warning-600: #d97706;--color-warning-700: #b45309;--color-warning-800: #92400e;--color-warning-900: #78350f;--color-danger-50: #fef2f2;--color-danger-100: #fee2e2;--color-danger-200: #fecaca;--color-danger-300: #fca5a5;--color-danger-400: #f87171;--color-danger-500: #ef4444;--color-danger-600: #dc2626;--color-danger-700: #b91c1c;--color-danger-800: #991b1b;--color-danger-900: #7f1d1d;--color-info-50: #eef2ff;--color-info-100: #e0e7ff;--color-info-200: #c7d2fe;--color-info-300: #a5b4fc;--color-info-400: #818cf8;--color-info-500: #6366f1;--color-info-600: #4f46e5;--color-info-700: #4338ca;--color-info-800: #3730a3;--color-info-900: #312e81;--color-neutral-50: #f9fafb;--color-neutral-100: #f3f4f6;--color-neutral-200: #e5e7eb;--color-neutral-300: #d1d5db;--color-neutral-400: #9ca3af;--color-neutral-500: #6b7280;--color-neutral-600: #4b5563;--color-neutral-700: #374151;--color-neutral-800: #1f2937;--color-neutral-900: #111827;--color-neutral-950: #030712;--color-ocpp16: #1565c0;--color-ocpp16-bg: #e3f2fd;--color-ocpp16-border: #90caf9;--color-ocpp201: #2e7d32;--color-ocpp201-bg: #e8f5e9;--color-ocpp201-border: #a5d6a7;--color-ocpp21: #e65100;--color-ocpp21-bg: #fff3e0;--color-ocpp21-border: #ffcc80;--color-available: var(--color-success-500);--color-available-bg: var(--color-success-100);--color-occupied: var(--color-primary-500);--color-occupied-bg: var(--color-primary-100);--color-charging: var(--color-info-500);--color-charging-bg: var(--color-info-100);--color-faulted: var(--color-danger-500);--color-faulted-bg: var(--color-danger-100);--color-unavailable: var(--color-neutral-500);--color-unavailable-bg: var(--color-neutral-200);--gradient-brand: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--terminal-bg: #0a0a0a;--terminal-text: #4ade80;--bg-base: #ffffff;--bg-surface-1: var(--color-neutral-50);--bg-surface-2: var(--color-neutral-100);--bg-surface-3: var(--color-neutral-200);--bg-elevated: #ffffff;--bg-overlay: rgba(0, 0, 0, .5);--text-primary: var(--color-neutral-900);--text-secondary: var(--color-neutral-600);--text-muted: var(--color-neutral-500);--text-disabled: var(--color-neutral-400);--text-inverse: #ffffff;--text-link: var(--color-primary-600);--text-link-hover: var(--color-primary-700);--border-default: var(--color-neutral-200);--border-muted: var(--color-neutral-100);--border-emphasis: var(--color-neutral-300);--border-focus: var(--color-primary-500);--space-0: 0;--space-px: 1px;--space-0-5: 2px;--space-1: 4px;--space-1-5: 6px;--space-2: 8px;--space-2-5: 10px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-9: 36px;--space-10: 40px;--space-12: 48px;--space-14: 56px;--space-16: 64px;--space-20: 80px;--space-24: 96px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--text-2xs: .625rem;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-lg: 1rem;--text-xl: 1.125rem;--text-2xl: 1.25rem;--text-3xl: 1.5rem;--text-4xl: 1.875rem;--text-5xl: 2.25rem;--font-thin: 100;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--leading-loose: 2;--tracking-tighter: -.05em;--tracking-tight: -.025em;--tracking-normal: 0;--tracking-wide: .025em;--tracking-wider: .05em;--tracking-widest: .1em;--border-width: 1px;--border-width-2: 2px;--radius-none: 0;--radius-sm: 2px;--radius-md: 4px;--radius-lg: 6px;--radius-xl: 8px;--radius-2xl: 12px;--radius-3xl: 16px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px rgba(0, 0, 0, .06);--shadow-none: none;--ring-width: 2px;--ring-offset: 2px;--ring-color: var(--color-primary-500);--breakpoint-xs: 480px;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px;--breakpoint-3xl: 1920px;--content-max-width: 1800px;--content-max-width-sm: 640px;--content-max-width-md: 768px;--content-max-width-lg: 1024px;--content-max-width-xl: 1280px;--content-max-width-2xl: 1536px;--content-max-width-3xl: 1800px;--sidebar-width: 240px;--sidebar-collapsed-width: 64px;--header-height: 48px;--toolbar-height: 40px;--footer-height: 32px;--transition-none: none;--transition-fast: .1s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--transition-slower: .5s ease;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--z-deep: -999;--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 800;--z-max: 999;--btn-height-xs: 22px;--btn-height-sm: 28px;--btn-height-md: 34px;--btn-height-lg: 40px;--btn-height-xl: 48px;--input-height-sm: 28px;--input-height-md: 34px;--input-height-lg: 40px;--badge-height-sm: 16px;--badge-height-md: 20px;--badge-height-lg: 24px;--icon-xs: 12px;--icon-sm: 14px;--icon-md: 16px;--icon-lg: 20px;--icon-xl: 24px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--color-neutral-50: #0f0f0f;--color-neutral-100: #1a1a1a;--color-neutral-200: #262626;--color-neutral-300: #333333;--color-neutral-400: #525252;--color-neutral-500: #737373;--color-neutral-600: #a3a3a3;--color-neutral-700: #d4d4d4;--color-neutral-800: #e5e5e5;--color-neutral-900: #f5f5f5;--color-neutral-950: #fafafa;--bg-base: #0f0f0f;--bg-surface-1: #1a1a1a;--bg-surface-2: #242424;--bg-surface-3: #2e2e2e;--bg-elevated: #383838;--bg-overlay: rgba(0, 0, 0, .75);--text-primary: #f0f0f0;--text-secondary: #a0a0a0;--text-muted: #737373;--text-disabled: #525252;--text-inverse: #0f0f0f;--text-link: var(--color-primary-400);--text-link-hover: var(--color-primary-300);--border-default: #333333;--border-muted: #262626;--border-emphasis: #444444;--color-ocpp16-bg: #1e3a5f;--color-ocpp16: #93c5fd;--color-ocpp16-border: #3b82f6;--color-ocpp201-bg: #14532d;--color-ocpp201: #86efac;--color-ocpp201-border: #22c55e;--color-ocpp21-bg: #431407;--color-ocpp21: #fdba74;--color-ocpp21-border: #f97316;--gradient-brand: linear-gradient(135deg, #4c5fd5 0%, #5d3f8a 100%);--color-success-50: #052e16;--color-success-100: #052e16;--color-success-200: #064e3b;--color-success-300: #047857;--color-success-400: #10b981;--color-success-500: #34d399;--color-success-600: #6ee7b7;--color-success-700: #4ade80;--color-warning-50: #422006;--color-warning-100: #422006;--color-warning-200: #78350f;--color-warning-300: #b45309;--color-warning-400: #f59e0b;--color-warning-500: #fbbf24;--color-warning-600: #fcd34d;--color-warning-700: #fbbf24;--color-danger-50: #450a0a;--color-danger-100: #450a0a;--color-danger-200: #7f1d1d;--color-danger-300: #b91c1c;--color-danger-400: #ef4444;--color-danger-500: #f87171;--color-danger-600: #fca5a5;--color-danger-700: #f87171;--color-info-50: #172554;--color-info-100: #172554;--color-info-200: #1e3a8a;--color-info-300: #3730a3;--color-info-400: #6366f1;--color-info-500: #818cf8;--color-info-600: #a5b4fc;--color-info-700: #60a5fa;--color-primary-50: #172554;--color-primary-100: #172554;--color-primary-200: #1e3a8a;--color-primary-300: #1d4ed8;--color-primary-400: #3b82f6;--color-primary-500: #60a5fa;--color-primary-600: #93c5fd;--color-primary-700: #60a5fa;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .2);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -2px rgba(0, 0, 0, .2);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 10px 10px -5px rgba(0, 0, 0, .2)}}[data-theme=dark],.dark{--color-neutral-50: #0f0f0f;--color-neutral-100: #1a1a1a;--color-neutral-200: #262626;--color-neutral-300: #333333;--color-neutral-400: #525252;--color-neutral-500: #737373;--color-neutral-600: #a3a3a3;--color-neutral-700: #d4d4d4;--color-neutral-800: #e5e5e5;--color-neutral-900: #f5f5f5;--color-neutral-950: #fafafa;--bg-base: #0f0f0f;--bg-surface-1: #1a1a1a;--bg-surface-2: #242424;--bg-surface-3: #2e2e2e;--bg-elevated: #383838;--bg-overlay: rgba(0, 0, 0, .75);--text-primary: #f0f0f0;--text-secondary: #a0a0a0;--text-muted: #737373;--text-disabled: #525252;--text-inverse: #0f0f0f;--text-link: var(--color-primary-400);--text-link-hover: var(--color-primary-300);--border-default: #333333;--border-muted: #262626;--border-emphasis: #444444;--color-ocpp16-bg: #1e3a5f;--color-ocpp16: #93c5fd;--color-ocpp16-border: #3b82f6;--color-ocpp201-bg: #14532d;--color-ocpp201: #86efac;--color-ocpp201-border: #22c55e;--color-ocpp21-bg: #431407;--color-ocpp21: #fdba74;--color-ocpp21-border: #f97316;--gradient-brand: linear-gradient(135deg, #4c5fd5 0%, #5d3f8a 100%);--color-success-50: #052e16;--color-success-100: #052e16;--color-success-200: #064e3b;--color-success-300: #047857;--color-success-400: #10b981;--color-success-500: #34d399;--color-success-600: #6ee7b7;--color-success-700: #4ade80;--color-warning-50: #422006;--color-warning-100: #422006;--color-warning-200: #78350f;--color-warning-300: #b45309;--color-warning-400: #f59e0b;--color-warning-500: #fbbf24;--color-warning-600: #fcd34d;--color-warning-700: #fbbf24;--color-danger-50: #450a0a;--color-danger-100: #450a0a;--color-danger-200: #7f1d1d;--color-danger-300: #b91c1c;--color-danger-400: #ef4444;--color-danger-500: #f87171;--color-danger-600: #fca5a5;--color-danger-700: #f87171;--color-info-50: #172554;--color-info-100: #172554;--color-info-200: #1e3a8a;--color-info-300: #3730a3;--color-info-400: #6366f1;--color-info-500: #818cf8;--color-info-600: #a5b4fc;--color-info-700: #60a5fa;--color-primary-50: #172554;--color-primary-100: #172554;--color-primary-200: #1e3a8a;--color-primary-300: #1d4ed8;--color-primary-400: #3b82f6;--color-primary-500: #60a5fa;--color-primary-600: #93c5fd;--color-primary-700: #60a5fa;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .2);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .2);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -2px rgba(0, 0, 0, .2);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 10px 10px -5px rgba(0, 0, 0, .2)}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.contents{display:contents}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.self-auto{align-self:auto}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-initial{flex:0 1 auto}.flex-none{flex:none}.grow{flex-grow:1}.grow-0{flex-grow:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-none{grid-template-rows:none}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-12{grid-column:span 12 / span 12}.col-span-full{grid-column:1 / -1}.gap-0{gap:0}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-5{gap:var(--space-5)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.gap-10{gap:var(--space-10)}.gap-12{gap:var(--space-12)}.gap-x-0{column-gap:0}.gap-x-1{column-gap:var(--space-1)}.gap-x-2{column-gap:var(--space-2)}.gap-x-3{column-gap:var(--space-3)}.gap-x-4{column-gap:var(--space-4)}.gap-x-6{column-gap:var(--space-6)}.gap-x-8{column-gap:var(--space-8)}.gap-y-0{row-gap:0}.gap-y-1{row-gap:var(--space-1)}.gap-y-2{row-gap:var(--space-2)}.gap-y-3{row-gap:var(--space-3)}.gap-y-4{row-gap:var(--space-4)}.gap-y-6{row-gap:var(--space-6)}.gap-y-8{row-gap:var(--space-8)}.m-0{margin:0}.m-1{margin:var(--space-1)}.m-2{margin:var(--space-2)}.m-3{margin:var(--space-3)}.m-4{margin:var(--space-4)}.m-5{margin:var(--space-5)}.m-6{margin:var(--space-6)}.m-8{margin:var(--space-8)}.m-auto{margin:auto}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:var(--space-1);margin-right:var(--space-1)}.mx-2{margin-left:var(--space-2);margin-right:var(--space-2)}.mx-3{margin-left:var(--space-3);margin-right:var(--space-3)}.mx-4{margin-left:var(--space-4);margin-right:var(--space-4)}.mx-6{margin-left:var(--space-6);margin-right:var(--space-6)}.mx-8{margin-left:var(--space-8);margin-right:var(--space-8)}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:var(--space-1);margin-bottom:var(--space-1)}.my-2{margin-top:var(--space-2);margin-bottom:var(--space-2)}.my-3{margin-top:var(--space-3);margin-bottom:var(--space-3)}.my-4{margin-top:var(--space-4);margin-bottom:var(--space-4)}.my-6{margin-top:var(--space-6);margin-bottom:var(--space-6)}.my-8{margin-top:var(--space-8);margin-bottom:var(--space-8)}.my-auto{margin-top:auto;margin-bottom:auto}.mt-0{margin-top:0}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mt-auto{margin-top:auto}.mr-0{margin-right:0}.mr-1{margin-right:var(--space-1)}.mr-2{margin-right:var(--space-2)}.mr-3{margin-right:var(--space-3)}.mr-4{margin-right:var(--space-4)}.mr-6{margin-right:var(--space-6)}.mr-8{margin-right:var(--space-8)}.mr-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}.mb-auto{margin-bottom:auto}.ml-0{margin-left:0}.ml-1{margin-left:var(--space-1)}.ml-2{margin-left:var(--space-2)}.ml-3{margin-left:var(--space-3)}.ml-4{margin-left:var(--space-4)}.ml-6{margin-left:var(--space-6)}.ml-8{margin-left:var(--space-8)}.ml-auto{margin-left:auto}.p-0{padding:0}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-5{padding:var(--space-5)}.p-6{padding:var(--space-6)}.p-8{padding:var(--space-8)}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:var(--space-1);padding-right:var(--space-1)}.px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.pt-0{padding-top:0}.pt-1{padding-top:var(--space-1)}.pt-2{padding-top:var(--space-2)}.pt-3{padding-top:var(--space-3)}.pt-4{padding-top:var(--space-4)}.pt-6{padding-top:var(--space-6)}.pt-8{padding-top:var(--space-8)}.pr-0{padding-right:0}.pr-1{padding-right:var(--space-1)}.pr-2{padding-right:var(--space-2)}.pr-3{padding-right:var(--space-3)}.pr-4{padding-right:var(--space-4)}.pr-6{padding-right:var(--space-6)}.pr-8{padding-right:var(--space-8)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--space-1)}.pb-2{padding-bottom:var(--space-2)}.pb-3{padding-bottom:var(--space-3)}.pb-4{padding-bottom:var(--space-4)}.pb-6{padding-bottom:var(--space-6)}.pb-8{padding-bottom:var(--space-8)}.pl-0{padding-left:0}.pl-1{padding-left:var(--space-1)}.pl-2{padding-left:var(--space-2)}.pl-3{padding-left:var(--space-3)}.pl-4{padding-left:var(--space-4)}.pl-6{padding-left:var(--space-6)}.pl-8{padding-left:var(--space-8)}.w-full{width:100%}.w-auto{width:auto}.w-screen{width:100vw}.w-min{width:min-content}.w-max{width:max-content}.w-fit{width:fit-content}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-none{max-width:none}.max-w-sm{max-width:var(--content-max-width-sm)}.max-w-md{max-width:var(--content-max-width-md)}.max-w-lg{max-width:var(--content-max-width-lg)}.max-w-xl{max-width:var(--content-max-width-xl)}.max-w-full{max-width:100%}.max-w-screen{max-width:100vw}.max-w-content{max-width:var(--content-max-width)}.h-full{height:100%}.h-auto{height:auto}.h-screen{height:100vh}.h-min{height:min-content}.h-max{height:max-content}.h-fit{height:fit-content}.min-h-0{min-height:0}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.text-2xs{font-size:var(--text-2xs)}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-base{font-size:var(--text-base)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-4xl{font-size:var(--text-4xl)}.font-thin{font-weight:var(--font-thin)}.font-light{font-weight:var(--font-light)}.font-normal{font-weight:var(--font-normal)}.font-medium{font-weight:var(--font-medium)}.font-semibold{font-weight:var(--font-semibold)}.font-bold{font-weight:var(--font-bold)}.font-extrabold{font-weight:var(--font-extrabold)}.font-sans{font-family:var(--font-sans)}.font-mono{font-family:var(--font-mono)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.leading-none{line-height:var(--leading-none)}.leading-tight{line-height:var(--leading-tight)}.leading-snug{line-height:var(--leading-snug)}.leading-normal{line-height:var(--leading-normal)}.leading-relaxed{line-height:var(--leading-relaxed)}.leading-loose{line-height:var(--leading-loose)}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.underline{text-decoration:underline}.line-through{text-decoration:line-through}.no-underline{text-decoration:none}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.whitespace-pre-line{white-space:pre-line}.break-normal{word-break:normal;overflow-wrap:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.text-disabled{color:var(--text-disabled)}.text-inverse{color:var(--text-inverse)}.text-link{color:var(--text-link)}.text-success{color:var(--color-success-600)}.text-warning{color:var(--color-warning-600)}.text-danger{color:var(--color-danger-600)}.text-info{color:var(--color-info-600)}.bg-base{background-color:var(--bg-base)}.bg-surface-1{background-color:var(--bg-surface-1)}.bg-surface-2{background-color:var(--bg-surface-2)}.bg-surface-3{background-color:var(--bg-surface-3)}.bg-elevated{background-color:var(--bg-elevated)}.bg-transparent{background-color:transparent}.bg-success{background-color:var(--color-success-100)}.bg-warning{background-color:var(--color-warning-100)}.bg-danger{background-color:var(--color-danger-100)}.bg-info{background-color:var(--color-info-100)}.bg-primary{background-color:var(--color-primary-100)}.border{border:var(--border-width) solid var(--border-default)}.border-0{border:none}.border-t{border-top:var(--border-width) solid var(--border-default)}.border-r{border-right:var(--border-width) solid var(--border-default)}.border-b{border-bottom:var(--border-width) solid var(--border-default)}.border-l{border-left:var(--border-width) solid var(--border-default)}.border-muted{border-color:var(--border-muted)}.border-emphasis{border-color:var(--border-emphasis)}.border-success{border-color:var(--color-success-500)}.border-warning{border-color:var(--color-warning-500)}.border-danger{border-color:var(--color-danger-500)}.border-info{border-color:var(--color-info-500)}.border-primary{border-color:var(--color-primary-500)}.rounded-none{border-radius:var(--radius-none)}.rounded-sm{border-radius:var(--radius-sm)}.rounded,.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:var(--radius-full)}.shadow-none{box-shadow:var(--shadow-none)}.shadow-xs{box-shadow:var(--shadow-xs)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow,.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}.shadow-2xl{box-shadow:var(--shadow-2xl)}.shadow-inner{box-shadow:var(--shadow-inner)}.static{position:static}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-dropdown{z-index:var(--z-dropdown)}.z-sticky{z-index:var(--z-sticky)}.z-modal{z-index:var(--z-modal)}.z-tooltip{z-index:var(--z-tooltip)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.cursor-text{cursor:text}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.select-all{-webkit-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;user-select:auto}.visible{visibility:visible}.invisible{visibility:hidden}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.transition-none{transition:none}.transition-fast{transition:all var(--transition-fast)}.transition{transition:all var(--transition-normal)}.transition-slow{transition:all var(--transition-slow)}.container{width:100%;max-width:var(--content-max-width);margin-left:auto;margin-right:auto;padding-left:var(--space-4);padding-right:var(--space-4)}.toolbar{display:flex;align-items:center;gap:var(--space-2);height:var(--toolbar-height);padding:0 var(--space-3);background:var(--bg-surface-1);border-bottom:var(--border-width) solid var(--border-default)}.toolbar__group{display:flex;align-items:center;gap:var(--space-2)}.toolbar__separator{width:1px;height:20px;background:var(--border-default);margin:0 var(--space-2)}.toolbar__spacer{flex:1}.data-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-1) var(--space-4);font-size:var(--text-sm)}.data-grid__item{display:flex;align-items:baseline;gap:var(--space-2);min-width:0}.data-grid__label{color:var(--text-muted);font-size:var(--text-xs);white-space:nowrap}.data-grid__value{color:var(--text-primary);font-weight:var(--font-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-layout{display:grid;grid-template-columns:1fr;gap:var(--space-4)}@media (min-width: 1280px){.page-layout--with-sidebar{grid-template-columns:280px 1fr}.page-layout--with-panel{grid-template-columns:1fr 320px}.page-layout--three-column{grid-template-columns:240px 1fr 300px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.p-compact{padding:var(--space-2)}.px-compact{padding-left:var(--space-2);padding-right:var(--space-2)}.py-compact{padding-top:var(--space-1-5);padding-bottom:var(--space-1-5)}.p-dense{padding:var(--space-1)}.px-dense{padding-left:var(--space-1-5);padding-right:var(--space-1-5)}.py-dense{padding-top:var(--space-1);padding-bottom:var(--space-1)}.m-compact{margin:var(--space-2)}.mx-compact{margin-left:var(--space-2);margin-right:var(--space-2)}.my-compact{margin-top:var(--space-1-5);margin-bottom:var(--space-1-5)}.mb-compact{margin-bottom:var(--space-2)}.mt-compact{margin-top:var(--space-2)}.m-dense{margin:var(--space-1)}.mb-dense{margin-bottom:var(--space-1)}.mt-dense{margin-top:var(--space-1)}.gap-compact{gap:var(--space-2)}.gap-dense{gap:var(--space-1)}.gap-xs{gap:var(--space-0-5)}.section-compact{padding:var(--space-3) 0}.section-dense{padding:var(--space-2) 0}.grid-compact{display:grid;gap:var(--space-2)}.grid-dense{display:grid;gap:var(--space-1)}.flex-compact{display:flex;gap:var(--space-2)}.flex-dense{display:flex;gap:var(--space-1)}.stack-compact{display:flex;flex-direction:column;gap:var(--space-2)}.stack-dense{display:flex;flex-direction:column;gap:var(--space-1)}.list-compact>*+*{margin-top:var(--space-1-5)}.list-dense>*+*{margin-top:var(--space-1)}.leading-tight{line-height:1.25}.leading-snug{line-height:1.375}.leading-compact{line-height:1.3}.info-row{display:flex;justify-content:space-between;align-items:baseline;padding:var(--space-1) 0;gap:var(--space-2);font-size:var(--text-sm)}.info-row--dense{padding:var(--space-0-5) 0;font-size:var(--text-xs)}.info-row__label{color:var(--text-muted);flex-shrink:0}.info-row__value{color:var(--text-primary);font-weight:var(--font-medium);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-compact{display:flex;flex-direction:column;gap:var(--space-0-5)}.stat-compact__value{font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--text-primary);line-height:1}.stat-compact__label{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.container-3xl{width:100%;max-width:var(--content-max-width-3xl);margin-left:auto;margin-right:auto;padding-left:var(--space-6);padding-right:var(--space-6)}.container-2xl{width:100%;max-width:var(--content-max-width-2xl);margin-left:auto;margin-right:auto;padding-left:var(--space-5);padding-right:var(--space-5)}.container-xl{width:100%;max-width:var(--content-max-width-xl);margin-left:auto;margin-right:auto;padding-left:var(--space-4);padding-right:var(--space-4)}.container-fluid{width:100%;padding-left:var(--space-4);padding-right:var(--space-4)}@media (max-width: 1024px){.lg\:hidden{display:none!important}.lg\:block{display:block!important}.lg\:flex{display:flex!important}.lg\:grid{display:grid!important}.lg\:flex-col{flex-direction:column!important}}@media (max-width: 768px){.md\:hidden{display:none!important}.md\:block{display:block!important}.md\:flex{display:flex!important}.md\:grid{display:grid!important}.md\:flex-col{flex-direction:column!important}}@media (max-width: 640px){.sm\:hidden{display:none!important}.sm\:block{display:block!important}.sm\:flex{display:flex!important}.sm\:grid{display:grid!important}.sm\:flex-col{flex-direction:column!important}}.grid-cols-auto{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.grid-cols-5{grid-template-columns:repeat(5,1fr)}.grid-cols-6{grid-template-columns:repeat(6,1fr)}@media (max-width: 1024px){.lg\:grid-cols-1{grid-template-columns:1fr!important}.lg\:grid-cols-2{grid-template-columns:repeat(2,1fr)!important}.lg\:grid-cols-3{grid-template-columns:repeat(3,1fr)!important}}@media (max-width: 768px){.md\:grid-cols-1{grid-template-columns:1fr!important}.md\:grid-cols-2{grid-template-columns:repeat(2,1fr)!important}}@media (max-width: 640px){.sm\:grid-cols-1{grid-template-columns:1fr!important}}@media (max-width: 1024px){.lg\:gap-2{gap:var(--space-2)!important}.lg\:gap-3{gap:var(--space-3)!important}.lg\:gap-4{gap:var(--space-4)!important}}@media (max-width: 768px){.md\:gap-2{gap:var(--space-2)!important}.md\:gap-3{gap:var(--space-3)!important}.md\:gap-4{gap:var(--space-4)!important}}@media (max-width: 640px){.sm\:gap-2{gap:var(--space-2)!important}.sm\:gap-3{gap:var(--space-3)!important}}@media (max-width: 1024px){.lg\:p-2{padding:var(--space-2)!important}.lg\:p-3{padding:var(--space-3)!important}.lg\:p-4{padding:var(--space-4)!important}.lg\:px-2{padding-left:var(--space-2)!important;padding-right:var(--space-2)!important}.lg\:px-3{padding-left:var(--space-3)!important;padding-right:var(--space-3)!important}.lg\:py-2{padding-top:var(--space-2)!important;padding-bottom:var(--space-2)!important}.lg\:py-3{padding-top:var(--space-3)!important;padding-bottom:var(--space-3)!important}}@media (max-width: 768px){.md\:p-2{padding:var(--space-2)!important}.md\:p-3{padding:var(--space-3)!important}.md\:p-4{padding:var(--space-4)!important}.md\:px-2{padding-left:var(--space-2)!important;padding-right:var(--space-2)!important}.md\:px-3{padding-left:var(--space-3)!important;padding-right:var(--space-3)!important}.md\:py-2{padding-top:var(--space-2)!important;padding-bottom:var(--space-2)!important}.md\:py-3{padding-top:var(--space-3)!important;padding-bottom:var(--space-3)!important}}@media (max-width: 640px){.sm\:p-2{padding:var(--space-2)!important}.sm\:p-3{padding:var(--space-3)!important}.sm\:px-2{padding-left:var(--space-2)!important;padding-right:var(--space-2)!important}.sm\:px-3{padding-left:var(--space-3)!important;padding-right:var(--space-3)!important}.sm\:py-2{padding-top:var(--space-2)!important;padding-bottom:var(--space-2)!important}}@media (max-width: 1024px){.lg\:text-sm{font-size:var(--text-sm)!important}.lg\:text-base{font-size:var(--text-base)!important}}@media (max-width: 768px){.md\:text-xs{font-size:var(--text-xs)!important}.md\:text-sm{font-size:var(--text-sm)!important}.md\:text-center{text-align:center!important}}@media (max-width: 640px){.sm\:text-xs{font-size:var(--text-xs)!important}.sm\:text-sm{font-size:var(--text-sm)!important}.sm\:text-center{text-align:center!important}}@media (max-width: 768px){.md\:w-full{width:100%!important}.md\:max-w-full{max-width:100%!important}}@media (max-width: 640px){.sm\:w-full{width:100%!important}.sm\:max-w-full{max-width:100%!important}}.desktop-only{display:block}@media (max-width: 1024px){.desktop-only{display:none!important}}.tablet-only{display:none}@media (max-width: 1024px){.tablet-only{display:block!important}}.mobile-only{display:none}@media (max-width: 640px){.mobile-only{display:block!important}}@media (max-width: 1024px){.container,.container-3xl,.container-2xl,.container-xl{padding-left:var(--space-4);padding-right:var(--space-4)}}@media (max-width: 640px){.container,.container-3xl,.container-2xl,.container-xl,.container-fluid{padding-left:var(--space-3);padding-right:var(--space-3)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);text-decoration:none;-webkit-user-select:none;user-select:none}.btn:focus-visible{outline:none;box-shadow:0 0 0 var(--ring-width) var(--color-primary-100),0 0 0 calc(var(--ring-width) + var(--ring-offset)) var(--ring-color)}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}.btn--xs{height:var(--btn-height-xs);padding:0 var(--space-2);font-size:var(--text-xs);border-radius:var(--radius-sm)}.btn--sm{height:var(--btn-height-sm);padding:0 var(--space-2);font-size:var(--text-xs)}.btn--md{height:var(--btn-height-md);padding:0 var(--space-3)}.btn--lg{height:var(--btn-height-lg);padding:0 var(--space-4);font-size:var(--text-base)}.btn--xl{height:var(--btn-height-xl);padding:0 var(--space-6);font-size:var(--text-lg)}.btn:not(.btn--xs):not(.btn--sm):not(.btn--md):not(.btn--lg):not(.btn--xl){height:var(--btn-height-md);padding:0 var(--space-3)}.btn--primary{background:var(--color-primary-500);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-600)}.btn--primary:active:not(:disabled){background:var(--color-primary-700)}.btn--secondary{background:var(--bg-surface-1);border-color:var(--border-default);color:var(--text-primary)}.btn--secondary:hover:not(:disabled){background:var(--bg-surface-2);border-color:var(--border-emphasis)}.btn--success{background:var(--color-success-500);color:#fff}.btn--success:hover:not(:disabled){background:var(--color-success-600)}.btn--warning{background:var(--color-warning-500);color:#fff}.btn--warning:hover:not(:disabled){background:var(--color-warning-600)}.btn--danger{background:var(--color-danger-500);color:#fff}.btn--danger:hover:not(:disabled){background:var(--color-danger-600)}.btn--info{background:var(--color-info-500);color:#fff}.btn--info:hover:not(:disabled){background:var(--color-info-600)}.btn--ghost{background:transparent;color:var(--text-secondary)}.btn--ghost:hover:not(:disabled){background:var(--bg-surface-2);color:var(--text-primary)}.btn--link{background:transparent;color:var(--text-link);padding:0;height:auto;border:none}.btn--link:hover:not(:disabled){color:var(--text-link-hover);text-decoration:underline}.btn--icon{padding:0;aspect-ratio:1}.btn--icon.btn--xs{width:var(--btn-height-xs)}.btn--icon.btn--sm{width:var(--btn-height-sm)}.btn--icon.btn--md{width:var(--btn-height-md)}.btn--icon.btn--lg{width:var(--btn-height-lg)}.btn--icon.btn--xl{width:var(--btn-height-xl)}.btn--icon:not(.btn--xs):not(.btn--sm):not(.btn--lg):not(.btn--xl){width:var(--btn-height-md)}.btn--full{width:100%}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--color-primary-500);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-primary:hover:not(:disabled){background:var(--color-primary-600)}.btn-primary:focus{outline:none;box-shadow:0 0 0 3px var(--color-primary-200)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--bg-surface-1);color:var(--text-primary);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-secondary:hover:not(:disabled){background:var(--bg-surface-2);border-color:var(--border-emphasis)}.btn-secondary:focus{outline:none;box-shadow:0 0 0 3px var(--color-neutral-200)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--color-danger-500);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-danger:hover:not(:disabled){background:var(--color-danger-600)}.btn-danger:focus{outline:none;box-shadow:0 0 0 3px var(--color-danger-200)}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.btn-success{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--color-success-500);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-success:hover:not(:disabled){background:var(--color-success-600)}.btn-success:focus{outline:none;box-shadow:0 0 0 3px var(--color-success-200)}.btn-success:disabled{opacity:.5;cursor:not-allowed}.btn-action{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-sm);padding:0 var(--space-2);font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--bg-surface-1);color:var(--text-secondary);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-action:hover:not(:disabled){background:var(--bg-surface-2);color:var(--text-primary);border-color:var(--border-emphasis)}.btn-action:disabled{opacity:.5;cursor:not-allowed}.btn-link{display:inline-flex;align-items:center;gap:var(--space-1);padding:0;font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-link);background:transparent;border:none;cursor:pointer;transition:color var(--transition-fast)}.btn-link:hover:not(:disabled){color:var(--text-link-hover);text-decoration:underline}.btn-link:focus{outline:none;box-shadow:0 0 0 2px var(--color-primary-200);border-radius:var(--radius-sm)}.btn-small{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-sm);padding:0 var(--space-2);font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--bg-surface-1);color:var(--text-primary);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-small:hover:not(:disabled){background:var(--bg-surface-2);border-color:var(--border-emphasis)}.btn-close,.close-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;font-size:var(--text-lg);color:var(--text-muted);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-close:hover,.close-btn:hover{color:var(--text-primary);background:var(--bg-surface-2)}.btn-save{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--color-primary-500);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-save:hover:not(:disabled){background:var(--color-primary-600)}.btn-save:disabled{opacity:.5;cursor:not-allowed}.btn-cancel{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--bg-surface-1);color:var(--text-primary);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-cancel:hover:not(:disabled){background:var(--bg-surface-2);border-color:var(--border-emphasis)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:var(--btn-height-md);height:var(--btn-height-md);padding:0;background:transparent;color:var(--text-secondary);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-icon:hover:not(:disabled){background:var(--bg-surface-2);color:var(--text-primary)}.btn-icon--sm{width:var(--btn-height-sm);height:var(--btn-height-sm)}.btn-icon--xs{width:var(--btn-height-xs);height:var(--btn-height-xs)}.btn-remove{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-sm);padding:0 var(--space-2);font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:transparent;color:var(--color-danger-500);border:var(--border-width) solid var(--color-danger-300);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-remove:hover:not(:disabled){background:var(--color-danger-100);border-color:var(--color-danger-500)}.btn-start{background:var(--color-success-500);color:#fff;border-color:transparent}.btn-start:hover:not(:disabled){background:var(--color-success-600)}.btn-stop{background:var(--color-danger-500);color:#fff;border-color:transparent}.btn-stop:hover:not(:disabled){background:var(--color-danger-600)}.btn-connectors,.btn-config,.btn-edit,.btn-template{background:var(--bg-surface-1);color:var(--text-secondary);border-color:var(--border-default)}.btn-connectors:hover:not(:disabled),.btn-config:hover:not(:disabled),.btn-edit:hover:not(:disabled),.btn-template:hover:not(:disabled){background:var(--bg-surface-2);color:var(--text-primary);border-color:var(--border-emphasis)}.btn-delete{background:transparent;color:var(--color-danger-500);border-color:var(--color-danger-300)}.btn-delete:hover:not(:disabled){background:var(--color-danger-100);border-color:var(--color-danger-500)}.btn-export{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--color-success-600);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-export:hover:not(:disabled){background:var(--color-success-700)}.btn-export:focus{outline:none;box-shadow:0 0 0 3px var(--color-success-200)}.btn-export:disabled{background:var(--color-neutral-400);opacity:.6;cursor:not-allowed}.btn-copy{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-sm);padding:0 var(--space-2);font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--color-primary-500);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.btn-copy:hover:not(:disabled){background:var(--color-primary-600)}.btn-copy:focus{outline:none;box-shadow:0 0 0 3px var(--color-primary-200)}.btn-templates,.btn-templates--compact{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-sm);padding:0 var(--space-2);font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);background:var(--bg-surface-1);color:var(--text-secondary);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-templates:hover:not(:disabled),.btn-templates--compact:hover:not(:disabled){background:var(--bg-surface-2);color:var(--text-primary);border-color:var(--border-emphasis)}.btn-use-template,.btn-use{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-sm);padding:0 var(--space-2);font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);background:var(--color-primary-500);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-use-template:hover:not(:disabled),.btn-use:hover:not(:disabled){background:var(--color-primary-600)}.btn-save-template{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-sm);padding:0 var(--space-2);font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);background:var(--color-success-500);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-save-template:hover:not(:disabled){background:var(--color-success-600)}.btn-delete-small{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;font-size:var(--text-xs);background:transparent;color:var(--color-danger-500);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.btn-delete-small:hover:not(:disabled){background:var(--color-danger-100)}.btn-send,.btn-send--compact{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-4);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:1;white-space:nowrap;background:var(--color-primary-500);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-send:hover:not(:disabled),.btn-send--compact:hover:not(:disabled){background:var(--color-primary-600)}.btn-send:disabled,.btn-send--compact:disabled{opacity:.5;cursor:not-allowed}.btn-send--compact{height:var(--btn-height-sm);padding:0 var(--space-3);font-size:var(--text-xs)}.btn-format{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-sm);padding:0 var(--space-2);font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);background:var(--bg-surface-1);color:var(--text-secondary);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-format:hover:not(:disabled){background:var(--bg-surface-2);color:var(--text-primary);border-color:var(--border-emphasis)}.btn-clear-filters{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);height:var(--btn-height-md);padding:0 var(--space-3);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);background:var(--color-neutral-600);color:#fff;border:var(--border-width) solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.btn-clear-filters:hover:not(:disabled){background:var(--color-neutral-700)}.btn-clear-filters:focus{outline:none;box-shadow:0 0 0 3px var(--color-neutral-300)}.btn-close-detail{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;font-size:var(--text-base);color:var(--text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.btn-close-detail:hover{color:var(--text-primary);background:var(--bg-surface-2)}.btn-start-charging{background:var(--color-success-500);color:#fff;border-color:transparent}.btn-start-charging:hover:not(:disabled){background:var(--color-success-600)}.btn-stop-charging{background:var(--color-danger-500);color:#fff;border-color:transparent}.btn-stop-charging:hover:not(:disabled){background:var(--color-danger-600)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);height:var(--badge-height-md);padding:0 var(--space-2);font-size:var(--text-xs);font-weight:var(--font-medium);line-height:1;border-radius:var(--radius-sm);white-space:nowrap}.badge--sm{height:var(--badge-height-sm);padding:0 4px;font-size:var(--text-2xs)}.badge--lg{height:var(--badge-height-lg);padding:0 var(--space-3);font-size:var(--text-sm)}.badge--default{background:var(--bg-surface-2);color:var(--text-secondary)}.badge--primary{background:var(--color-primary-100);color:var(--color-primary-700)}.badge--success{background:var(--color-success-100);color:var(--color-success-700)}.badge--warning{background:var(--color-warning-100);color:var(--color-warning-700)}.badge--danger{background:var(--color-danger-100);color:var(--color-danger-700)}.badge--info{background:var(--color-info-100);color:var(--color-info-700)}.badge--connected{background:var(--color-success-100);color:var(--color-success-700)}.badge--disconnected,.badge--not-connected{background:var(--color-danger-100);color:var(--color-danger-700)}.badge--connecting{background:var(--color-warning-100);color:var(--color-warning-700)}.badge--unknown{background:var(--bg-surface-2);color:var(--text-muted)}.badge--ocpp16{background:var(--color-ocpp16-bg);color:var(--color-ocpp16);border:var(--border-width) solid var(--color-ocpp16-border)}.badge--ocpp201{background:var(--color-ocpp201-bg);color:var(--color-ocpp201);border:var(--border-width) solid var(--color-ocpp201-border)}.badge--ocpp21{background:var(--color-ocpp21-bg);color:var(--color-ocpp21);border:var(--border-width) solid var(--color-ocpp21-border)}.badge--dot:before{content:"";width:6px;height:6px;border-radius:var(--radius-full);background:currentColor;flex-shrink:0}.badge--pill{border-radius:var(--radius-full)}.status-badge{display:inline-flex;align-items:center;gap:var(--space-1);height:var(--badge-height-md);padding:0 var(--space-3);font-size:var(--text-xs);font-weight:var(--font-semibold);line-height:1;text-transform:uppercase;letter-spacing:var(--tracking-wide);border-radius:var(--radius-full);white-space:nowrap}.status-badge--sm{height:var(--badge-height-sm);padding:0 var(--space-2);font-size:var(--text-2xs)}.status-badge.connected{background:var(--color-success-100);color:var(--color-success-700)}.status-badge.disconnected,.status-badge.not_connected{background:var(--color-danger-100);color:var(--color-danger-700)}.status-badge.connecting{background:var(--color-warning-100);color:var(--color-warning-700)}.status-badge.unknown{background:var(--bg-surface-2);color:var(--text-muted)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:var(--radius-full);flex-shrink:0}.status-dot--sm{width:6px;height:6px}.status-dot--lg{width:10px;height:10px}.status-dot.status--connected,.status--connected{background:var(--color-success-500)}.status-dot.status--connecting,.status--connecting{background:var(--color-warning-500)}.status-dot.status--disconnected,.status-dot.status--not-connected,.status--disconnected{background:var(--color-danger-500)}.status-dot.status--unknown,.status--unknown{background:var(--color-neutral-400)}.protocol-badge{display:inline-flex;align-items:center;height:var(--badge-height-sm);padding:0 var(--space-2);font-size:var(--text-2xs);font-weight:var(--font-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide);border-radius:var(--radius-sm);white-space:nowrap}.protocol-badge.ocpp16{background:var(--color-ocpp16-bg);color:var(--color-ocpp16);border:var(--border-width) solid var(--color-ocpp16-border)}.protocol-badge.ocpp201{background:var(--color-ocpp201-bg);color:var(--color-ocpp201);border:var(--border-width) solid var(--color-ocpp201-border)}.protocol-badge.ocpp21{background:var(--color-ocpp21-bg);color:var(--color-ocpp21);border:var(--border-width) solid var(--color-ocpp21-border)}.badge.enabled{background:var(--color-success-100);color:var(--color-success-700)}.badge.disabled{background:var(--color-danger-100);color:var(--color-danger-700)}.direction-badge{display:inline-flex;align-items:center;justify-content:center;height:var(--badge-height-sm);padding:0 var(--space-2);font-size:var(--text-2xs);font-weight:var(--font-semibold);text-transform:uppercase;border-radius:var(--radius-sm);white-space:nowrap}.direction-badge--lg{height:var(--badge-height-md);padding:0 var(--space-3);font-size:var(--text-xs)}.direction-badge.sent{background:var(--color-primary-100);color:var(--color-primary-700)}.direction-badge.received{background:var(--color-info-100);color:var(--color-info-700)}.message-type-badge{display:inline-flex;align-items:center;justify-content:center;height:var(--badge-height-sm);padding:0 var(--space-2);font-size:var(--text-2xs);font-weight:var(--font-medium);border-radius:var(--radius-sm);white-space:nowrap}.message-type-badge--call{background:var(--color-primary-100);color:var(--color-primary-700)}.message-type-badge--callresult{background:var(--color-success-100);color:var(--color-success-700)}.message-type-badge--callerror{background:var(--color-danger-100);color:var(--color-danger-700)}.status-tag{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-0-5) var(--space-2);font-size:var(--text-2xs);font-weight:var(--font-medium);border-radius:var(--radius-sm);white-space:nowrap}.status-tag--connected,.status-connected{background:var(--color-success-100);color:var(--color-success-700)}.status-tag--disconnected{background:var(--color-danger-100);color:var(--color-danger-700)}.status-tag--connecting{background:var(--color-warning-100);color:var(--color-warning-700)}.badge-builtin{display:inline-flex;align-items:center;height:var(--badge-height-sm);padding:0 var(--space-2);font-size:var(--text-2xs);font-weight:var(--font-medium);background:var(--color-info-100);color:var(--color-info-700);border-radius:var(--radius-sm);white-space:nowrap}.tag{display:inline-flex;align-items:center;height:var(--badge-height-sm);padding:0 var(--space-2);font-size:var(--text-xs);font-weight:var(--font-medium);background:var(--color-primary-100);color:var(--color-primary-700);border-radius:var(--radius-full);white-space:nowrap}.connector-status{display:inline-flex;align-items:center;gap:var(--space-1);height:var(--badge-height-md);padding:0 var(--space-2);font-size:var(--text-xs);font-weight:var(--font-medium);border-radius:var(--radius-sm);white-space:nowrap}.connector-status--available{background:var(--color-available-bg);color:var(--color-available)}.connector-status--occupied,.connector-status--preparing{background:var(--color-occupied-bg);color:var(--color-occupied)}.connector-status--charging{background:var(--color-charging-bg);color:var(--color-charging)}.connector-status--faulted{background:var(--color-faulted-bg);color:var(--color-faulted)}.connector-status--unavailable{background:var(--color-unavailable-bg);color:var(--color-unavailable)}.form-field{display:flex;flex-direction:column;gap:var(--space-1)}.form-field__label{font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary)}.form-field__label--required:after{content:" *";color:var(--color-danger-500)}.form-field__help{font-size:var(--text-xs);color:var(--text-muted)}.form-field__error{font-size:var(--text-xs);color:var(--color-danger-600)}.input{height:var(--input-height-md);padding:0 var(--space-3);font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);background:var(--bg-base);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 var(--ring-width) var(--color-primary-100)}.input:disabled{background:var(--bg-surface-1);color:var(--text-disabled);cursor:not-allowed}.input::placeholder{color:var(--text-muted)}.input--error{border-color:var(--color-danger-500)}.input--error:focus{border-color:var(--color-danger-500);box-shadow:0 0 0 var(--ring-width) var(--color-danger-100)}.input--sm{height:var(--input-height-sm);padding:0 var(--space-2);font-size:var(--text-xs)}.input--lg{height:var(--input-height-lg);padding:0 var(--space-4);font-size:var(--text-base)}.textarea{min-height:80px;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);background:var(--bg-base);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);resize:vertical;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 var(--ring-width) var(--color-primary-100)}.select{height:var(--input-height-md);padding:0 var(--space-8) 0 var(--space-3);font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);background:var(--bg-base);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-2) center;background-size:20px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.select:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 var(--ring-width) var(--color-primary-100)}.select--sm{height:var(--input-height-sm);padding:0 var(--space-6) 0 var(--space-2);font-size:var(--text-xs)}.checkbox{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm)}.checkbox__input{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary-500)}.checkbox__label{color:var(--text-primary)}.form-row{display:flex;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap}.form-row .form-field{min-width:120px;flex:1}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-3)}@media (min-width: 1280px){.form-grid--2-col{grid-template-columns:repeat(2,1fr)}.form-grid--3-col{grid-template-columns:repeat(3,1fr)}.form-grid--4-col{grid-template-columns:repeat(4,1fr)}}.form-group{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3)}.form-group:last-child{margin-bottom:0}.form-group label{font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary)}.form-group input,.form-group select,.form-group textarea{height:var(--input-height-md);padding:0 var(--space-3);font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);background:var(--bg-base);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-group textarea{height:auto;min-height:80px;padding:var(--space-2) var(--space-3)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 var(--ring-width) var(--color-primary-100)}.form-group input:disabled,.form-group select:disabled{background:var(--bg-surface-1);color:var(--text-disabled);cursor:not-allowed}.form-group input::placeholder{color:var(--text-muted)}.form-section{margin-bottom:var(--space-6)}.form-section h3{margin:0 0 var(--space-4) 0;font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary);border-bottom:var(--border-width-2) solid var(--color-primary-500);padding-bottom:var(--space-2)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.section-header h3{margin:0;border:none;padding:0}.form-field label{margin-bottom:var(--space-1);font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary)}.form-field input,.form-field select{height:var(--input-height-md);padding:0 var(--space-3);font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);background:var(--bg-base);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-field input:focus,.form-field select:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 var(--ring-width) var(--color-primary-100)}.form-field input:disabled{background:var(--bg-surface-1);color:var(--text-disabled);cursor:not-allowed}.form-field.full-width{grid-column:1 / -1}.checkbox-field{display:flex;align-items:center}.checkbox-field label{display:flex;align-items:center;gap:var(--space-2);font-weight:var(--font-normal);color:var(--text-primary);cursor:pointer;padding:var(--space-2) 0}.checkbox-field input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--color-primary-500)}.checkbox-group{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-2)}.checkbox-label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;padding:var(--space-1-5);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);transition:background-color var(--transition-fast)}.checkbox-label:hover{background:var(--bg-surface-1)}.checkbox-label input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary-500)}.toggle-label{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm);color:var(--text-primary)}.toggle-label input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary-500)}.live-updates-toggle{display:flex;align-items:center;gap:var(--space-2)}.live-updates-toggle input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary-500)}.auto-refresh-toggle{display:flex;align-items:center;gap:var(--space-2)}.auto-refresh-toggle input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary-500)}.form-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4);border-bottom:var(--border-width) solid var(--border-default);background:var(--bg-surface-1)}.form-header h2{margin:0;font-size:var(--text-xl);font-weight:var(--font-semibold);color:var(--text-primary)}.form-actions{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-4);border-top:var(--border-width) solid var(--border-default);background:var(--bg-surface-1)}.form-actions-left,.form-actions-right{display:flex;gap:var(--space-2)}.select--lg{height:var(--input-height-lg);padding:0 var(--space-10) 0 var(--space-4);font-size:var(--text-base)}.textarea--sm{min-height:60px;padding:var(--space-1-5) var(--space-2);font-size:var(--text-xs)}.textarea--lg{min-height:120px;padding:var(--space-3) var(--space-4);font-size:var(--text-base)}.textarea:disabled{background:var(--bg-surface-1);color:var(--text-disabled);cursor:not-allowed}.textarea::placeholder{color:var(--text-muted)}.input-with-icon{position:relative}.input-with-icon .input{padding-left:var(--space-10)}.input-with-icon .icon{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.input-group{display:flex;gap:0}.input-group .input{border-top-right-radius:0;border-bottom-right-radius:0;flex:1}.input-group .btn,.input-group .btn-primary,.input-group .btn-secondary{border-top-left-radius:0;border-bottom-left-radius:0}.label{font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-secondary)}.label--required:after{content:" *";color:var(--color-danger-500)}.help-text{font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--space-1)}.error-text{font-size:var(--text-xs);color:var(--color-danger-600);margin-top:var(--space-1)}.radio{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm)}.radio__input{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary-500)}.radio__label{color:var(--text-primary)}.radio-group{display:flex;flex-direction:column;gap:var(--space-2)}.radio-group--horizontal{flex-direction:row;flex-wrap:wrap;gap:var(--space-4)}.card{background:var(--bg-base);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-lg);overflow:hidden}.card--elevated{box-shadow:var(--shadow-sm)}.card--interactive{cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.card--interactive:hover{border-color:var(--color-primary-300);box-shadow:var(--shadow-md)}.card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-3);border-bottom:var(--border-width) solid var(--border-default)}.card__title{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--text-primary);margin:0}.card__body{padding:var(--space-3)}.card__footer{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-top:var(--border-width) solid var(--border-default);background:var(--bg-surface-1)}.card--compact{border-radius:var(--radius-md)}.card--compact .card__header{padding:var(--space-2) var(--space-3);gap:var(--space-1-5)}.card--compact .card__title{font-size:var(--text-sm)}.card--compact .card__body{padding:var(--space-2) var(--space-3)}.card--compact .card__footer{padding:var(--space-1-5) var(--space-3)}.card--dense{border-radius:var(--radius-sm)}.card--dense .card__header{padding:var(--space-1-5) var(--space-2);gap:var(--space-1)}.card--dense .card__title{font-size:var(--text-sm)}.card--dense .card__body{padding:var(--space-1-5) var(--space-2)}.card--dense .card__footer{padding:var(--space-1) var(--space-2)}.card--horizontal{display:flex;align-items:center;padding:var(--space-2) var(--space-3)}.card--horizontal .card__header{border-bottom:none;padding:0;flex:0 0 auto}.card--horizontal .card__body{flex:1;padding:0 var(--space-3);min-width:0}.card--horizontal .card__footer{border-top:none;background:transparent;padding:0;flex:0 0 auto}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.card-grid--compact{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-2)}.card-grid--dense{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-1-5)}.card-list{display:flex;flex-direction:column;gap:var(--space-2)}.card-list--dense{gap:var(--space-1)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-backdrop);padding:var(--space-4)}.modal{background:var(--bg-base);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:90vw;max-height:90vh;display:flex;flex-direction:column;z-index:var(--z-modal);overflow:hidden}.modal--sm{width:400px}.modal--md{width:560px}.modal--lg{width:720px}.modal--xl{width:900px}.modal--full{width:calc(100vw - var(--space-8));max-width:none}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4);border-bottom:var(--border-width) solid var(--border-default);flex-shrink:0}.modal__title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary);margin:0}.modal__close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.modal__close:hover{background:var(--bg-surface-2);color:var(--text-primary)}.modal__body{padding:var(--space-4);overflow-y:auto;flex:1}.modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:var(--border-width) solid var(--border-default);background:var(--bg-surface-1);flex-shrink:0}.modal-content{background:var(--bg-base);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:900px;width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-6);border-bottom:var(--border-width) solid var(--border-default);flex-shrink:0}.modal-header h2{margin:0;font-size:var(--text-2xl);font-weight:var(--font-semibold);color:var(--text-primary)}.modal-header-actions{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.modal-body{padding:var(--space-6);overflow-y:auto;flex:1}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-6);border-top:var(--border-width) solid var(--border-default);background:var(--bg-surface-1);flex-shrink:0}.connectors-modal{max-width:1400px}@media (min-width: 1536px){.connectors-modal{max-width:1600px}}@media (min-width: 1920px){.connectors-modal{max-width:1800px}}.station-form-overlay,.import-export-overlay,.template-library-overlay,.station-config-overlay,.templates-overlay,.save-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-backdrop);padding:var(--space-4)}.station-form{background:var(--bg-base);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:800px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.import-export-modal{background:var(--bg-base);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.template-library{background:var(--bg-base);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.station-config{background:var(--bg-base);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:700px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.templates-manager{background:var(--bg-base);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:800px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.save-dialog{background:var(--bg-base);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:var(--space-6);width:100%;max-width:400px}.save-dialog h3{margin:0 0 var(--space-4) 0;font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary)}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-4)}.auto-refresh-controls{display:flex;gap:var(--space-2);align-items:center;padding:var(--space-1-5) var(--space-3);background:var(--bg-surface-1);border-radius:var(--radius-md)}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-overlay--animated{animation:modal-fade-in var(--transition-normal)}.modal--animated,.modal-content--animated{animation:modal-slide-up var(--transition-normal)}.modal--2xl{width:1100px}.modal--3xl{width:1400px}.modal-scroll{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--color-neutral-300) transparent}.modal-scroll::-webkit-scrollbar{width:6px}.modal-scroll::-webkit-scrollbar-track{background:transparent}.modal-scroll::-webkit-scrollbar-thumb{background:var(--color-neutral-300);border-radius:var(--radius-full)}.modal-scroll::-webkit-scrollbar-thumb:hover{background:var(--color-neutral-400)}@media (max-width: 768px){.modal-content,.station-form,.import-export-modal,.template-library,.station-config,.templates-manager{max-width:100%;max-height:100vh;border-radius:0}.modal-header{padding:var(--space-4)}.modal-header h2{font-size:var(--text-lg)}.modal-body{padding:var(--space-4)}.modal-footer{padding:var(--space-3) var(--space-4)}}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th,.table td{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:var(--border-width) solid var(--border-default)}.table th{font-weight:var(--font-semibold);color:var(--text-secondary);background:var(--bg-surface-1);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide)}.table td{color:var(--text-primary)}.table--striped tbody tr:nth-child(2n){background:var(--bg-surface-1)}.table--hover tbody tr:hover{background:var(--bg-surface-2)}.table--compact th,.table--compact td{padding:var(--space-1) var(--space-2)}.divider{height:var(--border-width);background:var(--border-default);border:none;margin:var(--space-4) 0}.divider--vertical{width:var(--border-width);height:auto;margin:0 var(--space-2)}.skeleton{background:linear-gradient(90deg,var(--bg-surface-2) 25%,var(--bg-surface-3) 50%,var(--bg-surface-2) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--border-default);border-top-color:var(--color-primary-500);border-radius:50%;animation:spin .8s linear infinite}.spinner--sm{width:14px;height:14px;border-width:1.5px}.spinner--lg{width:28px;height:28px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);text-align:center;background:var(--bg-surface-1);border:var(--border-width) dashed var(--border-default);border-radius:var(--radius-lg)}.empty-state__icon{font-size:48px;color:var(--text-muted);margin-bottom:var(--space-4)}.empty-state__title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary);margin:0 0 var(--space-2) 0}.empty-state__description{font-size:var(--text-sm);color:var(--text-secondary);margin:0 0 var(--space-4) 0;max-width:400px}.empty-state__actions{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-lg);font-size:var(--text-sm)}.alert__icon{flex-shrink:0;font-size:var(--icon-lg)}.alert__content{flex:1;min-width:0}.alert__title{font-weight:var(--font-semibold);margin-bottom:var(--space-1)}.alert--info{background:var(--color-info-100);color:var(--color-info-700);border:var(--border-width) solid var(--color-info-200)}.alert--success{background:var(--color-success-100);color:var(--color-success-700);border:var(--border-width) solid var(--color-success-200)}.alert--warning{background:var(--color-warning-100);color:var(--color-warning-700);border:var(--border-width) solid var(--color-warning-200)}.alert--danger{background:var(--color-danger-100);color:var(--color-danger-700);border:var(--border-width) solid var(--color-danger-200)}.tooltip{position:relative}.tooltip__content{position:absolute;bottom:100%;left:50%;transform:translate(-50%);padding:var(--space-1) var(--space-2);background:var(--color-neutral-800);color:#fff;font-size:var(--text-xs);border-radius:var(--radius-md);white-space:nowrap;z-index:var(--z-tooltip);pointer-events:none;opacity:0;transition:opacity var(--transition-fast);margin-bottom:var(--space-1)}.tooltip:hover .tooltip__content{opacity:1}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s ease-in-out infinite}[data-theme=dark] .btn--primary,[data-theme=dark] .btn-primary,[data-theme=dark] .btn-save,[data-theme=dark] .btn-send,[data-theme=dark] .btn-send--compact,[data-theme=dark] .btn-copy,[data-theme=dark] .btn-use-template,[data-theme=dark] .btn-use{background:var(--color-primary-400);color:#fff}[data-theme=dark] .btn--primary:hover:not(:disabled),[data-theme=dark] .btn-primary:hover:not(:disabled),[data-theme=dark] .btn-save:hover:not(:disabled),[data-theme=dark] .btn-send:hover:not(:disabled),[data-theme=dark] .btn-send--compact:hover:not(:disabled),[data-theme=dark] .btn-copy:hover:not(:disabled),[data-theme=dark] .btn-use-template:hover:not(:disabled),[data-theme=dark] .btn-use:hover:not(:disabled){background:var(--color-primary-300)}[data-theme=dark] .btn--success,[data-theme=dark] .btn-success,[data-theme=dark] .btn-start,[data-theme=dark] .btn-start-charging,[data-theme=dark] .btn-export,[data-theme=dark] .btn-save-template{background:var(--color-success-400);color:#fff}[data-theme=dark] .btn--success:hover:not(:disabled),[data-theme=dark] .btn-success:hover:not(:disabled),[data-theme=dark] .btn-start:hover:not(:disabled),[data-theme=dark] .btn-start-charging:hover:not(:disabled),[data-theme=dark] .btn-export:hover:not(:disabled),[data-theme=dark] .btn-save-template:hover:not(:disabled){background:var(--color-success-300)}[data-theme=dark] .btn--danger,[data-theme=dark] .btn-danger,[data-theme=dark] .btn-stop,[data-theme=dark] .btn-stop-charging{background:var(--color-danger-400);color:#fff}[data-theme=dark] .btn--danger:hover:not(:disabled),[data-theme=dark] .btn-danger:hover:not(:disabled),[data-theme=dark] .btn-stop:hover:not(:disabled),[data-theme=dark] .btn-stop-charging:hover:not(:disabled){background:var(--color-danger-300)}[data-theme=dark] .btn--warning,[data-theme=dark] .btn-warning{background:var(--color-warning-400);color:#fff}[data-theme=dark] .btn--warning:hover:not(:disabled),[data-theme=dark] .btn-warning:hover:not(:disabled){background:var(--color-warning-300)}[data-theme=dark] .btn--info,[data-theme=dark] .btn-info{background:var(--color-info-400);color:#fff}[data-theme=dark] .btn--info:hover:not(:disabled),[data-theme=dark] .btn-info:hover:not(:disabled){background:var(--color-info-300)}[data-theme=dark] .btn--secondary,[data-theme=dark] .btn-secondary,[data-theme=dark] .btn-cancel,[data-theme=dark] .btn-action,[data-theme=dark] .btn-small,[data-theme=dark] .btn-format,[data-theme=dark] .btn-templates,[data-theme=dark] .btn-templates--compact,[data-theme=dark] .btn-connectors,[data-theme=dark] .btn-config,[data-theme=dark] .btn-edit,[data-theme=dark] .btn-template,[data-theme=dark] .btn-icon{background:var(--bg-surface-3);border-color:var(--border-emphasis);color:var(--color-neutral-800)}[data-theme=dark] .btn--secondary:hover:not(:disabled),[data-theme=dark] .btn-secondary:hover:not(:disabled),[data-theme=dark] .btn-cancel:hover:not(:disabled),[data-theme=dark] .btn-action:hover:not(:disabled),[data-theme=dark] .btn-small:hover:not(:disabled),[data-theme=dark] .btn-format:hover:not(:disabled),[data-theme=dark] .btn-templates:hover:not(:disabled),[data-theme=dark] .btn-templates--compact:hover:not(:disabled),[data-theme=dark] .btn-connectors:hover:not(:disabled),[data-theme=dark] .btn-config:hover:not(:disabled),[data-theme=dark] .btn-edit:hover:not(:disabled),[data-theme=dark] .btn-template:hover:not(:disabled),[data-theme=dark] .btn-icon:hover:not(:disabled){background:var(--bg-elevated);border-color:var(--color-neutral-400);color:var(--color-neutral-900)}[data-theme=dark] .btn-clear-filters{background:var(--color-neutral-400);color:#fff}[data-theme=dark] .btn-clear-filters:hover:not(:disabled){background:var(--bg-elevated)}[data-theme=dark] .btn-delete,[data-theme=dark] .btn-remove{background:transparent;color:var(--color-danger-500);border-color:var(--color-danger-200)}[data-theme=dark] .btn-delete:hover:not(:disabled),[data-theme=dark] .btn-remove:hover:not(:disabled){background:var(--color-danger-100);border-color:var(--color-danger-300)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{font-family:var(--font-sans);font-size:16px;line-height:var(--leading-normal);font-weight:var(--font-normal);color-scheme:light dark;color:var(--text-primary);background-color:var(--bg-base);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;font-size:var(--text-base)}h1,h2,h3,h4,h5,h6{font-weight:var(--font-semibold);line-height:var(--leading-tight);color:var(--text-primary)}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}h5{font-size:var(--text-base)}h6{font-size:var(--text-sm)}p{margin-bottom:var(--space-4)}p:last-child{margin-bottom:0}a{color:var(--text-link);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--text-link-hover);text-decoration:underline}strong,b{font-weight:var(--font-semibold)}small{font-size:var(--text-sm)}code,kbd,pre,samp{font-family:var(--font-mono);font-size:.875em}code{padding:var(--space-0-5) var(--space-1);background:var(--bg-surface-2);border-radius:var(--radius-sm)}pre{padding:var(--space-3);background:var(--bg-surface-2);border-radius:var(--radius-md);overflow-x:auto}pre code{padding:0;background:none}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button{cursor:pointer}input,select,textarea{color:var(--text-primary);background:var(--bg-base)}input::placeholder,textarea::placeholder{color:var(--text-muted)}button:not([class*=btn]){border-radius:var(--radius-md);border:var(--border-width) solid transparent;padding:var(--space-2) var(--space-3);font-weight:var(--font-medium);background-color:var(--bg-surface-1);transition:background-color var(--transition-fast),border-color var(--transition-fast)}button:not([class*=btn]):hover{background-color:var(--bg-surface-2)}button:not([class*=btn]):focus,button:not([class*=btn]):focus-visible{outline:none;box-shadow:0 0 0 var(--ring-width) var(--color-primary-100)}.container{max-width:var(--content-max-width);margin:0 auto;padding:0 var(--space-4)}ul,ol{padding-left:var(--space-6)}li{margin-bottom:var(--space-1)}li:last-child{margin-bottom:0}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:var(--space-2) var(--space-3)}img,picture,video,canvas,svg{display:block;max-width:100%}:focus-visible{outline:var(--ring-width) solid var(--ring-color);outline-offset:var(--ring-offset)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-surface-1)}::-webkit-scrollbar-thumb{background:var(--border-emphasis);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-neutral-400)}*{scrollbar-width:thin;scrollbar-color:var(--border-emphasis) var(--bg-surface-1)}::selection{background:var(--color-primary-200);color:var(--color-primary-900)}@media print{body{background:#fff;color:#000}.no-print{display:none!important}}
