/* Figma 1292:294: a quiet, dark entrance; the portfolio retains its theme switch. */
.galaxy-cover{position:fixed;inset:0;z-index:1000;isolation:isolate;height:100svh;min-height:620px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(180deg,#000 0%,#000 66.346%,#1d0f40 100%);color:#fff;color-scheme:dark;transition:opacity .42s ease,visibility .42s}
.galaxy-cover::after{content:'';position:absolute;z-index:8;inset:-35%;pointer-events:none;background:radial-gradient(ellipse at 50% 105%,#3b176f 0%,#16092f 27%,#05010d 52%,transparent 73%);opacity:0;transform:translateY(38%) scale(.82);transition:opacity .72s ease,transform .9s cubic-bezier(.2,.72,.25,1)}
body.cover-locked{overflow:hidden;background:#000}
body.cover-locked>.nav,body.cover-locked>main,body.cover-locked>.chat-launcher,body.cover-locked>dialog{visibility:hidden;opacity:0;pointer-events:none}
body>.nav,body>main,body>.chat-launcher{transition:opacity .72s var(--ease-out),transform .72s var(--ease-out)}
body.content-entering>.nav,body.content-entering>main,body.content-entering>.chat-launcher{animation:portfolio-arrival .72s var(--ease-out) both}
body.content-entering>main{animation-delay:70ms}
.galaxy-cover.cover-exiting::after{opacity:.26;transform:translateY(-7%) scale(1.12)}
.galaxy-cover.cover-exiting .cover-rocket{animation:rocket-voyage 3.3s ease-in-out both;z-index:5}
.galaxy-cover.cover-exiting .cover-composition{position:relative;z-index:5;pointer-events:none}
.voyage-canvas{position:absolute;inset:0;z-index:3;width:100%;height:100%;pointer-events:none;animation:voyage-appear .6s ease both}
@keyframes voyage-appear{from{opacity:0}to{opacity:1}}
@keyframes rocket-voyage{0%,24%{transform:translateY(0) scale(1);opacity:1}50%{transform:translateY(calc(var(--flight-y,100px)*.65)) scale(.7);opacity:1}80%{transform:translateY(var(--flight-y,100px)) scale(.3);opacity:1}100%{transform:translateY(var(--flight-y,100px)) scale(.06);opacity:0}}
.galaxy-cover.cover-exiting .cover-copy{animation:cover-copy-away .48s ease-in both}
.galaxy-cover.cover-exiting .cover-motion-toggle{opacity:0;transition:opacity .2s ease}
.galaxy-cover.cover-complete{opacity:0;visibility:hidden;pointer-events:none}
.galaxy-cover[hidden]{display:none!important}
#cover-stars{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1}
.cover-composition{width:100%;display:flex;flex-direction:column;align-items:center;transform:translateY(-27px)}
.cover-rocket{width:393px;height:293px;position:relative;flex:none}
#rocket-canvas{position:absolute;inset:0;display:block;width:100%;height:100%}
.rocket-fallback{position:absolute;left:50%;top:50%;width:177px;height:233px;object-fit:contain;transform:translate(-50%,-50%);mix-blend-mode:screen}
.cover-rocket.webgl-ready .rocket-fallback{visibility:hidden}
.cover-copy{margin-top:14px;text-align:center;padding:0 24px}
.cover-copy h1{position:relative;margin:0;font-family:'Cover Cormorant',Georgia,serif;font-size:48px;font-weight:400;line-height:60px;letter-spacing:0;background:linear-gradient(180deg,#fff 8.75%,rgba(214,214,214,.7) 82.89%,#3c3b3b 100%);background-clip:text;-webkit-background-clip:text;color:transparent}
/* The light follows the letterforms; it never becomes a rectangular glow. */
/* Matte silver flicker stays inside the glyphs; the text itself never moves. */
.cover-title-light{position:absolute;inset:0;pointer-events:none;color:transparent;background-image:radial-gradient(ellipse at 24% 112%,#dededecc 0%,#bcbcbc70 26%,transparent 60%),radial-gradient(ellipse at 72% 118%,#d6d6d6b3 0%,#a8a8a85c 24%,transparent 58%),linear-gradient(0deg,#48484880,transparent 48%);background-size:46% 150%,57% 160%,100% 100%;background-position:0% 66%,100% 78%,0 0;background-repeat:repeat-x,repeat-x,no-repeat;background-clip:text;-webkit-background-clip:text;mask-image:linear-gradient(transparent 32%,#000 86%);opacity:.4;animation:matte-embers 4.6s ease-in-out infinite}

.cover-copy>p{font:400 16px/20px 'Cover Inter',sans-serif;color:#6a6a6a;margin:8px 0 24px}
.explore-button{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:8px;width:329px;max-width:100%;height:50px;border-radius:39px;border:1px solid #ffffff21;background:linear-gradient(165deg,#ffffff04,transparent 50%,#ffffff02);color:#fff;font:700 16px/24px 'Cover Inter',sans-serif;box-shadow:inset 0 1px 0 #ffffff12;transition:background-color 250ms ease,box-shadow 250ms ease,transform 160ms var(--ease-out)}
.explore-button::before{content:'';position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:linear-gradient(145deg,#fff8,transparent 28%,transparent 75%,#ffffff38);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none}
.explore-border{position:absolute;inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);overflow:visible;pointer-events:none;opacity:0;transition:opacity 250ms ease;filter:drop-shadow(0 0 4px #c4b5ed55) drop-shadow(0 0 10px #a395ed22)}
.explore-border rect{fill:none;stroke:url(#explore-light);stroke-width:1.1;stroke-linecap:round;stroke-dasharray:28 72;stroke-dashoffset:0;animation:orbit-stroke 2.8s linear infinite;animation-play-state:paused}
.explore-icon{position:relative;width:20px;height:20px;flex:none;animation:explore-spin 2s linear infinite;animation-play-state:paused}
.explore-icon img,.explore-icon svg{position:absolute;inset:0;width:20px;height:20px}.explore-icon img{opacity:.7}.explore-icon svg{fill:none;stroke:currentColor;stroke-width:1;stroke-linejoin:round}
.explore-button:focus-visible{outline:2px solid #dac8fc;outline-offset:7px}.explore-button:focus-visible .explore-border{opacity:1}.explore-button:focus-visible .explore-border rect{animation-play-state:running}
.explore-button:active{transform:scale(.98)}
.cover-motion-toggle{position:absolute;right:24px;bottom:20px;width:36px;height:36px;border:1px solid #ffffff18;border-radius:50%;background:#ffffff04;color:#ffffff55;display:grid;place-items:center;transition:color .2s,border-color .2s}
.cover-motion-toggle svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.cover-motion-toggle .play-symbol{display:none}.cover-motion-toggle[aria-pressed=true] .pause-symbol{display:none}.cover-motion-toggle[aria-pressed=true] .play-symbol{display:block}.cover-motion-toggle:focus-visible{outline-color:#ddd}
.cover-paused *,.cover-paused *::after{animation-play-state:paused!important}
body:has(.galaxy-cover.cover-visible)>.chat-launcher{opacity:0;visibility:hidden;pointer-events:none}
#portfolio:focus{outline:none}#portfolio{scroll-margin-top:-30px}
@keyframes explore-spin{to{transform:rotate(360deg)}}
@keyframes orbit-stroke{to{stroke-dashoffset:-100}}
@keyframes matte-embers{
  0%,100%{opacity:.36;background-position:0% 66%,100% 78%,0 0;background-size:46% 150%,57% 160%,100% 100%}
  17%{opacity:.52;background-position:3% 47%,97% 72%,0 0;background-size:47% 171%,56% 154%,100% 100%}
  31%{opacity:.38;background-position:1% 63%,99% 49%,0 0;background-size:46% 157%,58% 180%,100% 100%}
  46%{opacity:.57;background-position:4% 44%,96% 60%,0 0;background-size:48% 179%,57% 163%,100% 100%}
  61%{opacity:.4;background-position:2% 69%,98% 44%,0 0;background-size:47% 151%,59% 178%,100% 100%}
  78%{opacity:.51;background-position:5% 51%,95% 67%,0 0;background-size:48% 168%,58% 155%,100% 100%}
  89%{opacity:.43;background-position:2% 60%,98% 54%,0 0;background-size:46% 157%,57% 170%,100% 100%}
}
@keyframes rocket-depart{0%{transform:translate(0,0) scale(1);filter:brightness(1)}20%{transform:translate(-5px,9px) scale(.99);filter:brightness(1.08)}100%{transform:translate(70px,-74vh) scale(.62);filter:brightness(1.65)}}
@keyframes cover-copy-away{0%{opacity:1;transform:translateY(0);filter:blur(0)}100%{opacity:0;transform:translateY(28px);filter:blur(7px)}}
@keyframes portfolio-arrival{0%{opacity:0;transform:translateY(24px)}100%{opacity:1;transform:translateY(0)}}
@media(hover:hover) and (pointer:fine){.explore-button:hover{background-color:#c9bcff0a;box-shadow:0 0 24px #c6adff12,inset 0 0 18px #c6adff05}.explore-button:hover .explore-icon{animation-play-state:running}.explore-button:hover .explore-border{opacity:1}.explore-button:hover .explore-border rect{animation-play-state:running}.cover-motion-toggle:hover{color:#ddd;border-color:#ffffff55}}
@media(max-width:600px){.galaxy-cover{min-height:600px}.cover-composition{transform:translateY(-24px)}.cover-rocket{width:min(393px,100vw);height:280px}.cover-copy{width:100%;margin-top:6px;padding:0 24px}.cover-copy h1{font-size:40px;line-height:44px;max-width:340px;margin:auto;text-wrap:balance}.cover-copy>p{font-size:13px;line-height:20px;margin-top:14px;margin-bottom:26px}.explore-button{width:280px;height:50px;font-size:14px}.cover-motion-toggle{right:16px;bottom:16px}}
@media(prefers-reduced-motion:reduce){.cover-title-light,.explore-icon,.explore-border rect{animation:none}.explore-border rect{stroke-dasharray:none;opacity:.5}.explore-button,.explore-border{transition:none}.explore-button:active{transform:none}.galaxy-cover.cover-exiting .cover-rocket,.galaxy-cover.cover-exiting .cover-copy,body.content-entering>.nav,body.content-entering>main,body.content-entering>.chat-launcher{animation:none}.galaxy-cover::after{transition:none}}
#skip-intro{display:flex;align-items:center;justify-content:center;width:max-content;min-height:44px;margin:8px auto 0;padding:0 8px;color:#a3a0aa;font:400 12px/20px 'Cover Inter',sans-serif;text-decoration:underline;text-decoration-color:#a3a0aa66;text-underline-offset:4px;text-decoration-thickness:1px;transition:color .2s ease,text-decoration-color .2s ease}
#skip-intro:hover{color:#e0dde5;text-decoration-color:#e0dde5}
#skip-intro:focus-visible{outline:1px solid #dac8fc;outline-offset:3px}
.chat-launcher{display:flex;align-items:center}
