/* =========================================================
   New Star Clinic — Premium animation layer
   (adapted from the Takhet motion system)
   ========================================================= */

/* ---- keyframes ---- */
@keyframes nscBlurIn{from{opacity:0;filter:blur(16px);transform:translateY(18px)}to{opacity:1;filter:blur(0);transform:translateY(0)}}
@keyframes nscFadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
@keyframes nscLetterRise{from{transform:translateY(120%)}to{transform:translateY(0)}}
@keyframes nscFloatY{from{transform:translateY(-12px) rotate(-4deg)}to{transform:translateY(16px) rotate(5deg)}}
@keyframes nscStampIn{0%{opacity:0;transform:scale(0) rotate(-55deg)}55%{opacity:1;transform:scale(1.12) rotate(7deg)}78%{transform:scale(.96) rotate(-2deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
@keyframes nscSonar{0%{transform:scale(1);opacity:.5}100%{transform:scale(1.9);opacity:0}}
@keyframes nscIntroAway{to{opacity:0;visibility:hidden}}
@keyframes nscSpin{to{transform:rotate(360deg)}}
@keyframes nscDrawEcg{to{stroke-dashoffset:0}}
@keyframes nscHeartbeat{0%,100%{transform:scale(1)}18%{transform:scale(1.08)}30%{transform:scale(1)}45%{transform:scale(1.05)}60%{transform:scale(1)}}
@keyframes nscShimmer{to{background-position:200% 0}}

/* premium easings */
:root{
  --e-out:cubic-bezier(.22,.75,.25,1);
  --e-soft:cubic-bezier(.16,1,.3,1);
  --e-over:cubic-bezier(.34,1.56,.64,1);
}

/* ============ INTRO / LOGO REVEAL ============ */
.nsc-intro{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:radial-gradient(circle at 50% 45%,#0d5c3a,#0a4d30 70%);
  animation:nscIntroAway .6s var(--e-out) .8s both}
.nsc-intro.skip{display:none}
.nsc-intro-logo{position:relative;width:150px;height:150px;display:flex;align-items:center;justify-content:center}
.nsc-intro-logo img{width:100%;height:100%;object-fit:contain;position:relative;z-index:2;
  animation:nscStampIn 1s var(--e-over) .1s both, nscHeartbeat 1.4s ease 1.1s 1}
.nsc-intro-logo::before,.nsc-intro-logo::after{content:"";position:absolute;inset:-6px;border-radius:50%;
  border:2px solid rgba(143,212,180,.6);animation:nscSonar 2.2s ease-out infinite}
.nsc-intro-logo::after{animation-delay:1.1s}
.nsc-intro-ring{position:absolute;width:190px;height:190px}
.nsc-intro-ring circle{fill:none;stroke:rgba(143,212,180,.35);stroke-width:2;stroke-dasharray:565;stroke-dashoffset:565;
  animation:nscDrawEcg 1.4s var(--e-out) .3s forwards}
.nsc-intro-word{position:absolute;bottom:-46px;left:50%;transform:translateX(-50%);color:#fff;font-weight:800;letter-spacing:3px;font-size:14px;opacity:0;
  animation:nscFadeUp .7s var(--e-out) .8s both;white-space:nowrap;text-transform:uppercase}

/* prevent scroll while intro up */
body.intro-lock{overflow:hidden}

/* ============ SCROLL REVEAL (lightweight, no blur = no jank) ============ */
.reveal{opacity:0;transform:translateY(26px);will-change:opacity,transform;
  transition:opacity .7s var(--e-out),transform .7s var(--e-out)}
.reveal.in{opacity:1;transform:none}

/* split-text word rise */
.split .word{display:inline-block;overflow:hidden;vertical-align:top}
.split .word > span{display:inline-block;transform:translateY(110%);transition:transform .8s var(--e-out)}
.split.in .word > span{transform:translateY(0)}

/* hero reveal stagger handled by .reveal + JS; hero-title gets a soft rise */
.hero-title{--d:.05s}

/* header logo micro-interaction */
.brand-logo{transition:transform .5s var(--e-over)}
.brand:hover .brand-logo{transform:rotate(-6deg) scale(1.08)}

/* stat count-up pop */
.nsc-anim .hero-stats strong{display:inline-block}

/* footer logo subtle float */
.footer-logo{animation:nscFloatY 12s ease-in-out infinite alternate}

/* pulse-dot */
.hero-badge .pulse-dot{position:relative}

/* buttons shimmer sweep on hover */
.btn-primary{position:relative;overflow:hidden}
.btn-primary::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);transition:left .6s var(--e-out)}
.btn-primary:hover::after{left:130%}

@media (prefers-reduced-motion:reduce){
  .nsc-intro{display:none!important}
  .reveal{opacity:1!important;transform:none!important;filter:none!important}
  .split .word > span{transform:none!important}
  *{animation-duration:.001ms!important;animation-iteration-count:1!important}
  .hero-decor,.footer-logo,.wa-float::before{animation:none!important}
}
