:root{--color-bg:#f5f5f7;--color-surface:#fff;--color-text-primary:#1d1d1f;--color-text-secondary:#86868b;--color-text-tertiary:#aeaeb2;--color-border:#d2d2d7;--color-border-light:#e5e5ea;--color-accent:#007aff;--color-accent-hover:#0056b3;--gv-blue:#005da6;--gv-dark-blue:#113154;--gv-orange:#f47327;--gv-orange-hover:#d9651f;--gv-green:#61a60e;--gv-green-light:#7acc00;--gv-grey:#51545d;--color-weather-orange:#ff9800;--color-error-bg:#fff5f5;--color-error-border:#feb2b2;--color-error-text:#c53030;--color-error-hover:#e63329;--color-success-bg:#f0fff4;--color-success-border:#9ae6b4;--color-success-text:#276749;--color-role-admin-bg:#fefcbf;--color-role-admin-text:#975a16;--color-role-super-admin:#6b46c1;--color-role-super-admin-bg:#e9d8fd;--color-status-complete-bg:#c6f6d5;--color-status-complete-text:#22543d;--color-status-cancelled-bg:#fed7d7;--color-status-cancelled-text:#9b2c2c;--header-bg:#ffffffd9;--header-border:#005da61a;--severity-normal:#007aff;--severity-operating:#00c7be;--severity-elevated:#34c759;--severity-warning:#fc0;--severity-alert:#ff9500;--severity-critical:#ff3b30;--severity-normal-text:#005ec4;--severity-operating-text:#007a75;--severity-elevated-text:#1a7e34;--severity-warning-text:#b38600;--severity-alert-text:#c47600;--severity-critical-text:#de3128;--stat-average:#005ec4;--stat-minimum:#007a75;--stat-maximum:#de3128;--color-temp-cool:var(--severity-normal);--color-temp-normal:var(--severity-operating);--color-temp-elevated:var(--severity-elevated);--color-temp-warning:var(--severity-warning);--color-temp-alert:var(--severity-alert);--color-temp-critical:var(--severity-critical);--color-success:#34c759;--color-warning:#fc0;--color-error:#ff3b30;--color-offline:#8e8e93;--color-normal-text:#1a7e34;--color-elevated-text:var(--severity-elevated-text);--color-warning-text:var(--severity-warning-text);--color-critical-text:var(--severity-critical-text);--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-xxl:48px;--font-family:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, sans-serif;--font-size-xs:11px;--font-size-sm:13px;--font-size-md:15px;--font-size-lg:17px;--font-size-xl:22px;--font-size-xxl:28px;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--border-radius-sm:8px;--border-radius-md:12px;--border-radius-lg:16px;--border-radius-full:9999px;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 12px #0000001a;--shadow-lg:0 8px 24px #0000001f;--shadow-xl:0 16px 48px #00000029;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.35s cubic-bezier(.4, 0, .2, 1);--header-height:64px;--layer-switcher-height:52px;--stats-bar-height:56px;--panel-width:360px;font-family:var(--font-family), serif;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:1.5}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{font-family:var(--font-family), serif;font-size:var(--font-size-md);color:var(--color-text-primary);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;min-height:100vh;margin:0}.app-container{flex-direction:column;width:100%;height:100vh;display:flex;position:relative;overflow:hidden}.loading-spinner{border:3px solid var(--color-border-light);border-top-color:var(--color-accent);border-radius:50%;width:32px;height:32px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gridvista-header{height:var(--header-height);-webkit-backdrop-filter:none;box-shadow:none;z-index:1000;background:0 0;border-bottom:1px solid #00000014;transition:all .3s;position:sticky;top:0}.gridvista-header:hover{box-shadow:none;background:0 0}.header-content{grid-template-columns:1fr auto 1fr;align-items:center;gap:32px;max-width:100%;height:100%;margin:0 auto;padding:0 24px;display:grid}.header-left{justify-content:flex-start;align-items:center;gap:24px;display:flex}.header-logo{cursor:pointer;align-items:center;gap:10px;transition:transform .3s;display:flex}.header-logo:hover{transform:scale(1.05)}.logo-icon{width:115px;height:36px}.logo-text{color:var(--gv-blue);letter-spacing:-.02em;font-size:20px;font-weight:600}.logo-center{animation:3s ease-in-out infinite logoPulse}@keyframes logoPulse{0%,to{r:8px;opacity:1}50%{r:9px;opacity:.8}}.logo-node{animation:3s ease-in-out infinite nodeFloat}@keyframes nodeFloat{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.logo-line{stroke-dasharray:60;stroke-dashoffset:60px;animation:2s ease-in-out forwards lineDraw}@keyframes lineDraw{to{stroke-dashoffset:0}}.header-divider{display:none}.header-nav{grid-column:2;justify-content:center;align-items:center;gap:8px;display:flex}.nav-item{color:var(--gv-grey);cursor:pointer;background:0 0;border:none;border-radius:8px;outline:none;align-items:center;gap:8px;padding:8px 16px;font-size:15px;font-weight:500;transition:all .3s;display:flex;position:relative}.nav-item:hover{color:var(--gv-blue);background:#005da60d}.nav-item.active{color:var(--gv-blue);box-shadow:none;background:#005da614;font-weight:600}.nav-item:focus-visible{outline:2px solid var(--gv-blue);outline-offset:2px}.nav-icon{flex-shrink:0;width:20px;height:20px}.grid-node{animation:3s ease-in-out infinite gridNodePulse}.grid-node.node-1{animation-delay:0s}.grid-node.node-2{animation-delay:.2s}.grid-node.node-3{animation-delay:.4s}.grid-node.node-4{animation-delay:.6s}.grid-node.node-5{animation-delay:.8s}.grid-node.node-6{animation-delay:1s}.grid-node.node-7{animation-delay:1.2s}.grid-node.node-8{animation-delay:1.4s}@keyframes gridNodePulse{0%,to{opacity:.7;r:4px}50%{opacity:1;r:5px}}.grid-node-center{animation:2s ease-in-out infinite centerNodePulse}@keyframes centerNodePulse{0%,to{opacity:1;r:6px}50%{opacity:.7;r:7px}}.grid-connection{stroke-dasharray:4 2;animation:3s linear infinite connectionFlow}@keyframes connectionFlow{to{stroke-dashoffset:20px}}.timeline-icon{position:relative}.timeline-spine{animation:3s ease-in-out infinite spineGlow}@keyframes spineGlow{0%,to{stroke-width:3px;opacity:1}50%{stroke-width:3.5px;opacity:.8}}.timeline-node{transform-origin:50%;animation:2s ease-in-out infinite nodeFloat}.node-1{animation-delay:0s}.node-2{animation-delay:.3s}.node-3{animation-delay:.6s}.node-current{animation-delay:.9s}.timeline-ripple{animation:2s ease-out infinite rippleExpand}.ripple-1{animation-delay:0s}.ripple-2{animation-delay:.5s}.ripple-3{animation-delay:1s}@keyframes rippleExpand{0%{r:5px;opacity:.5}to{r:12px;opacity:0}}.timeline-branch{stroke-dasharray:20;stroke-dashoffset:20px;animation:2s ease-in-out infinite branchDraw}.branch-1{animation-delay:.2s}.branch-2{animation-delay:.6s}.branch-3{animation-delay:1s}@keyframes branchDraw{0%,to{stroke-dashoffset:20px;opacity:.3}50%{stroke-dashoffset:0;opacity:1}}.timeline-pulse-current{animation:1.5s ease-out infinite currentPulse}@keyframes currentPulse{0%{r:7px;opacity:.8;stroke-width:2px}to{r:15px;opacity:0;stroke-width:.5px}}.time-arrow{animation:3s ease-in-out infinite arrowFloat}@keyframes arrowFloat{0%,to{opacity:.6;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.arrow-head{animation:2s ease-in-out infinite arrowBlink}@keyframes arrowBlink{0%,to{opacity:1}50%{opacity:.3}}.playback-indicator{animation:4s ease-in-out infinite playbackTravel}@keyframes playbackTravel{0%{cy:80px;opacity:1}50%{cy:20px;opacity:.8}to{cy:80px;opacity:1}}.nav-item:hover .timeline-icon .timeline-spine{stroke-width:4px;animation:1s ease-in-out infinite spineGlowFast}@keyframes spineGlowFast{0%,to{opacity:1}50%{opacity:.6}}.nav-item:hover .timeline-icon .playback-indicator{animation:2s ease-in-out infinite playbackTravelFast}@keyframes playbackTravelFast{0%{cy:80px;r:3px}50%{cy:20px;r:4px}to{cy:80px;r:3px}}.nav-item:hover .timeline-icon .timeline-node{animation:1s ease-in-out infinite nodeFloatFast}@keyframes nodeFloatFast{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}.chart-line{stroke-dasharray:200;stroke-dashoffset:200px;animation:2s ease-in-out infinite chartDraw}@keyframes chartDraw{0%{stroke-dashoffset:200px}to{stroke-dashoffset:0}}.data-point{animation:2s ease-in-out infinite pointPulse}.point-1{animation-delay:0s}.point-2{animation-delay:.2s}.point-3{animation-delay:.4s}.point-4{animation-delay:.6s}.point-5{animation-delay:.8s}.point-6{animation-delay:1s}@keyframes pointPulse{0%,to{r:4px;opacity:1}50%{r:6px;opacity:.7}}.person{animation:3s ease-in-out infinite personBounce}.person-1{animation-delay:0s}.person-2{animation-delay:.3s}.person-3{animation-delay:.6s}@keyframes personBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.team-connection{stroke-dasharray:4 2;animation:2s ease-in-out infinite connectionPulse}@keyframes connectionPulse{0%,to{opacity:.3;stroke-width:2px}50%{opacity:.6;stroke-width:3px}}.maintenance-icon{position:relative}.gear-group{transform-origin:60px 60px;animation:8s linear infinite gearRotate}@keyframes gearRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gear-outer{animation:3s ease-in-out infinite gearPulse}@keyframes gearPulse{0%,to{stroke-width:3px;opacity:1}50%{stroke-width:3.5px;opacity:.8}}.gear-center{animation:2s ease-in-out infinite centerPulse}@keyframes centerPulse{0%,to{r:8px}50%{r:9px}}.wrench-group{transform-origin:24px 52px;animation:3s ease-in-out infinite wrenchTilt}@keyframes wrenchTilt{0%,to{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}.wrench-handle{animation:3s ease-in-out infinite handleShine}@keyframes handleShine{0%,to{opacity:1}50%{opacity:.7}}.maintenance-sparkles .sparkle{transform-origin:50%;animation:2s ease-in-out infinite sparkleFloat}@keyframes sparkleFloat{0%,to{opacity:.3;transform:scale(.8)rotate(0)}50%{opacity:1;transform:scale(1.2)rotate(180deg)}}.nav-item:hover .maintenance-icon .gear-group{animation:2s linear infinite gearRotateFast}@keyframes gearRotateFast{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.nav-item:hover .maintenance-icon .wrench-group{animation:.5s ease-in-out infinite wrenchShake}@keyframes wrenchShake{0%,to{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}.nav-item:hover .maintenance-icon .sparkle{animation:1s ease-out infinite sparkleExplode}@keyframes sparkleExplode{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(3)rotate(360deg)}}.monitor-screen{animation:3s ease-in-out infinite screenGlow}@keyframes screenGlow{0%,to{stroke-width:3px;opacity:1}50%{stroke-width:3.5px;opacity:.8}}.live-signal{stroke-dasharray:200;stroke-dashoffset:200px;animation:2s ease-in-out infinite signalFlow}@keyframes signalFlow{0%{stroke-dashoffset:200px;opacity:.3}50%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-200px;opacity:.3}}.live-pulse{animation:1.5s ease-in-out infinite livePulse}@keyframes livePulse{0%,to{r:4px;opacity:1}50%{r:6px;opacity:.5}}.document{animation:3s ease-in-out infinite documentFloat}@keyframes documentFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.document-fold{animation:3s ease-in-out infinite foldShine}@keyframes foldShine{0%,to{opacity:.6}50%{opacity:1}}.bar{transform-origin:bottom;animation:2s ease-in-out infinite barGrow}@keyframes barGrow{0%,to{opacity:1;transform:scaleY(1)}50%{opacity:.7;transform:scaleY(.7)}}.text-line{animation:2s ease-in-out infinite textFade}@keyframes textFade{0%,to{opacity:.4}50%{opacity:.7}}.lightning-bolt{transform-origin:50%;animation:2s ease-in-out infinite boltCharge}@keyframes boltCharge{0%,to{opacity:1;transform:scale(1)}10%{opacity:.7;transform:scale(.95)}20%{opacity:1;transform:scale(1)}30%{opacity:.8;transform:scale(.98)}40%,60%{opacity:1;transform:scale(1)}}.ai-sparkles .sparkle{transform-origin:50%;animation:3s ease-in-out infinite sparkleFloat}.sparkle-1{animation-delay:0s}.sparkle-2{animation-delay:.5s}.sparkle-3{animation-delay:1s}.sparkle-4{animation-delay:1.5s}.sparkle-5{animation-delay:2s}.sparkle-6{animation-delay:2.5s}.energy-wave{animation:2s ease-in-out infinite waveFlow}.wave-2{animation-delay:1s}@keyframes waveFlow{0%,to{opacity:0;stroke-width:2px}50%{opacity:.8;stroke-width:3px}}.nav-item:hover .predictions-icon .lightning-bolt{filter:drop-shadow(0 0 8px #61a60ecc);animation:.6s ease-out boltStrike}@keyframes boltStrike{0%,to{opacity:1}20%,40%,60%{opacity:.3}10%,30%,50%,70%{opacity:1}}.nav-item:hover .predictions-icon .sparkle{animation:.8s ease-out infinite sparkleExplode}.nav-item:hover .predictions-icon .brain-outline{stroke-width:3.5px;filter:drop-shadow(0 0 6px #61a60e99)}.nav-item:hover .predictions-icon .neural-node{r:4px}.nav-item:hover .predictions-icon .ai-sparkle{animation:1s ease-out infinite sparkleExplode}.map-boundary{animation:3s ease-in-out infinite mapPulse}@keyframes mapPulse{0%,to{stroke-width:2.5px;opacity:1}50%{stroke-width:3px;opacity:.8}}.grid-line{animation:4s ease-in-out infinite gridFade}@keyframes gridFade{0%,to{opacity:.2}50%{opacity:.5}}.danger-zone{animation:2s ease-in-out infinite zoneExpand}.zone-1{animation-delay:0s}.zone-2{animation-delay:.7s}.zone-3{animation-delay:1.4s}@keyframes zoneExpand{0%,to{opacity:.4;transform:scale(1)}50%{opacity:.8;transform:scale(1.3)}}.danger-core{animation:2s ease-in-out infinite corePulse}@keyframes corePulse{0%,to{opacity:1;r:4px}50%{opacity:.7;r:5px}}.warning-badge{animation:2s ease-in-out infinite badgeBounce}@keyframes badgeBounce{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-2px)scale(1.1)}}.risk-pulse{animation:2s ease-out infinite riskRadiate}.pulse-3{animation-delay:1.4s}@keyframes riskRadiate{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(2)}}.nav-item:hover .risk-zones-icon .danger-core{fill:#ff3b30;r:6px}.nav-item:hover .risk-zones-icon .warning-badge{animation:.5s ease-in-out infinite badgeShake}@keyframes badgeShake{0%,to{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}}.help-circle,.info-circle{transform-origin:50%;animation:3s ease-in-out infinite circleGlow}@keyframes circleGlow{0%,to{stroke-width:2px;opacity:1}50%{stroke-width:2.5px;opacity:.8}}.question-mark,.info-stem{animation:3s ease-in-out infinite symbolPulse}@keyframes symbolPulse{0%,to{opacity:1}50%{opacity:.6}}.question-dot,.info-dot{animation:2s ease-in-out infinite dotBounce}@keyframes dotBounce{0%,to{opacity:1;transform:translateY(0)}50%{opacity:.7;transform:translateY(-1px)}}.header-icon-button:hover .help-support-icon .help-circle,.header-icon-button:hover .help-support-icon .info-circle{stroke-width:2.5px;animation:.6s ease-out circleExpand}@keyframes circleExpand{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.header-icon-button:hover .help-support-icon .question-mark,.header-icon-button:hover .help-support-icon .info-stem{stroke-width:2.5px}.header-icon-button:hover .help-support-icon .question-dot,.header-icon-button:hover .help-support-icon .info-dot{animation:.6s ease-out infinite dotJump}@keyframes dotJump{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.voice-assistant-button{position:relative}.mic-body{transform-origin:50%;transition:all .3s}.voice-assistant-icon:not(.active).mic-body{animation:3s ease-in-out infinite micFloat}@keyframes micFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.mic-stand{transition:all .3s}.mic-arc{stroke-dasharray:20;stroke-dashoffset:20px;animation:2s ease-in-out infinite arcDraw}@keyframes arcDraw{0%,to{stroke-dashoffset:20px;opacity:.5}50%{stroke-dashoffset:0;opacity:1}}.voice-assistant-icon.active.mic-body{animation:1s ease-in-out infinite micPulse}@keyframes micPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.1)}}.listening-pulse{animation:1.5s ease-out infinite pulseExpand}@keyframes pulseExpand{0%{r:1px;opacity:.8}to{r:8px;opacity:0}}.sound-waves.wave{animation:1s ease-in-out infinite waveOscillate}.wave-1,.wave-2{animation-delay:0s}.wave-3,.wave-4{animation-delay:.2s}@keyframes waveOscillate{0%,to{opacity:.3;transform:scaleX(.8)}50%{opacity:1;transform:scaleX(1.2)}}.voice-assistant-button.listening{background:#61a60e1a;animation:2s ease-in-out infinite buttonGlow}@keyframes buttonGlow{0%,to{box-shadow:0 0 #61a60e00}50%{box-shadow:0 0 12px #61a60e66}}.header-icon-button:hover.voice-assistant-icon:not(.active).mic-body{fill:var(--gv-green)}.header-icon-button:hover.voice-assistant-icon:not(.active).mic-stand,.header-icon-button:hover.voice-assistant-icon:not(.active).mic-arc{stroke:var(--gv-green)}.header-icon-button:hover.voice-assistant-icon.active.sound-waves.wave{animation:.8s ease-in-out infinite waveExpand}@keyframes waveExpand{0%,to{opacity:.5;transform:scaleX(1)}50%{opacity:1;transform:scaleX(1.5)}}.header-right{justify-content:flex-end;align-items:center;gap:12px;display:flex;position:relative}.header-icon-button{width:40px;height:40px;color:var(--gv-grey);cursor:pointer;background:0 0;border:none;border-radius:8px;outline:none;justify-content:center;align-items:center;transition:all .3s;display:flex;position:relative}.header-icon-button:hover{color:var(--gv-blue);background:#005da60d}.header-icon-button:focus-visible{outline:2px solid var(--gv-blue);outline-offset:2px}.utility-icon{width:20px;height:20px}.help-support-icon{color:var(--gv-grey)}.header-icon-button:hover.help-support-icon{color:var(--gv-blue)}.help-support-icon.question-mark,.help-support-icon.question-text{opacity:1}.icon-badge{color:#fff;background:var(--gv-orange);border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;display:flex;position:absolute;top:6px;right:6px;box-shadow:0 2px 6px #f4732766}.bell-icon{animation:3s ease-in-out infinite bellRing}@keyframes bellRing{0%,90%,to{transform:rotate(0)}92%,96%{transform:rotate(-15deg)}94%,98%{transform:rotate(15deg)}}.header-user-button{cursor:pointer;background:0 0;border:1px solid #00000014;border-radius:20px;outline:none;align-items:center;gap:8px;padding:4px 4px 4px 12px;transition:all .3s;display:flex}.header-user-button:hover{border-color:var(--gv-blue);background:#005da60d}.user-avatar{color:#fff;background:linear-gradient(135deg, var(--gv-blue), var(--gv-dark-blue));border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:600;display:flex;box-shadow:0 2px 8px #005da64d}.chevron-icon{width:16px;height:16px;color:var(--gv-grey);transition:transform .3s}.header-user-button[aria-expanded=true] .chevron-icon{transform:rotate(180deg)}.dropdown-menu{border:1px solid var(--header-border);z-index:1001;background:#fff;border-radius:12px;min-width:280px;padding:8px;animation:.2s ease-out dropdownFadeIn;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 12px 32px #0000001f}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.dropdown-header{border-bottom:1px solid var(--header-border);margin-bottom:8px;padding:12px 16px}.dropdown-header h3{color:var(--gv-dark-blue);margin:0;font-size:16px;font-weight:600}.user-info{flex-direction:column;gap:4px;display:flex}.user-name{color:var(--gv-dark-blue);font-size:15px;font-weight:600}.user-email{color:var(--gv-grey);font-size:13px}.dropdown-divider{background:var(--header-border);height:1px;margin:8px 0}.dropdown-item{width:100%;color:var(--gv-dark-blue);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:12px;padding:10px 16px;font-size:14px;font-weight:500;transition:all .2s;display:flex}.dropdown-item:hover{color:var(--gv-blue);background:#005da614}.dropdown-item.danger{color:var(--color-critical-text)}.dropdown-item.danger:hover{background:#ff3b3014}.dropdown-footer{border-top:1px solid var(--header-border);margin-top:8px;padding:8px}.dropdown-footer-link{width:100%;color:var(--gv-blue);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:500;transition:all .2s}.dropdown-footer-link:hover{background:#005da614}.notifications-menu{min-width:360px}.notification-list{max-height:400px;overflow-y:auto}.notification-item{cursor:pointer;border-radius:8px;gap:12px;padding:12px;transition:background .2s;display:flex}.notification-item:hover{background:#005da60d}.notification-item.unread{background:#005da614}.notification-icon{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:flex}.notification-icon.critical{background:#f473271a}.notification-icon.success{background:#61a60e1a}.notification-content{flex:1;min-width:0}.notification-title{color:var(--gv-dark-blue);margin-bottom:2px;font-size:14px;font-weight:600}.notification-body{color:var(--gv-grey);margin-bottom:4px;font-size:13px}.notification-time{color:var(--gv-grey);font-size:12px}.search-overlay{backdrop-filter:blur(4px);z-index:2000;background:#0006;justify-content:center;align-items:flex-start;padding-top:120px;animation:.2s ease-out overlayFadeIn;display:flex;position:fixed;inset:0}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.search-modal{background:#fff;border-radius:16px;width:100%;max-width:600px;padding:24px;animation:.3s ease-out modalSlideIn;box-shadow:0 24px 64px #0003}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:translateY(0)}}.search-input{width:100%;color:var(--gv-dark-blue);background:#005da60d;border:2px solid #0000;border-radius:12px;outline:none;padding:16px;font-family:inherit;font-size:18px;transition:all .3s}.search-input:focus{border-color:var(--gv-blue);background:#fff}.search-input::placeholder{color:var(--gv-grey)}.search-shortcuts{color:var(--gv-grey);align-items:center;gap:8px;margin-top:16px;font-size:13px;display:flex}.search-shortcuts kbd{color:var(--gv-grey);background:#0000000d;border:1px solid #0000001a;border-radius:4px;padding:4px 8px;font-family:inherit;font-size:11px;font-weight:600}@media (width<=1024px){.header-nav{gap:4px}.nav-item span{display:none}.nav-item{padding:10px}}@media (width<=768px){.header-content{gap:16px;padding:0 16px}.logo-text,.header-divider{display:none}.search-modal{margin:0 16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.gridvista-subheader{z-index:999;background:#fff;border-bottom:1px solid #00000014;height:56px;position:sticky;top:64px;box-shadow:0 2px 8px #0000000a}.subheader-content{grid-template-columns:1fr auto 1fr;align-items:center;gap:32px;max-width:100%;height:100%;padding:0 24px;display:grid}.subheader-left{position:relative}.weather-widget{cursor:pointer;background:#ff980014;border:none;border-radius:12px;outline:none;align-items:center;gap:12px;padding:8px 16px;transition:all .3s;display:flex}.weather-widget:hover{background:#ff98001f;border-color:#ff98004d;transform:translateY(-1px)}.weather-widget.active{background:#ff980026;border-color:#ff9800}.weather-widget.disabled{cursor:not-allowed;opacity:.6;background:#0000000a}.weather-widget.disabled:hover{background:#0000000a;transform:none}.weather-info.placeholder .weather-temp,.weather-info.placeholder .weather-condition{color:#aeaeb2}.weather-info.loading .weather-temp{color:var(--severity-normal-text,#005ec4)}.weather-icon{flex-shrink:0;width:24px;height:24px}.weather-icon.large{width:48px;height:48px}.sun-core{animation:3s ease-in-out infinite sunPulse}@keyframes sunPulse{0%,to{r:5px;opacity:1}50%{r:6px;opacity:.9}}.sun-rays .ray{transform-origin:12px 12px;animation:8s linear infinite rayRotate}@keyframes rayRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.weather-info{flex-direction:column;gap:2px;display:flex}.weather-temp{color:var(--color-weather-orange,#ff9800);font-size:16px;font-weight:600}.weather-condition{color:var(--gv-grey,#51545d);font-size:12px}.chevron-down-icon{width:16px;height:16px;color:var(--gv-grey,#51545d);transition:transform .3s}.chevron-down-icon.expanded{transform:rotate(180deg)}.weather-panel{z-index:1000;background:#fff;border:1px solid #0000001a;border-radius:16px;width:400px;padding:20px;animation:.3s ease-out weatherPanelFadeIn;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 12px 32px #00000026}@keyframes weatherPanelFadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.weather-current{border-bottom:1px solid #00000014;gap:16px;margin-bottom:20px;padding-bottom:20px;display:flex}.weather-current-temp{color:var(--color-weather-orange,#ff9800);font-size:36px;font-weight:600}.weather-current-condition{color:var(--color-text-primary,#1d1d1f);margin-bottom:4px;font-size:16px;font-weight:500}.weather-current-meta{color:var(--gv-grey,#51545d);font-size:13px}.forecast-title{color:var(--color-text-primary,#1d1d1f);margin-bottom:12px;font-size:14px;font-weight:600}.forecast-grid{grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:16px;display:grid}.forecast-day{background:#00000005;border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;transition:background .2s;display:flex}.forecast-day:hover{background:#0000000d}.forecast-day-name{color:var(--gv-grey,#51545d);font-size:11px;font-weight:500}.forecast-day-icon{font-size:20px}.forecast-day-temp{color:var(--color-text-primary,#1d1d1f);font-size:14px;font-weight:600}.weather-overlay-toggle{width:100%;color:var(--gv-blue,#005da6);cursor:pointer;background:#005da614;border:none;border-radius:8px;padding:12px;font-size:14px;font-weight:500;transition:all .2s}.weather-overlay-toggle:hover{background:#005da61f}.subheader-center{justify-content:center;display:flex}.layer-filters{align-items:center;gap:8px;display:flex}.layer-filter{color:var(--gv-grey,#51545d);cursor:pointer;background:0 0;border:1px solid #0000001a;border-radius:20px;outline:none;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:500;transition:all .3s;display:flex;position:relative}.layer-filter:hover:not(.disabled){color:var(--gv-blue,#005da6);background:#005da60d;border-color:#005da64d;transform:translateY(-1px)}.layer-filter.active{color:#fff;background:linear-gradient(135deg, var(--gv-blue,#005da6) 0%, var(--gv-dark-blue,#113154) 100%);border-color:var(--gv-blue,#005da6);box-shadow:0 4px 12px #005da64d}.layer-filter.disabled{color:var(--color-text-tertiary,#aeaeb2);cursor:not-allowed;opacity:.5;border-color:#0000000d}.layer-icon{font-size:16px;line-height:1}.layer-label{white-space:nowrap}.subheader-right{justify-content:flex-end;display:flex}.view-controls{align-items:center;gap:12px;display:flex}.view-mode-toggle{background:#0000000a;border-radius:12px;gap:4px;padding:4px;display:flex}.view-mode-button{color:var(--gv-grey,#51545d);cursor:pointer;background:0 0;border:none;border-radius:8px;outline:none;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:500;transition:all .3s;display:flex}.view-mode-button:hover:not(.active){color:var(--gv-blue,#005da6);background:#0000000d}.view-mode-button.active{color:var(--gv-blue,#005da6);background:#fff;font-weight:600;box-shadow:0 2px 8px #0000001a}.view-icon{width:18px;height:18px}.weather-overlay-container{position:relative}.weather-overlay-control{cursor:pointer;background:#0000000a;border:none;border-radius:12px;outline:none;justify-content:center;align-items:center;min-width:44px;height:44px;padding:10px;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.weather-overlay-control:hover{background:#00000014;transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.weather-overlay-control.active{background:linear-gradient(135deg,#61a60e26,#7acc001a);box-shadow:0 0 0 2px #61a60e4d,0 4px 12px #61a60e33}.weather-overlay-control.active:hover{background:linear-gradient(135deg,#61a60e33,#7acc0026);box-shadow:0 0 0 2px #61a60e66,0 6px 16px #61a60e4d}.weather-overlay-icon{width:20px;height:20px;color:var(--gv-grey,#51545d);flex-shrink:0;transition:all .3s}.weather-overlay-control.active .weather-overlay-icon{color:var(--gv-green,#61a60e)}.layer-stack{transform-origin:50%;transition:all .4s cubic-bezier(.4,0,.2,1)}.layer-top{animation:3s ease-in-out infinite layerFloatTop}.layer-middle{animation:3s ease-in-out .2s infinite layerFloatMiddle}.layer-bottom{animation:3s ease-in-out .4s infinite layerFloatBottom}@keyframes layerFloatTop{0%,to{opacity:.7;transform:translateY(0)}50%{opacity:1;transform:translateY(-1px)}}@keyframes layerFloatMiddle{0%,to{opacity:.85;transform:translateY(0)}50%{opacity:1;transform:translateY(-.5px)}}@keyframes layerFloatBottom{0%,to{opacity:1;transform:translateY(0)}50%{opacity:.95;transform:translateY(-.3px)}}.weather-overlay-control:hover .layer-top{stroke-width:2.5px;opacity:.9;transform:translateY(-2px)}.weather-overlay-control:hover .layer-middle{stroke-width:2.5px;opacity:.95;transform:translateY(-.5px)}.weather-overlay-control:hover .layer-bottom{stroke-width:2.5px;transform:translateY(1px)}.weather-overlay-control.active .layer-stack{stroke-width:2.5px}.weather-overlay-control.active .layer-top{opacity:.85}.weather-overlay-control.active .layer-middle{opacity:.95}.weather-overlay-control.active .layer-bottom{opacity:1}.weather-overlay-control.active .layer-stack{animation:2s ease-in-out infinite layerPulseActive}@keyframes layerPulseActive{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-1px)scale(1.02)}}.overlay-active-dot{background:linear-gradient(135deg,#7acc00,#61a60e);border:2px solid #fff;border-radius:50%;width:8px;height:8px;animation:2s ease-in-out infinite dotPulseGlow;position:absolute;top:6px;right:6px;box-shadow:0 0 0 1px #61a60e4d,0 2px 6px #61a60e66}@keyframes dotPulseGlow{0%,to{opacity:1;transform:scale(1);box-shadow:0 0 0 1px #61a60e4d,0 2px 6px #61a60e66}50%{opacity:.9;transform:scale(1.15);box-shadow:0 0 0 2px #61a60e80,0 2px 8px #61a60e99}}.weather-overlay-menu{z-index:1000;background:#fff;border:1px solid #0000001a;border-radius:12px;width:240px;padding:12px;animation:.25s cubic-bezier(.4,0,.2,1) overlayMenuSlide;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 12px 32px #00000026}@keyframes overlayMenuSlide{0%{opacity:0;transform:translateY(-8px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.overlay-menu-header{color:var(--color-text-primary,#1d1d1f);border-bottom:1px solid #00000014;margin-bottom:8px;padding:8px 12px;font-size:13px;font-weight:600}.overlay-menu-options{flex-direction:column;gap:4px;display:flex}.overlay-option{cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;transition:background .2s;display:flex}.overlay-option:hover{background:#0000000a}.overlay-option input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--gv-green,#61a60e)}.overlay-option-icon{font-size:16px;line-height:1}.overlay-option-label{color:var(--color-text-primary,#1d1d1f);flex:1;font-size:14px;font-weight:500}@media (width<=1280px){.subheader-content{grid-template-columns:240px 1fr 180px}.view-controls{gap:8px}.layer-label{display:none}.layer-filter{padding:10px}}@media (width<=768px){.subheader-content{grid-template-columns:1fr;gap:12px;padding:8px 16px}.subheader-left,.subheader-right{display:none}.layer-filters{-webkit-overflow-scrolling:touch;justify-content:flex-start;overflow-x:auto}.layer-filter{flex-shrink:0}.view-controls{display:none}}.scans-icon{width:20px;height:20px;display:inline-block}.scans-icon .towers{transform-origin:bottom;animation:3s ease-in-out infinite towerSway}@keyframes towerSway{0%,to{transform:rotate(0)}50%{transform:rotate(1deg)}}.scans-icon .power-line{animation:2s ease-in-out infinite lineSag}@keyframes lineSag{0%,to{d:path("M 6 10 Q 12 13 18 10")}50%{d:path("M 6 10 Q 12 13.5 18 10")}}.scans-icon.active .energy-flow{stroke-dasharray:20;stroke-dashoffset:40px;animation:2s linear infinite energyFlow}@keyframes energyFlow{0%{stroke-dashoffset:40px}to{stroke-dashoffset:0}}.scans-icon.active .flow-stop-1{animation:2s linear infinite flowStop1}.scans-icon.active .flow-stop-2{animation:2s linear infinite flowStop2}.scans-icon.active .flow-stop-3{animation:2s linear infinite flowStop3}@keyframes flowStop1{0%{offset:0}to{offset:100%}}@keyframes flowStop2{0%{offset:50%}to{offset:150%}}@keyframes flowStop3{0%{offset:100%}to{offset:200%}}.scans-icon.active .particle{animation:3s ease-in-out infinite particleTravel}.particle-1{animation-delay:0s}.particle-2{animation-delay:.5s}.particle-3{animation-delay:1s}@keyframes particleTravel{0%{cx:6px;cy:10px;r:1px;opacity:0}10%{opacity:1;r:2px}50%{cx:12px;cy:13px;r:2px}90%{opacity:1}to{cx:18px;cy:10px;r:1px;opacity:0}}.scans-icon.active .spark{animation:1.5s ease-in-out infinite sparkFlash}.spark-1{animation-delay:.3s}.spark-2{animation-delay:.8s}@keyframes sparkFlash{0%,90%,to{opacity:0}5%,15%{opacity:1}10%{opacity:.5}}.scans-icon.active .charge-bar{animation:3s ease-in-out infinite chargeUp}.bar-1{animation-delay:0s}.bar-2{animation-delay:.3s}.bar-3{animation-delay:.6s}.bar-4{animation-delay:.9s}@keyframes chargeUp{0%,25%{opacity:.3;transform:scaleY(.8)}50%{opacity:1;transform:scaleY(1.1)}75%,to{opacity:1;transform:scaleY(1)}}.layer-filter:hover .scans-icon.active .energy-flow{animation:1s linear infinite energyFlowFast}@keyframes energyFlowFast{0%{stroke-dashoffset:40px}to{stroke-dashoffset:0}}.layer-filter:hover .scans-icon.active .particle{animation:1.5s ease-in-out infinite particleTravelFast}@keyframes particleTravelFast{0%{cx:6px;cy:11px;opacity:0}50%{cx:12px;cy:13px;opacity:1}to{cx:18px;cy:11px;opacity:0}}.layer-filter.active .scans-icon{filter:drop-shadow(0 0 4px #7acc0099);animation:2s ease-in-out infinite iconGlow}@keyframes iconGlow{0%,to{filter:drop-shadow(0 0 4px #7acc0099)}50%{filter:drop-shadow(0 0 8px #7acc00e6)}}.temperature-icon,.sag-icon,.strain-icon,.health-icon,.events-icon,.summary-icon{width:20px;height:20px;color:var(--gv-grey,#51545d);transition:all .3s;display:inline-block}.layer-filter.active .temperature-icon,.layer-filter.active .sag-icon,.layer-filter.active .strain-icon,.layer-filter.active .health-icon,.layer-filter.active .events-icon,.layer-filter.active .summary-icon{color:#fff}.temperature-icon .mercury-column{transform-origin:bottom;animation:3s ease-in-out infinite mercuryRise}@keyframes mercuryRise{0%,to{cy:10px;opacity:.7}50%{cy:6px;opacity:1}}.temperature-icon .mercury-bulb{animation:2s ease-in-out infinite bulbPulse}@keyframes bulbPulse{0%,to{r:2px}50%{r:3px}}.temperature-icon.active .heat-waves .wave{opacity:0;animation:1.5s ease-in-out infinite waveFloat}.temperature-icon.active .wave-1{animation-delay:0s}.temperature-icon.active .wave-2{animation-delay:.3s}@keyframes waveFloat{0%{opacity:0;transform:translateY(0)translate(0)}50%{opacity:1}to{opacity:0;transform:translateY(-4px)translate(2px)}}.temperature-icon .temp-markers .marker{animation:2s ease-in-out infinite markerFade}.marker-1{animation-delay:0s}.marker-2{animation-delay:.2s}.marker-3{animation-delay:.4s}.marker-4{animation-delay:.6s}@keyframes markerFade{0%,to{opacity:.4}50%{opacity:1}}.layer-filter.active .temperature-icon{filter:drop-shadow(0 0 4px #fff9)}.sag-icon .sag-cable{animation:3s ease-in-out infinite cableSag}@keyframes cableSag{0%,to{d:path("M 4 6 Q 12 14 20 6")}50%{d:path("M 4 6 Q 12 16 20 6")}}.sag-icon .sag-measure{animation:2s ease-in-out infinite measurePulse}@keyframes measurePulse{0%,to{cy:11px;opacity:.5}50%{cy:13px;opacity:1}}.sag-icon .arrow-top,.sag-icon .arrow-bottom{animation:2s ease-in-out infinite arrowBounce}.sag-icon .arrow-bottom{animation-delay:.5s}@keyframes arrowBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.layer-filter.active .sag-icon{filter:drop-shadow(0 0 4px #fff9)}.strain-icon .strain-coil{animation:2s ease-in-out infinite coilStretch}@keyframes coilStretch{0%,to{d:path("M 3 12 L 5 12 L 6 8 L 8 16 L 10 8 L 12 16 L 14 8 L 16 16 L 18 8 L 19 12 L 21 12")}50%{d:path("M 3 12 L 5 12 L 6.5 9 L 8.5 15 L 10.5 9 L 12.5 15 L 14.5 9 L 16.5 15 L 18 9 L 19 12 L 21 12")}}.strain-icon .force-arrows .force-left,.strain-icon .force-arrows .force-right{animation:1.5s ease-in-out infinite forcePull}.strain-icon .force-right{animation-direction:reverse}@keyframes forcePull{0%,to{opacity:.7;transform:translate(0)}50%{opacity:1;transform:translate(-2px)}}.strain-icon.active .stress-indicators .stress{animation:1s ease-in-out infinite stressFlash}.stress-1{animation-delay:0s}.stress-2{animation-delay:.2s}.stress-3{animation-delay:.4s}@keyframes stressFlash{0%,to{opacity:0;transform:scaleY(.5)}50%{opacity:1;transform:scaleY(1)}}.layer-filter.active .strain-icon{filter:drop-shadow(0 0 4px #fff9)}.health-icon .heart-outline{transform-origin:50%;animation:1.5s ease-in-out infinite heartBeat}@keyframes heartBeat{0%,to{transform:scale(1)}14%{transform:scale(1.1)}28%{transform:scale(1)}42%{transform:scale(1.1)}70%{transform:scale(1)}}.health-icon .heartbeat-line{stroke-dasharray:50;stroke-dashoffset:50px;animation:2s linear infinite heartbeatDraw}@keyframes heartbeatDraw{0%{stroke-dashoffset:50px}to{stroke-dashoffset:0}}.health-icon.active .pulse-rings .pulse{opacity:0;animation:2s ease-out infinite pulseExpand}.pulse-1{animation-delay:0s}.pulse-2{animation-delay:.5s}.layer-filter.active .health-icon{filter:drop-shadow(0 0 4px #fff9)}.events-icon .warning-triangle{transform-origin:bottom;animation:3s ease-in-out infinite triangleShake}@keyframes triangleShake{0%,90%,to{transform:rotate(0)}92%,96%{transform:rotate(-2deg)}94%,98%{transform:rotate(2deg)}}.events-icon .exclamation-line{animation:1.5s ease-in-out infinite exclamationPulse}@keyframes exclamationPulse{0%,to{opacity:1}50%{opacity:.5}}.events-icon .exclamation-dot{animation:1s ease-in-out infinite dotBlink}@keyframes dotBlink{0%,to{r:1px;opacity:1}50%{r:1px;opacity:.7}}.events-icon.active .alert-rays .ray{opacity:0;animation:1s ease-out infinite rayBurst}.ray-1{animation-delay:0s}.ray-2{animation-delay:.15s}.ray-3{animation-delay:.3s}@keyframes rayBurst{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}.layer-filter.active .events-icon{filter:drop-shadow(0 0 4px #fff9)}.summary-icon .list-lines .line{stroke-dasharray:10;stroke-dashoffset:10px;animation:2s ease-out infinite lineWrite}.line-1{animation-delay:0s}.line-2{animation-delay:.3s}.line-3{animation-delay:.6s}@keyframes lineWrite{0%{stroke-dashoffset:10px}50%,to{stroke-dashoffset:0}}.summary-icon .clipboard-clip{transform-origin:top;animation:3s ease-in-out infinite clipBounce}@keyframes clipBounce{0%,to{transform:scaleY(1)}10%{transform:scaleY(.95)}20%{transform:scaleY(1)}}.summary-icon.active .checkmarks .check{opacity:0;animation:2s ease-out infinite checkAppear}.check-1{animation-delay:.5s}.check-2{animation-delay:1s}@keyframes checkAppear{0%{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.layer-filter.active .summary-icon{filter:drop-shadow(0 0 4px #fff9)}.layer-filter:hover:not(.disabled) .temperature-icon,.layer-filter:hover:not(.disabled) .sag-icon,.layer-filter:hover:not(.disabled) .strain-icon,.layer-filter:hover:not(.disabled) .health-icon,.layer-filter:hover:not(.disabled) .events-icon,.layer-filter:hover:not(.disabled) .summary-icon,.layer-filter:hover:not(.disabled) .scans-icon{transform:scale(1.1)}.layer-filter:hover:not(.disabled) .mercury-column,.layer-filter:hover:not(.disabled) .sag-cable{animation-duration:1.5s}.layer-filter:hover:not(.disabled) .strain-coil{animation-duration:1s}.layer-filter:hover:not(.disabled) .heart-outline{animation-duration:.8s}.layer-filter:hover:not(.disabled) .warning-triangle{animation-duration:1.5s}.layer-filter:hover:not(.disabled) .list-lines .line{animation-duration:1s}.network-health-dashboard{background:var(--color-surface,#fff);border-radius:var(--border-radius-lg,16px);box-shadow:var(--shadow-sm,0 1px 3px #00000014);flex-shrink:0;overflow:hidden}.nhd-header{border-bottom:1px solid var(--color-border-light,#e5e5ea);justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.nhd-title-group{flex-direction:column;gap:2px;display:flex}.nhd-title{color:var(--color-text-primary,#1d1d1f);letter-spacing:-.02em;margin:0;font-size:17px;font-weight:600}.nhd-subtitle{color:var(--color-text-tertiary,#aeaeb2);font-size:11px}.nhd-controls{align-items:center;gap:12px;display:flex}.nhd-last-updated{flex-direction:column;align-items:flex-end;gap:1px;display:flex}.nhd-update-label{color:var(--color-text-tertiary,#aeaeb2);text-transform:uppercase;letter-spacing:.03em;font-size:10px}.nhd-update-time{color:var(--color-text-secondary,#86868b);font-variant-numeric:tabular-nums;font-size:13px;font-weight:500}.nhd-refresh-btn{background:var(--color-bg,#f5f5f7);border-radius:var(--border-radius-sm,8px);cursor:pointer;width:32px;height:32px;color:var(--gv-blue,#005da6);border:none;justify-content:center;align-items:center;transition:all .2s;display:flex}.nhd-refresh-btn:hover:not(:disabled){background:#005da614;transform:scale(1.05)}.nhd-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.nhd-refresh-btn.refreshing svg{animation:.6s ease-in-out refreshSpin}@keyframes refreshSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.nhd-auto-refresh{align-items:center;display:flex}.nhd-auto-refresh-toggle{cursor:pointer;color:var(--color-text-secondary,#86868b);align-items:center;gap:6px;font-size:12px;display:flex}.nhd-auto-refresh-toggle input[type=checkbox]{width:14px;height:14px;accent-color:var(--gv-blue,#005da6);cursor:pointer}.nhd-toggle-label{color:var(--color-text-secondary,#86868b);font-size:11px;font-weight:500}.nhd-cards-grid{background:var(--color-border-light,#e5e5ea);grid-template-columns:repeat(4,1fr);gap:1px;display:grid}.nhd-card{background:var(--color-surface,#fff);align-items:center;gap:12px;padding:16px 20px;transition:background .15s;display:flex}.nhd-card:hover{background:var(--color-bg,#f5f5f7)}.nhd-card-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.nhd-card-icon-total{color:var(--gv-blue,#005da6);background:#005da614}.nhd-card-icon-normal{color:var(--color-normal-text);background:#34c75914}.nhd-card-icon-warning{color:var(--severity-warning-text);background:#ffcc002e}.nhd-card-icon-critical{color:var(--severity-critical-text);background:#ff3b3014}.nhd-card-content{flex-direction:column;gap:2px;min-width:0;display:flex}.nhd-card-value{color:var(--color-text-primary,#1d1d1f);font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;font-size:20px;font-weight:600;line-height:1.2;display:flex}.nhd-value-normal{color:var(--color-normal-text)}.nhd-value-warning{color:var(--color-warning-text)}.nhd-value-critical{color:var(--color-critical-text)}.nhd-card-label{color:var(--color-text-tertiary,#aeaeb2);text-transform:uppercase;letter-spacing:.03em;font-size:11px}.nhd-trend{font-size:13px;font-weight:600}.trend-up{color:var(--color-critical-text)}.trend-down{color:var(--color-normal-text)}.trend-stable{color:var(--color-text-tertiary,#aeaeb2)}.nhd-card-normal{border-left:3px solid var(--color-success,#34c759)}.nhd-card-warning{border-left:3px solid var(--color-warning,#fc0)}.nhd-card-critical{border-left:3px solid var(--color-error,#ff3b30);animation:2s ease-in-out infinite criticalPulse}@keyframes criticalPulse{0%,to{background:var(--color-surface,#fff)}50%{background:#ff3b3008}}@media (width<=1200px){.nhd-cards-grid{grid-template-columns:repeat(4,1fr)}}@media (width<=900px){.nhd-cards-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=600px){.nhd-cards-grid{grid-template-columns:1fr}.nhd-header{flex-direction:column;align-items:flex-start;gap:12px}.nhd-controls{justify-content:space-between;width:100%}}.span-table-container{background:var(--color-surface,#fff);border-radius:var(--border-radius-lg,16px);box-shadow:var(--shadow-sm,0 1px 3px #00000014);flex-shrink:0;overflow:hidden}.st-toolbar{border-bottom:1px solid var(--color-border-light,#e5e5ea);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;display:flex}.st-toolbar-left{flex-wrap:wrap;flex:1;align-items:center;gap:12px;display:flex}.st-toolbar-right{align-items:center;gap:12px;display:flex}.st-search{background:var(--color-bg,#f5f5f7);border-radius:var(--border-radius-sm,8px);border:1px solid #0000;align-items:center;gap:8px;min-width:240px;padding:6px 12px;transition:all .2s;display:flex}.st-search:focus-within{border-color:var(--gv-blue,#005da6);background:#fff;box-shadow:0 0 0 3px #005da61a}.st-search-icon{color:var(--color-text-tertiary,#aeaeb2);flex-shrink:0}.st-search-input{color:var(--color-text-primary,#1d1d1f);background:0 0;border:none;outline:none;width:100%;font-family:inherit;font-size:13px}.st-search-input::placeholder{color:var(--color-text-tertiary,#aeaeb2)}.st-filter-group{align-items:center;gap:4px;display:flex}.st-filter-label{color:var(--color-text-tertiary,#aeaeb2);margin-right:2px;font-size:11px;font-weight:500}.st-filter-btn{border-radius:var(--border-radius-full,9999px);border:1px solid var(--color-border-light,#e5e5ea);color:var(--color-text-secondary,#86868b);cursor:pointer;text-transform:capitalize;background:0 0;padding:4px 10px;font-size:11px;font-weight:500;transition:all .2s}.st-filter-btn:hover{border-color:var(--color-border,#d2d2d7);color:var(--color-text-primary,#1d1d1f)}.st-filter-btn.active{border-color:#0000}.st-filter-critical.active{color:var(--color-critical-text);background:#ff3b3014;border-color:#d420204d}.st-filter-warning.active{color:var(--color-warning-text);background:#ffcc002e;border-color:#b386004d}.st-filter-normal.active{color:var(--color-normal-text);background:#34c75914;border-color:#1a7e344d}.st-filter-port.active{color:var(--gv-blue,#005da6);background:#005da61a;border-color:#005da64d}.st-result-count{color:var(--color-text-tertiary,#aeaeb2);white-space:nowrap;font-size:12px}.st-table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}.st-table{border-collapse:collapse;width:100%;font-size:13px}.st-th{text-align:left;color:var(--color-text-tertiary,#aeaeb2);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--color-border-light,#e5e5ea);background:var(--color-bg,#f5f5f7);cursor:pointer;white-space:nowrap;user-select:none;padding:10px 16px;font-size:11px;font-weight:600;transition:color .2s}.st-th:hover{color:var(--gv-blue,#005da6)}.st-th-status{width:90px}.st-th-num{text-align:right}.sort-icon{margin-left:4px;font-size:11px}.sort-inactive{opacity:.3}.sort-active{color:var(--gv-blue,#005da6);opacity:1}.st-row{cursor:pointer;transition:background .15s}.st-row:hover{background:var(--color-bg,#f5f5f7)}.st-row:focus-visible{outline:2px solid var(--gv-blue,#005da6);outline-offset:-2px}.st-row-critical{border-left:3px solid var(--color-error,#ff3b30)}.st-row-critical:hover{background:#ff3b300a}.st-row-warning{border-left:3px solid var(--color-warning,#fc0)}.st-row-warning:hover{background:#ffcc000a}.st-row-normal{border-left:3px solid #0000}.st-td{border-bottom:1px solid var(--color-border-light,#e5e5ea);color:var(--color-text-primary,#1d1d1f);font-variant-numeric:tabular-nums;padding:10px 16px}.st-td-status{width:90px}.st-td-name{text-overflow:ellipsis;white-space:nowrap;max-width:250px;font-weight:500;overflow:hidden}.st-td-num{text-align:right;font-weight:500}.st-td-time{color:var(--color-text-secondary,#86868b);white-space:nowrap;font-size:12px}.st-temp-critical{color:var(--color-critical-text);font-weight:600}.st-temp-warning{color:var(--color-warning-text);font-weight:600}.st-temp-normal{color:var(--color-elevated-text)}.span-status-badge{text-transform:uppercase;letter-spacing:.03em;border-radius:var(--border-radius-full,9999px);padding:2px 8px;font-size:10px;font-weight:600;display:inline-block}.status-critical{color:var(--color-critical-text);background:#ff3b3014}.status-warning{color:var(--color-warning-text);background:#ffcc002e}.status-normal{color:var(--color-normal-text);background:#34c75914}.st-empty{text-align:center;color:var(--color-text-tertiary,#aeaeb2);padding:40px 20px;font-size:14px}.st-pagination{border-top:1px solid var(--color-border-light,#e5e5ea);background:var(--color-bg,#f5f5f7);justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.st-page-size{align-items:center;gap:4px;display:flex}.st-page-label{color:var(--color-text-tertiary,#aeaeb2);margin-right:4px;font-size:12px}.st-page-size-btn{border:1px solid var(--color-border-light,#e5e5ea);color:var(--color-text-secondary,#86868b);cursor:pointer;background:#fff;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:500;transition:all .15s}.st-page-size-btn:hover{border-color:var(--gv-blue,#005da6);color:var(--gv-blue,#005da6)}.st-page-size-btn.active{background:var(--gv-blue,#005da6);color:#fff;border-color:var(--gv-blue,#005da6)}.st-page-nav{align-items:center;gap:12px;display:flex}.st-page-btn{border:1px solid var(--color-border-light,#e5e5ea);color:var(--gv-blue,#005da6);cursor:pointer;background:#fff;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:500;transition:all .15s}.st-page-btn:hover:not(:disabled){border-color:var(--gv-blue,#005da6);background:#005da60d}.st-page-btn:disabled{opacity:.4;cursor:not-allowed;color:var(--color-text-tertiary,#aeaeb2)}.st-page-info{color:var(--color-text-secondary,#86868b);font-variant-numeric:tabular-nums;font-size:12px}@media (width<=900px){.st-toolbar-left{flex-direction:column;align-items:flex-start}.st-search{min-width:100%}}@media (width<=600px){.st-toolbar{flex-direction:column;align-items:flex-start}.st-pagination{flex-direction:column;align-items:flex-start;gap:12px}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif), serif;background-color:var(--color-bg,#f5f5f7);color:var(--color-text-primary,#1d1d1f);width:100%;min-height:100vh}#root{width:100%;min-height:100vh}.login-page{background:linear-gradient(135deg, var(--gv-blue,#005da6) 0%, var(--gv-dark-blue,#113154) 100%);justify-content:center;align-items:center;width:100%;min-height:100vh;padding:20px;display:flex}.login-card{text-align:center;background:#fff;border-radius:16px;width:100%;max-width:440px;padding:48px 40px;box-shadow:0 20px 60px #0003}.login-logo{margin-bottom:32px}.login-logo-img{width:200px;height:auto;margin-bottom:12px}.login-logo h1{color:var(--gv-blue,#005da6);margin-bottom:4px;font-size:32px;font-weight:700}.login-logo p{color:var(--color-text-secondary,#86868b);margin-bottom:0;font-size:14px}.login-buttons{flex-direction:column;gap:12px;margin-bottom:24px;display:flex}.login-btn{cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:12px;width:100%;padding:14px 24px;font-size:15px;font-weight:600;transition:all .2s;display:flex}.login-btn:disabled{opacity:.6;cursor:not-allowed}.login-btn-google{color:#3c4043;background:#fff;border:1px solid #dadce0}.login-btn-google:hover:not(:disabled){background:#f7f8f8;box-shadow:0 1px 3px #0000001a}.login-btn-microsoft{color:#5e5e5e;background:#fff;border:1px solid #8c8c8c}.login-btn-microsoft:hover:not(:disabled){background:#f5f5f5;box-shadow:0 1px 3px #0000001a}.login-error{background:var(--color-error-bg,#fff5f5);color:var(--color-error-text,#c53030);border:1px solid var(--color-error-border,#feb2b2);text-align:left;border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:14px}.login-footer{margin-top:8px}.login-footer p{color:var(--color-text-tertiary,#aeaeb2);margin-bottom:4px;font-size:13px}.login-compliance{font-style:italic;color:var(--color-text-tertiary,#aeaeb2)!important;font-size:11px!important}.app-shell{background:var(--color-bg,#f5f5f7);flex-direction:column;width:100%;height:100vh;display:flex;position:relative;overflow:hidden}.main-content{background:var(--color-bg,#f5f5f7);flex:1;display:flex;position:relative;overflow:hidden}.app-main{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:24px 32px}.monitoring-view{flex-direction:column;flex:1;width:100%;display:flex;overflow:hidden}.monitoring-content{flex-direction:column;flex:1;gap:24px;width:100%;max-width:1600px;min-height:0;margin:0 auto;padding:24px 32px;display:flex;overflow-y:auto}@media (width<=1024px){.monitoring-content{gap:16px;padding:16px}}.dashboard-placeholder{flex:1;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.placeholder-content{text-align:center;background:var(--color-surface,#fff);border-radius:var(--border-radius-lg,16px);box-shadow:var(--shadow-md,0 4px 12px #0000001a);max-width:480px;padding:48px}.placeholder-content h2{font-size:var(--font-size-xxl,28px);font-weight:var(--font-weight-semibold,600);color:var(--gv-blue,#005da6);margin-bottom:12px}.placeholder-content p{font-size:var(--font-size-md,15px);color:var(--color-text-secondary,#86868b);margin-bottom:8px}.placeholder-hint{font-style:italic;font-size:var(--font-size-sm,13px)!important;color:var(--color-text-tertiary,#aeaeb2)!important}.admin-panel-header{flex-direction:column;gap:12px;margin-bottom:24px;display:flex}.back-to-dashboard-btn{border:1px solid var(--color-border-light,#e5e5ea);border-radius:var(--border-radius-sm,8px);color:var(--gv-blue,#005da6);cursor:pointer;background:0 0;align-self:flex-start;align-items:center;gap:8px;padding:8px 16px;font-size:14px;font-weight:500;transition:all .2s;display:flex}.back-to-dashboard-btn:hover{border-color:var(--gv-blue,#005da6);background:#005da60d}.admin-panel-title{color:var(--gv-blue,#005da6);font-size:20px;font-weight:700}.admin-meta{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.user-email-badge{color:var(--color-text-secondary,#86868b);font-size:13px}.error-page{flex:1;justify-content:center;align-items:center;padding:40px;display:flex}.loading{color:var(--color-text-secondary,#86868b);justify-content:center;align-items:center;width:100%;padding:60px 20px;font-size:16px;display:flex}.error-container{background:var(--color-error-bg,#fff5f5);border:1px solid var(--color-error-border,#feb2b2);color:var(--color-error-text,#c53030);text-align:center;border-radius:12px;max-width:600px;margin:40px auto;padding:32px}.error-container h2{margin-bottom:12px}.error-container p{margin-bottom:8px}.compliance-note{margin-top:16px;font-size:12px;font-style:italic;color:var(--color-text-tertiary,#aeaeb2)!important}.tenant-badge{color:var(--gv-blue,#005da6);background:#005da614;border-radius:20px;padding:4px 12px;font-size:12px;font-weight:500;display:inline-block}.role-header-badge{border-radius:4px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.role-header-admin{background:var(--color-role-admin-bg,#fefcbf);color:var(--color-role-admin-text,#975a16)}.role-header-super_admin{background:var(--color-role-super-admin-bg,#e9d8fd);color:var(--color-role-super-admin,#6b46c1)}.sign-out-button{border:1px solid var(--color-border,#d2d2d7);border-radius:var(--border-radius-sm,8px);color:var(--color-text-secondary,#86868b);cursor:pointer;background:0 0;margin-top:16px;padding:8px 20px;font-size:13px;font-weight:500;transition:all .2s}.sign-out-button:hover{border-color:var(--color-border,#d2d2d7);color:var(--color-text-primary,#1d1d1f);background:#00000008}.user-tenant{color:var(--gv-blue,#005da6);background:#005da614;border-radius:4px;margin-top:4px;padding:2px 8px;font-size:12px;display:inline-block}.tab-bar{border-bottom:2px solid var(--color-border-light,#e5e5ea);gap:4px;margin-bottom:24px;display:flex}.tab-button{color:var(--color-text-secondary,#86868b);cursor:pointer;background-color:#0000;border:none;border-bottom:3px solid #0000;margin-bottom:-2px;padding:12px 28px;font-size:15px;font-weight:400;transition:all .2s}.tab-button:hover{color:var(--gv-blue,#005da6);background-color:#005da608}.tab-button.active{color:var(--gv-blue,#005da6);border-bottom:3px solid var(--gv-blue,#005da6);background-color:#fff;font-weight:700}.table-container,.summary-container{box-shadow:var(--shadow-sm,0 1px 3px #00000014);background:#fff;border-radius:12px;width:100%;padding:24px}.summary-cards{gap:20px;margin-bottom:20px;display:flex}.summary-card{background:linear-gradient(135deg, var(--gv-blue,#005da6) 0%, var(--gv-dark-blue,#113154) 100%);color:#fff;text-align:center;border-radius:12px;flex:1;padding:20px}.summary-card h3{opacity:.9;margin:0 0 10px;font-size:14px}.summary-card .big-number{margin:0;font-size:32px;font-weight:700}table{border-collapse:collapse;width:100%;margin-top:15px}th,td{text-align:left;border-bottom:1px solid var(--color-border-light,#e5e5ea);color:var(--color-text-primary,#1d1d1f);padding:12px 16px}th{background-color:var(--gv-blue,#005da6);color:#fff;font-size:14px;font-weight:600}th:first-child{border-radius:8px 0 0}th:last-child{border-radius:0 8px 0 0}tr:hover{background-color:#005da608}.explore-section{width:100%}.explore-description{color:var(--color-text-secondary,#86868b);margin-bottom:16px;font-size:14px}.embed-container,.looker-embed-container{width:100%;box-shadow:var(--shadow-sm,0 1px 3px #00000014);border-radius:12px;overflow:hidden}.embed-loading,.embed-error{text-align:center;background:var(--color-bg,#f5f5f7);border-radius:12px;padding:40px}.embed-error{background:var(--color-error-bg,#fff5f5);color:var(--color-error-text,#c53030)}.admin-input{border:1px solid var(--color-border-light,#e5e5ea);width:100%;color:var(--color-text-primary,#1d1d1f);border-radius:6px;padding:10px 12px;font-size:14px;transition:border-color .2s}.admin-input:focus{border-color:var(--gv-blue,#005da6);outline:none;box-shadow:0 0 0 3px #005da61a}.admin-btn{cursor:pointer;border:none;border-radius:6px;padding:10px 20px;font-size:14px;font-weight:600;transition:all .2s}.admin-btn-primary{background:var(--gv-blue,#005da6);color:#fff}.admin-btn-primary:hover:not(:disabled){background:var(--gv-dark-blue,#113154)}.admin-btn-primary:disabled{opacity:.6;cursor:not-allowed}.admin-compliance-note{color:var(--color-text-tertiary,#aeaeb2);margin-bottom:16px;font-size:12px;font-style:italic;line-height:1.5}.invite-form-container h3{color:var(--color-text-primary,#1d1d1f);margin-bottom:8px}.invite-form{flex-direction:column;gap:16px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-group label{color:var(--color-text-secondary,#86868b);font-size:13px;font-weight:600}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-error{background:var(--color-error-bg,#fff5f5);color:var(--color-error-text,#c53030);border:1px solid var(--color-error-border,#feb2b2);border-radius:8px;padding:12px 16px;font-size:14px}.form-success{background:var(--color-success-bg,#f0fff4);color:var(--color-success-text,#276749);border:1px solid var(--color-success-border,#9ae6b4);border-radius:8px;padding:12px 16px;font-size:14px}.status{border-radius:4px;padding:4px 8px;font-size:12px;font-weight:500}.status-complete,.status-shipped{background:var(--color-status-complete-bg,#c6f6d5);color:var(--color-status-complete-text,#22543d)}.status-processing{background:var(--color-role-admin-bg,#fefcbf);color:var(--color-role-admin-text,#975a16)}.status-cancelled,.status-returned{background:var(--color-status-cancelled-bg,#fed7d7);color:var(--color-status-cancelled-text,#9b2c2c)}@media (width<=1024px){.app-main{padding:20px}}@media (width<=768px){.form-row{grid-template-columns:1fr}.summary-cards{flex-direction:column}.login-card{padding:32px 24px}.admin-meta{flex-direction:column;align-items:flex-start}}
