:root{--hx-ease:cubic-bezier(.16,1,.3,1);--hx-pop:cubic-bezier(.34,1.56,.64,1)}

.hero::before{display:none}
.hero-wait .stage{opacity:0}
.hero-aurora{position:absolute;inset:-10%;z-index:0;pointer-events:none;transform:translate3d(calc(var(--mx,0) * -22px),calc(var(--my,0) * -14px),0);transition:transform 1.4s var(--hx-ease)}
.hero-aurora i{position:absolute;display:block;border-radius:50%;opacity:0;transition:opacity 1.8s ease;will-change:transform}
.hero-aurora i:nth-child(1){left:24%;top:-14%;width:58vmax;height:40vmax;background:radial-gradient(closest-side,rgba(255,31,122,.14),rgba(255,31,122,0));animation:au1 19s ease-in-out infinite alternate}
.hero-aurora i:nth-child(2){right:-6%;bottom:2%;width:44vmax;height:34vmax;background:radial-gradient(closest-side,rgba(122,92,255,.075),rgba(122,92,255,0));animation:au2 23s ease-in-out infinite alternate}
.hero-aurora i:nth-child(3){left:-8%;bottom:-6%;width:42vmax;height:32vmax;background:radial-gradient(closest-side,rgba(255,110,165,.1),rgba(255,110,165,0));animation:au3 27s ease-in-out infinite alternate}
.hero:not(.hero-wait) .hero-aurora i{opacity:1}
@keyframes au1{to{transform:translate3d(9vw,7vh,0) scale(1.18)}}
@keyframes au2{to{transform:translate3d(-12vw,-6vh,0) scale(1.12)}}
@keyframes au3{to{transform:translate3d(10vw,-9vh,0) scale(.9)}}
html[data-theme="dark"] .hero-aurora i:nth-child(1){background:radial-gradient(closest-side,rgba(255,31,122,.06),rgba(255,31,122,0))}
html[data-theme="dark"] .hero-aurora i:nth-child(2){background:radial-gradient(closest-side,rgba(255,255,255,.035),rgba(255,255,255,0))}
html[data-theme="dark"] .hero-aurora i:nth-child(3){background:radial-gradient(closest-side,rgba(255,255,255,.03),rgba(255,255,255,0))}

.logo-hit{display:block}
.hero-logo{display:block;width:100%;height:100%;object-fit:contain;-webkit-user-drag:none;user-select:none;pointer-events:none;transition:transform .7s var(--hx-ease)}
.logo-hit:hover .hero-logo{transform:translateY(-4px) scale(1.02)}
html[data-theme="dark"] .hero-logo{content:url(/assets/tundralabs-shape-dark.svg)}
#hero [data-morph]:not(.split){visibility:visible}

.plabels .picon{display:grid;place-items:center;width:var(--icon,56px);height:var(--icon,56px);margin-bottom:var(--gap,14px);transition:transform .6s var(--hx-pop)}
.plabels .picon img{display:block;width:100%;height:100%;object-fit:contain}
.plabels li:hover .picon{transform:translateY(-6px) scale(1.08)}
.plabels li:hover i{background:var(--pink);box-shadow:0 0 0 4px rgba(255,31,122,.14)}
.plabels li:hover .pmeta{color:var(--ink)}
html[data-theme="dark"] .plabels li:hover i{box-shadow:0 0 0 4px rgba(255,31,122,.053)}
.hero-play .plabels .picon img{animation:pfloat 6.5s ease-in-out calc(var(--k,0) * -1.1s) infinite}
@keyframes pfloat{50%{transform:translateY(-5px)}}

