/* Токены и базовые примитивы. Один источник для всех экранов:
   раньше этот блок был скопирован в каждую страницу и начинал расходиться.
   Цвета статусов здесь — значения по умолчанию для первой отрисовки;
   боевые приходят с сервера (§4) и переопределяют их на documentElement. */
:root{
  --bg:#070C12; --card:#18222E; --card2:#1E2A38; --card3:#243243;
  --ink:#EFF4FA; --ink2:#A6B5C6; --mut:#6D7F93; --dim:#4E5F72;
  --ord:#F2B45E; --mov:#4FD3A4; --idle:#7E93AA; --acc:#8FB2FF;
  --bad:#FF9878;
  --r1:12px; --r2:18px; --r3:26px;
  --sh1:0 1px 2px rgba(0,0,0,.34),0 4px 12px rgba(0,0,0,.30);
  --sh2:0 2px 6px rgba(0,0,0,.40),0 12px 30px rgba(0,0,0,.42);
  --hi:inset 0 1px 0 rgba(255,255,255,.07);
  --spring:cubic-bezier(.22,1.15,.36,1);
}
*{box-sizing:border-box}
html,body{margin:0; background:var(--bg); color:var(--ink);
  font-family:"Onest",system-ui,sans-serif; font-size:15px; letter-spacing:-.005em;
  -webkit-font-smoothing:antialiased}
button{font:inherit; color:inherit; background:none; border:0; cursor:pointer; text-align:left}
input,select,textarea{font:inherit; color:inherit; border:0; outline:0; background:none}
::placeholder{color:var(--dim)}

/* Плавающая поверхность: стекло с подсветкой верхней кромки вместо рамки */
.glass{background:linear-gradient(180deg,rgba(35,48,64,.90),rgba(22,32,45,.93));
  backdrop-filter:blur(20px) saturate(1.3); box-shadow:var(--sh2),var(--hi)}
