/* All visual effects are local CSS/DOM: no trackers, libraries or remote assets. */
body[data-sky=nebula] #backdrop{background-color:var(--bg);background-image:radial-gradient(ellipse at 15% 10%,#7751a355,transparent 55%),radial-gradient(ellipse at 90% 85%,#3f397955,transparent 55%)}
body[data-sky=aurora] #backdrop{background-color:var(--bg);background-image:radial-gradient(ellipse at 70% 5%,#12634c66,transparent 60%),linear-gradient(150deg,#03121988,#0b132aaa)}
body[data-sky=winter] #backdrop{background-color:var(--bg);background-image:radial-gradient(ellipse at 60% -20%,#a2c7d94d,transparent 65%),linear-gradient(180deg,#10212b77,#04121599)}
body[data-sky=storm] #backdrop{background-color:var(--bg);background-image:linear-gradient(175deg,#5c677d55,#131a2a55 50%,#02061199)}
body[data-sky=sunset] #backdrop{background-color:var(--bg);background-image:radial-gradient(ellipse at 50% 80%,#cc644b55,transparent 65%),linear-gradient(#210f2588,#3a1b2c77)}
body[data-sky=plain] #backdrop{background-color:var(--bg);background-image:none}
#atmosphere{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}#particles{z-index:1;opacity:var(--weather-opacity,.65)}#page{z-index:2}.enter{z-index:20;background:#08070bad;backdrop-filter:blur(9px)}
.auroraVeil{position:absolute;inset:-40%;opacity:0;background:conic-gradient(from 50deg at 50% 25%,transparent 0deg,#66e8be33 40deg,transparent 85deg,#aea0ee25 140deg,transparent 180deg,#64d3b42b 240deg,transparent 300deg);filter:blur(55px);transform-origin:50% 15%;animation:auroraDrift 26s ease-in-out infinite alternate}.hasAurora .auroraVeil{opacity:1}@keyframes auroraDrift{from{transform:rotate(-12deg) scale(1)}to{transform:rotate(18deg) scale(1.15)}}
.cloudField{position:absolute;inset:0;opacity:var(--cloud-opacity,.15)}.cloudField i{position:absolute;left:-40%;top:calc(var(--cloud-index)*15% - 15%);width:150%;height:43%;background:radial-gradient(ellipse at 18% 50%,#dbe6f12e,transparent 38%),radial-gradient(ellipse at 55% 60%,#b5c7d733,transparent 40%),radial-gradient(ellipse at 85% 45%,#d2dcea26,transparent 35%);filter:blur(18px);animation:cloudDrift calc(44s + var(--cloud-index)*9s) linear infinite alternate;animation-delay:calc(var(--cloud-index)*-13s)}@keyframes cloudDrift{from{transform:translateX(-8%)}to{transform:translateX(20%)}}
.fogVeil{position:absolute;inset:40% -20% -30%;opacity:var(--fog-opacity,.15);background:radial-gradient(ellipse at 40% 80%,#d3e5eb44,transparent 60%);filter:blur(30px);animation:fogDrift 24s ease-in-out infinite alternate}@keyframes fogDrift{to{transform:translate(12%,-8%)}}
.filmGrain{position:absolute;inset:0;opacity:var(--grain-opacity,.05);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' d='M0 0h160v160H0z'/%3E%3C/svg%3E");mix-blend-mode:soft-light}
.particle{will-change:transform;pointer-events:none}.particle.snow{background:#fff;box-shadow:0 0 5px #ffffff44;animation-name:snowDrift;opacity:0}.particle.rain{width:1px;height:27px;background:linear-gradient(transparent,#dce7ff);box-shadow:none;animation-name:rainDrift;transform:rotate(-8deg)}.particle.stars{animation-name:softTwinkle}.particle.fireflies{background:var(--accent);animation-name:fireflyDrift;top:var(--y);box-shadow:0 0 12px var(--accent)}
@keyframes snowDrift{0%{opacity:0;transform:translate3d(0,-20px,0)}8%,85%{opacity:var(--alpha)}35%{transform:translate3d(var(--sway),40vh,0)}65%{transform:translate3d(calc(var(--drift)*.6 - var(--sway)),75vh,0)}100%{opacity:0;transform:translate3d(var(--drift),110vh,0)}}
@keyframes rainDrift{0%{opacity:0;transform:translate3d(0,-30px,0) rotate(-8deg)}10%,85%{opacity:var(--alpha)}100%{opacity:0;transform:translate3d(var(--drift),110vh,0) rotate(-8deg)}}
@keyframes softTwinkle{0%,100%{opacity:.08;transform:scale(.7)}50%{opacity:var(--alpha);transform:scale(1.3)}}
@keyframes fireflyDrift{0%,100%{opacity:0;transform:translate3d(0,0,0)}40%,65%{opacity:var(--alpha)}50%{transform:translate3d(var(--sway),-90px,0)}}
#festiveLights{display:none;position:fixed;top:0;left:-1%;right:-1%;height:36px;z-index:21;pointer-events:none;justify-content:space-around;border-top:2px solid #364939;border-radius:0 0 45% 45%}.hasLights #festiveLights{display:flex}#festiveLights i{width:7px;height:13px;flex:none;border-radius:40% 40% 55% 55%;background:var(--bulb-color);box-shadow:0 0 13px 3px color-mix(in srgb,var(--bulb-color) 55%,transparent);margin-top:calc(3px + sin(var(--bulb-index)*.4)*5px);animation:bulbGlow 5s ease-in-out infinite alternate;animation-delay:calc(var(--bulb-index)*-.3s)}#festiveLights i::before{content:'';position:absolute;width:5px;height:4px;background:#38433a;transform:translate(1px,-3px)}@keyframes bulbGlow{from{opacity:.5}to{opacity:1}}
.cardShimmer #card{position:relative;overflow:hidden}.cardShimmer #card::before{content:'';position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(115deg,transparent 25%,#ffffff05 45%,#ffffff0a 50%,transparent 65%);background-size:250% 100%;animation:glassSweep 15s ease-in-out infinite}#card>*{position:relative}@keyframes glassSweep{0%,35%{background-position:140% 0}80%,100%{background-position:-140% 0}}
.avatarPulse .avatarFrame{animation:avatarHalo 6s ease-in-out infinite}@keyframes avatarHalo{0%,100%{box-shadow:0 0 15px color-mix(in srgb,var(--accent) 9%,transparent)}50%{box-shadow:0 0 35px color-mix(in srgb,var(--accent) 24%,transparent)}}
.entered .profileStack{animation:profileReveal .95s cubic-bezier(.16,1,.3,1) both}.entered #links a{animation:linkReveal .7s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.2s + var(--link-index,0)*35ms)}@keyframes profileReveal{from{opacity:0;transform:translateY(28px) scale(.97);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}@keyframes linkReveal{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}
#cursorDot,#cursorRing{display:none;position:fixed;pointer-events:none;left:-100px;top:-100px;border-radius:50%;z-index:2147483647;transform:translate(-50%,-50%)}#cursorDot{width:var(--cursor-size,6px);height:var(--cursor-size,6px);background:#fff;box-shadow:0 0 8px #ffffff44;transition:width .16s,height .16s,opacity .16s}#cursorRing{width:29px;height:29px;border:1px solid #ffffff44;transition:left .09s ease-out,top .09s ease-out,width .18s,height .18s,opacity .18s}.cursorReady #cursorDot{display:block}.cursorReady.hasCursorRing #cursorRing{display:block}.cursorReady,.cursorReady *{cursor:none!important}.cursorHover #cursorDot{width:calc(var(--cursor-size,6px)*1.4);height:calc(var(--cursor-size,6px)*1.4)}.cursorHover #cursorRing{width:38px;height:38px;border-color:#ffffff88}.cursorDown #cursorDot{opacity:.65}.cursorDown #cursorRing{width:20px;height:20px}
#pauseEffects{position:absolute;bottom:26px;right:25px;background:#14121b55;border:1px solid #ffffff15;border-radius:20px;padding:7px 11px;font-size:10px;opacity:.6;z-index:3}#pauseEffects:hover{opacity:1}.fxPaused #particles *,.fxPaused #atmosphere *,.fxPaused #festiveLights *, .fxPaused #card::before,.fxPaused .avatarFrame{animation-play-state:paused!important}.fxPaused #cursorRing{transition:none}.fxPaused #card{transform:none!important}
@media(max-width:600px){#pauseEffects{bottom:12px;right:12px}.bottomNote{bottom:55px}#festiveLights i:nth-child(even){visibility:hidden}.auroraVeil{filter:blur(30px)}.cloudField i{filter:blur(10px)}}
@media(hover:none),(pointer:coarse){#cursorDot,#cursorRing{display:none!important}.cursorReady,.cursorReady *{cursor:auto!important}}
@media(prefers-reduced-motion:reduce){#particles{display:none}.cloudField i,.auroraVeil,.fogVeil,.filmGrain,#festiveLights i,.avatarFrame,.profileStack,#links a,#card::before{animation:none!important}.cursorReady #cursorRing{transition:none}#card{transform:none!important}}
