/* Progressive enhancement: observer setup enables reveals; no-JS stays visible. */
main h1,main h2,main h3 { text-wrap:balance; word-break:keep-all; }
main p { word-break:keep-all; overflow-wrap:break-word; }
.reading-progress { position:fixed; top:0; left:0; width:100%; height:2px; background:var(--pink-deep,#9b5266); transform:scaleX(0); transform-origin:left; z-index:999; pointer-events:none; }
@media (prefers-reduced-motion:no-preference) {
  .reveal-ready { opacity:0; transform:translateY(32px); transition:opacity .85s var(--ease-out),transform 1.1s var(--ease-out); transition-delay:var(--enter-delay,0ms); }
  .reveal-ready.is-revealed { opacity:1; transform:none; }
  .reveal-ready:focus-within { opacity:1; transform:none; transition:none; }
  .impact-hero .hero-copy > * { animation:reso-enter 1.15s cubic-bezier(.16,1,.3,1) both; }
  .impact-hero .hero-copy > h1 { animation-delay:.12s; }
  .impact-hero .hero-copy > .intro { animation-delay:.24s; }
  .impact-hero .hero-copy > .button { animation-delay:.36s; }
  .hero-atmosphere i { animation:atmosphere-drift 16s ease-in-out infinite alternate; }
  .hero-atmosphere i:nth-child(2) { animation-delay:-8s; animation-duration:20s; }
  .hero-atmosphere i:nth-child(3) { animation-delay:-4s; animation-duration:18s; }
  .hero-scroll > span:last-child { animation:scroll-cue 2.8s ease-in-out infinite; }
  .button,.nav-cta,.about-link { transition:translate .3s,background .3s; }
  .button:active,.nav-cta:active { scale:.98; }
  .doorway-photo img,.moment-card img { transition:transform .8s cubic-bezier(.16,1,.3,1); }
  .session,.journey article,.journal-card,.scent-preview { transition:opacity .85s var(--ease-out),transform 1.1s var(--ease-out),translate .45s var(--ease-out),box-shadow .45s; transition-delay:var(--enter-delay,0ms),var(--enter-delay,0ms),0s,0s; }
  details[open] > p,details[open] > .campaign-answer { animation:reso-enter .4s both; }
  dialog[open] { animation:dialog-arrive .35s cubic-bezier(.16,1,.3,1) both; }
  dialog[open]::backdrop { animation:backdrop-arrive .35s both; }
  @media (hover:hover) and (pointer:fine) {
    .button:hover,.nav-cta:hover,.about-link:hover { translate:0 -2px; }
    .home-doorways article:hover .doorway-photo img,.moment-card:hover img { transform:scale(1.045); }
    .session:hover,.journal-card:hover,.scent-preview:hover { translate:0 -5px; }
    .session:hover { box-shadow:0 18px 45px #68414d10; }
  }
  @keyframes reso-enter { from { opacity:0; transform:translateY(28px); } to { opacity:1; transform:none; } }
  @keyframes atmosphere-drift { from { transform:translate3d(-3%,-3%,0) scale(1); } to { transform:translate3d(8%,6%,0) scale(1.12); } }
  @keyframes scroll-cue { 0%,100% { transform:translateY(0); } 50% { transform:translateY(7px); } }
  @keyframes dialog-arrive { from { opacity:0; transform:translateY(18px) scale(.98); } to { opacity:1; transform:none; } }
  @keyframes backdrop-arrive { from { opacity:0; } to { opacity:1; } }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important; animation:none!important; transition:none!important; }
  .reveal-ready { opacity:1!important; transform:none!important; }
  .moment-scene > img,.hero-atmosphere i { transform:none!important; }
}
