body{margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.connectivity-toast-global{align-items:flex-start;background:#fff;background:var(--bg-primary,#fff);border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:12px;box-shadow:0 12px 40px #0000001f,0 2px 8px #0000000f;color:#111;color:var(--text-primary,#111);display:flex;gap:.75rem;max-width:min(22rem,calc(100vw - 2rem));padding:.875rem 1rem;position:fixed;right:1rem;top:72px;z-index:100000}.connectivity-toast-global--online{border-left:4px solid #10b981;border-left:4px solid var(--success,#10b981)}.connectivity-toast-global--offline{border-left:4px solid #ef4444;border-left:4px solid var(--danger,#ef4444)}.connectivity-toast-global--prediction{border-left:4px solid #6366f1}.connectivity-toast-global-text strong{display:block;font-size:.9375rem;margin-bottom:.25rem}.connectivity-toast-global-text p{color:#64748b;color:var(--text-secondary,#64748b);font-size:.8125rem;line-height:1.45;margin:0}.connectivity-toast-global-close{align-items:center;background:#0000;border:none;border-radius:8px;color:#94a3b8;color:var(--text-tertiary,#94a3b8);cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:4px;transition:background .15s,color .15s}.connectivity-toast-global-close:hover{background:#f1f5f9;background:var(--bg-tertiary,#f1f5f9);color:#111;color:var(--text-primary,#111)}@media (max-width:480px){.connectivity-toast-global{max-width:calc(100vw - 1rem);right:.5rem;top:64px}}.login-page{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100vh;overflow:hidden;padding:2rem 1rem;position:relative}.login-bg{inset:0;pointer-events:none;position:fixed;z-index:0}.login-bg-gradient{background:radial-gradient(ellipse 80% 50% at 50% -20%,#00d4ff26,#0000),radial-gradient(ellipse 60% 40% at 100% 100%,#00ff8814,#0000),radial-gradient(ellipse 50% 30% at 0 80%,#3b82f60f,#0000);inset:0;position:absolute}.login-bg-grid{background-image:linear-gradient(#ffffff05 1px,#0000 0),linear-gradient(90deg,#ffffff05 1px,#0000 0);background-size:48px 48px;inset:0;position:absolute}.login-bg-glow{background:radial-gradient(circle,#00d4ff0f 0,#0000 70%);height:600px;left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);width:600px}[data-theme=light] .login-bg-gradient{background:radial-gradient(ellipse 80% 50% at 50% -20%,#0099cc1f,#0000),radial-gradient(ellipse 60% 40% at 100% 100%,#00cc660f,#0000)}[data-theme=light] .login-bg-grid{background-image:linear-gradient(#00000008 1px,#0000 0),linear-gradient(90deg,#00000008 1px,#0000 0)}.login-theme-toggle{align-items:center;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:12px;color:var(--text-primary);cursor:pointer;display:flex;height:48px;justify-content:center;position:fixed;right:1.5rem;top:1.5rem;transition:all .25s ease;width:48px;z-index:10}.login-theme-toggle:hover{background:#ffffff1a;border-color:var(--accent-primary);color:var(--accent-primary)}[data-theme=light] .login-theme-toggle{background:#ffffffe6;border-color:#00000014;color:var(--text-primary)}[data-theme=light] .login-theme-toggle:hover{background:#fff;border-color:var(--accent-primary);color:var(--accent-primary)}.login-card{background:#1e293b;border:1px solid #ffffff14;border-radius:24px;box-shadow:0 25px 50px -12px #00000080,inset 0 0 0 1px #ffffff08;max-width:420px;padding:2.5rem 2.25rem;position:relative;width:100%;z-index:1}[data-theme=light] .login-card{background:#fff;border-color:#0000000f;box-shadow:0 25px 50px -12px #00000026,inset 0 0 0 1px #00000005}.login-header{margin-bottom:2rem;text-align:center}.login-logo-wrap{align-items:center;display:flex;justify-content:center;margin-bottom:1.25rem;min-height:64px}.login-logo-img{filter:drop-shadow(0 0 1.5px black);max-height:56px;max-width:180px;object-fit:contain}.login-logo-img.login-logo--mono{filter:brightness(0) invert(1) drop-shadow(0 0 5px black)}[data-theme=light] .login-logo-img.login-logo--mono{filter:brightness(0) drop-shadow(0 0 1.5px black)}.login-logo-default{align-items:center;display:flex;gap:.5rem}.login-logo-icon{background:var(--accent-gradient);border-radius:10px;-webkit-clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);display:block;height:36px;width:36px}.login-logo-text{-webkit-text-fill-color:#0000;background:var(--accent-gradient);-webkit-background-clip:text;background-clip:text;font-size:1.5rem;font-weight:700;letter-spacing:.05em}.login-header h1{color:var(--text-primary);font-size:1.5rem;font-weight:600;letter-spacing:-.02em;margin:0 0 .35rem}.login-header p{color:var(--text-secondary);font-size:.9rem;margin:0}.login-form{display:flex;flex-direction:column;gap:1.25rem}.login-form .form-group{display:flex;flex-direction:column;gap:.5rem}.login-form label{color:var(--text-secondary);font-size:.875rem;font-weight:500}.login-form input{background:#ffffff0a;border:1px solid #ffffff1f;border-radius:12px;color:var(--text-primary);font-size:1rem;padding:.875rem 1rem;transition:all .2s ease}.login-form input::placeholder{color:var(--text-tertiary)}.login-remember{align-items:center;color:var(--text-secondary);cursor:pointer;display:flex;font-size:.875rem;gap:.5rem}.login-remember input{cursor:pointer;width:auto}.login-form input:focus{background:#ffffff0f;border-color:var(--accent-primary);box-shadow:0 0 0 3px #00d4ff26;outline:none}[data-theme=light] .login-form input{background:#00000005;border-color:#00000014}[data-theme=light] .login-form input:focus{background:#fff;border-color:var(--accent-primary);box-shadow:0 0 0 3px #09c3}.login-error{background:#ef444426;border:1px solid #ef44444d;border-radius:12px;color:#fca5a5;font-size:.875rem;padding:.875rem 1rem}[data-theme=light] .login-error{background:#ef444414;border-color:#ef444440;color:#dc2626}.login-btn{background:var(--accent-gradient);border:none;border-radius:12px;color:var(--button-text);cursor:pointer;font-size:1rem;font-weight:600;margin-top:.25rem;padding:1rem 1.5rem;transition:all .2s ease}.login-btn:hover:not(:disabled){box-shadow:0 8px 20px -8px #00d4ff66;opacity:.95;transform:translateY(-1px)}.login-btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.login-footer{border-top:1px solid #ffffff0f;font-size:.875rem;margin-top:1.75rem;padding-top:1.5rem;text-align:center}[data-theme=light] .login-footer{border-top-color:#0000000f}.login-footer a{color:var(--text-secondary);text-decoration:none;transition:color .2s}.login-footer a:hover{color:var(--accent-primary)}.login-footer-sep{color:var(--text-tertiary);margin:0 .5rem}.login-consent-banner{background:#1e293b;border:1px solid #ffffff1a;border-radius:16px;bottom:1.5rem;box-shadow:0 20px 40px -12px #00000080;left:50%;max-width:90vw;padding:1rem 1.25rem;position:fixed;transform:translateX(-50%);width:380px;z-index:10}[data-theme=light] .login-consent-banner{background:#fff;border-color:#00000014;box-shadow:0 20px 40px -12px #0003}.login-consent-banner p{color:var(--text-secondary);font-size:.875rem;line-height:1.4;margin:0 0 .75rem}.login-consent-actions{display:flex;gap:.5rem;justify-content:flex-end}.login-consent-btn{align-items:center;border:none;border-radius:10px;cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:500;gap:.4rem;padding:.5rem 1rem;transition:all .2s}.login-consent-btn.accept{background:var(--accent-gradient);color:var(--button-text)}.login-consent-btn.accept:hover{opacity:.95}.login-consent-btn.decline{background:#ffffff14;border:1px solid #ffffff1f;color:var(--text-secondary)}.login-consent-btn.decline:hover{background:#ffffff1f;color:var(--text-primary)}[data-theme=light] .login-consent-btn.decline{background:#0000000a;border-color:#0000001a}[data-theme=light] .login-consent-btn.decline:hover{background:#00000014}.tour-mask{background:#000000b8;pointer-events:all;position:fixed;z-index:9999}.tour-highlight-ring{animation:tourRingPulse 2s ease-in-out infinite;border-radius:10px;box-shadow:0 0 0 4px #00d4ff2e,0 0 22px #00d4ff8c,0 0 50px #00d4ff2e;outline:2px solid #00d4ff;outline:2px solid var(--accent-primary,#00d4ff);pointer-events:none;position:fixed;z-index:10000}@keyframes tourRingPulse{0%,to{box-shadow:0 0 0 3px #00d4ff26,0 0 18px #00d4ff73}50%{box-shadow:0 0 0 6px #00d4ff47,0 0 32px #00d4ffb3,0 0 60px #00d4ff40}}.tour-tooltip{animation:tourFadeIn .22s cubic-bezier(.22,1,.36,1);background:#0f0f0f;background:var(--bg-secondary,#0f0f0f);border:1px solid #fff2f259;border:1px solid var(--border-color,#fff2f259);border-radius:14px;box-shadow:0 4px 6px -1px #0006,0 10px 40px #0009,inset 0 0 0 1px #00d4ff;box-shadow:0 4px 6px -1px #0006,0 10px 40px #0009,0 0 0 1px var(--accent-primary,#00d4ff) inset;padding:20px 20px 16px;position:fixed;width:340px;z-index:10001}@keyframes tourFadeIn{0%{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.tour-tooltip--bottom:before,.tour-tooltip--left:before,.tour-tooltip--right:before,.tour-tooltip--top:before{content:none}.tour-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:10px}.tour-step-counter{color:#00d4ff;color:var(--accent-primary,#00d4ff);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.tour-close-btn{background:none;border:none;border-radius:6px;color:#fff9;color:var(--text-secondary,#fff9);cursor:pointer;flex-shrink:0;font-size:18px;line-height:1;margin-top:-2px;padding:2px 5px;transition:background .15s,color .15s}.tour-close-btn:hover{background:#ffffff1a;background:var(--toggle-hover,#ffffff1a);color:#fff;color:var(--text-primary,#fff)}.tour-progress-bar{background:#1a1a1a;background:var(--bg-tertiary,#1a1a1a);border-radius:2px;height:3px;margin-bottom:14px;overflow:hidden}.tour-progress-fill{background:linear-gradient(135deg,#00d4ff,#0f8);background:var(--accent-gradient,linear-gradient(135deg,#00d4ff 0,#0f8 100%));border-radius:2px;height:100%;transition:width .3s ease}.tour-title{color:#fff;color:var(--text-primary,#fff);font-size:15px;font-weight:700;letter-spacing:-.01em;margin:0 0 6px}.tour-description{color:#ffffffbf;color:var(--text-secondary,#ffffffbf);font-size:13px;line-height:1.6;margin:0 0 18px}.tour-actions{align-items:center;display:flex;gap:8px;justify-content:flex-end}.tour-btn{border:1px solid #0000;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500;line-height:1;padding:7px 18px;transition:all .15s ease}.tour-btn--back{background:#0000;border-color:#fff2f259;border-color:var(--border-color,#fff2f259);color:#ffffffbf;color:var(--text-secondary,#ffffffbf)}.tour-btn--back:hover{background:#ffffff14;background:var(--toggle-hover,#ffffff14);border-color:#4bd5ff99;border-color:var(--border-hover,#4bd5ff99);color:#fff;color:var(--text-primary,#fff)}.tour-btn--next{background:#00d4ff;background:var(--accent-primary,#00d4ff);color:#0a0a0a;font-weight:600}.tour-btn--next:hover{box-shadow:0 4px 12px #00d4ff66;opacity:.9;transform:translateY(-1px)}.tour-btn--finish{background:linear-gradient(135deg,#00d4ff,#0f8);background:var(--accent-gradient,linear-gradient(135deg,#00d4ff 0,#0f8 100%));color:#0a0a0a;font-weight:600}.tour-btn--finish:hover{box-shadow:0 4px 12px #0f86;opacity:.9;transform:translateY(-1px)}[data-theme=light] .tour-tooltip{box-shadow:0 4px 6px -1px #0000001a,0 10px 40px #00000026,inset 0 0 0 1px #00d4ff;box-shadow:0 4px 6px -1px #0000001a,0 10px 40px #00000026,0 0 0 1px var(--accent-primary,#00d4ff) inset}[data-theme=light] .tour-tooltip,[data-theme=light] .tour-tooltip--bottom:before,[data-theme=light] .tour-tooltip--left:before,[data-theme=light] .tour-tooltip--right:before,[data-theme=light] .tour-tooltip--top:before{background:#f8f9fa;background:var(--bg-secondary,#f8f9fa);border-color:#0000001f;border-color:var(--border-color,#0000001f)}[data-theme=light] .tour-btn--back{border-color:#00000026;border-color:var(--border-color,#00000026);color:#0009;color:var(--text-secondary,#0009)}[data-theme=light] .tour-btn--back:hover{background:#0000000d;color:#000;color:var(--text-primary,#000)}:root{--bg-primary:#0a0a0a;--bg-secondary:#0f0f0f;--bg-tertiary:#1a1a1a;--text-primary:#fff;--text-secondary:#fffc;--text-tertiary:hsla(0,0%,100%,.795);--border-color:hsla(0,100%,97%,.582);--border-hover:rgba(75,213,255,.938);--accent-primary:#00d4ff;--accent-secondary:#0f8;--accent-primary-alpha:#00d4ff4d;--accent-secondary-alpha:#00ff884d;--accent-gradient:linear-gradient(135deg,#00d4ff,#0f8);--card-bg:#ffffff08;--card-hover:#ffffff0d;--nav-bg:#0a0a0acc;--nav-bg-scrolled:#0a0a0af2;--nav-shadow:#00000080;--toggle-bg:#ffffff1a;--toggle-hover:#ffffff26;--badge-bg:#00d4ff1a;--button-text:#0a0a0a;--button-secondary-text:#fff;--globe-color:#00d4ff33;--globe-glow:#00d4ff1a;--sensor-color:#0f8}[data-theme=light]{--bg-primary:#fff;--bg-secondary:#f8f9fa;--bg-tertiary:#fafafa;--text-primary:#0a0a0a;--text-secondary:#000c;--text-tertiary:#0009;--border-color:hsla(0,1%,62%,.582);--border-hover:rgba(2,131,170,.938);--accent-primary:#09c;--accent-secondary:#0c6;--accent-primary-alpha:#0099cc4d;--accent-secondary-alpha:#00cc664d;--accent-gradient:linear-gradient(135deg,#09c,#0c6);--card-bg:#00000008;--card-hover:#0000000d;--nav-bg:#ffffffe6;--nav-bg-scrolled:#fffffffa;--nav-shadow:#0000001a;--toggle-bg:#ffffff0d;--toggle-hover:#0000001a;--badge-bg:#0099cc1a;--button-text:#fff;--button-secondary-text:#0a0a0a;--globe-color:#09c3;--globe-glow:#0099cc1a;--sensor-color:#0c6}*{transition:background-color .3s ease,color .3s ease,border-color .3s ease}body{background:var(--bg-primary);color:var(--text-primary);transition:background .3s ease,color .3s ease}.landing-container{background:#0a0a0a;background:var(--bg-primary);color:#fff;color:var(--text-primary)}.hero-section{background:linear-gradient(180deg,#0a0a0a,#0f0f0f);background:linear-gradient(180deg,var(--bg-primary) 0,var(--bg-secondary) 100%)}.hero-title{color:#fff;color:var(--text-primary)}.hero-description{color:#fffc;color:var(--text-secondary)}.navbar{background:#0a0a0a;background:var(--bg-primary)}.nav-menu a{color:#fffc;color:var(--text-secondary)}.nav-menu a:hover{color:#00d4ff;color:var(--accent-primary)}.feature-item,.info-card,.stat-card,.timeline-card{background:#ffffff08;background:var(--card-bg);border-color:hsla(0,100%,97%,.582);border-color:var(--border-color)}[data-theme=light] .network-badge{background:#0099cc1a;border-color:#00d4ff;border-color:var(--accent-primary);color:#00d4ff;color:var(--accent-primary)}[data-theme=light] .btn-primary{background:#00d4ff;background:var(--accent-primary);color:#fff}[data-theme=light] .globe-sphere{background:radial-gradient(circle at 30% 30%,#09c3,#0099cc0d 50%,#0000 70%)}.route-loading{align-items:center;background:#0a0a0a;background:var(--bg-primary,#0a0a0a);color:#fffc;color:var(--text-secondary,#fffc);display:flex;flex-direction:column;font-size:.875rem;gap:1rem;justify-content:center;min-height:100vh}.route-loading-spinner{animation:route-spin .8s linear infinite;border:3px solid #ffffff26;border-radius:50%;border-top:3px solid var(--accent-primary,#00d4ff);height:40px;width:40px}@keyframes route-spin{to{transform:rotate(1turn)}}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0a0a0a;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;overflow-x:hidden}.App{min-height:100vh}