/* ============================================================
   UROCARE MOTION SYSTEM - uc-motion.css
   "Light moves, objects barely do."
   Pairs with uc-motion.js. Zero dependencies.
   ============================================================ */
:root{
  --ease-surgical: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-scan: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-settle: cubic-bezier(0.16, 1, 0.3, 1);
  --t-micro: 120ms;
  --t-ui: 300ms;
  --t-scan: 700ms;
  --t-scene: 900ms;
  --t-count: 1200ms;
  --t-breath: 7s;
  --stagger: 70ms;
  --rise-text: 14px;
  --rise-card: 20px;
  --uc-teal: #14b8ab;
  --uc-teal-bright: #2de0d2;
}

/* ---- Reveals ------------------------------------------------ */
[data-rv]{opacity:0;transform:translateY(var(--rise-text));transition:opacity var(--t-scene) var(--ease-surgical),transform var(--t-scene) var(--ease-surgical)}
[data-rv].is-card{transform:translateY(var(--rise-card))}
.play [data-rv],[data-rv].play{opacity:1;transform:none}
[data-rv-delay="1"]{transition-delay:calc(var(--stagger)*1)}
[data-rv-delay="2"]{transition-delay:calc(var(--stagger)*2)}
[data-rv-delay="3"]{transition-delay:calc(var(--stagger)*3)}
[data-rv-delay="4"]{transition-delay:calc(var(--stagger)*4)}
[data-rv-delay="5"]{transition-delay:calc(var(--stagger)*5)}

/* line-by-line headline reveal: children become lines */
[data-rv="lines"]{opacity:1;transform:none;transition:none}
[data-rv="lines"]>*{display:block;opacity:0;transform:translateY(var(--rise-text));transition:opacity var(--t-scene) var(--ease-surgical),transform var(--t-scene) var(--ease-surgical)}
.play [data-rv="lines"]>*,[data-rv="lines"].play>*{opacity:1;transform:none}
[data-rv="lines"]>*:nth-child(1){transition-delay:calc(var(--stagger)*1)}
[data-rv="lines"]>*:nth-child(2){transition-delay:calc(var(--stagger)*2)}
[data-rv="lines"]>*:nth-child(3){transition-delay:calc(var(--stagger)*3)}
[data-rv="lines"]>*:nth-child(4){transition-delay:calc(var(--stagger)*4)}

/* ---- Scan-line section sweep -------------------------------- */
[data-scan]{position:relative}
[data-scan]::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;z-index:9;pointer-events:none;background:linear-gradient(90deg,transparent 0%,rgba(45,224,210,.85) 50%,transparent 100%);opacity:0}
[data-scan].play::before{animation:ucScan 1.1s var(--ease-scan) forwards}
@keyframes ucScan{0%{opacity:.9;transform:translateY(8%)}90%{opacity:.6}100%{opacity:0;transform:translateY(92%)}}
/* horizontal variant */
[data-scan="x"]::before{left:0;right:auto;top:0;bottom:0;width:1px;height:auto;background:linear-gradient(180deg,transparent,rgba(45,224,210,.85),transparent)}
[data-scan="x"].play::before{animation:ucScanX 1.1s var(--ease-scan) forwards}
@keyframes ucScanX{0%{opacity:.9;transform:translateX(4vw)}90%{opacity:.6}100%{opacity:0;transform:translateX(88vw)}}

/* ---- Image light-switch ------------------------------------- */
[data-img]{clip-path:inset(100% 0 0 0);filter:brightness(.6) blur(4px);transition:clip-path var(--t-scene) var(--ease-settle),filter 1.1s var(--ease-settle)}
.play [data-img],[data-img].play{clip-path:inset(0 0 0 0);filter:brightness(1) blur(0)}

/* ---- Hover / focus: light answers touch --------------------- */
.uc-btn{transition:box-shadow var(--t-ui) var(--ease-surgical),background var(--t-ui) var(--ease-surgical),filter var(--t-ui)}
.uc-btn:hover{filter:brightness(1.05)}
.uc-card{transition:transform var(--t-ui) var(--ease-surgical),border-color var(--t-ui),box-shadow var(--t-ui)}
.uc-card:hover{transform:translateY(-2px);border-color:rgba(45,224,210,.35)}
.uc-link{position:relative}
.uc-link::after{content:"";position:absolute;left:0;bottom:-5px;height:1px;width:100%;background:var(--uc-teal-bright);transform:scaleX(0);transform-origin:left;transition:transform var(--t-ui) var(--ease-surgical)}
.uc-link:hover::after{transform:scaleX(1)}
:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--uc-teal);outline-offset:3px;transition:outline-offset var(--t-micro)}

/* ---- Alive signals (the only loops) ------------------------- */
.uc-breath{animation:ucBreath var(--t-breath) ease-in-out infinite}
@keyframes ucBreath{0%,100%{opacity:.86;filter:brightness(1)}50%{opacity:.98;filter:brightness(1.09)}}
.uc-pulse{animation:ucPulse 2.4s ease-in-out infinite}
@keyframes ucPulse{0%,100%{opacity:1}50%{opacity:.45}}

/* ---- Pinned scrub scene ------------------------------------- */
[data-pin]{position:relative}
[data-pin]>.uc-pin-stage{position:sticky;top:0;min-height:100vh;display:flex;flex-direction:column;justify-content:center;overflow:hidden}

/* ---- Act mood zones ----------------------------------------- */
body{transition:background-color .6s var(--ease-settle),color .6s var(--ease-settle)}

/* ---- Reduced motion: the single switch ---------------------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;transition-delay:0ms!important}
  [data-rv],[data-rv="lines"]>*,[data-img]{opacity:1!important;transform:none!important;clip-path:none!important;filter:none!important}
  [data-scan]::before{display:none!important}
}
