:root {
  --font: 'Plus Jakarta Sans', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  --ease: cubic-bezier(.2, .8, .2, 1);
  --ease-spring: cubic-bezier(.34, 1.56, .64, 1);
  --r-sm: 8px; --r: 12px; --r-lg: 18px;
  --good: #22c55e; --warn: #f59e0b; --bad: #ef4444; --info: #38bdf8; --gold: #facc15;
}
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; }
body { font-family: var(--font); font-feature-settings: 'tnum' 1, 'cv11' 1; -webkit-font-smoothing: antialiased; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
:focus-visible { outline: 2px solid var(--info); outline-offset: 2px; border-radius: 6px; }

.sk {
  position: relative; overflow: hidden; border-radius: 6px; color: transparent !important;
  background: var(--sk-base, rgba(148, 163, 184, .16)); min-height: .9em;
}
.sk::after {
  content: ''; position: absolute; inset: 0; transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, var(--sk-shine, rgba(255, 255, 255, .14)), transparent);
  animation: sk 1.3s infinite;
}
@keyframes sk { to { transform: translateX(100%); } }

.fade-up { animation: fadeUp .5s var(--ease) both; }
@keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } }

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