/* Yamama Prime — motion primitives (shared). Site skins set --pm-* tokens. */
:root{--pm-ease:cubic-bezier(.16,1,.3,1);--pm-ease2:cubic-bezier(.65,0,.35,1);--pm-p1:#7B8CFF;--pm-p2:#22C3F5;--pm-glow:rgba(123,140,255,.35)}

/* reveal */
.pm-on .pm-r{opacity:0;transform:translate3d(0,28px,0) scale(.985);filter:blur(6px);
  transition:opacity .9s var(--pm-ease),transform 1s var(--pm-ease),filter .9s var(--pm-ease);transition-delay:var(--pm-d,0ms);will-change:opacity,transform}
.pm-on .pm-r.pm-in{opacity:1;transform:none;filter:none}
.pm-on .pm-r.pm-now{transition:none}
.pm-reduce .pm-r{opacity:1!important;transform:none!important;filter:none!important}

/* headline word cascade */
.pm-words .pm-w{display:inline-block;opacity:0;transform:translate3d(0,.6em,0) rotate(2deg);filter:blur(8px);
  transition:opacity .8s var(--pm-ease),transform 1s var(--pm-ease),filter .8s var(--pm-ease);transition-delay:calc(var(--i)*55ms + 80ms)}
.pm-words.pm-go .pm-w{opacity:1;transform:none;filter:none}

/* progress bar */
.pm-progress{position:fixed;top:0;inset-inline:0;height:3px;z-index:9999;transform-origin:right;transform:scaleX(0);
  background:linear-gradient(90deg,var(--pm-p1),var(--pm-p2));box-shadow:0 0 12px var(--pm-glow);pointer-events:none}
[dir=ltr] .pm-progress{transform-origin:left}

/* cursor glow */
.pm-cursor{position:fixed;top:0;left:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%;pointer-events:none;z-index:1;opacity:0;
  background:radial-gradient(circle,var(--pm-glow) 0%,transparent 62%);mix-blend-mode:var(--pm-blend,normal);transition:opacity .4s;filter:blur(10px)}

/* magnetic + spotlight */
.pm-mag{transition:transform .35s var(--pm-ease),box-shadow .35s var(--pm-ease),background-color .25s,color .25s!important;position:relative;overflow:hidden;isolation:isolate}
.pm-mag::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;opacity:0;transition:opacity .3s;
  background:radial-gradient(120px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.35),transparent 60%)}
.pm-mag:hover::after{opacity:1}
.pm-spot{position:relative;isolation:isolate}
.pm-spot::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:0;opacity:0;transition:opacity .4s;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),var(--pm-spot,rgba(123,140,255,.12)),transparent 55%)}
.pm-spot:hover::before{opacity:1}
[data-tilt]{transition:transform .5s var(--pm-ease);will-change:transform}

/* intro curtain */
.pm-intro{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;background:var(--pm-intro-bg,#05091C);color:#fff;
  transition:clip-path 1s var(--pm-ease2),opacity .6s .5s;clip-path:inset(0 0 0 0)}
.pm-intro.pm-out{clip-path:inset(0 0 100% 0);opacity:0}
.pm-intro-in{display:grid;justify-items:center;gap:10px;text-align:center;animation:pm-intro-in 1.1s var(--pm-ease) both}
.pm-intro-mark{width:76px;height:76px;display:grid;place-items:center;border-radius:22px;font-size:40px;font-weight:700;
  background:linear-gradient(135deg,var(--pm-p1),var(--pm-p2));box-shadow:0 20px 60px var(--pm-glow);animation:pm-pulse 1.6s var(--pm-ease) infinite}
.pm-intro-cv{width:min(78vw,620px);height:min(36vw,260px)}
.pm-intro b{font-size:clamp(26px,4vw,40px);letter-spacing:0}
.pm-intro small{opacity:.7;font-size:14px}
.pm-intro-line{display:block;width:160px;height:2px;border-radius:2px;background:rgba(255,255,255,.15);overflow:hidden;position:relative;margin-top:8px}
.pm-intro-line::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--pm-p1),var(--pm-p2));transform-origin:right;animation:pm-load 1.3s var(--pm-ease2) both}
@keyframes pm-intro-in{from{opacity:0;transform:translateY(16px) scale(.96);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes pm-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes pm-load{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* route transition */
.pm-route-in{animation:pm-route .7s var(--pm-ease) both}
@keyframes pm-route{from{opacity:0;transform:translate3d(0,18px,0);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}

/* utility animations */
@keyframes pm-float{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-12px,0)}}
@keyframes pm-shine{from{background-position:200% 0}to{background-position:-200% 0}}
@keyframes pm-marquee{from{transform:translateX(0)}to{transform:translateX(50%)}}
@keyframes pm-spin{to{transform:rotate(360deg)}}
@keyframes pm-blink{0%,100%{opacity:1}50%{opacity:.35}}
.pm-shine-text{background:linear-gradient(100deg,currentColor 35%,var(--pm-p2) 50%,currentColor 65%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:pm-shine 5s linear infinite}

@media (prefers-reduced-motion:reduce){
  .pm-words .pm-w{opacity:1;transform:none;filter:none;transition:none}
  .pm-intro,.pm-cursor{display:none}
  *{animation-duration:.01ms!important;animation-iteration-count:1!important}
}
