/* Realm crossing veil: a leaf arch carries the visitor between Worlds and The Grove.
   Geometry and timing live in realm-init.js / realm-transition.js; this file only paints. */
html.realm-veiling:not(.realm-veiled){background:#06140f}
html.realm-veiling:not(.realm-veiled) body{visibility:hidden}
.realm-veil{position:fixed;z-index:2147483646;inset:0;overflow:hidden;contain:strict;pointer-events:auto;background:transparent}
.realm-veil[data-mode="hole"]{pointer-events:none}
.realm-veil>svg{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:visible}
.realm-veil .rv-rim path:not([fill]){fill:none}
.realm-veil .rv-rays line{fill:none;stroke:#e2f9cc;stroke-width:1.4;stroke-linecap:round;stroke-dasharray:.14 1.3;stroke-dashoffset:.14;opacity:0}
.realm-veil .rv-leaf{position:absolute;left:50%;top:52%;width:min(72vw,900px);opacity:0;pointer-events:none;will-change:transform,opacity}
@keyframes hh-realm-settle{from{transform:translateY(16px);opacity:.55}to{transform:none;opacity:1}}
html.realm-arriving body>:not(.realm-veil):not(script):not(style):not(dialog):not(.svg-library){animation:hh-realm-settle var(--hh-realm-duration,860ms) cubic-bezier(.2,.75,.2,1) both}
@media(prefers-reduced-motion:reduce){.realm-veil{display:none}html.realm-arriving body>*{animation:none!important}}
html.low-effects .realm-veil{display:none}
html.low-effects.realm-arriving body>*{animation:none!important}
@media(forced-colors:active){.realm-veil{display:none}}
