/* The grove occupies the landing background, keeping copy in a quiet foreground. */
.hero{position:relative;isolation:isolate;background:#100b18}
.forest-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2;pointer-events:none}
.hero:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;background:linear-gradient(180deg,#100b1800 60%,#100b18 100%)}
.hero .wordmark{position:relative;filter:drop-shadow(0 3px 16px #100b1880)}
.hero h2,.hero-copy>p{text-shadow:0 2px 14px #100b18}
.artifact{background:none;opacity:.82}
.hero .object-tag{background:#100b1880;padding:7px}
.entry-forest{position:absolute;inset:0;width:100%;height:100%}
.entering .universe-entry{animation:grove-veil 2.2s both;background:#100b18}
.entering .entry-forest{animation:grove-dissolve 2.2s both}
.entering .entry-ring{animation-duration:2.1s;animation-delay:.2s}
.entering .entry-core{animation-duration:2.1s;opacity:.5}
.entering .entry-rays i{animation-duration:1.45s;animation-delay:calc(.55s + var(--ray-delay))}
.entering .entry-copy{animation:grove-title 2.2s both}
@keyframes grove-veil{0%,52%{opacity:1}100%{opacity:0}}
@keyframes grove-dissolve{0%,18%{opacity:1;filter:blur(0)}72%{opacity:.2;filter:blur(3px)}100%{opacity:0;filter:blur(8px)}}
@keyframes grove-title{0%{opacity:0;transform:translateY(8px)}18%,38%{opacity:1;transform:translateY(0)}65%,100%{opacity:0;transform:translateY(-18px)}}
@media(prefers-reduced-motion:reduce){.entering .universe-entry{display:none!important}}
