.btn{border-radius:var(--radius-pill);padding:10px 22px;cursor:pointer;font-weight:var(--fw-semibold);font-size:.95rem;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;display:inline-flex;align-items:center;justify-content:center;gap:10px;line-height:1}.btn:active{transform:translateY(1px)}.btn--primary{border:none;background:var(--color-primary);color:var(--text-inverse);box-shadow:var(--shadow-sm)}.btn--ghost{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.btn--ghost:hover{border-color:var(--color-primary)}.login-shell{min-height:100vh;display:grid;place-items:center;padding:var(--app-login-pad);background:var(--app-login-bg)}.login-card{width:100%;max-width:var(--app-login-card-max);background:var(--g-panel-bg);border-radius:var(--app-login-card-radius);border:1px solid var(--g-border);box-shadow:var(--shadow-md);padding:var(--app-login-card-pad);display:flex;flex-direction:column;gap:var(--app-login-card-gap)}.login-brand{display:flex;gap:var(--app-login-brand-gap);align-items:center;margin-bottom:var(--app-login-brand-margin)}.login-brand__logo{width:var(--app-login-logo-size);height:var(--app-login-logo-size);border-radius:var(--app-login-logo-radius);background:transparent;box-shadow:var(--brand-mark-shadow);border:1px solid color-mix(in oklab,var(--g-border) 40%,transparent);object-fit:cover;padding:0}.login-brand__text{display:flex;flex-direction:column;gap:var(--app-login-text-gap);min-width:0}.login-brand__title{font-weight:var(--fw-bold);letter-spacing:.06em;text-transform:uppercase;color:var(--g-text-strong);font-size:1.05rem}.login-brand__sub{color:var(--color-muted);font-size:.9rem}.login-label{display:flex;flex-direction:column;gap:var(--app-login-label-gap);font-size:.9rem;color:var(--color-text)}.login-label input{border-radius:var(--app-login-field-radius);border:1px solid var(--color-border);padding:var(--app-login-input-pad);font-size:.95rem}.login-error{background:var(--tone-critical-bg);border:1px solid var(--tone-critical-bg);padding:var(--app-login-error-pad);border-radius:var(--app-login-field-radius);color:var(--color-critical);font-size:.9rem}.login-footnote{font-size:.85rem;color:var(--color-muted)}.link{border:none;background:transparent;padding:0;cursor:pointer;color:var(--color-primary);font-weight:600}.toast-host{position:fixed;right:16px;top:16px;display:flex;flex-direction:column;gap:10px;z-index:9999}.toast{background:var(--g-panel-header);border:1px solid var(--g-border);border-radius:var(--radius-card);box-shadow:var(--nav-shadow);padding:10px 12px;display:flex;gap:12px;align-items:center;min-width:260px;max-width:380px;color:var(--g-text-strong)}.toast--success{border-color:var(--tone-success-bg)}.toast--warning{border-color:var(--tone-warning-bg)}.toast--critical{border-color:var(--tone-critical-bg)}.toast__close{margin-left:auto;border:none;background:transparent;cursor:pointer;font-size:1.1rem;color:var(--g-text-muted)}:root{--layout-header-height: 64px;--layout-sidebar-width: 280px;--layout-sidebar-collapsed-width: 72px;--layout-content-max-width: 1600px;--layout-padding-sm: 12px;--layout-padding-md: 16px;--layout-padding-lg: 24px;--layout-padding-xl: 32px;--layout-gap-xs: 4px;--layout-gap-sm: 8px;--layout-gap-md: 12px;--layout-gap-lg: 16px;--layout-gap-xl: 24px;--layout-radius-sm: 4px;--layout-radius-md: 8px;--layout-radius-lg: 12px;--layout-radius-full: 9999px;--layout-transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--layout-transition-base: .25s cubic-bezier(.4, 0, .2, 1);--layout-transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--layout-z-base: 1;--layout-z-header: 100;--layout-z-sidebar: 90;--layout-z-overlay: 200;--layout-z-modal: 300;--layout-z-toast: 400;--layout-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--layout-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--layout-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--layout-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--layout-header-bg: var(--background-primary, #ffffff);--layout-header-border: var(--border-primary, #e5e7eb);--layout-header-text: var(--text-primary, #111827);--layout-header-text-muted: var(--text-secondary, #6b7280);--layout-sidebar-bg: var(--background-secondary, #f9fafb);--layout-sidebar-border: var(--border-primary, #e5e7eb);--layout-sidebar-text: var(--text-primary, #374151);--layout-sidebar-text-muted: var(--text-secondary, #9ca3af);--layout-sidebar-hover-bg: var(--background-tertiary, #f3f4f6);--layout-sidebar-active-bg: var(--color-primary, #3b82f6);--layout-sidebar-active-text: #ffffff;--layout-content-bg: var(--background-primary, #ffffff);--layout-content-text: var(--text-primary, #111827);--layout-overlay-bg: rgba(0, 0, 0, .5);--layout-backdrop-blur: blur(4px);--layout-breakpoint-mobile: 768px;--layout-breakpoint-tablet: 1024px;--layout-breakpoint-desktop: 1280px}[data-theme=dark],[data-theme=dark-scada]{--layout-header-bg: var(--background-primary, #1f2937);--layout-header-border: var(--border-primary, #374151);--layout-header-text: var(--text-primary, #f9fafb);--layout-header-text-muted: var(--text-secondary, #9ca3af);--layout-sidebar-bg: var(--background-secondary, #111827);--layout-sidebar-border: var(--border-primary, #374151);--layout-sidebar-text: var(--text-primary, #f3f4f6);--layout-sidebar-text-muted: var(--text-secondary, #9ca3af);--layout-sidebar-hover-bg: var(--background-tertiary, #1f2937);--layout-content-bg: var(--background-primary, #1f2937);--layout-content-text: var(--text-primary, #f9fafb);--layout-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--layout-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .3);--layout-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -2px rgba(0, 0, 0, .3)}.app-layout{display:grid;grid-template-areas:"header header" "sidebar content";grid-template-columns:var(--layout-sidebar-width) 1fr;grid-template-rows:var(--layout-header-height) 1fr;min-height:100vh;background:var(--layout-content-bg);color:var(--layout-content-text);font-family:var(--font-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif)}.app-layout--no-sidebar{grid-template-areas:"header header" "content content";grid-template-columns:1fr}.app-layout--sidebar-collapsed{grid-template-columns:var(--layout-sidebar-collapsed-width) 1fr}.app-layout--fullscreen{grid-template-areas:"content";grid-template-columns:1fr;grid-template-rows:1fr}.app-layout__header{grid-area:header;display:flex;align-items:center;justify-content:space-between;padding:0 var(--layout-padding-lg);background:var(--layout-header-bg);border-bottom:1px solid var(--layout-header-border);box-shadow:var(--layout-shadow-sm);z-index:var(--layout-z-header);position:sticky;top:0;height:var(--layout-header-height)}.app-layout__header-left{display:flex;align-items:center;gap:var(--layout-gap-lg);flex:1;min-width:0}.app-layout__header-right{display:flex;align-items:center;gap:var(--layout-gap-md);flex-shrink:0}.app-layout__header-actions{display:flex;align-items:center;gap:var(--layout-gap-md)}.app-layout__icon-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;cursor:pointer;border-radius:var(--layout-radius-md);color:var(--layout-header-text-muted);transition:all var(--layout-transition-fast);position:relative}.app-layout__icon-button:hover{background:var(--layout-sidebar-hover-bg);color:var(--layout-header-text)}.app-layout__icon-button:active{transform:scale(.95)}.app-layout__icon-button:focus-visible{outline:2px solid var(--layout-sidebar-active-bg);outline-offset:2px}.app-layout__brand{display:flex;align-items:center;gap:var(--layout-gap-md);cursor:pointer;text-decoration:none;color:inherit;flex-shrink:0}.app-layout__logo{width:40px;height:40px;object-fit:contain}.app-layout__brand-text{display:flex;flex-direction:column;gap:2px}.app-layout__brand-title{font-size:16px;font-weight:600;color:var(--layout-header-text);line-height:1.2}.app-layout__brand-subtitle{font-size:12px;color:var(--layout-header-text-muted);line-height:1.2}.app-layout__breadcrumbs{display:flex;align-items:center;gap:var(--layout-gap-sm);font-size:14px;color:var(--layout-header-text-muted);overflow:hidden}.app-layout__breadcrumb-item{display:flex;align-items:center;gap:var(--layout-gap-xs);white-space:nowrap}.app-layout__breadcrumb-link{color:var(--layout-header-text-muted);text-decoration:none;transition:color var(--layout-transition-fast)}.app-layout__breadcrumb-link:hover{color:var(--layout-header-text)}.app-layout__breadcrumb-separator{color:var(--layout-header-text-muted);opacity:.5}.app-layout__breadcrumb-current{color:var(--layout-header-text);font-weight:500}.app-layout__header-actions{display:flex;align-items:center;gap:var(--layout-gap-sm)}.app-layout__sidebar{grid-area:sidebar;display:flex;flex-direction:column;background:var(--layout-sidebar-bg);border-right:1px solid var(--layout-sidebar-border);height:calc(100vh - var(--layout-header-height));position:sticky;top:var(--layout-header-height);overflow-y:auto;overflow-x:hidden;z-index:var(--layout-z-sidebar);transition:width var(--layout-transition-base);width:var(--layout-sidebar-width)}.app-layout__sidebar--collapsed{width:var(--layout-sidebar-collapsed-width)}.app-layout__sidebar::-webkit-scrollbar{width:6px}.app-layout__sidebar::-webkit-scrollbar-track{background:transparent}.app-layout__sidebar::-webkit-scrollbar-thumb{background:var(--layout-sidebar-border);border-radius:3px}.app-layout__sidebar::-webkit-scrollbar-thumb:hover{background:var(--layout-sidebar-text-muted)}.app-layout__nav{flex:1;padding:var(--layout-padding-md) 0;overflow-y:auto}.app-layout__nav-group{margin-bottom:var(--layout-gap-lg)}.app-layout__nav-group-label{padding:var(--layout-padding-sm) var(--layout-padding-lg);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--layout-sidebar-text-muted);transition:opacity var(--layout-transition-fast)}.app-layout__sidebar--collapsed .app-layout__nav-group-label{opacity:0;height:0;padding:0;overflow:hidden}.app-layout__nav-items{display:flex;flex-direction:column;gap:var(--layout-gap-xs);padding:0 var(--layout-padding-sm)}.app-layout__nav-item{display:flex;align-items:center;gap:var(--layout-gap-md);padding:var(--layout-padding-sm) var(--layout-padding-md);border-radius:var(--layout-radius-md);color:var(--layout-sidebar-text);background:transparent;border:none;cursor:pointer;font-size:14px;font-weight:500;text-align:left;transition:all var(--layout-transition-fast);position:relative;width:100%}.app-layout__nav-item:hover{background:var(--layout-sidebar-hover-bg)}.app-layout__nav-item:focus-visible{outline:2px solid var(--color-primary, #3b82f6);outline-offset:2px}.app-layout__nav-item--active{background:var(--layout-sidebar-active-bg);color:var(--layout-sidebar-active-text);font-weight:600}.app-layout__nav-item--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.app-layout__nav-item-icon{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center}.app-layout__nav-item-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity var(--layout-transition-fast)}.app-layout__sidebar--collapsed .app-layout__nav-item-label{opacity:0;width:0}.app-layout__nav-item-badge{flex-shrink:0;padding:2px 6px;border-radius:var(--layout-radius-full);font-size:11px;font-weight:600;line-height:1.2;background:var(--color-primary, #3b82f6);color:#fff;transition:opacity var(--layout-transition-fast)}.app-layout__sidebar--collapsed .app-layout__nav-item-badge{opacity:0;width:0;padding:0}.app-layout__nav-item-badge--danger{background:var(--color-danger, #ef4444)}.app-layout__nav-item-badge--warning{background:var(--color-warning, #f59e0b)}.app-layout__nav-item-badge--success{background:var(--color-success, #10b981)}.app-layout__sidebar-footer{padding:var(--layout-padding-lg);border-top:1px solid var(--layout-sidebar-border);display:flex;flex-direction:column;gap:var(--layout-gap-sm)}.app-layout__collapse-toggle{display:flex;align-items:center;justify-content:center;padding:var(--layout-padding-sm);border-radius:var(--layout-radius-md);background:transparent;border:1px solid var(--layout-sidebar-border);color:var(--layout-sidebar-text);cursor:pointer;transition:all var(--layout-transition-fast)}.app-layout__collapse-toggle:hover{background:var(--layout-sidebar-hover-bg);border-color:var(--layout-sidebar-text-muted)}.app-layout__content{grid-area:content;min-height:calc(100vh - var(--layout-header-height));overflow-x:hidden;overflow-y:auto}.app-layout__content-wrapper{padding:var(--layout-padding-lg);max-width:var(--layout-content-max-width);margin:0 auto}.app-layout__content-wrapper--max-sm{max-width:640px}.app-layout__content-wrapper--max-md{max-width:768px}.app-layout__content-wrapper--max-lg{max-width:1024px}.app-layout__content-wrapper--max-xl{max-width:1280px}.app-layout__content-wrapper--max-full{max-width:none}.app-layout__content-wrapper--padding-none{padding:0}.app-layout__content-wrapper--padding-sm{padding:var(--layout-padding-sm)}.app-layout__content-wrapper--padding-md{padding:var(--layout-padding-md)}.app-layout__content-wrapper--padding-lg{padding:var(--layout-padding-lg)}.app-layout__page-header{margin-bottom:var(--layout-gap-xl)}.app-layout__page-title-row{display:flex;align-items:center;justify-content:space-between;gap:var(--layout-gap-lg);margin-bottom:var(--layout-gap-sm)}.app-layout__page-title{font-size:24px;font-weight:700;color:var(--layout-content-text);margin:0;line-height:1.2}.app-layout__page-description{font-size:14px;color:var(--text-secondary, #6b7280);margin:0;line-height:1.5}.app-layout__page-actions{display:flex;align-items:center;gap:var(--layout-gap-sm);flex-shrink:0}.app-layout__user-menu{position:relative}.app-layout__user-trigger{display:flex;align-items:center;gap:var(--layout-gap-sm);padding:var(--layout-padding-sm) var(--layout-padding-md);border-radius:var(--layout-radius-md);background:transparent;border:1px solid var(--layout-header-border);color:var(--layout-header-text);cursor:pointer;transition:all var(--layout-transition-fast);font-size:14px}.app-layout__user-trigger:hover{background:var(--background-tertiary, #f3f4f6);border-color:var(--layout-sidebar-text-muted)}.app-layout__user-avatar{width:32px;height:32px;border-radius:var(--layout-radius-full);background:var(--color-primary, #3b82f6);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;flex-shrink:0}.app-layout__user-info{display:flex;flex-direction:column;gap:2px;text-align:left;min-width:0}.app-layout__user-name{font-size:14px;font-weight:600;color:var(--layout-header-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-layout__user-email{font-size:12px;color:var(--layout-header-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-layout__user-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:220px;background:var(--layout-header-bg);border:1px solid var(--layout-header-border);border-radius:var(--layout-radius-lg);box-shadow:var(--layout-shadow-lg);padding:var(--layout-padding-sm) 0;z-index:var(--layout-z-overlay);opacity:0;transform:translateY(-8px);pointer-events:none;transition:all var(--layout-transition-fast)}.app-layout__user-dropdown--open{opacity:1;transform:translateY(0);pointer-events:auto}.app-layout__user-menu-item{display:flex;align-items:center;gap:var(--layout-gap-md);padding:var(--layout-padding-sm) var(--layout-padding-lg);background:transparent;border:none;color:var(--layout-header-text);cursor:pointer;transition:background var(--layout-transition-fast);width:100%;text-align:left;font-size:14px}.app-layout__user-menu-item:hover{background:var(--background-tertiary, #f3f4f6)}.app-layout__user-menu-item--danger{color:var(--color-danger, #ef4444)}.app-layout__user-menu-divider{height:1px;background:var(--layout-header-border);margin:var(--layout-gap-xs) 0}.app-layout__mobile-overlay,.app-layout__sidebar-backdrop{display:none}@media (max-width: 1024px){.app-layout{grid-template-areas:"header" "content";grid-template-columns:1fr}.app-layout__sidebar{position:fixed;left:0;top:var(--layout-header-height);height:calc(100vh - var(--layout-header-height));transform:translate(-100%);transition:transform var(--layout-transition-base);z-index:var(--layout-z-sidebar)}.app-layout--sidebar-open .app-layout__sidebar{transform:translate(0)}.app-layout__sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--layout-overlay-bg);-webkit-backdrop-filter:var(--layout-backdrop-blur);backdrop-filter:var(--layout-backdrop-blur);z-index:calc(var(--layout-z-sidebar) - 1);opacity:0;pointer-events:none;transition:opacity var(--layout-transition-base)}.app-layout--sidebar-open .app-layout__sidebar-backdrop{opacity:1;pointer-events:auto}}@media (max-width: 768px){:root{--layout-header-height: 56px;--layout-padding-lg: 16px;--layout-padding-md: 12px}.app-layout__header{padding:0 var(--layout-padding-md)}.app-layout__brand-text,.app-layout__breadcrumbs{display:none}.app-layout__content-wrapper{padding:var(--layout-padding-md)}.app-layout__page-title{font-size:20px}.app-layout__user-info{display:none}}.app-layout__mobile-toggle{display:none;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--layout-radius-md);background:transparent;border:1px solid var(--layout-header-border);color:var(--layout-header-text);cursor:pointer;transition:all var(--layout-transition-fast)}.app-layout__mobile-toggle:hover{background:var(--background-tertiary, #f3f4f6)}@media (max-width: 1024px){.app-layout__mobile-toggle{display:flex}}.app-layout__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:var(--layout-gap-lg)}.app-layout__loading-spinner{width:48px;height:48px;border:4px solid var(--layout-header-border);border-top-color:var(--color-primary, #3b82f6);border-radius:50%;animation:layout-spin 1s linear infinite}@keyframes layout-spin{to{transform:rotate(360deg)}}.app-layout__loading-text{font-size:16px;color:var(--layout-header-text-muted)}.app-layout__error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:var(--layout-gap-lg);padding:var(--layout-padding-xl);text-align:center}.app-layout__error-icon{width:64px;height:64px;color:var(--color-danger, #ef4444)}.app-layout__error-title{font-size:24px;font-weight:700;color:var(--layout-content-text);margin:0}.app-layout__error-message{font-size:16px;color:var(--text-secondary, #6b7280);margin:0;max-width:500px}.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}@media print{.app-layout__header,.app-layout__sidebar{display:none}.app-layout{grid-template-areas:"content";grid-template-columns:1fr}}.site-selector{position:relative;display:inline-block}.site-selector--loading,.site-selector--empty{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background-color:var(--color-panel);border:1px solid var(--color-border);border-radius:.5rem;color:var(--color-muted);font-size:.875rem}.site-selector__trigger{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.625rem 1rem;background-color:var(--color-panel);border:1px solid var(--color-border);border-radius:.5rem;color:var(--color-text);font-size:.875rem;cursor:pointer;transition:all .2s ease;min-width:240px}.site-selector__trigger:hover{border-color:var(--color-primary);background-color:var(--color-surface)}.site-selector__trigger:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}.site-selector__trigger-content{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.site-selector__icon{flex-shrink:0;width:1.25rem;height:1.25rem;color:var(--color-primary)}.site-selector__trigger-text{display:flex;flex-direction:column;align-items:flex-start;gap:.125rem;flex:1;min-width:0}.site-selector__label{font-size:.75rem;color:var(--color-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.site-selector__value{font-size:.875rem;font-weight:500;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.site-selector__chevron{flex-shrink:0;width:1rem;height:1rem;color:var(--color-muted);transition:transform .2s ease}.site-selector__dropdown{position:absolute;top:calc(100% + .5rem);left:0;z-index:50;min-width:320px;max-width:400px;background-color:var(--color-panel);border:1px solid var(--color-border);border-radius:.75rem;box-shadow:0 10px 25px #00000026;overflow:hidden;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.site-selector__search{position:relative;padding:.75rem;border-bottom:1px solid var(--color-border)}.site-selector__search-icon{position:absolute;left:1.25rem;top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--color-muted);pointer-events:none}.site-selector__search-input{width:100%;padding:.5rem .75rem .5rem 2.5rem;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:.375rem;color:var(--color-text);font-size:.875rem;outline:none;transition:all .2s ease}.site-selector__search-input:focus{border-color:var(--color-primary);background-color:var(--color-panel)}.site-selector__search-input::placeholder{color:var(--color-muted)}.site-selector__options{max-height:400px;overflow-y:auto;padding:.5rem}.site-selector__option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.75rem;background:transparent;border:none;border-radius:.5rem;color:var(--color-text);cursor:pointer;transition:all .15s ease;text-align:left}.site-selector__option:hover{background-color:var(--color-surface)}.site-selector__option--active{background-color:#3b82f61a}.site-selector__option--active:hover{background-color:#3b82f626}.site-selector__option-content{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.site-selector__option-icon{flex-shrink:0;width:1.25rem;height:1.25rem;color:var(--color-muted)}.site-selector__option-status{flex-shrink:0;width:.5rem;height:.5rem}.site-selector__option-status-dot{width:100%;height:100%;border-radius:50%;background-color:var(--color-muted)}.site-selector__option-status--current .site-selector__option-status-dot{background-color:var(--color-success);animation:pulse-dot 2s infinite}.site-selector__option-status--stale .site-selector__option-status-dot{background-color:var(--color-warning)}.site-selector__option-status--offline .site-selector__option-status-dot,.site-selector__option-status--no_data .site-selector__option-status-dot{background-color:var(--color-muted)}.site-selector__option-text{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:0}.site-selector__option-name{font-size:.875rem;font-weight:500;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.site-selector__option-meta{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--color-muted)}.site-selector__option-code{padding:.125rem .375rem;background-color:var(--color-surface);border-radius:.25rem;font-family:var(--font-mono);font-size:.6875rem}.site-selector__option-check{flex-shrink:0;width:1.125rem;height:1.125rem;color:var(--color-primary)}.site-selector__divider{height:1px;margin:.5rem 0;background-color:var(--color-border)}.site-selector__empty{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2rem 1rem;color:var(--color-muted);font-size:.875rem}.site-selector__empty svg{width:2rem;height:2rem;opacity:.5}.site-selector__footer{padding:.75rem;border-top:1px solid var(--color-border);background-color:var(--color-surface)}.site-selector__footer-text{font-size:.75rem;color:var(--color-muted)}.site-selector__spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}@media (max-width: 640px){.site-selector__trigger{min-width:200px}.site-selector__dropdown{min-width:280px;left:50%;transform:translate(-50%)}}.upgrade-prompt{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;max-width:600px;margin:0 auto;text-align:center;min-height:60vh}.upgrade-prompt-icon-large{font-size:4rem;margin-bottom:1.5rem;opacity:.8}.upgrade-prompt-title{font-size:2rem;font-weight:700;color:var(--text-primary);margin-bottom:1rem}.upgrade-prompt-description{font-size:1.125rem;color:var(--text-secondary);margin-bottom:2rem;line-height:1.6}.upgrade-prompt-benefits{background:var(--bg-secondary);border-radius:var(--border-radius, .5rem);padding:1.5rem;margin-bottom:2rem;text-align:left;width:100%}.upgrade-prompt-benefits h3{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:1rem}.upgrade-prompt-benefits ul{list-style:none;padding:0;margin:0}.upgrade-prompt-benefits li{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;color:var(--text-primary)}.benefit-icon{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;background:var(--color-success);color:#fff;border-radius:50%;font-size:.875rem;font-weight:700;flex-shrink:0}.upgrade-prompt-pricing{margin-bottom:2rem}.price{display:flex;align-items:baseline;justify-content:center;gap:.25rem;margin-bottom:.5rem}.price-currency{font-size:1.5rem;font-weight:600;color:var(--text-primary)}.price-amount{font-size:3rem;font-weight:700;color:var(--color-primary)}.price-period{font-size:1rem;color:var(--text-secondary)}.current-plan{font-size:.875rem;color:var(--text-secondary);margin-top:.5rem}.upgrade-prompt-button-primary{display:inline-flex;align-items:center;justify-content:center;padding:.875rem 2rem;font-size:1rem;font-weight:600;color:#fff;background:var(--color-primary);border:none;border-radius:var(--border-radius, .5rem);cursor:pointer;transition:all .2s;margin-bottom:1rem;min-width:200px}.upgrade-prompt-button-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #007aff4d}.upgrade-prompt-button-secondary{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 2rem;font-size:.875rem;font-weight:500;color:var(--text-secondary);background:transparent;border:1px solid var(--border-color);border-radius:var(--border-radius, .5rem);cursor:pointer;transition:all .2s}.upgrade-prompt-button-secondary:hover{background:var(--bg-secondary);border-color:var(--text-secondary)}.upgrade-prompt-compact{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--bg-secondary);border:2px dashed var(--border-color);border-radius:var(--border-radius, .5rem)}.upgrade-prompt-compact .upgrade-prompt-icon{font-size:2rem;opacity:.6}.upgrade-prompt-compact .upgrade-prompt-content{flex:1;display:flex;align-items:center;justify-content:space-between;gap:1rem}.upgrade-prompt-compact .upgrade-prompt-text{margin:0;color:var(--text-primary);font-size:.875rem}.upgrade-prompt-compact .upgrade-prompt-button{padding:.5rem 1rem;font-size:.875rem;font-weight:600;color:#fff;background:var(--color-primary);border:none;border-radius:.375rem;cursor:pointer;transition:all .2s;white-space:nowrap}.upgrade-prompt-compact .upgrade-prompt-button:hover{background:var(--color-primary);opacity:.9}@media (max-width: 768px){.upgrade-prompt{padding:2rem 1rem}.upgrade-prompt-title{font-size:1.5rem}.price-amount{font-size:2.5rem}.upgrade-prompt-compact{flex-direction:column;text-align:center}.upgrade-prompt-compact .upgrade-prompt-content{flex-direction:column}}.sparkline{display:block}.sparkline__area{opacity:.12}.sparkline__last{opacity:.92}.sparkline--empty{display:block;color:var(--color-muted);background:var(--ui-soft-bg);border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 8px)}.sparkline__empty-text{fill:var(--color-muted);font-weight:600}.info-tooltip{position:relative;display:inline-flex;align-items:center}.info-tooltip__trigger{width:20px;height:20px;padding:0;border-radius:999px;border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-muted);display:grid;place-items:center;cursor:help}.info-tooltip__bubble{position:absolute;left:50%;top:calc(100% + 8px);transform:translate(-50%) translateY(4px);min-width:200px;max-width:260px;padding:8px 10px;border-radius:10px;border:1px solid var(--g-border);background:var(--g-panel-bg);color:var(--g-text-strong);font-size:.82rem;line-height:1.3;box-shadow:var(--shadow-sm);opacity:0;pointer-events:none;z-index:20}.info-tooltip:hover .info-tooltip__bubble,.info-tooltip:focus-within .info-tooltip__bubble{opacity:1;transform:translate(-50%) translateY(0)}.info-tooltip:hover .info-tooltip__trigger,.info-tooltip:focus-within .info-tooltip__trigger{border-color:var(--nav-item-active-border);color:var(--g-text-strong)}.scada-panel{background:var(--scada-panel-bg);border:1px solid var(--scada-border);border-radius:var(--radius-card);box-shadow:var(--shadow-sm);overflow:visible}.scada-panel__header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:14px 16px;background:var(--scada-panel-header);border-bottom:1px solid var(--scada-border);position:relative}.scada-panel__title-row{display:inline-flex;align-items:center;gap:8px}.scada-panel__title{margin:0;font-size:.95rem;letter-spacing:.06em;text-transform:uppercase;color:var(--scada-text-strong);font-weight:var(--fw-bold)}.scada-panel__subtitle{margin:6px 0 0;font-size:.85rem;color:var(--scada-text-muted)}.scada-panel__right{display:flex;gap:10px;align-items:center}.scada-panel__body{padding:14px 16px 16px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center;color:var(--color-muted)}.empty-state__icon{width:4rem;height:4rem;margin-bottom:1.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--color-surface)}.empty-state__icon svg{width:2rem;height:2rem;color:var(--color-muted);opacity:.6}.empty-state__title{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:var(--color-text)}.empty-state__message{margin:0 0 1.5rem;font-size:.875rem;color:var(--color-muted);max-width:400px;line-height:1.5}.empty-state__action{padding:.625rem 1.25rem;background-color:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:.5rem;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.empty-state__action:hover{opacity:.9;transform:translateY(-1px)}.empty-state__action:active{transform:translateY(0)}.empty-state--sm{padding:2rem 1rem}.empty-state--sm .empty-state__icon{width:3rem;height:3rem;margin-bottom:1rem}.empty-state--sm .empty-state__icon svg{width:1.5rem;height:1.5rem}.empty-state--sm .empty-state__title{font-size:1rem}.empty-state--sm .empty-state__message{font-size:.8125rem}.empty-state--lg{padding:4rem 2rem}.empty-state--lg .empty-state__icon{width:5rem;height:5rem;margin-bottom:2rem}.empty-state--lg .empty-state__icon svg{width:2.5rem;height:2.5rem}.empty-state--lg .empty-state__title{font-size:1.5rem}.power-source-pie{display:flex;flex-direction:column;gap:10px;min-height:320px}.power-source-pie__body{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:stretch}.power-source-pie__chart{display:flex;align-items:center}.power-source-pie__header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.power-source-pie__total{font-family:var(--font-mono);font-weight:var(--fw-heavy);color:var(--g-text-strong);font-size:1.05rem}.power-source-pie__legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;font-size:.85rem;color:var(--g-text-muted)}.power-source-pie__legend-item{display:inline-flex;align-items:center;gap:8px;font-weight:var(--fw-semibold)}.power-source-pie__legend-item span{width:10px;height:10px;border-radius:50%;display:inline-block}@media (max-width: 720px){.power-source-pie{min-height:260px}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal, 1050);padding:1rem;animation:modal-fade-in .2s ease-out}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-primary, #fff);border-radius:var(--border-radius, .5rem);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;display:flex;flex-direction:column;max-height:calc(100vh - 2rem);width:100%;animation:modal-slide-up .2s ease-out}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}.modal-sm{max-width:400px}.modal-md{max-width:600px}.modal-lg{max-width:800px}.modal-xl{max-width:1200px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid var(--border-color, #e5e5ea);flex-shrink:0}.modal-title{margin:0;font-size:1.25rem;font-weight:600;color:var(--text-primary, #000)}.modal-close{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:transparent;border:none;border-radius:.375rem;color:var(--text-secondary, #6c6c70);font-size:1.25rem;cursor:pointer;transition:all .2s}.modal-close:hover{background:var(--bg-secondary, #f2f2f7);color:var(--text-primary, #000)}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.modal-footer{padding:1.5rem;border-top:1px solid var(--border-color, #e5e5ea);flex-shrink:0}.modal-footer-buttons{display:flex;align-items:center;justify-content:flex-end;gap:.75rem}@media (max-width: 768px){.modal-overlay{padding:0;align-items:flex-end}.modal{max-height:90vh;border-bottom-left-radius:0;border-bottom-right-radius:0;animation:modal-slide-up-mobile .3s ease-out}@keyframes modal-slide-up-mobile{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-sm,.modal-md,.modal-lg,.modal-xl{max-width:100%}}.table-container{display:flex;flex-direction:column;gap:1rem;width:100%}.table-wrapper{overflow-x:auto;border:1px solid var(--border-color, #e5e5ea);border-radius:var(--border-radius, .5rem)}.table{width:100%;border-collapse:collapse;background:var(--bg-primary, #fff)}.table-header{background:var(--bg-secondary, #f2f2f7);border-bottom:2px solid var(--border-color, #e5e5ea)}.table-header-cell{padding:.75rem 1rem;text-align:left;font-size:.875rem;font-weight:600;color:var(--text-primary, #000);white-space:nowrap}.table-header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.table-header-cell.sortable:hover{background:var(--bg-tertiary, #e8e8ed)}.table-header-content{display:flex;align-items:center;gap:.5rem}.sort-indicator{color:var(--text-secondary, #6c6c70);font-size:.75rem}.table-body{background:var(--bg-primary, #fff)}.table-row{border-bottom:1px solid var(--border-light, #f2f2f7);transition:background-color .2s}.table-row:last-child{border-bottom:none}.table-row.clickable{cursor:pointer}.table-row:hover{background:var(--bg-secondary, #f9f9fb)}.table-cell{padding:1rem;font-size:.875rem;color:var(--text-primary, #000)}.table-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;background:var(--bg-primary, #fff);border:1px solid var(--border-color, #e5e5ea);border-radius:var(--border-radius, .5rem)}.table-loading-spinner{width:2rem;height:2rem;border:3px solid var(--border-color, #e5e5ea);border-top-color:var(--color-primary, #007aff);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:1rem}.table-loading p{color:var(--text-secondary, #6c6c70);margin:0}.table-empty{display:flex;align-items:center;justify-content:center;padding:4rem 2rem;background:var(--bg-primary, #fff);border:1px solid var(--border-color, #e5e5ea);border-radius:var(--border-radius, .5rem)}.table-empty p{color:var(--text-secondary, #6c6c70);margin:0}.table-pagination{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;flex-wrap:wrap;gap:1rem}.pagination-info{font-size:.875rem;color:var(--text-secondary, #6c6c70)}.pagination-controls{display:flex;align-items:center;gap:.5rem}.pagination-button{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:var(--bg-primary, #fff);border:1px solid var(--border-color, #e5e5ea);border-radius:.375rem;color:var(--text-primary, #000);font-size:.875rem;cursor:pointer;transition:all .2s}.pagination-button:hover:not(:disabled){background:var(--bg-secondary, #f2f2f7);border-color:var(--text-secondary, #6c6c70)}.pagination-button:disabled{opacity:.4;cursor:not-allowed}.pagination-page{font-size:.875rem;color:var(--text-primary, #000);padding:0 .5rem}@media (max-width: 768px){.table-header-cell,.table-cell{padding:.75rem .5rem;font-size:.8125rem}.table-pagination{flex-direction:column;align-items:stretch}.pagination-controls{justify-content:center}}.form-group{margin-bottom:1.5rem}.form-label{display:block;font-size:.875rem;font-weight:500;color:var(--text-primary, #000);margin-bottom:.5rem}.form-label-required{color:var(--color-danger, #ff3b30);margin-left:.25rem}.form-input-wrapper{width:100%}.form-input,.form-textarea,.form-select{width:100%;padding:.625rem .875rem;font-size:.875rem;color:var(--text-primary, #000);background:var(--bg-primary, #fff);border:1px solid var(--border-color, #e5e5ea);border-radius:var(--border-radius, .375rem);transition:all .2s}.form-input:focus,.form-textarea:focus,.form-select:focus{outline:none;border-color:var(--color-primary, #007aff);box-shadow:0 0 0 3px #007aff1a}.form-input.error,.form-textarea.error,.form-select.error{border-color:var(--color-danger, #ff3b30)}.form-textarea{min-height:100px;resize:vertical}.form-error{display:block;margin-top:.375rem;font-size:.8125rem;color:var(--color-danger, #ff3b30)}.form-helper-text{display:block;margin-top:.375rem;font-size:.8125rem;color:var(--text-secondary, #6c6c70)}.form-checkbox-wrapper,.form-radio-wrapper{margin-bottom:.75rem}.form-checkbox-label,.form-radio-label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.form-checkbox,.form-radio{width:1.125rem;height:1.125rem;cursor:pointer}.form-checkbox-text,.form-radio-text{font-size:.875rem;color:var(--text-primary, #000)}.form-actions{display:flex;gap:.75rem;margin-top:2rem}.form-actions-left{justify-content:flex-start}.form-actions-center{justify-content:center}.form-actions-right{justify-content:flex-end}.ui-segmented{display:inline-flex;align-items:center;gap:6px;padding:3px;border-radius:var(--radius-pill, 999px);border:1px solid var(--control-border, var(--g-border, var(--color-border)));background:var(--control-bg, var(--ui-ghost-bg, var(--color-panel)))}.ui-segmented--full{width:100%;justify-content:space-between}.ui-segmented__btn{border:1px solid transparent;background:transparent;color:var(--control-text, var(--g-text-muted, var(--color-text-secondary)));font-weight:var(--fw-semibold, 600);border-radius:var(--radius-pill, 999px);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all .15s ease}.ui-segmented__btn:focus-visible{outline:2px solid var(--border-focus, var(--color-primary));outline-offset:2px}.ui-segmented__btn.is-active{color:var(--control-text-active, var(--g-text-strong, var(--color-text)));background:color-mix(in oklab,var(--color-primary) 18%,var(--g-panel-bg, var(--color-panel)));border-color:color-mix(in oklab,var(--color-primary) 40%,var(--g-border, var(--color-border)))}.ui-segmented--caps .ui-segmented__btn{text-transform:uppercase;letter-spacing:.12em}.ui-segmented--sm .ui-segmented__btn{font-size:.65rem;padding:4px 8px}.ui-segmented--md .ui-segmented__btn{font-size:.85rem;padding:6px 12px}.ui-select{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .6rem;border-radius:.5rem;border:1px solid var(--control-border, var(--g-border, var(--color-border)));background:var(--control-bg, var(--ui-ghost-bg, var(--color-panel)));color:var(--control-text, var(--g-text-muted, var(--color-text-secondary)));transition:border-color .15s ease,box-shadow .15s ease}.ui-select:focus-within{outline:2px solid var(--border-focus, var(--color-primary));outline-offset:2px}.ui-select__icon{display:inline-flex;align-items:center;color:var(--control-icon, var(--g-text-muted, var(--color-text-muted)))}.ui-select__icon--trailing{opacity:.7}.ui-select__field{border:none;background:transparent;color:inherit;font:inherit;padding:0;cursor:pointer;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0}.ui-select__field option{background:var(--g-panel-bg, var(--color-panel));color:var(--g-text-strong, var(--color-text))}.ui-select--caps{text-transform:uppercase;letter-spacing:.1em}.ui-select--sm{font-size:.7rem;font-weight:var(--fw-semibold, 600)}.ui-select--md{font-size:.85rem;font-weight:600}.loading-spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.loading-spinner__spinner{display:inline-block;position:relative;width:3rem;height:3rem}.loading-spinner__circle{box-sizing:border-box;display:block;position:absolute;width:2.5rem;height:2.5rem;margin:.25rem;border:.25rem solid var(--color-primary);border-radius:50%;animation:spinner-ripple 1.2s cubic-bezier(0,.2,.8,1) infinite;border-color:var(--color-primary) transparent transparent transparent}.loading-spinner__circle:nth-child(1){animation-delay:-.45s}.loading-spinner__circle:nth-child(2){animation-delay:-.3s}.loading-spinner__circle:nth-child(3){animation-delay:-.15s}@keyframes spinner-ripple{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-spinner__label{margin:0;font-size:.875rem;color:var(--color-muted);font-weight:500}.loading-spinner--sm .loading-spinner__spinner{width:2rem;height:2rem}.loading-spinner--sm .loading-spinner__circle{width:1.5rem;height:1.5rem;margin:.25rem;border-width:.1875rem}.loading-spinner--sm .loading-spinner__label{font-size:.75rem}.loading-spinner--lg .loading-spinner__spinner{width:4rem;height:4rem}.loading-spinner--lg .loading-spinner__circle{width:3.5rem;height:3.5rem;margin:.25rem;border-width:.3125rem}.loading-spinner--lg .loading-spinner__label{font-size:1rem}.loading-spinner__overlay{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background-color:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999}.loading-spinner__overlay .loading-spinner{background-color:var(--color-panel);border-radius:1rem;padding:2rem 3rem;box-shadow:0 25px 50px #00000040}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center}.error-state__icon{width:4rem;height:4rem;margin-bottom:1.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:#ef44441a}.error-state__icon svg{width:2rem;height:2rem;color:var(--color-critical)}.error-state__title{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:var(--color-text)}.error-state__message{margin:0 0 1.5rem;font-size:.875rem;color:var(--color-muted);max-width:400px;line-height:1.5}.error-state__details{margin:0 0 1.5rem;max-width:600px;text-align:left}.error-state__details-toggle{padding:.5rem 1rem;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:.5rem;font-size:.8125rem;color:var(--color-muted);cursor:pointer;transition:all .2s ease}.error-state__details-toggle:hover{background-color:var(--color-panel);color:var(--color-text)}.error-state__details-content{margin-top:.75rem;padding:1rem;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:.5rem;font-size:.75rem;font-family:var(--font-mono);color:var(--color-critical);overflow-x:auto;white-space:pre-wrap;word-break:break-word}.error-state__action{display:inline-flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;background-color:var(--color-critical);color:#fff;border:none;border-radius:.5rem;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.error-state__action:hover{opacity:.9;transform:translateY(-1px)}.error-state__action:active{transform:translateY(0)}.error-state__action svg{width:1rem;height:1rem}.energy-period-chart{display:flex;flex-direction:column;gap:8px}.energy-period-chart__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.energy-period-chart__title{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;font-weight:var(--fw-semibold);color:var(--g-text-muted)}.energy-period-chart__header .ui-segmented{margin-left:auto}@media (max-width: 720px){.energy-period-chart__header{flex-direction:column;align-items:flex-start}.energy-period-chart__header .ui-segmented{width:100%;justify-content:space-between}}.energy-summary-table{display:flex;flex-direction:column;gap:10px}.energy-summary-table__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.energy-summary-table__title{font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;font-weight:var(--fw-semibold);color:var(--g-text-muted)}.energy-summary-table__subtitle{font-size:.9rem;color:var(--g-text-muted)}.energy-summary-table__meta{font-size:.8rem;color:var(--g-text-muted)}@media (max-width: 900px){.energy-summary-table__header{flex-direction:column;align-items:flex-start}}.universal-echart{width:100%;background-color:var(--color-panel);border:1px solid var(--color-border);border-radius:.75rem;padding:1rem;margin-bottom:1.25rem;box-shadow:0 1px 2px #00000008;transition:box-shadow .2s ease}.universal-echart:hover{box-shadow:0 3px 8px #0000000f}.universal-echart__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem;padding-bottom:.5rem;gap:.75rem;flex-wrap:wrap;border-bottom:1px solid var(--color-border)}.universal-echart__title-section{flex-shrink:0}.universal-echart__title{display:flex;align-items:center;gap:.5rem;margin:0 0 .25rem;font-size:1.125rem;font-weight:600;color:var(--color-text)}.universal-echart__live-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.125rem .5rem;background:linear-gradient(135deg,#10b981,#059669);border:1px solid rgba(16,185,129,.4);border-radius:.25rem;font-size:.625rem;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 1px 4px #10b98133}.universal-echart__live-dot{width:.4rem;height:.4rem;border-radius:50%;background-color:#fff;box-shadow:0 0 4px #fffc;animation:live-pulse 1.5s cubic-bezier(.4,0,.6,1) infinite}@keyframes live-pulse{0%,to{opacity:1;box-shadow:0 0 4px #fffc;transform:scale(1)}50%{opacity:.7;box-shadow:0 0 8px #fff;transform:scale(.85)}}.universal-echart__subtitle{font-size:.8125rem;color:var(--color-text-secondary);line-height:1.3;font-weight:500}.universal-echart__persona-selector{display:inline-flex;gap:.1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:.5rem;padding:.2rem;box-shadow:0 1px 2px #0000000a}.universal-echart__persona-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.3rem;padding:.25rem .5rem;background:transparent;border:none;border-radius:.375rem;color:var(--color-text-secondary);font-size:.65rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);text-transform:capitalize;overflow:hidden;white-space:nowrap}.universal-echart__persona-btn:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark, var(--color-primary)) 100%);opacity:0;transition:opacity .25s ease;border-radius:.625rem;z-index:0}.universal-echart__persona-btn>*{position:relative;z-index:1}.universal-echart__persona-btn:hover{color:var(--color-text);background:var(--color-panel)}.universal-echart__persona-btn:hover:before{opacity:.06}.universal-echart__persona-btn.active{color:#fff;box-shadow:0 2px 6px #3b82f640}.universal-echart__persona-btn.active:before{opacity:1}.universal-echart__persona-icon{width:1rem;height:1rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.universal-echart__persona-btn svg{width:.875rem;height:.875rem;transition:all .2s ease;opacity:.8}.universal-echart__persona-btn:hover svg{opacity:1;transform:scale(1.1)}.universal-echart__persona-btn.active svg{opacity:1;color:#fff}.universal-echart__persona-label{font-size:.65rem;font-weight:600;line-height:1}.universal-echart__controls,.universal-echart__controls-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin-bottom:.5rem}.universal-echart__control-group{display:flex;align-items:center;gap:.35rem}.universal-echart__control-label{font-size:.62rem;font-weight:600;color:var(--color-text-secondary);white-space:nowrap;text-transform:uppercase;letter-spacing:.02em}.universal-echart__button-group{display:flex;gap:.25rem;background-color:transparent;border-radius:.5rem;padding:0;border:none}.universal-echart__btn,.universal-echart__option-btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.35rem .65rem;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:.5rem;color:var(--color-text-secondary);font-size:.72rem;font-weight:600;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.universal-echart__option-btn{padding:.3rem;min-width:2.25rem;min-height:2.25rem}@media (max-width: 900px){.universal-echart__control-label{display:none}}.universal-echart__btn:before,.universal-echart__option-btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-primary);opacity:0;transition:opacity .15s ease;z-index:0}.universal-echart__btn:hover,.universal-echart__option-btn:hover{background-color:var(--color-panel);border-color:var(--color-primary);color:var(--color-primary);transform:translateY(-1px);box-shadow:0 2px 8px #00000014}.universal-echart__btn:hover:before,.universal-echart__option-btn:hover:before{opacity:.06}.universal-echart__btn:active,.universal-echart__option-btn:active{transform:translateY(0);box-shadow:0 1px 2px #0000000d}.universal-echart__btn.active,.universal-echart__option-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;box-shadow:0 2px 8px #3b82f640,0 0 0 3px #3b82f61a;transform:translateY(-1px)}.universal-echart__btn.active:before,.universal-echart__option-btn.active:before{opacity:0}.universal-echart__btn.active:hover,.universal-echart__option-btn.active:hover{background:var(--color-primary-hover, #2563eb);box-shadow:0 4px 12px #3b82f64d,0 0 0 3px #3b82f626}.universal-echart__btn svg,.universal-echart__option-btn svg{width:1.125rem;height:1.125rem;opacity:.8;color:inherit;position:relative;z-index:1;transition:opacity .15s ease;fill:currentColor}.universal-echart__btn:hover svg,.universal-echart__option-btn:hover svg{opacity:1}.universal-echart__btn.active svg,.universal-echart__option-btn.active svg{opacity:1;color:#fff}.universal-echart__option-btn svg path,.universal-echart__option-btn svg rect,.universal-echart__option-btn svg circle,.universal-echart__option-btn svg line{fill:currentColor;stroke:currentColor}.universal-echart__grafana-selector{position:relative;display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--color-panel);border:1px solid var(--color-border);border-radius:.375rem;cursor:pointer;transition:all .2s ease}.universal-echart__grafana-selector:hover{border-color:var(--color-primary);background:var(--color-bg);box-shadow:0 2px 8px #3b82f626}.universal-echart__grafana-selector svg:first-child{width:1rem;height:1rem;color:var(--color-text-secondary)}.universal-echart__grafana-selector svg:last-child{width:.875rem;height:.875rem;color:var(--color-text-muted);opacity:.7;pointer-events:none}.universal-echart__grafana-select{background:transparent;border:none;color:var(--color-text);font-size:.875rem;font-weight:500;padding:0 .25rem;cursor:pointer;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:140px}.universal-echart__grafana-select:focus{outline:none}.universal-echart__grafana-select option{background:var(--color-panel);color:var(--color-text);padding:.5rem}.universal-echart__select .ui-select__field{min-width:140px}.universal-echart__export-btn{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;background:var(--color-primary);border:1px solid var(--color-primary);border-radius:.5rem;color:#fff;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s ease}.universal-echart__export-btn:hover{background:var(--color-primary-dark, var(--color-primary));transform:translateY(-1px);box-shadow:0 2px 8px #3b82f64d}.universal-echart__export-btn svg{width:.875rem;height:.875rem}.universal-echart__menu-container{position:relative}.universal-echart__menu-btn{display:flex;align-items:center;justify-content:center;padding:.5rem;background:var(--color-panel);border:1px solid var(--color-border);border-radius:.375rem;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease;min-width:36px;height:36px}.universal-echart__menu-btn:hover{background:var(--color-surface);color:var(--color-primary);border-color:var(--color-primary)}.universal-echart__menu-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.universal-echart__menu-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999;background:transparent}.universal-echart__menu{position:absolute;top:calc(100% + .5rem);right:0;width:240px;max-height:400px;overflow-y:auto;background:var(--color-panel);border:1px solid var(--color-border);border-radius:.5rem;box-shadow:0 4px 12px #00000026;z-index:1000;animation:slideDown .2s ease}.universal-echart__menu-header{padding:.75rem 1rem;font-size:.875rem;font-weight:600;color:var(--color-text);border-bottom:1px solid var(--color-border);background:var(--color-surface)}.universal-echart__menu-section{padding:.5rem 0}.universal-echart__menu-section-title{padding:.5rem 1rem;font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--color-text-secondary);letter-spacing:.05em}.universal-echart__menu-item{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;cursor:pointer;transition:background .15s ease;border:none;background:transparent;width:100%;text-align:left;font-size:.875rem}.universal-echart__menu-item:hover{background:var(--color-surface)}.universal-echart__menu-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary)}.universal-echart__menu-item-icon{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:var(--color-text-secondary)}.universal-echart__menu-item-label{flex:1;color:var(--color-text);font-size:.875rem}.universal-echart__menu-action{font-weight:500;color:var(--color-primary)}.universal-echart__menu-action:hover{background:var(--color-primary-subtle, rgba(59, 130, 246, .1))}.universal-echart__menu-divider{height:1px;background:var(--color-border);margin:.5rem 0}.universal-echart__statistics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-bottom:1rem;padding:.75rem;background:var(--color-surface);border-radius:.5rem;border:1px solid var(--color-border)}.universal-echart__stat-card{padding:.625rem .75rem;background:var(--color-bg);border-radius:.375rem;border:1px solid var(--color-border)}.universal-echart__stat-label{font-size:.75rem;font-weight:600;color:var(--color-text);margin-bottom:.375rem}.universal-echart__stat-values{display:flex;flex-direction:column;gap:.25rem}.universal-echart__stat-item{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem}.universal-echart__stat-name{color:var(--color-text-secondary);font-weight:500;font-size:.6875rem}.universal-echart__stat-value{color:var(--color-text);font-weight:700;font-family:var(--font-mono);font-size:.75rem}.universal-echart__chart-wrapper{background:var(--color-bg);border:1px solid var(--color-border);border-radius:.5rem;padding:1rem;margin-top:.75rem;box-shadow:0 1px 2px #0000000a}.universal-echart__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;color:var(--color-muted)}.universal-echart__empty svg{width:3rem;height:3rem;margin-bottom:1rem;opacity:.5}.universal-echart__empty p{margin:0;font-size:.875rem}@media (max-width: 1200px){.universal-echart__controls,.universal-echart__controls-row{flex-direction:column;align-items:flex-start;gap:.75rem}.universal-echart__control-group{width:100%;justify-content:space-between}.universal-echart__persona-selector{width:100%}.universal-echart__persona-btn{flex:1;justify-content:center}}@media (max-width: 768px){.universal-echart{padding:1rem}.universal-echart__header{flex-direction:column;align-items:flex-start}.universal-echart__title{font-size:1rem}.universal-echart__persona-selector{flex-direction:column}.universal-echart__statistics{grid-template-columns:1fr}}.solar-performance-chart{background:var(--color-panel);border:1px solid var(--color-border);border-radius:.75rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;position:relative}.solar-performance-chart__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;gap:1rem}.solar-performance-chart__spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.solar-performance-chart__loading p{margin:0;color:var(--color-text-secondary);font-size:.875rem}.solar-performance-chart__error{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--color-warning-subtle, rgba(245, 158, 11, .1));border:1px solid var(--color-warning, #f59e0b);border-radius:.5rem;margin-bottom:1rem}.solar-performance-chart__error svg{width:1.25rem;height:1.25rem;color:var(--color-warning, #f59e0b);flex-shrink:0}.solar-performance-chart__error p{margin:0;color:var(--color-text);font-size:.875rem;font-weight:500}.solar-performance-chart__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.solar-performance-chart__notice{padding:.65rem .9rem;border-radius:.5rem;border:1px solid var(--color-border);background:color-mix(in oklab,var(--color-panel) 85%,var(--color-surface));color:var(--color-text-secondary);font-size:.85rem;margin-bottom:1rem}.solar-performance-chart__title{display:flex;align-items:center;gap:.75rem}.solar-performance-chart__title h3{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}.solar-performance-chart__title svg{width:1.5rem;height:1.5rem;color:var(--color-primary)}.solar-performance-chart__controls{display:flex;align-items:center;gap:1rem}.solar-performance-chart__controls .ui-segmented{background:var(--color-surface)}.solar-performance-chart__menu-container{position:relative}.solar-performance-chart__menu-btn{display:flex;align-items:center;justify-content:center;padding:.5rem;background:var(--color-panel);border:1px solid var(--color-border);border-radius:.375rem;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease;min-width:36px;height:36px}.solar-performance-chart__menu-btn:hover{background:var(--color-surface);color:var(--color-primary);border-color:var(--color-primary)}.solar-performance-chart__menu-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.solar-performance-chart__menu-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999;background:transparent}.solar-performance-chart__menu{position:absolute;top:calc(100% + .5rem);right:0;width:240px;max-height:400px;overflow-y:auto;background:var(--color-panel);border:1px solid var(--color-border);border-radius:.5rem;box-shadow:0 4px 12px #00000026;z-index:1000;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.solar-performance-chart__menu-header{padding:.75rem 1rem;font-size:.875rem;font-weight:600;color:var(--color-text);border-bottom:1px solid var(--color-border);background:var(--color-surface)}.solar-performance-chart__menu-section{padding:.5rem 0}.solar-performance-chart__menu-section-title{padding:.5rem 1rem;font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--color-text-secondary);letter-spacing:.05em}.solar-performance-chart__menu-item{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;cursor:pointer;transition:background .15s ease;border:none;background:transparent;width:100%;text-align:left;font-size:.875rem}.solar-performance-chart__menu-item:hover{background:var(--color-surface)}.solar-performance-chart__menu-item input[type=radio],.solar-performance-chart__menu-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary)}.solar-performance-chart__menu-item-icon{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:var(--color-text-secondary)}.solar-performance-chart__menu-item-label{flex:1;color:var(--color-text);font-size:.875rem}.solar-performance-chart__menu-action{font-weight:500;color:var(--color-primary)}.solar-performance-chart__menu-action:hover{background:var(--color-primary-subtle, rgba(59, 130, 246, .1))}.solar-performance-chart__menu-divider{height:1px;background:var(--color-border);margin:.5rem 0}.solar-performance-chart__chart-wrapper{margin:0 -.5rem}.solar-performance-chart__summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1.5rem;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.solar-performance-chart__stat{text-align:center}.solar-performance-chart__stat-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin-bottom:.5rem}.solar-performance-chart__stat-value{font-size:1.5rem;font-weight:700;color:var(--color-text);font-family:var(--font-mono, monospace)}.solar-performance-chart__stat-value.positive{color:var(--color-success, #10b981)}.solar-performance-chart__stat-value.negative{color:var(--color-error, #ef4444)}@media (max-width: 768px){.solar-performance-chart__header{flex-direction:column;align-items:flex-start}.solar-performance-chart__controls{width:100%;justify-content:space-between}.solar-performance-chart__summary{grid-template-columns:repeat(2,1fr);gap:1rem}.solar-performance-chart__chart-wrapper{margin:0 -1rem}}.scada-dashboard{display:flex;flex-direction:column;gap:16px}.dashboard-loading{min-height:320px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;background:var(--g-panel);border:1px solid var(--g-border);border-radius:16px}.dashboard-loading__spinner{width:36px;height:36px;border-radius:999px;border:3px solid color-mix(in srgb,var(--g-border) 60%,transparent);border-top-color:var(--g-accent);animation:shell-spin .9s linear infinite}.dashboard-loading__text{font-size:.95rem;color:var(--g-text-muted)}.dash-muted-message{color:var(--g-text-muted);font-weight:800}.dash-muted-message--spaced{margin-bottom:10px}.dash-panel-right{color:var(--g-text-muted);font-size:.85rem}.power-flow-mode{display:inline-flex;align-items:center;padding:4px 10px;border-radius:var(--radius-pill);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:var(--fw-semibold)}.power-flow-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:16px;align-items:stretch}.power-flow-row__pie,.power-flow-row__chart{border:1px solid var(--g-border);background:var(--ui-soft-bg);border-radius:calc(var(--radius-card) - 6px);padding:10px 12px}@media (max-width: 1100px){.power-flow-row{grid-template-columns:1fr}}.scada-gridback{background-image:radial-gradient(circle at 25% 10%,color-mix(in oklab,var(--color-primary) 12%,transparent) 0%,transparent 42%),radial-gradient(circle at 85% 15%,color-mix(in oklab,var(--color-success) 10%,transparent) 0%,transparent 45%),linear-gradient(to right,color-mix(in oklab,var(--scada-gridline) 55%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in oklab,var(--scada-gridline) 55%,transparent) 1px,transparent 1px);background-size:auto,auto,30px 30px,30px 30px;background-position:center}.scada-dashboard__topline{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:flex-end;padding:6px 4px}.scada-dashboard__headline{display:flex;flex-direction:column;gap:4px}.scada-dashboard__eyebrow{margin:0;font-size:clamp(.68rem,.62rem + .35vw,.78rem);letter-spacing:.14em;text-transform:uppercase;color:var(--scada-text-muted)}.scada-dashboard__chips{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.data-mode-toggle{display:inline-flex;align-items:center;border:1px solid var(--g-border);border-radius:999px;background:color-mix(in srgb,var(--g-panel) 80%,var(--g-bg) 20%);padding:2px;gap:2px}.data-mode-toggle__btn{border:0;background:transparent;color:var(--g-text-muted);font-size:.8rem;padding:6px 12px;border-radius:999px;cursor:pointer}.data-mode-toggle__btn.is-active{background:var(--g-accent);color:var(--g-on-accent);font-weight:600}.data-status-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;border:1px solid var(--g-border);background:color-mix(in srgb,var(--g-panel) 88%,var(--g-bg) 12%);font-size:.78rem;color:var(--g-text-muted)}.data-status-chip__label{text-transform:uppercase;letter-spacing:.08em;font-weight:600;font-size:.68rem}.data-status-chip__value{font-weight:600;color:var(--g-text)}.data-status-chip--current{border-color:color-mix(in srgb,var(--color-success) 60%,var(--g-border))}.data-status-chip--stale{border-color:color-mix(in srgb,var(--color-warning) 60%,var(--g-border))}.data-status-chip--old,.data-status-chip--no_data,.data-status-chip--offline{border-color:color-mix(in srgb,var(--color-danger) 60%,var(--g-border))}.dashboard-diagnostics{background:color-mix(in srgb,var(--g-panel) 92%,var(--g-bg) 8%)}.diag-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--g-border)}.diag-pill--polling{color:var(--color-warning);border-color:color-mix(in srgb,var(--color-warning) 40%,var(--g-border));background:color-mix(in srgb,var(--color-warning) 12%,var(--g-panel))}.diag-pill--realtime{color:var(--color-success);border-color:color-mix(in srgb,var(--color-success) 40%,var(--g-border));background:color-mix(in srgb,var(--color-success) 12%,var(--g-panel))}.diagnostics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:14px}.diagnostics-stat{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--g-bg) 70%,var(--g-panel));border:1px solid var(--g-border)}.diagnostics-stat__label{font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--g-text-muted);font-weight:700}.diagnostics-stat__value{font-size:1.1rem;font-weight:700;color:var(--g-text)}.diagnostics-stat__meta{font-size:.78rem;color:var(--g-text-muted)}.diagnostics-list{display:flex;flex-direction:column;gap:8px}.diagnostics-list__title{font-size:.82rem;font-weight:700;color:var(--g-text);text-transform:uppercase;letter-spacing:.12em}.diagnostics-rows{display:flex;flex-direction:column;gap:6px}.diagnostics-row{display:grid;grid-template-columns:56px minmax(0,1fr) 72px 80px 60px;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;border:1px solid var(--g-border);background:color-mix(in srgb,var(--g-panel) 88%,var(--g-bg) 12%);font-size:.8rem;color:var(--g-text-muted)}.diagnostics-row.is-ok{border-color:color-mix(in srgb,var(--color-success) 28%,var(--g-border))}.diagnostics-row.is-error{border-color:color-mix(in srgb,var(--color-critical) 32%,var(--g-border))}.diagnostics-row__method{font-weight:700;color:var(--g-text)}.diagnostics-row__url{color:var(--g-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diagnostics-row__status,.diagnostics-row__latency,.diagnostics-row__age{text-align:right;font-variant-numeric:tabular-nums}.diagnostics-empty{padding:10px 12px;border-radius:10px;border:1px dashed var(--g-border);color:var(--g-text-muted)}@media (max-width: 720px){.diagnostics-row{grid-template-columns:1fr 60px 60px;grid-template-areas:"method method method" "url url url" "status latency age"}.diagnostics-row__method{grid-area:method}.diagnostics-row__url{grid-area:url}.diagnostics-row__status{grid-area:status}.diagnostics-row__latency{grid-area:latency}.diagnostics-row__age{grid-area:age}}.scada-dashboard__grid{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}.scada-dashboard__main{display:flex;flex-direction:column;gap:16px}.dash-wide-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.dash-span-4{grid-column:span 4}.dash-span-6{grid-column:span 6}.dash-span-8{grid-column:span 8}.dash-span-12{grid-column:span 12}@media (max-width: 980px){.dash-span-4,.dash-span-6,.dash-span-8,.dash-span-12{grid-column:span 12}}.scada-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.dash-energy-exec{margin-top:14px}.g-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.scada-trend-row{display:grid;grid-template-columns:1fr;gap:10px}.dash-trend-stack{display:flex;flex-direction:column;gap:12px}.dash-trend-subtitle{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--g-text-muted);font-weight:var(--fw-semibold);margin-top:2px}.dash-forecast-disabled{margin-top:6px;font-size:.78rem;color:var(--g-text-muted)}.scada-alerts{display:flex;flex-direction:column;gap:10px}.scada-alert{display:flex;justify-content:space-between;gap:12px;padding:12px;border-radius:calc(var(--radius-card) - 4px);border:1px solid var(--scada-border);background:var(--ui-ghost-bg)}.scada-alert__title{font-weight:var(--fw-semibold);color:var(--scada-text-strong)}.scada-alert__meta{margin-top:4px;color:var(--scada-text-muted);font-size:clamp(.8rem,.74rem + .35vw,.92rem);display:flex;gap:8px;flex-wrap:wrap}.scada-alert__badge{border-radius:var(--radius-pill);padding:2px 8px;border:1px solid var(--scada-border);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.scada-alert__badge--critical,.scada-alert__badge--alarm{border-color:var(--tone-critical-bg);color:var(--color-critical)}.scada-alert__badge--warning{border-color:var(--tone-warning-bg);color:var(--color-warning)}.scada-alert__badge--info{border-color:var(--tone-primary-bg);color:var(--color-primary)}@media (max-width: 980px){.scada-dashboard__grid{grid-template-columns:1fr}.g-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 560px){.scada-dashboard{gap:12px}.scada-dashboard__topline{padding:0;align-items:flex-start}.scada-dashboard__chips{justify-content:flex-start;gap:6px}.scada-kpi-grid,.g-stat-grid,.dash-shortcuts{grid-template-columns:1fr}}.g-panel{background:var(--g-panel-bg);border:1px solid var(--g-border);border-radius:var(--radius-card);box-shadow:var(--shadow-sm);overflow:visible}.g-panel__header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:12px 14px;background:var(--g-panel-header);border-bottom:1px solid var(--g-border);position:relative}.g-panel__title-row{display:inline-flex;align-items:center;gap:8px}.g-panel__title{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--g-text-strong);font-weight:var(--fw-bold)}.g-panel__desc{margin-top:6px;color:var(--g-text-muted);font-size:.85rem}.g-panel__right{display:inline-flex;align-items:center;gap:10px}.g-panel__body{padding:12px 14px 14px}.g-stat{background:var(--ui-soft-bg);border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 4px);padding:12px;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden}.g-stat--withTrend{background:linear-gradient(180deg,color-mix(in oklab,var(--ui-soft-bg) 76%,transparent),var(--ui-soft-bg))}.g-stat__trend{position:absolute;top:0;right:0;bottom:0;left:0;padding:6px;pointer-events:none;opacity:.28}.g-stat__trend .sparkline{width:100%;height:100%}.g-stat__trend-secondary{position:absolute;top:0;right:0;bottom:0;left:0;padding:6px;opacity:.55}.g-stat__trend-secondary .sparkline__area{opacity:0}.g-stat__top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;position:relative;z-index:1}.g-stat__label{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--g-text-muted);font-weight:var(--fw-semibold);display:inline-flex;gap:8px;align-items:center}.g-stat__icon{display:inline-flex;color:var(--g-text-muted)}.g-stat__selector{border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;padding:4px 8px;border-radius:var(--radius-pill);font-weight:var(--fw-semibold)}.g-stat__selector:focus{outline:2px solid var(--border-focus);outline-offset:2px}.g-stat__delta{font-family:var(--font-mono);font-size:.78rem;font-weight:var(--fw-bold);color:var(--g-text-muted);background:color-mix(in oklab,var(--g-panel-bg) 75%,transparent);border:1px solid color-mix(in oklab,var(--g-border) 70%,transparent);padding:4px 8px;border-radius:999px;white-space:nowrap}.g-stat__delta--up{color:color-mix(in oklab,var(--color-success) 75%,var(--g-text-muted));border-color:color-mix(in oklab,var(--color-success) 30%,var(--g-border))}.g-stat__delta--down{color:color-mix(in oklab,var(--color-critical) 72%,var(--g-text-muted));border-color:color-mix(in oklab,var(--color-critical) 30%,var(--g-border))}.g-stat__value{font-family:var(--font-mono);font-size:1.55rem;font-weight:var(--fw-heavy);color:var(--g-text-strong);position:relative;z-index:1}.g-stat__sub{color:var(--g-text-muted);font-size:.85rem;position:relative;z-index:1}.g-stat--ok{border-color:var(--tone-success-bg)}.g-stat--warn{border-color:var(--tone-warning-bg)}.g-stat--crit{border-color:var(--tone-critical-bg)}.g-stat--primary{border-color:var(--tone-primary-bg)}.g-bargauge{display:flex;flex-direction:column;gap:8px}.g-bargauge__top{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.g-bargauge__label{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--g-text-muted);font-weight:var(--fw-semibold)}.g-bargauge__value{font-family:var(--font-mono);color:var(--g-text-strong);font-weight:var(--fw-heavy)}.g-bargauge--ok{--g-bargauge-color: var(--g-positive)}.g-bargauge--warn{--g-bargauge-color: var(--g-warning)}.g-bargauge--crit{--g-bargauge-color: var(--g-danger)}.g-bargauge__progress{width:100%;height:10px;border-radius:var(--radius-pill);border:1px solid var(--g-border);background:var(--ui-ghost-bg);overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}.g-bargauge__progress::-webkit-progress-bar{background:var(--ui-ghost-bg)}.g-bargauge__progress::-webkit-progress-value{background:var(--g-bargauge-color);border-radius:var(--radius-pill)}.g-bargauge__progress::-moz-progress-bar{background:var(--g-bargauge-color);border-radius:var(--radius-pill)}.device-source-indicator{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:var(--radius-pill);font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;font-weight:var(--fw-semibold);border:1px solid currentColor;background:transparent;line-height:1;white-space:nowrap}.device-status-indicator{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:var(--radius-pill);font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;font-weight:var(--fw-semibold);border:1px solid transparent;line-height:1;white-space:nowrap}.device-status-indicator--md{padding:6px 10px;font-size:.7rem}.device-status-indicator--normal{color:var(--color-success);background:var(--tone-success-bg);border-color:var(--color-success)}.device-status-indicator--warning,.device-status-indicator--maintenance{color:var(--color-warning);background:var(--tone-warning-bg);border-color:var(--color-warning)}.device-status-indicator--critical{color:var(--color-critical);background:var(--tone-critical-bg);border-color:var(--color-critical)}.device-status-indicator--offline,.device-status-indicator--inactive{color:var(--g-text-muted);background:var(--ui-ghost-bg);border-color:var(--g-border)}.device-ops{display:flex;flex-direction:column;gap:18px}.device-ops__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;align-items:start}.device-ops__panel{min-width:0}.device-ops__panel--summary,.device-ops__panel--groups,.device-ops__panel--trend,.device-ops__panel--table{grid-column:1 / -1}.device-ops__panel--status,.device-ops__panel--sources,.device-ops__panel--freshness,.device-ops__panel--alerts{grid-column:span 6}.device-ops__summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.device-ops__signals{margin-top:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.device-ops__chart{height:240px;width:100%}.device-ops__chart--tall{height:320px}.device-ops__chart--trend{height:300px}.device-ops__filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}.device-ops__segment{display:inline-flex;align-items:center;gap:6px}.device-ops__segment-dot{width:8px;height:8px;border-radius:999px;box-shadow:0 0 0 1px var(--g-border)}.device-ops__segment-count{font-family:var(--font-mono);font-weight:var(--fw-semibold);color:var(--g-text-strong)}.device-ops__directory-actions{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}.device-ops__search{border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-strong);padding:9px 10px;min-width:220px}.device-ops__export,.device-ops__clear{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.device-ops__table{--bg-primary: var(--g-panel-bg);--bg-secondary: var(--ui-soft-bg);--bg-tertiary: var(--ui-ghost-bg);--text-primary: var(--g-text-strong);--text-secondary: var(--g-text-muted);--border-color: var(--g-border);--border-light: var(--g-border);--border-radius: calc(var(--radius-card) - 6px)}.device-ops__device-cell{display:flex;flex-direction:column;gap:4px}.device-ops__device-title{font-weight:var(--fw-bold);color:var(--g-text-strong)}.device-ops__device-meta{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--g-text-muted)}.device-ops__mono{font-family:var(--font-mono);font-weight:var(--fw-semibold);color:var(--g-text-strong)}.device-ops__alert-count{display:inline-flex;align-items:center;justify-content:center;min-width:34px;padding:4px 8px;border-radius:var(--radius-pill);background:var(--ui-ghost-bg);color:var(--g-text-muted);font-family:var(--font-mono);font-weight:var(--fw-semibold);border:1px solid transparent}.device-ops__alert-count.is-active{background:var(--tone-warning-bg);color:var(--color-warning);border-color:var(--color-warning)}@media (max-width: 1200px){.device-ops__summary{grid-template-columns:repeat(2,minmax(0,1fr))}.device-ops__panel--status,.device-ops__panel--sources,.device-ops__panel--freshness,.device-ops__panel--alerts{grid-column:1 / -1}.device-ops__signals{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.device-ops__summary,.device-ops__signals{grid-template-columns:minmax(0,1fr)}.device-ops__directory-actions{width:100%}.device-ops__filters{align-items:stretch}.device-ops__search{min-width:0;width:100%}.device-ops__export{width:100%}.device-ops__chart{height:220px}.device-ops__chart--tall,.device-ops__chart--trend{height:260px}}.device-detail__navigator{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:16px;padding:12px 14px;border-radius:var(--radius-card);border:1px solid var(--g-border);background:var(--ui-soft-bg)}.device-detail__navigator-title{display:flex;flex-direction:column;gap:4px}.device-detail__navigator-count{margin:0;color:var(--g-text-muted);font-size:.85rem}.device-detail__navigator-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.device-detail__navigator-select{min-width:260px;flex:1 1 300px}.device-detail__navigator-actions{display:inline-flex;align-items:center;gap:8px}.device-detail__top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:16px}.device-detail__label{margin:0;color:var(--color-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em}.device-detail__title{margin:4px 0 0;font-size:1.4rem}.device-detail__subtitle{margin:4px 0 0;color:var(--color-muted);font-size:.9rem}.device-detail__grid{display:grid;grid-template-columns:1fr;gap:16px}.device-detail__section-gap{margin-top:12px}.device-detail__span{grid-column:1 / -1}.device-detail__search{border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-strong);padding:9px 10px;min-width:220px}.device-detail__paramlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.device-param{border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 6px);background:var(--ui-soft-bg);padding:10px;display:flex;justify-content:space-between;gap:10px;align-items:center}.device-param__key{font-family:var(--font-mono);font-size:.8rem;color:var(--g-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.device-param__val{display:inline-flex;gap:6px;align-items:baseline;font-family:var(--font-mono)}.device-param__right{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto}.device-param__btn{width:34px;height:34px;border-radius:12px;border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-muted);display:grid;place-items:center;cursor:pointer}.device-param__btn.active{border-color:var(--nav-item-active-border);background:var(--nav-item-active-bg);color:var(--g-text-strong)}.device-param__btn:hover:not(.active){color:var(--g-text-strong)}.device-param__num{font-weight:var(--fw-heavy);color:var(--g-text-strong)}.device-param__unit{color:var(--g-text-muted);font-size:.8rem}.device-param--warn{border-color:var(--tone-warning-bg)}.device-param--warn .device-param__num{color:var(--color-warning)}.device-param--alarm{border-color:var(--tone-critical-bg);animation:alarmPulse 1.1s ease-in-out infinite}.device-param--alarm .device-param__num{color:var(--color-critical)}@keyframes alarmPulse{0%{box-shadow:0 0 0 0 transparent;transform:translateZ(0)}50%{box-shadow:0 0 0 6px var(--tone-critical-bg)}to{box-shadow:0 0 0 0 transparent}}.device-detail__trend-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.device-detail__trend-add{display:inline-flex;gap:8px;align-items:center}.device-detail__trend-add input{border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-strong);padding:9px 10px;min-width:220px}.device-detail__trend-chips{display:flex;gap:8px;flex-wrap:wrap}.device-detail__trend-style{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.trend-chip{display:inline-flex;gap:10px;align-items:center;border-radius:var(--radius-pill);border:1px solid var(--nav-item-active-border);background:var(--nav-item-active-bg);color:var(--g-text-strong);padding:6px 10px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;cursor:pointer}.trend-chip input{accent-color:var(--color-primary)}.trend-chip--off{border-color:var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-muted)}.trend-chip__x{opacity:.9}.device-detail__trend-grid{margin-top:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.trend-mini{border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 6px);background:var(--ui-soft-bg);padding:10px}.trend-mini__top{display:flex;justify-content:space-between;gap:10px;align-items:baseline;margin-bottom:8px}.trend-mini__label{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--g-text-muted);font-weight:var(--fw-semibold)}.trend-mini__value{font-family:var(--font-mono);color:var(--g-text-strong);font-weight:var(--fw-heavy)}.device-detail__stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.metric-label{color:var(--color-muted);font-size:.8rem}.metric-value{display:block;margin-top:4px;font-size:1.05rem;color:var(--color-text)}.metric-footnote{margin:10px 0 0;color:var(--color-muted);font-size:.85rem}.alert-list{display:flex;flex-direction:column;gap:10px}.alert-row{display:flex;justify-content:space-between;gap:12px;padding:12px;border-radius:calc(var(--radius-card) - 4px);border:1px solid var(--g-border);background:var(--ui-soft-bg)}.alert-title{display:block;margin-bottom:4px}.alert-meta{display:flex;flex-wrap:wrap;gap:8px;color:var(--color-muted);font-size:.8rem}.badge{border-radius:var(--radius-pill);padding:2px 8px;font-size:.75rem;text-transform:uppercase}.badge--critical,.badge--alarm{background:var(--tone-critical-bg);color:var(--color-critical)}.badge--warning{background:var(--tone-warning-bg);color:var(--color-warning)}.badge--info{background:var(--tone-primary-bg);color:var(--color-primary)}@media (max-width: 640px){.device-detail__navigator{align-items:stretch;flex-direction:column}.device-detail__navigator-controls{justify-content:space-between}.device-detail__navigator-actions{width:100%;justify-content:space-between}.device-detail__navigator-select{width:100%}.device-detail__top{flex-direction:column}.device-detail__stat-grid{grid-template-columns:1fr}.alert-row{flex-direction:column;align-items:flex-start}.device-detail__paramlist,.device-detail__trend-grid{grid-template-columns:1fr}.device-detail__trend-add input{min-width:160px}}.g-timeseries{position:relative}.g-timeseries__svg{width:100%;height:auto;display:block}.g-timeseries__grid{stroke:var(--g-border);stroke-width:1}.g-timeseries__grid--v{stroke-dasharray:4 6;opacity:.75}.g-timeseries__axis,.g-timeseries__xaxis{fill:var(--g-text-muted);font-size:10px}.g-timeseries__hover{stroke:var(--g-text-muted);stroke-dasharray:3 6}.g-timeseries__dot{fill:var(--chart-dot-fill)}.g-timeseries__tooltip{position:absolute;right:8px;top:8px;background:var(--g-panel-header);border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 4px);padding:10px;box-shadow:var(--shadow-sm);min-width:180px}.g-timeseries__tooltip-title{font-weight:var(--fw-bold);color:var(--g-text-strong);margin-bottom:8px;font-size:.85rem}.g-timeseries__tooltip-row{display:flex;justify-content:space-between;gap:10px;align-items:center;color:var(--g-text-muted);font-size:.85rem;padding:2px 0}.g-timeseries__tooltip-row .dot{width:8px;height:8px;display:inline-block;flex:0 0 auto}.g-timeseries__tooltip-row .v{font-family:var(--font-mono);font-weight:var(--fw-heavy);color:var(--g-text-strong)}.device-config{display:flex;flex-direction:column;gap:14px}.device-config__top{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start}.device-config__label{margin:0;color:var(--g-text-muted);font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}.device-config__title{margin:6px 0 0;color:var(--g-text-strong);font-size:1.25rem}.device-config__subtitle{margin:6px 0 0;color:var(--g-text-muted);font-size:.9rem}.device-config__actions{display:flex;gap:10px;align-items:center}.device-config__search{display:inline-flex;gap:8px;align-items:center;padding:8px 10px;border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-muted)}.device-config__search input{border:none;outline:none;background:transparent;color:var(--g-text-strong);min-width:220px}.device-config__table{display:grid;gap:8px}.device-config__thead,.device-config__row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) repeat(4,minmax(110px,1fr));gap:10px;align-items:center}.device-config__thead{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--g-text-muted);font-weight:var(--fw-semibold);padding:8px 4px}.device-config__row{padding:10px 4px;border-top:1px solid var(--ui-divider)}.device-config__param{font-family:var(--font-mono);font-size:.82rem;color:var(--g-text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-config__value{font-family:var(--font-mono);font-weight:var(--fw-heavy);color:var(--g-text-strong)}.device-config__row input{width:100%;border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--g-border);background:var(--ui-soft-bg);color:var(--g-text-strong);padding:9px 10px}.device-config__hint{color:var(--g-text-muted);margin:12px 0 0;font-size:.85rem}.device-config__hint code{font-family:var(--font-mono)}@media (max-width: 920px){.device-config__thead{display:none}.device-config__row{grid-template-columns:1fr 1fr;gap:10px}.device-config__row input{grid-column:span 1}.device-config__param{grid-column:1 / -1}}.forecast-page{display:flex;flex-direction:column;gap:18px}.forecast-page__panel{min-width:0}.forecast-page--disabled .forecast-page__panel{border:1px dashed var(--g-border)}.forecast-disabled{display:flex;flex-direction:column;gap:10px;color:var(--g-text-strong)}.forecast-disabled__message{font-weight:var(--fw-semibold)}.forecast-disabled__meta{display:flex;flex-wrap:wrap;gap:12px;color:var(--g-text-muted);font-size:.85rem}.forecast-now{display:flex;align-items:center;gap:10px}.forecast-now__title{font-weight:var(--fw-bold);letter-spacing:.01em;color:var(--g-text-strong)}.forecast-now__meta{display:flex;flex-wrap:wrap;gap:10px;color:var(--g-text-muted);font-size:.85rem}.forecast-now__meta span{font-family:var(--font-mono);font-weight:var(--fw-heavy);color:var(--g-text-strong)}.forecast-page__stat-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.forecast-page__stat-grid>*{grid-column:span 12}.forecast-page__bars{margin-top:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.forecast-page__acc-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;margin-bottom:12px}.forecast-page__acc-grid>*{grid-column:span 12}.forecast-cap{color:var(--g-text-muted);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;font-weight:var(--fw-bold)}.forecast-power-right{display:flex;align-items:center;gap:12px}.forecast-mode{display:inline-flex;border-radius:var(--radius-pill);border:1px solid var(--g-border);background:var(--ui-ghost-bg);overflow:hidden}.forecast-mode__btn{border:0;background:transparent;color:var(--g-text-muted);padding:7px 10px;cursor:pointer;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;font-weight:var(--fw-semibold)}.forecast-mode__btn.active{background:var(--nav-item-active-bg);color:var(--g-text-strong)}.forecast-mode__btn:hover:not(.active){color:var(--g-text-strong)}.forecast-page__split{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}.forecast-page__split>*{grid-column:span 6}.forecast-days,.forecast-window-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.forecast-window-empty{grid-column:1 / -1;color:var(--g-text-muted);font-size:.9rem}.forecast-window{grid-column:span 6;border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 4px);padding:12px;background:var(--ui-soft-bg);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:10px;min-width:0}.forecast-window--warn{border-color:color-mix(in oklab,var(--color-warning) 34%,var(--g-border))}.forecast-window--crit{border-color:color-mix(in oklab,var(--color-critical) 34%,var(--g-border))}.forecast-window__head{display:flex;justify-content:space-between;align-items:center;gap:10px}.forecast-window__time{font-weight:var(--fw-bold);color:var(--g-text-strong);font-size:.92rem}.forecast-window__meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px;color:var(--g-text-muted);font-size:.85rem}.forecast-window__meta span{font-family:var(--font-mono);font-weight:var(--fw-heavy);color:var(--g-text-strong)}.forecast-window__chips{display:flex;flex-wrap:wrap;gap:8px}.f-chip{display:inline-flex;align-items:center;border-radius:var(--radius-pill);border:1px solid var(--g-border);background:var(--ui-ghost-bg);padding:4px 8px;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--g-text-muted);font-weight:var(--fw-semibold)}.f-chip--warn{border-color:color-mix(in oklab,var(--color-warning) 40%,var(--g-border));color:var(--color-warning)}.f-chip--crit{border-color:color-mix(in oklab,var(--color-critical) 40%,var(--g-border));color:var(--color-critical)}.forecast-day{grid-column:span 3;border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 4px);padding:12px;background:var(--ui-soft-bg);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px;min-width:0}.forecast-day__head{display:flex;justify-content:space-between;align-items:center}.forecast-day__date{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--g-text-muted);font-weight:var(--fw-semibold)}.forecast-day__wx{margin-top:4px;color:var(--g-text-strong);font-weight:var(--fw-semibold)}.forecast-day__kwh{font-family:var(--font-mono);font-weight:var(--fw-heavy);font-size:1.2rem;color:var(--g-text-strong)}.forecast-day__meta{display:flex;justify-content:space-between;gap:10px;color:var(--g-text-muted);font-size:.85rem}.forecast-day--ok{border-color:color-mix(in oklab,var(--color-success) 30%,var(--g-border))}.forecast-day--warn{border-color:color-mix(in oklab,var(--color-warning) 34%,var(--g-border))}.forecast-day--crit{border-color:color-mix(in oklab,var(--color-critical) 34%,var(--g-border))}@media (max-width: 980px){.forecast-page__split>*{grid-column:span 12}.forecast-day{grid-column:span 6}.forecast-page__bars{grid-template-columns:1fr}.forecast-window{grid-column:span 12}}@media (min-width: 700px){.forecast-page__stat-grid>*{grid-column:span 6}.forecast-page__acc-grid>*{grid-column:span 4}}@media (min-width: 1100px){.forecast-page__stat-grid>*{grid-column:span 4}}@media (max-width: 560px){.forecast-day{grid-column:span 12}.forecast-cap{display:none}}.w-icon{color:var(--g-text-strong)}.w-icon--clear{color:var(--color-success)}.w-icon--rain{color:var(--color-warning)}.w-icon--storm{color:var(--color-critical)}.w-icon--fog,.w-icon--cloudy,.w-icon--partly,.w-icon--snow{color:var(--g-text-strong)}.reporting-page{display:flex;flex-direction:column;gap:16px}.reporting-top{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}.reporting-top>*{grid-column:1 / -1}.reporting-kpi-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.reporting-kpi-grid>*{grid-column:span 12}.reporting-layout{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;align-items:start}.reporting-layout__left{grid-column:span 8;min-width:0;display:flex;flex-direction:column;gap:14px}.reporting-layout__right{grid-column:span 4;min-width:0;display:flex;flex-direction:column;gap:14px}.reporting-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:space-between}.reporting-selects{display:flex;gap:10px;flex-wrap:wrap}.reporting-selects label{display:flex;flex-direction:column;gap:6px;color:var(--g-text-muted);font-size:.86rem}.reporting-selects select,.reporting-selects input{border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-strong);padding:9px 10px;min-width:160px}.reporting-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.reporting-section-spacing{margin-top:12px}.reporting-muted-spacing{margin-top:10px}.reporting-rowlist{display:flex;flex-direction:column;gap:10px}.report-row{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 6px);background:var(--ui-soft-bg);padding:12px}.report-row__title{font-weight:var(--fw-bold);color:var(--g-text-strong)}.report-row__meta{margin-top:6px;display:flex;gap:10px;flex-wrap:wrap;color:var(--g-text-muted);font-size:.85rem}.report-chip{display:inline-flex;align-items:center;border-radius:var(--radius-pill);border:1px solid var(--g-border);background:var(--ui-ghost-bg);padding:4px 8px;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--g-text-muted);font-weight:var(--fw-semibold)}.report-row__right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;text-align:right}.report-row__date{color:var(--g-text-muted);font-size:.85rem}.schedule-form{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.schedule-form label{grid-column:span 12;display:flex;flex-direction:column;gap:6px;color:var(--g-text-muted);font-size:.86rem}.schedule-form input,.schedule-form select{border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-strong);padding:9px 10px}.schedule-presets{display:flex;gap:8px;flex-wrap:wrap}.small-muted{color:var(--g-text-muted);font-size:.85rem}@media (min-width: 760px){.reporting-kpi-grid>*{grid-column:span 4}.schedule-form label{grid-column:span 6}}@media (max-width: 980px){.reporting-layout__left,.reporting-layout__right{grid-column:1 / -1}}@media (max-width: 720px){.reporting-selects select,.reporting-selects input{min-width:140px}.report-row{flex-direction:column;align-items:flex-start}.report-row__right{text-align:left;justify-content:flex-start}}.alarms-page{display:flex;flex-direction:column;gap:16px}.alarms-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.alarms-summary div{background:var(--g-panel-bg);border-radius:calc(var(--radius-card) - 2px);padding:14px;border:1px solid var(--g-border);text-align:center}.alarms-summary p{margin:0;font-size:.8rem;color:var(--g-text-muted)}.alarms-search{border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-strong);padding:9px 10px;min-width:240px}.alarms-controls{margin-top:12px;display:flex;gap:10px;flex-wrap:wrap;justify-content:space-between}.alarms-tabs{display:inline-flex;border-radius:var(--radius-pill);border:1px solid var(--g-border);background:var(--ui-ghost-bg);overflow:hidden}.alarms-tab{border:0;background:transparent;color:var(--g-text-muted);padding:7px 10px;cursor:pointer;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;font-weight:var(--fw-semibold)}.alarms-tab.active{background:var(--nav-item-active-bg);color:var(--g-text-strong)}.alarms-tab:hover:not(.active){color:var(--g-text-strong)}.alarms-list{display:flex;flex-direction:column;gap:10px}.alarms-loading{display:flex;justify-content:center;padding:18px 0}.alarm-row{background:var(--g-panel-bg);border-radius:calc(var(--radius-card) - 2px);padding:14px;border:1px solid var(--g-border);display:flex;justify-content:space-between;align-items:center;gap:12px}.alarm-row--btn{width:100%;text-align:left;cursor:pointer}.alarm-row__title{font-weight:var(--fw-bold);color:var(--g-text-strong)}.alarm-row__meta{margin-top:4px;display:flex;gap:10px;flex-wrap:wrap;color:var(--g-text-muted);font-size:.85rem}.alarm-row__device,.alarm-row__param{font-family:var(--font-mono);font-weight:var(--fw-heavy);color:var(--g-text-strong)}.alarm-row__right{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.alarm-row__time{display:block;font-size:.85rem;color:var(--g-text-muted)}.severity{padding:4px 10px;border-radius:var(--radius-pill);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:var(--fw-semibold)}.severity--critical,.severity--alarm{background:var(--tone-critical-bg);color:var(--color-critical)}.severity--warning{background:var(--tone-warning-bg);color:var(--color-warning)}.severity--info{background:var(--tone-primary-bg);color:var(--color-primary)}.status-badge{padding:4px 10px;border-radius:var(--radius-pill);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:var(--fw-semibold);border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-muted)}.status-badge--active{border-color:color-mix(in oklab,var(--color-warning) 35%,var(--g-border));color:var(--color-warning)}.status-badge--acknowledged{border-color:color-mix(in oklab,var(--color-primary) 35%,var(--g-border));color:var(--color-primary)}.status-badge--shelved{border-color:color-mix(in oklab,var(--color-muted) 35%,var(--g-border));color:var(--g-text-muted)}.alarm-drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;grid-template-columns:1fr minmax(320px,420px)}.alarm-drawer__backdrop{background:color-mix(in oklab,var(--text-primary) 55%,transparent)}.alarm-drawer__panel{background:var(--g-panel-bg);border-left:1px solid var(--g-border);display:flex;flex-direction:column;min-width:0}.alarm-drawer__head{padding:14px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border-bottom:1px solid var(--g-border)}.alarm-drawer__title{font-weight:var(--fw-bold);color:var(--g-text-strong)}.alarm-drawer__sub{margin-top:8px;display:flex;gap:10px;flex-wrap:wrap}.alarm-drawer__close{border:1px solid var(--g-border);background:var(--ui-ghost-bg);color:var(--g-text-strong);border-radius:var(--radius-pill);padding:6px 10px;cursor:pointer}.alarm-drawer__body{padding:14px;overflow:auto}.alarm-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.alarm-detail{border:1px solid var(--g-border);border-radius:calc(var(--radius-card) - 6px);background:var(--ui-soft-bg);padding:10px;min-width:0}.alarm-detail__label{color:var(--g-text-muted);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;font-weight:var(--fw-semibold)}.alarm-detail__value{margin-top:6px;color:var(--g-text-strong);font-family:var(--font-mono);font-weight:var(--fw-heavy);word-break:break-word}.alarm-drawer__actions{padding:12px 14px;border-top:1px solid var(--g-border);display:flex;justify-content:flex-end;gap:10px}@media (max-width: 720px){.alarms-search{min-width:160px}.alarm-row{align-items:flex-start;flex-direction:column}.alarm-row__right{justify-content:flex-start}.alarm-drawer{grid-template-columns:1fr}.alarm-drawer__panel{border-left:0;border-top:1px solid var(--g-border)}.alarm-detail-grid{grid-template-columns:1fr}}.diagnostics-page{display:flex;flex-direction:column;gap:20px}.diagnostics-page__header{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;justify-content:space-between;padding:12px 6px}.diagnostics-page__eyebrow{margin:0 0 6px;font-size:.7rem;text-transform:uppercase;letter-spacing:.14em;color:var(--g-text-muted)}.diagnostics-page__title{margin:0;font-size:clamp(1.4rem,1.1rem + 1.2vw,2rem)}.diagnostics-page__subtitle{margin:6px 0 0;color:var(--g-text-muted);max-width:540px}.diagnostics-page__actions{display:flex;gap:10px;flex-wrap:wrap}.diagnostics-page__grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.diagnostics-card{background:var(--g-panel);border:1px solid var(--g-border);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:12px}.diagnostics-card h2{margin:0;font-size:1rem}.diagnostics-card__stats{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.diagnostics-card__stats span{display:block;color:var(--g-text-muted);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.diagnostics-card__stats strong{font-size:1.05rem}.diagnostics-card__empty{color:var(--g-text-muted);padding:12px;border:1px dashed var(--g-border);border-radius:10px}.diagnostics-table{display:grid;gap:8px}.diagnostics-table__header,.diagnostics-table__row{display:grid;grid-template-columns:70px minmax(0,1fr) 70px 80px 70px;gap:8px;align-items:center;font-size:.82rem}.diagnostics-table__header{color:var(--g-text-muted);text-transform:uppercase;letter-spacing:.12em;font-size:.7rem;padding-bottom:6px;border-bottom:1px solid var(--g-border)}.diagnostics-table__row{background:color-mix(in srgb,var(--g-panel) 85%,var(--g-bg) 15%);border:1px solid var(--g-border);border-radius:10px;padding:8px 10px}.diagnostics-table__row.is-ok{border-color:color-mix(in srgb,var(--color-success) 30%,var(--g-border))}.diagnostics-table__row.is-error{border-color:color-mix(in srgb,var(--color-critical) 30%,var(--g-border))}.diagnostics-table__method{font-weight:700;color:var(--g-text)}.diagnostics-table__url{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--g-text)}@media (max-width: 720px){.diagnostics-table__header{display:none}.diagnostics-table__row{grid-template-columns:1fr;gap:6px}}.theme-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.theme-field{display:flex;flex-direction:column;gap:6px;color:var(--scada-text-muted);font-size:.85rem}.theme-field input[type=text]{border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--scada-border);padding:10px 12px;font-size:.95rem}.theme-field select{border-radius:calc(var(--radius-card) - 6px);border:1px solid var(--scada-border);padding:10px 12px;font-size:.95rem;background:var(--scada-panel);color:var(--scada-text-strong)}.theme-field small{color:var(--scada-text-muted);font-size:.75rem}.theme-field--wide{grid-column:1 / -1}.theme-preview{margin-top:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.theme-preview__tile{border-radius:calc(var(--radius-card) - 4px);border:1px solid var(--scada-border);padding:12px;font-weight:var(--fw-semibold);color:var(--scada-text-strong)}.theme-preview__tile--surface{background:var(--scada-surface)}.theme-preview__tile--panel{background:var(--scada-panel)}.theme-preview__tile--primary{background:var(--scada-primary);color:var(--scada-text-inverse)}:root{--color-surface: #f6f7fb;--color-panel: #ffffff;--color-border: #e0e7ff;--color-muted: #64748b;--color-text: #0f172a;--color-text-secondary: #4c566a;--color-success: #10b981;--color-warning: #f97316;--color-critical: #ef4444;--color-primary: #2563eb;--radius-pill: 999px;--radius-card: 16px;--font-body: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--background-primary: var(--color-surface);--background-secondary: var(--color-panel);--background-tertiary: rgba(255, 255, 255, .7);--background-card: rgba(255, 255, 255, .92);--background-overlay: rgba(15, 23, 42, .45);--text-primary: var(--color-text);--text-secondary: var(--color-text-secondary);--text-tertiary: rgba(100, 116, 139, .75);--text-muted: var(--color-muted);--border-primary: var(--color-border);--border-secondary: rgba(226, 231, 255, .6);--border-focus: rgba(37, 99, 235, .45);--border-hover: rgba(37, 99, 235, .2);--status-healthy: var(--color-success);--status-warning: var(--color-warning);--status-critical: var(--color-critical);--status-offline: rgba(100, 116, 139, .7);--font-sans: var(--font-body);--radius-full: var(--radius-pill);--radius-xl: var(--radius-card);--shadow-industrial: 0 18px 45px rgba(15, 23, 42, .16);--duration-fast: .12s;--duration-base: .18s;--duration-slow: .26s;--fw-regular: 450;--fw-medium: 550;--fw-semibold: 650;--fw-bold: 750;--fw-heavy: 800;--fw-black: 900;--space-0: 0px;--space-1: 4px;--space-2: 6px;--space-3: 8px;--space-4: 10px;--space-5: 12px;--space-6: 14px;--space-7: 16px;--space-8: 18px;--space-9: 20px;--space-10: 24px;--space-11: 28px;--space-12: 32px;--space-13: 36px;--space-14: 40px;--nav-width: 260px;--nav-width-collapsed: 86px;--nav-width-max: 320px;--nav-mobile-offset: 12px;--content-min-height: 480px;--icon-btn-size: 38px;--brand-logo-size: 42px;--brand-logo-size-sm: 34px;--radius-logo: 10px;--radius-logo-sm: 8px;--header-radius-offset: 8px;--app-header-pad: 14px 16px;--app-header-pad-sm: 12px;--app-header-gap: 10px;--app-header-top-gap: 14px;--app-header-brand-gap: 10px;--app-header-brand-stack-gap: 2px;--app-header-brand-min: 220px;--app-header-logo: 42px;--app-header-logo-sm: 34px;--app-header-logo-radius: 10px;--app-header-logo-radius-sm: 8px;--app-header-product-size: .95rem;--app-header-context-size: .85rem;--app-header-context-max: 420px;--app-header-controls-gap: 10px;--app-header-icon-size: 38px;--app-header-icon-radius: 12px;--app-header-user-pad: 8px 10px;--app-header-user-gap: 10px;--app-header-user-size: .85rem;--app-header-user-max: 240px;--app-header-bottom-gap: 12px;--app-header-title-size: 1.15rem;--app-header-status-gap: 10px;--app-header-stat-gap: 8px;--app-header-stat-pad: 8px 10px;--app-header-stat-label: .7rem;--app-header-stat-value: .92rem;--nav-pad: 12px;--nav-pad-sm: 8px;--nav-gap: 12px;--nav-gap-sm: 8px;--nav-header-pad: 6px 6px 2px;--nav-header-gap: 10px;--nav-brand-gap: 10px;--nav-logo-size: 36px;--nav-logo-sm: 30px;--nav-logo-radius: 10px;--nav-logo-radius-sm: 8px;--nav-collapse-size: 34px;--nav-collapse-radius: 12px;--nav-radius-offset: 8px;--nav-product-size: .9rem;--nav-sub-size: .8rem;--nav-sub-gap: 2px;--nav-items-gap: 6px;--nav-items-gap-sm: 4px;--nav-item-pad: 11px 12px;--nav-item-pad-sm: 8px 8px;--nav-item-gap: 10px;--nav-item-size: .78rem;--nav-item-size-sm: .7rem;--nav-collapsed-items-gap: 8px;--nav-collapsed-item-pad: 12px;--shadow-sm: 0 1px 3px rgba(15, 23, 42, .08);--shadow-md: 0 10px 30px rgba(15, 23, 42, .15);--app-shell-bg: var(--color-surface);--app-login-bg: var(--color-surface);--app-login-pad: var(--space-10);--app-login-card-max: 420px;--app-login-card-pad: calc(var(--space-9) + var(--space-2));--app-login-card-gap: var(--space-5);--app-login-card-radius: calc(var(--radius-card) + var(--space-3));--app-login-brand-gap: var(--space-6);--app-login-brand-margin: var(--space-1);--app-login-logo-size: calc(var(--space-14) + var(--space-2));--app-login-logo-radius: var(--space-5);--app-login-text-gap: var(--space-1);--app-login-label-gap: var(--space-2);--app-login-input-pad: var(--space-4) var(--space-5);--app-login-field-radius: calc(var(--radius-card) - var(--space-2));--app-login-error-pad: var(--space-4) var(--space-5);--app-site-selector-min: 200px;--ui-soft-bg: rgba(255, 255, 255, .6);--ui-ghost-bg: rgba(255, 255, 255, .35);--ui-control-bg: rgba(255, 255, 255, .55);--ui-control-border: var(--color-border);--ui-divider: var(--color-border);--brand-mark-bg: radial-gradient(circle at top, rgba(37, 99, 235, .95), rgba(16, 185, 129, .85));--brand-mark-shadow: 0 10px 18px rgba(15, 23, 42, .18);--nav-bg: rgba(20, 28, 43, .85);--nav-shadow: 0 18px 45px rgba(0, 0, 0, .28);--nav-item-active-bg: rgba(37, 99, 235, .16);--nav-item-active-border: rgba(59, 130, 246, .35);--tone-critical-bg: rgba(239, 68, 68, .16);--tone-warning-bg: rgba(249, 115, 22, .16);--tone-success-bg: rgba(16, 185, 129, .16);--tone-primary-bg: rgba(37, 99, 235, .16);--chart-dot-fill: rgba(255, 255, 255, .9);--scada-panel-bg: var(--background-card);--scada-panel-header: var(--background-secondary);--scada-border: var(--border-secondary);--scada-text-strong: var(--text-primary);--scada-text-muted: var(--text-muted);--scada-gridline: var(--border-secondary);--g-panel-bg: var(--background-card);--g-panel-header: var(--background-secondary);--g-border: var(--border-secondary);--g-text-strong: var(--text-primary);--g-text-muted: var(--text-muted);font-family:var(--font-body)}*{box-sizing:border-box}body{margin:0;background:var(--color-surface);color:var(--color-text)}a{color:inherit}#root{min-height:100vh}
