/* fx v2: whole-site motion */
.fx-bg{position:fixed;inset:0;width:100vw;height:100vh;z-index:1;pointer-events:none;mix-blend-mode:screen}
.fx-glow{position:fixed;left:0;top:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%;pointer-events:none;z-index:1;mix-blend-mode:screen;
 background:radial-gradient(circle,rgb(143 211 220 / .10),rgb(185 162 220 / .05) 40%,transparent 70%);transition:opacity .4s;opacity:0}
.fx-progress{position:fixed;left:0;top:0;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(0);z-index:9998;pointer-events:none;
 background:linear-gradient(90deg,#8fd3dc,#b9a2dc);box-shadow:0 0 8px rgb(143 211 220 / .6)}
.fx-on .fx-r{opacity:0;transform:translateY(18px);filter:blur(3px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1),filter .7s;transition-delay:var(--fx-d,0s)}
.fx-on .fx-r.fx-in{opacity:1;transform:none;filter:none}
.section{position:relative}
.fx-sweep{position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;z-index:2;opacity:0;
 background:linear-gradient(90deg,transparent,#8fd3dc 30%,#b9a2dc 70%,transparent);box-shadow:0 0 12px #8fd3dc}
.fx-sweep.go{animation:fx-sweep 1.6s cubic-bezier(.4,0,.2,1) 1}
@keyframes fx-sweep{0%{opacity:0;transform:scaleX(0)}20%{opacity:1}100%{opacity:0;transform:scaleX(1) translateY(60px)}}
.fx-hud{position:relative}
.fx-hud::before,.fx-hud::after{content:"";position:absolute;width:14px;height:14px;opacity:0;transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.2,1);pointer-events:none;z-index:3}
.fx-hud::before{top:6px;left:6px;border-top:1px solid #8fd3dc;border-left:1px solid #8fd3dc;transform:translate(5px,5px)}
.fx-hud::after{bottom:6px;right:6px;border-bottom:1px solid #b9a2dc;border-right:1px solid #b9a2dc;transform:translate(-5px,-5px)}
.fx-hud:hover::before,.fx-hud:hover::after,.fx-hud:focus-within::before,.fx-hud:focus-within::after{opacity:1;transform:none}
.fx-hud{transition:box-shadow .7s ease,transform .7s ease}
.fx-hud:hover{box-shadow:0 0 0 1px rgb(143 211 220 / .35),0 0 28px rgb(143 211 220 / .10)}
.fx-scan{position:absolute;left:0;right:0;top:-30%;height:30%;pointer-events:none;z-index:2;opacity:0;
 background:linear-gradient(180deg,transparent,rgb(143 211 220 / .08) 70%,rgb(143 211 220 / .30) 99%,transparent)}
.fx-hud:hover>.fx-scan{animation:fx-scan 2.4s cubic-bezier(.35,0,.25,1) 1}
@keyframes fx-scan{0%{top:-30%;opacity:1}100%{top:100%;opacity:.2}}
.fx-hud{overflow:hidden}
.fx-caret::after{content:"_";margin-left:2px;animation:fx-blink 1s steps(1) infinite}
@keyframes fx-blink{50%{opacity:0}}
.fx-max .fx-hud:hover{transform:translateY(-2px)}
.fx-max h2.x-glow:hover{animation:fx-jit .35s steps(2) 2}
@keyframes fx-jit{0%{transform:translate(0)}25%{transform:translate(-2px,1px);text-shadow:2px 0 #b9a2dc,-2px 0 #8fd3dc}50%{transform:translate(2px,-1px)}100%{transform:none}}
.fx-switch{position:fixed;right:16px;bottom:16px;z-index:9999;display:flex;gap:6px;font:12px ui-monospace,monospace}
.fx-switch a{padding:6px 10px;border:1px solid #8fd3dc;color:#8fd3dc;background:rgba(11,13,18,.85);text-decoration:none}
.fx-switch a.on{background:#8fd3dc;color:#0b0d12}
@media (prefers-reduced-motion:reduce){.fx-bg,.fx-glow,.fx-sweep{display:none}.fx-on .fx-r{opacity:1;transform:none;filter:none;transition:none}.fx-hud:hover>.fx-scan{animation:none}.fx-caret::after{animation:none}}
