/* ============================================================
   CARDTOOLS · tokens — переменные, база, анимации
   шрифты: Unbounded (дисплей) / Golos Text (текст) / JetBrains Mono (данные)
   ============================================================ */

:root{
  --paper:#ffffff;
  --paper-2:#f7f7f4;
  --paper-3:#efefe9;
  --ink:#131311;
  --ink-2:#5d5d57;
  --ink-3:#9b9b93;
  --line:#e7e7e0;
  --line-2:#d8d8d0;
  --accent:#0038e0;
  --accent-ink:#0029a8;
  --accent-soft:#edf1ff;
  --red:#d42f1f;
  --red-soft:#fdeeed;
  --amber:#dd8500;
  --amber-soft:#fdf4e3;
  --green:#0d9d61;
  --green-soft:#e7f7ef;
  --display:'Unbounded',system-ui,sans-serif;
  --body:'Golos Text',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --side-w:300px;
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--body);
  font-size:15px;
  line-height:1.55;
  color:var(--ink);
  background:var(--paper);
  border-top:4px solid var(--ink);
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--accent);color:#fff}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}
a{color:inherit}
button{font-family:inherit}

/* ---------- анимации ---------- */
@keyframes fadeUp{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes grow{from{width:0}}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(13,157,97,.45)}55%{box-shadow:0 0 0 6px rgba(13,157,97,0)}}
@keyframes pulse-red{0%,100%{box-shadow:0 0 0 0 rgba(212,47,31,.45)}55%{box-shadow:0 0 0 6px rgba(212,47,31,0)}}
@keyframes pulse-amber{0%,100%{box-shadow:0 0 0 0 rgba(221,133,0,.45)}55%{box-shadow:0 0 0 6px rgba(221,133,0,0)}}
@keyframes shimmer{to{background-position:-200% 0}}
@keyframes blink{0%,100%{opacity:.55}50%{opacity:.2}}
@keyframes cardflash{0%{box-shadow:0 0 0 3px var(--accent-soft);border-color:var(--accent)}100%{box-shadow:0 0 0 0 transparent}}

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