@keyframes hx-rise{from{opacity:0;transform:translate3d(0,var(--ry,18px),0);filter:blur(var(--rb,8px))}}
@keyframes hx-logo{from{opacity:0;transform:translate3d(0,28px,0) scale(.9);filter:blur(16px)}60%{filter:blur(0)}}
@keyframes hx-pop{from{opacity:0;transform:translate3d(0,18px,0) scale(.55)}}
@keyframes hx-fade{from{opacity:0}}
.hero-play .hero-logo{animation:hx-logo 1.35s var(--hx-ease) .05s backwards}
.hero-play .head h1 .line{--ry:.45em;--rb:12px;animation:hx-rise 1.1s var(--hx-ease) .3s backwards}
.hero-play .head h1 .line+.line{animation-delay:.42s}
.hero-play .sub{--ry:14px;--rb:6px;animation:hx-rise 1s var(--hx-ease) .58s backwards}
.hero-play .grid::before{transition-delay:.7s}
.hero-play .grid i{transition-delay:.85s}
.hero-play .grid{animation:hx-fade 1s ease .7s backwards}
.hero-play .plabels .picon{animation:hx-pop .95s var(--hx-pop) calc(.78s + var(--k,0) * 75ms) backwards}
.hero-play .plabels .pname,.hero-play .plabels .pvendor,.hero-play .plabels .pmeta{--ry:10px;--rb:4px;animation:hx-rise .85s var(--hx-ease) calc(.9s + var(--k,0) * 75ms) backwards}
.hero-play .entries .entry{--ry:16px;--rb:5px;animation:hx-rise .95s var(--hx-ease) 1.2s backwards}
.hero-play .entries .entry+.entry{animation-delay:1.3s}
.hero.intro-done::after{transition-duration:2.4s}
.hero-paused .hero-aurora i,.hero-paused .picon img{animation-play-state:paused}
html:not(.boot) body[data-route="home"] .site-head{animation:hx-fade .8s ease .1s backwards}

.rv{opacity:0;transform:translate3d(0,18px,0);filter:blur(6px)}
.rv.rv-in{opacity:1;transform:none;filter:none;transition:opacity .62s cubic-bezier(.2,.7,.2,1) var(--rv-d,0ms),transform .78s var(--hx-ease) var(--rv-d,0ms),filter .62s ease var(--rv-d,0ms)}
.mini-pre{opacity:0}
.pg-out{opacity:0!important;transition:opacity .22s ease!important}
@media (pointer:coarse),(max-width:700px){.rv{filter:none;transform:translate3d(0,12px,0)}}

.mini-mark{transition:opacity .45s ease,transform .6s var(--hx-ease),filter .45s ease}
.mini-mark:not(.on){transform:translate(-50%,-50%) scale(.92);filter:blur(6px)}
.mini-mark.out{opacity:0;transform:translate(-50%,-50%) scale(1.06);filter:blur(8px)}
.mini-veil.out{transition:opacity .55s ease}

.glyphs.shimmer{font-family:var(--sans);font-weight:560;letter-spacing:.01em;background:linear-gradient(90deg,var(--muted) 0 38%,var(--pink) 50%,var(--muted) 62% 100%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:shim 1.9s linear infinite;transition:opacity .28s ease,filter .28s ease}
.glyphs.shimmer::after{content:"";display:inline-block;width:1.1em;text-align:left;animation:dots 1.4s steps(1) infinite}
.glyphs.shimmer.sw{opacity:0;filter:blur(3px)}
.mj-g .glyphs.shimmer,.ch-gen .glyphs.shimmer{letter-spacing:.01em}
@keyframes shim{from{background-position:100% 0}to{background-position:-60% 0}}
@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}

@media (prefers-reduced-motion:reduce){
  .hero-aurora,.hero-aurora i,.picon img,.glyphs.shimmer,.glyphs.shimmer::after{animation:none!important;transition:none!important}
  .rv{opacity:1;transform:none;filter:none}
}
.plabels .pname,.plabels .pvendor,.plabels .pmeta{transition:opacity .32s ease,filter .32s ease}
.plabels .pmeta.pend{opacity:0}
.plabels li.p-swap .pname,.plabels li.p-swap .pvendor,.plabels li.p-swap .pmeta{opacity:0;filter:blur(3px)}
