/* ============================================================
   MEDSY — ELEVATION & MOTION
   Shadows are always green-tinted (never neutral gray), so depth
   reads as part of the same warm system. Motion is springy and
   confident — three easings carry every interaction.
   ============================================================ */
:root{
  /* ---- shadows (green tinted) ---- */
  --shadow-xs:0 1px 3px rgba(var(--forest-rgb),.06);
  --shadow-sm:0 4px 14px -6px rgba(var(--forest-rgb),.12);
  --shadow-md:0 16px 38px -14px rgba(var(--forest-rgb),.22);
  --shadow-lg:0 36px 70px -26px rgba(var(--forest-rgb),.34);
  --shadow-mint:0 18px 44px -16px rgba(var(--mint-rgb),.55);

  /* ---- motion: global scale · Theme Lab / consumers may tune (0.5 calm → 2 expressive) ---- */
  --motion:1; /* @kind other */

  /* ---- motion: easings ---- @kind other ---- */
  --spring:cubic-bezier(.22,1,.36,1); /* @kind other */
  --out:cubic-bezier(.16,1,.3,1); /* @kind other */
  --inout:cubic-bezier(.65,0,.35,1); /* @kind other */

  /* ---- motion: true springs (linear() physics — overshoot cubic-bezier can't do) ---- */
  --spring-bounce:linear(0,.008,.031 2.9%,.12 6.1%,.559 18.8%,.735 25%,.856 31.3%,.937 38.1%,.977 43.7%,1.002 50.1%,1.014 58.4%,1.014 69.1%,1.004 84%,1); /* @kind other */
  --spring-snap:linear(0,.014,.054 3.2%,.199 6.9%,.79 19.5%,.951 25.5%,1.052 32.4%,1.084 39.7%,1.075 46.5%,1.03 57.9%,1.005 68.3%,.998 78.5%,1); /* @kind other */

  /* ---- motion: durations · all scale with --motion ---- @kind other ---- */
  --dur-fast:calc(.2s*var(--motion)); /* @kind other */
  --dur:calc(.3s*var(--motion)); /* @kind other */
  --dur-slow:calc(.45s*var(--motion)); /* @kind other */
  --dur-slower:calc(.7s*var(--motion)); /* @kind other */

  /* ---- motion — semantic vocabulary ----
     Intent-named aliases so every component reaches for the same easing and
     timing for the same job. --ease-standard (fast-start, gentle-settle) is the
     default for most UI; springs add a little overshoot for press/lift;
     emphasized carries morphs and reorders; exit leaves quickly. Durations
     climb with the magnitude of the change and stay inside 120–600ms. ---- */
  --ease-standard:var(--out);          /* @kind other */
  --ease-spring:var(--spring);         /* @kind other */
  --ease-emphasized:var(--inout);      /* @kind other */
  --ease-exit:cubic-bezier(.4,0,1,1);  /* @kind other */

  --dur-hover:calc(.18s*var(--motion));     /* @kind other */
  --dur-press:calc(.12s*var(--motion));     /* @kind other */
  --dur-control:calc(.3s*var(--motion));    /* @kind other */
  --dur-overlay:calc(.42s*var(--motion));   /* @kind other */
  --dur-entrance:calc(.55s*var(--motion));  /* @kind other */
  --dur-reveal:calc(1s*var(--motion));      /* data-viz draw-in / count-up  @kind other */
}
