/* =========================================================================
   Normies motion kit — sub-pages only (home has its own GSAP behavior).
   Additive by design: without JS everything is visible; .nm-js is set by
   js/normies-motion.js only when IntersectionObserver exists, and all
   hidden states live under prefers-reduced-motion: no-preference.
   Spec: DESIGN.md §7 — fade + 8-12px rise, .4-.6s, cubic-bezier(.2,.65,.2,1);
   hover: buttons lift 2px, cards lift 3px, 0.22s.
   ========================================================================= */

/* v2: elements are NEVER pre-hidden. When observed, .nm-in plays an entrance
   animation. If JS never runs or IO never fires, everything is simply visible. */
@media (prefers-reduced-motion: no-preference) {
  html.nm-js .nm-reveal.nm-in {
    animation: nmRevealIn .55s cubic-bezier(.2, .65, .2, 1) both;
    animation-delay: calc(var(--nm-i, 0) * 70ms);
  }
  @keyframes nmRevealIn {
    from { opacity: 0; transform: translateY(12px); }
    to { opacity: 1; transform: none; }
  }
}

/* ---- Hover lifts (standardized; pointer devices only) ---- */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .nm-lift-btn { transition: transform .22s cubic-bezier(.2, .65, .2, 1), box-shadow .22s cubic-bezier(.2, .65, .2, 1); }
  .nm-lift-btn:hover { transform: translateY(-2px); }
  .nm-lift-card { transition: transform .22s cubic-bezier(.2, .65, .2, 1), box-shadow .22s cubic-bezier(.2, .65, .2, 1); }
  .nm-lift-card:hover { transform: translateY(-3px); box-shadow: 0 24px 56px rgba(125, 119, 0, 0.24); }
}

/* ---- Keyboard focus (site a11y rule: 2px ink outline, 3px offset) ---- */
.nm-kit a:focus-visible,
.nm-kit button:focus-visible,
.nm-kit input:focus-visible,
.nm-kit select:focus-visible,
.nm-kit [tabindex]:focus-visible {
  outline: 2px solid #242424;
  outline-offset: 3px;
  border-radius: 4px;
}
