/* Zen Recovery — motion layer (see motion.js). Everything degrades to a plain static page when the script doesn't run. */
.mveil{position:fixed; inset:0; z-index:100; display:grid; place-items:center; pointer-events:none}
.mveil-p{position:absolute; left:0; right:0; height:50.5%; background:var(--ink)} .mveil-p:first-child{top:0} .mveil-p:nth-child(2){bottom:0}
.mveil img{position:relative; width:64px; height:64px; border-radius:50%}
.motion .nav,.motion .top{transition:box-shadow .3s, background .3s} .motion .nav.scrolled{box-shadow:0 10px 30px -18px rgba(27,30,29,.4)}
.aura{position:fixed; left:0; top:0; width:420px; height:420px; margin:-210px 0 0 -210px; border-radius:50%; pointer-events:none; z-index:0; opacity:0; transition:opacity .6s;
  background:radial-gradient(closest-side, color-mix(in srgb, var(--mark) 18%, transparent), transparent 70%); mix-blend-mode:multiply}
.motion main{position:relative; z-index:1}
.motion .w{display:inline-block; overflow:hidden; vertical-align:bottom; padding:0 .02em .08em; margin:0 -.02em -.08em} .motion h1[data-split],.motion h2[data-split]{unicode-bidi:plaintext} .motion .w > span{display:inline-block; will-change:transform}
.motion .rv{will-change:transform, opacity}
.motion .btn{will-change:transform}
/* marquee strip */
.marquee{overflow:hidden; border-block:1px solid var(--line); padding:14px 0; background:var(--ground-2); white-space:nowrap}
.marquee .track{display:inline-flex; gap:40px; align-items:center; padding-inline:20px; font-family:var(--label); font-size:.72rem; letter-spacing:.24em; text-transform:uppercase; color:var(--ink-soft); will-change:transform}
.marquee .track span::after{content:"●"; color:var(--mark); margin-inline-start:40px; font-size:.5rem; vertical-align:middle}
/* a slow aura behind the hero */
.hero{position:relative; overflow:hidden}
.hero::before{content:""; position:absolute; inset:-30% -20% auto auto; width:70vw; max-width:900px; aspect-ratio:1; border-radius:50%; pointer-events:none; z-index:0;
  background:radial-gradient(closest-side, color-mix(in srgb, var(--mark) 12%, transparent), transparent 70%); animation:aura-drift 14s ease-in-out infinite alternate}
@keyframes aura-drift{from{transform:translate(0,0) scale(1)} to{transform:translate(-8%, 10%) scale(1.15)}}
.hero > *{position:relative; z-index:1}
@media (max-width:760px){.aura{display:none}}
/* cards and choices react */
.motion .card,.motion .method,.motion .svc,.motion .links-grid a,.motion .place,.motion .therapist{transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s}
.motion .card:hover,.motion .method:hover,.motion .svc:hover,.motion .links-grid a:hover,.motion .therapist:hover{transform:translateY(-3px); box-shadow:0 24px 40px -28px rgba(27,30,29,.45)}
@media (prefers-reduced-motion:reduce){.hero::before{animation:none}}
.par-box{display:block; overflow:hidden; border-radius:inherit; max-width:100%} .par-box > img{display:block; width:100%; height:auto}
