/* Cut — shared motion layer (v9 "velvet")
   Physics-eased reveals, split-word headlines, sheen, magnetic, tilt. */

/* v11: brand scrollbars everywhere the layer loads (colours themed in cut-theme.css) */
*{scrollbar-width:thin;scrollbar-color:var(--line,rgba(30,24,19,.34)) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line,rgba(30,24,19,.22));border-radius:999px;border:3px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:var(--accent,rgba(138,31,36,.5));border:3px solid transparent;background-clip:padding-box}

/* v11: app-like cross-page transitions (progressive enhancement) */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vt-out .26s ease both}
::view-transition-new(root){animation:vt-in .36s cubic-bezier(.21,1,.27,1) both}
@keyframes vt-out{to{opacity:0;transform:translateY(-6px)}}
@keyframes vt-in{from{opacity:0;transform:translateY(10px)}}
[data-split] .sw{display:inline-block;opacity:0;transform:translateY(.5em);transition:opacity .7s ease,transform .9s cubic-bezier(.21,1,.27,1)}
[data-split].split-in .sw{opacity:1;transform:none}

.mrv{opacity:0;transform:translateY(16px);transition:opacity .55s ease,transform .75s cubic-bezier(.21,1,.27,1)}
.mrv.in{opacity:1;transform:none}

[data-magnet]{transition:transform .35s cubic-bezier(.21,1,.27,1)}

/* sheen sweep on primary actions */
.btn-primary,.btn.primary,.gate-btn{position:relative;overflow:hidden;isolation:isolate}
.btn-primary::after,.btn.primary::after,.gate-btn::after{content:"";position:absolute;top:0;bottom:0;left:-70%;width:45%;z-index:1;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.34),transparent);transform:skewX(-18deg);transition:left .7s cubic-bezier(.21,1,.27,1)}
.btn-primary:hover::after,.btn.primary:hover::after,.gate-btn:hover::after{left:130%}

[data-tilt]{transform-style:preserve-3d;will-change:transform}

/* parallax canvases bleed past their frame so no gap shows */
.hero{overflow:hidden}
.hero-art[data-parallax]{top:-12%!important;height:124%!important}

@media (prefers-reduced-motion:reduce){
  [data-split] .sw,.mrv{opacity:1!important;transform:none!important;transition:none!important}
  .btn-primary::after,.btn.primary::after,.gate-btn::after{display:none}
  ::view-transition-old(root),::view-transition-new(root){animation:none!important}
}
/* v15: all CSS animations sleep in hidden tabs */
html[data-hidden] *,html[data-hidden] *::before,html[data-hidden] *::after{animation-play-state:paused!important}

/* v16's inline Noir block and #themeFab pill moved to cut-theme.css / cut-theme.js
   in v20 — the theme layer is now token-based and covers four registers. */
