html{scroll-behavior:smooth}section[id]{scroll-margin-top:80px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@keyframes popup-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes popup-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.popup-overlay.active .popup-container{animation:popup-in .3s cubic-bezier(.165,.84,.44,1) forwards}.popup-overlay.inactive .popup-container{animation:popup-out .3s cubic-bezier(.165,.84,.44,1) forwards}.timeline-progress{background-color:#fff;width:0%;height:100%;border-radius:10px;transition:width .1s linear}.volume-slider,.timeline-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:#fff3;outline:none;border-radius:5px;transition:opacity .2s}.volume-slider::-webkit-slider-thumb,.timeline-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:15px;height:15px;background:#fff;cursor:pointer;border-radius:50%}.volume-slider::-moz-range-thumb,.timeline-slider::-moz-range-thumb{width:15px;height:15px;background:#fff;cursor:pointer;border-radius:50%}.effect-glow-minimal{text-shadow:0 0 8px rgba(255,255,255,.9),0 0 20px rgba(255,255,255,.6)}.effect-shimmer{background:linear-gradient(90deg,#fff,#ddd,#fff);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 3s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.effect-glow{text-shadow:0 0 8px #fff,0 0 12px #9333ea,0 0 16px #9333ea;animation:glow-pulse 2s infinite alternate}@keyframes glow-pulse{0%{text-shadow:0 0 4px #fff,0 0 8px #9333ea,0 0 12px #9333ea}to{text-shadow:0 0 8px #fff,0 0 16px #9333ea,0 0 24px #9333ea}}.effect-rainbow{background:linear-gradient(90deg,red,#ff7300,#fffb00,#48ff00,#00ffd5,#002bff,#7a00ff,#ff00c8,red);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:rainbow-cycle 4s linear infinite}@keyframes rainbow-cycle{to{background-position:200% center}}.effect-glitch{position:relative;animation:glitch-skew 1s infinite linear alternate-reverse}.effect-glitch:before,.effect-glitch:after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%;background:var(--card-bg, #111214);overflow:hidden}.effect-glitch:before{text-shadow:-2px 0 #00f;clip:rect(44px,450px,56px,0);animation:glitch-anim 5s infinite linear alternate-reverse}.effect-glitch:after{text-shadow:2px 0 #f00;clip:rect(85px,450px,90px,0);animation:glitch-anim2 5s infinite linear alternate-reverse}@keyframes glitch-anim{0%{clip:rect(42px,9999px,44px,0)}10%{clip:rect(17px,9999px,96px,0)}20%{clip:rect(50px,9999px,52px,0)}to{clip:rect(50px,9999px,52px,0)}}@keyframes glitch-anim2{0%{clip:rect(42px,9999px,44px,0)}10%{clip:rect(17px,9999px,96px,0)}20%{clip:rect(50px,9999px,52px,0)}to{clip:rect(50px,9999px,52px,0)}}@keyframes glitch-skew{0%{transform:skew(3deg)}10%{transform:skew(-3deg)}20%{transform:skew(0)}to{transform:skew(0)}}.effect-shake{animation:shake .5s infinite}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.effect-flicker{animation:flicker 1.5s infinite}@keyframes flicker{0%,to{opacity:1}50%{opacity:.3}}.effect-sparkles{position:relative}.effect-sparkles .sparkle{position:absolute;width:3px;height:3px;background-color:#fff;border-radius:50%;opacity:0;animation:sparkle-anim 1s infinite}@keyframes sparkle-anim{0%{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1.2)}to{opacity:0;transform:scale(0)}}.effect-fire{background:linear-gradient(90deg,#ff8c00,#ff4500,tomato,#ff4500,#ff8c00);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:fire-cycle 2s linear infinite}@keyframes fire-cycle{to{background-position:200% center}}.effect-fade{animation:fade-anim 3s infinite ease-in-out}@keyframes fade-anim{0%,to{opacity:1}50%{opacity:.2}}.effect-typewriter{display:inline-block;overflow:hidden;white-space:nowrap;border-right:.15em solid #9333ea;animation:typewriter-anim-simple 2s steps(30,end) 1s forwards,blink-caret-simple .75s step-end infinite;width:0}@keyframes typewriter-anim-simple{to{width:100%}}@keyframes blink-caret-simple{0%,to{border-color:transparent}50%{border-color:#9333ea}}@keyframes scroll-left{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes scroll-right{0%{transform:translate(-50%)}to{transform:translate(0)}}.scroller{animation:scroll-left 40s linear infinite}.scroller-right{animation:scroll-right 40s linear infinite}.scroller-container:hover .scroller,.scroller-container:hover .scroller-right{animation-play-state:paused}.custom-cursor-dot{position:fixed;top:50%;left:50%;width:8px;height:8px;background-color:#fff;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:9999;mix-blend-mode:difference;transition:opacity .3s,transform .3s}.custom-cursor-outline{position:fixed;top:50%;left:50%;width:36px;height:36px;border:2px solid rgba(255,255,255,.7);border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:9999;mix-blend-mode:difference;transition:width .3s,height .3s,border-color .3s,transform .1s ease-out}.cursor-hover{width:50px;height:50px;border-color:#fff}.hide-default-cursor,.hide-default-cursor *{cursor:none!important}@keyframes background-pan{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.portfolio-background{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:#0a0a0a}.portfolio-background:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle at 10% 20%,#2e1065,transparent 50%),radial-gradient(circle at 80% 30%,#5b21b6,transparent 50%),radial-gradient(circle at 30% 90%,#7c3aed,transparent 50%),radial-gradient(circle at 90% 80%,#a78bfa,transparent 50%);background-size:300% 300%;animation:background-pan 30s ease-in-out infinite;filter:blur(100px);opacity:.5}
