.three-scene{position:absolute;inset:0;overflow:hidden;pointer-events:none}.three-scene__layer{position:absolute;inset:0;opacity:var(--scene-opacity,1);animation:three-scene-in 1.4s cubic-bezier(.16,1,.3,1) both}@keyframes three-scene-in{0%{opacity:0}to{opacity:var(--scene-opacity,1)}}.three-scene .threeui-background{background:transparent!important}.three-scene canvas{display:block;width:100%;height:100%}.hero{--accent:56 200 255;--accent-soft:120 178 255;--warm:150 210 255;--led-ok:120 235 180;--px:0;--py:0}*{box-sizing:border-box}.hero{position:relative;width:100%;height:100svh;min-height:420px;overflow:hidden;background:#05070d;isolation:isolate}.hero__frame{left:0;top:0;will-change:left,top,width,height}.hero__frame,.hero__image{position:absolute;width:100%;height:100%}.hero__image{inset:0;-o-object-fit:fill;object-fit:fill;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none;display:block}.layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.layer--atmos{background:radial-gradient(38% 46% at 20% 28%,rgb(var(--accent)/.1),transparent 70%),radial-gradient(40% 44% at 74% 72%,rgb(var(--warm)/.08),transparent 72%);transform:translate3d(calc(var(--px) * 6px),calc(var(--py) * 4px),0);animation:atmosDrift 18s ease-in-out infinite alternate;mix-blend-mode:screen}@keyframes atmosDrift{0%{opacity:.75;background-position:0 0,0 0}to{opacity:1;background-position:2% 1%,-2% -1%}}.layer--vignette{background:radial-gradient(120% 120% at 50% 46%,transparent 62%,rgba(5,7,13,.55) 100%)}.layer--svg{overflow:visible}.route-line{fill:none;stroke:rgb(var(--accent)/.16);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.route-flow{fill:none;stroke:rgb(var(--accent)/.55);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:3 20;animation:routeFlow 1.2s linear infinite}@keyframes routeFlow{to{stroke-dashoffset:-23}}.layer--fx{pointer-events:none}.fx-server{position:absolute;width:0;height:0;--intensity:0.8}.fx-server__glow{position:absolute;left:50%;top:50%;width:5.2%;padding-bottom:5.2%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgb(var(--accent)/calc(.5 * var(--intensity))),transparent 70%);filter:blur(2px);animation:serverBreath 3.4s ease-in-out infinite}.fx-server.is-active .fx-server__glow{animation:serverPing .6s ease-out}@keyframes serverBreath{0%,to{opacity:.55;transform:translate(-50%,-50%) scale(.92)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}}@keyframes serverPing{0%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:.6;transform:translate(-50%,-50%) scale(1)}}.fx-server__scan{position:absolute;left:50%;top:50%;width:1.4%;height:6%;transform:translate(-50%,-50%);background:linear-gradient(180deg,transparent,rgb(var(--accent)/.6),transparent);opacity:.35;animation:serverScan 2.8s ease-in-out infinite}@keyframes serverScan{0%,to{transform:translate(-50%,-120%);opacity:0}50%{transform:translate(-50%,10%);opacity:.5}}.fx-server__led{position:absolute;width:.5%;padding-bottom:.5%;border-radius:50%;background:rgb(var(--accent));box-shadow:0 0 6px rgb(var(--accent)/.9);animation:ledBlink 2s step-end infinite}.fx-server__led.led--ok{background:rgb(var(--led-ok));box-shadow:0 0 6px rgb(var(--led-ok)/.9)}@keyframes ledBlink{0%,45%{opacity:1}50%,95%{opacity:.18}to{opacity:1}}.fx-globe,.fx-globe__halo{position:absolute;transform:translate(-50%,-50%)}.fx-globe__halo{left:50%;top:50%;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,rgb(var(--accent)/.14),transparent 68%);animation:haloBreath 7s ease-in-out infinite}@keyframes haloBreath{0%,to{opacity:.5;transform:translate(-50%,-50%) scale(.96)}50%{opacity:.9;transform:translate(-50%,-50%) scale(1.06)}}.fx-globe__ring{position:absolute;left:50%;top:50%;border:1px solid rgb(var(--accent)/.28);border-radius:50%;transform:translate(-50%,-50%) rotateX(72deg);transform-style:preserve-3d}.fx-globe__ring--1{width:116%;height:116%;animation:ringSpin 26s linear infinite}.fx-globe__ring--2{width:132%;height:132%;animation:ringSpin 38s linear infinite reverse;border-color:rgb(var(--accent-soft)/.22)}@keyframes ringSpin{to{transform:translate(-50%,-50%) rotateX(72deg) rotate(1turn)}}.fx-globe__sweep{position:absolute;left:50%;top:50%;width:100%;height:100%;transform:translate(-50%,-50%);border-radius:50%;background:conic-gradient(from 0deg,transparent 0deg,rgb(var(--accent)/.18) 30deg,transparent 70deg);mix-blend-mode:screen;animation:sweepSpin 9s linear infinite}@keyframes sweepSpin{to{transform:translate(-50%,-50%) rotate(1turn)}}.fx-globe__point{position:absolute;width:1.6%;padding-bottom:1.6%;transform:translate(-50%,-50%);border-radius:50%;background:rgb(var(--accent));box-shadow:0 0 8px rgb(var(--accent));animation:pointPulse 3s ease-in-out infinite}@keyframes pointPulse{0%,to{opacity:.35}50%{opacity:1}}.fx-holo{position:absolute;overflow:hidden;border-radius:6px}.fx-holo__flicker{position:absolute;inset:0;background:rgb(var(--accent)/.05);animation:holoFlicker 5s ease-in-out infinite}@keyframes holoFlicker{0%,to{opacity:.25}47%{opacity:.5}52%{opacity:.18}}.fx-holo__scan{position:absolute;left:0;right:0;height:22%;background:linear-gradient(180deg,transparent,rgb(var(--accent)/.25),transparent);animation:holoScan 4.5s linear infinite}@keyframes holoScan{0%{top:-22%}to{top:100%}}.fx-ai,.fx-ai__glow{position:absolute;transform:translate(-50%,-50%)}.fx-ai__glow{left:50%;top:50%;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,rgb(var(--warm)/.22),transparent 68%);animation:aiBreath 5.5s ease-in-out infinite}@keyframes aiBreath{0%,to{opacity:.55;transform:translate(-50%,-50%) scale(.95)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}}.fx-ai__column{position:absolute;left:50%;bottom:50%;width:2%;height:42%;transform:translateX(-50%);background:linear-gradient(0deg,rgb(var(--warm)/.55),transparent);filter:blur(1px);animation:aiColumn 3.6s ease-in-out infinite}@keyframes aiColumn{0%,to{opacity:.4;height:34%}50%{opacity:.85;height:46%}}.fx-ai__rings{position:absolute;left:50%;top:50%;width:60%;height:60%;transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgb(var(--warm)/.3);animation:ringSpin 14s linear infinite}.layer--hotspots{pointer-events:none}.hotspot{position:absolute;width:5.5%;padding-bottom:5.5%;transform:translate(-50%,-50%);border-radius:50%;background:transparent;border:0;cursor:pointer;pointer-events:auto;outline:none}.hotspot:focus-visible{box-shadow:0 0 0 2px rgb(var(--accent)/.9);border-radius:50%}.hero__tooltip{position:absolute;z-index:10;padding:6px 10px;font:600 12px/1.2 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;letter-spacing:.04em;color:#eaf6ff;background:rgba(10,18,30,.82);border:1px solid rgb(var(--accent)/.5);border-radius:6px;transform:translate(-50%,-140%);pointer-events:none;opacity:0;transition:opacity .18s ease;white-space:nowrap;backdrop-filter:blur(4px)}.hero__tooltip.is-visible{opacity:1}.layer--gl{mix-blend-mode:screen}.debug .layer--debug{outline:1px dashed rgb(var(--accent)/.4)}.debug-dot{position:absolute;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#ff3b6b;box-shadow:0 0 8px #ff3b6b}.debug-ring{transform:translate(-50%,-50%);border:1px solid #ff3b6b;width:5.5%;padding-bottom:5.5%;opacity:.8}.debug-ring,.debug-route-pt{position:absolute;border-radius:50%}.debug-route-pt{width:8px;height:8px;margin:-4px 0 0 -4px;background:#ffd23b;box-shadow:0 0 6px #ffd23b}.hero__debug-panel{position:absolute;z-index:20;top:12px;left:12px;width:232px;max-height:calc(100% - 24px);overflow:auto;padding:12px 14px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#cfe6ff;background:rgba(6,12,20,.9);border:1px solid rgb(var(--accent)/.35);border-radius:8px;pointer-events:auto}.hero__debug-panel h4{margin:0 0 8px;font-size:12px;color:#eaf6ff;letter-spacing:.06em}.hero__debug-panel label{display:flex;align-items:center;gap:6px;cursor:pointer}.hero__debug-panel .row{display:flex;justify-content:space-between;margin:2px 0}.hero__debug-panel code{color:#7fe7ff}.hero__debug-panel hr{border:0;border-top:1px solid rgb(var(--accent)/.2);margin:8px 0}@media (prefers-reduced-motion:reduce){.hero *,.hero :after,.hero :before{animation:none!important;transition:none!important}.layer--atmos{transform:none}}