/* Korbel.ai — Motion tokens
   One primary curve everywhere — weighted in-out. No bounce, elastic or overshoot.
   "Steel doesn't wobble." Content enters bottom-up in a short stagger. */

:root {
  /* The single easing curve for the whole system */
  --ease-standard: cubic-bezier(0.65, 0, 0.35, 1); /* @kind other */

  /* Durations */
  --dur-micro:      120ms;  /* @kind other */ /* hovers, small state changes */
  --dur-ui:         240ms;  /* @kind other */ /* buttons, toggles, menus */
  --dur-transition: 400ms;  /* @kind other */ /* page / view transitions */
  --dur-loader:     2600ms; /* @kind other */ /* ambient corbel loader spin */
  --dur-assemble:   3200ms; /* @kind other */ /* build / generate moment */

  /* Loader spin — clockwise 360, constant angular speed */
  --loader-duration: 2.6s; /* @kind other */
}

/* Corbel loader keyframes — the mark rotating clockwise (load being carried). */
@keyframes korbel-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Determinate / indeterminate progress sweep. */
@keyframes korbel-sweep {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(300%); }
}

/* Thinking — three pulsing squares. */
@keyframes korbel-pulse {
  0%, 100% { opacity: 0.25; }
  50%      { opacity: 1; }
}

/* Content enters bottom-up (load transferring down). */
@keyframes korbel-rise {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Reduced motion — swap the spin for a steady pulse. */
@media (prefers-reduced-motion: reduce) {
  @keyframes korbel-spin {
    0%, 100% { opacity: 0.55; }
    50%      { opacity: 1; }
  }
}
