/* The Witness, built into the landing page (PREVIEW, 2026-09-29). Assets: w/ (landing/_src/witness_web.py).
   He is placed by witness.js against the page's real elements; this file only styles and animates him. */
.wit{position:absolute;display:block;pointer-events:none;user-select:none;-webkit-user-drag:none;
  /* the page's own card shadow, soft and a little down */
  filter:drop-shadow(2px 6px 7px rgba(34,48,63,.24))}

/* 1 hero: rises up behind the Get-the-beta card, then his draped nub lands on the ledge */
.w-hero.back{animation:wRise .9s cubic-bezier(.2,1.4,.4,1) .5s both}
.w-hero.front{animation:wDrop .35s ease-out 1.25s both}
@keyframes wRise{from{transform:translateY(58%)}to{transform:none}}
@keyframes wDrop{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}

/* 2 joint: leans out round the corner when the card scrolls into view */
.w-joint{opacity:0;transform:translate(-26px,22px) rotate(10deg);transform-origin:30% 60%;
  transition:opacity .25s,transform .7s cubic-bezier(.2,1.5,.4,1)}
.w-joint.in{opacity:1;transform:none}
.w-joint.front{transition-delay:.35s}

/* 3 build: pops in from the right when the contract is finished */
.w-build{animation:wPop .5s cubic-bezier(.2,1.5,.4,1) both;z-index:6}
@keyframes wPop{from{opacity:0;transform:translate(40px,30px) scale(.85)}to{opacity:1;transform:none}}
.w-ring{position:absolute;border:3px solid rgba(30,107,60,.55);border-radius:50%;pointer-events:none;
  animation:wRing .7s ease-out both;z-index:5}
@keyframes wRing{from{opacity:.9;transform:scale(.5)}to{opacity:0;transform:scale(1.6)}}

/* 4 thread: Tarzan is an <image> inside the page-flow SVG, placed and swung by witness.js */

@media (prefers-reduced-motion:reduce){
  .wit{animation:none!important;transition:none!important}
  .w-joint{opacity:1;transform:none}
}
