@keyframes drift-a { 0% { transform: translate3d(0, 0, 0) scale(1); } 100% { transform: translate3d(9vw, 6vh, 0) scale(1.12); } }
@keyframes drift-b { 0% { transform: translate3d(0, 0, 0) scale(1.05); } 100% { transform: translate3d(-8vw, -7vh, 0) scale(.92); } }
@keyframes drift-c { 0% { transform: translate3d(0, 0, 0) scale(.95); } 100% { transform: translate3d(6vw, -8vh, 0) scale(1.15); } }
@keyframes ink-ripple {
  0% { opacity: .85; background: radial-gradient(circle at var(--rx, 50%) var(--ry, 50%), var(--ripple-color, var(--accent)) 0%, transparent 0%); }
  60% { opacity: .55; background: radial-gradient(circle at var(--rx, 50%) var(--ry, 50%), var(--ripple-color, var(--accent)) 0%, transparent 140vmax); }
  100% { opacity: 0; background: radial-gradient(circle at var(--rx, 50%) var(--ry, 50%), var(--ripple-color, var(--accent)) 0%, transparent 140vmax); }
}
@keyframes toast-in { from { opacity: 0; transform: translateX(28px) scale(.94); } to { opacity: 1; transform: none; } }
@keyframes toast-out { to { opacity: 0; transform: translateX(24px) scale(.96); } }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes modal-in { from { opacity: 0; transform: translateY(24px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes view-in { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes rise-in { from { opacity: 0; transform: translateY(26px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes row-in { from { opacity: 0; transform: translateX(-16px); } to { opacity: 1; transform: none; } }
@keyframes caret-blink { 0%, 45% { opacity: 1; } 55%, 100% { opacity: .12; } }
@keyframes seal-breathe { 0%, 100% { box-shadow: 0 0 0 0 var(--accent-soft); } 50% { box-shadow: 0 0 0 9px transparent; } }
@keyframes dock-in { from { opacity: 0; transform: translate(-50%, 26px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes drawer-in { from { transform: translateX(100%); } to { transform: translateX(0); } }
@keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
@keyframes line-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes quote-glow { 0%, 100% { opacity: .35; } 50% { opacity: .8; } }

:root { --load-scale: 1; }
.view-enter { animation-duration: calc(.5s * var(--anim-scale) * var(--load-scale)); }
.rise-item { animation: rise-in calc(.62s * var(--anim-scale) * var(--load-scale)) cubic-bezier(.2, .85, .25, 1) both; }
.row-item { animation: row-in calc(.45s * var(--anim-scale) * var(--load-scale)) cubic-bezier(.2, .85, .25, 1) both; }

.tw-caret {
  display: inline-block; width: 2px; height: 1.05em; margin-left: 2px; vertical-align: -.16em;
  background: var(--accent); border-radius: 2px; box-shadow: 0 0 9px var(--accent);
  animation: caret-blink 1s steps(1) infinite;
}
.tw-block { opacity: 0; transform: translateY(12px); }
.tw-block.tw-visible {
  opacity: 1; transform: none;
  transition: opacity calc(.5s * var(--anim-scale)) ease, transform calc(.5s * var(--anim-scale)) cubic-bezier(.2, .8, .25, 1);
}

:root[data-motion="off"] .ambient-blob,
:root[data-motion="off"] .brand-seal { animation: none; }
:root[data-motion="off"] .tw-caret { animation: none; }
:root[data-motion="off"] * { animation-duration: .001ms !important; transition-duration: .001ms !important; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .ambient-blob { display: none; }
}
