/* ==========================================================================
   Garage11 — визуальный язык референса SynapseX, перенесённый на vanilla

   Чистый чёрный фон, белый текст, моноширинный шрифт во всём, огромная
   сверхтонкая типографика, точечная сетка, стеклянные пилюли навигации,
   watermark-надпись, scramble-анимации текста.

   Шрифт — JetBrains Mono (OFL), лежит локально: у Space Mono из референса
   нет кириллицы и нет тонких весов, а дизайн держится и на том, и на другом.
   Ни одного внешнего запроса — приложение работает без интернета.
   ========================================================================== */

@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('/fonts/jbmono-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('/fonts/jbmono-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
    U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
    U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --mono: 'JetBrains Mono', ui-monospace, "SFMono-Regular", Menlo, monospace;

  --w85: rgba(255,255,255,.85);
  --w60: rgba(255,255,255,.60);
  --w45: rgba(255,255,255,.45);
  --w40: rgba(255,255,255,.40);
  --w30: rgba(255,255,255,.30);
  --w25: rgba(255,255,255,.25);
  --line: rgba(255,255,255,.10);
  --line-2: rgba(255,255,255,.16);
  --glass: rgba(255,255,255,.10);

  /* статусы — палитра проверена валидатором на дальтонизм (ΔE 11.4 deutan) */
  --s-new:     #60a5fa;
  --s-ordered: #fbbf24;
  --s-arrived: #22d3ee;
  --s-sched:   #a78bfa;
  --s-repair:  #ff5a5f;
  --s-done:    #a3e635;
  --s-off:     #7c8794;

  --ease: cubic-bezier(.215,.610,.355,1);
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  /* без серого блика по тапу — на телефоне он выдаёт «сайт», а не приложение */
  -webkit-tap-highlight-color: transparent;
}

html, body {
  background: #000;
  color: #fff;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: var(--mono);
  font-size: 18px;
  font-weight: 400;
  line-height: 1.6;
  min-height: 100vh;
  opacity: 0;
  transition: opacity .8s var(--ease);
}
body.ready { opacity: 1; }

/* точечная сетка поверх всего — 24px, едва различима */
.dotgrid {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: .05;
  background-image: radial-gradient(#fff 1px, transparent 1px);
  background-size: 24px 24px;
}

::selection { background: #fff; color: #000; }

a { color: #fff; text-decoration: none; }
a:hover { opacity: .7; }

/* ============================================== watermark-надпись фоном */

.watermark {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  font-size: clamp(84px, 17vw, 300px);
  font-weight: 800;
  line-height: .8;
  letter-spacing: -.04em;
  text-transform: uppercase;
  white-space: nowrap;
  pointer-events: none;
  user-select: none;
  z-index: 0;
  opacity: .18;
  background: radial-gradient(circle, rgba(142,127,148,0) 0%, #8E7F94 70%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

/* ================================================================= шапка */

header.top {
  position: fixed;
  top: 0; left: 0; right: 0;
  /* safe-area: под вырезом и «динамическим островом» контент не прячется */
  height: calc(88px + env(safe-area-inset-top));
  padding: env(safe-area-inset-top) calc(18px + env(safe-area-inset-right))
           0 calc(18px + env(safe-area-inset-left));
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 8px;
  background: transparent;
}
/* затемняющая подложка: без неё плотные таблицы просвечивают между пилюлями.
   Тот же приём, что и градиент над второй секцией в референсе. */
header.top::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 250%;
  background: linear-gradient(180deg, #000 38%, rgba(0,0,0,.72) 68%, transparent);
  pointer-events: none;
  z-index: -1;
}

/* стеклянная пилюля с логотипом.
   inline-block, а не flex: флекс разбил бы «Авто|парк|· сервис» на части */
header.top h1 {
  display: inline-block;
  height: 54px;
  line-height: 54px;
  padding: 0 19px;
  font-size: 18px;
  font-weight: 500;
  letter-spacing: -.01em;
  text-transform: none;
  white-space: nowrap;
  background: var(--glass);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-radius: 14px;
  transition: background .2s, transform .12s;
}
header.top h1:hover { background: rgba(255,255,255,.18); transform: scale(1.02); }
/* знак: квадрат со срезанным углом, 4-кратная симметрия референса упрощена */
header.top h1::before {
  content: "";
  display: inline-block;
  vertical-align: -2px;
  width: 16px; height: 16px;
  margin-right: 9px;
  background: #fff;
  clip-path: polygon(0 0, 62% 0, 100% 38%, 100% 100%, 38% 100%, 0 62%);
}
header.top h1 span { color: #fff; }

header.top .who {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  height: 54px;
  padding: 0 9px 0 21px;
  background: var(--glass);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-radius: 14px;
  font-size: 17px;
  color: var(--w60);
  line-height: 1.15;
}
header.top .who b {
  color: #fff;
  font-weight: 400;
  display: inline;
  font-size: 17px;
}
/* «выйти» — белая пилюля, как кнопка Download в референсе */
header.top .who a {
  display: inline-flex;
  align-items: center;
  height: 38px;
  padding: 0 17px;
  background: #fff;
  color: #000 !important;
  border-radius: 999px;
  font-size: 15px;
  transition: background .2s, transform .12s;
}
header.top .who a:hover {
  background: #e2e2e6;
  opacity: 1;
  transform: scale(1.03);
}

/* =============================================================== разметка */

.wrap {
  position: relative;
  z-index: 2;
  max-width: 1440px;
  margin: 0 auto;
  padding: 186px 28px 130px;
}

.card {
  position: relative;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 26px;
  margin-bottom: 16px;
  background: rgba(255,255,255,.014);
}
.card > h2 {
  font-size: 15px;
  font-weight: 400;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--w40);
  margin-bottom: 26px;
}

/* таблицы тянутся во всю ширину, а формы — нет: поле ввода на 1440px нечитаемо */
.card form { max-width: 860px; }

.muted { color: var(--w40); }
.small { font-size: 16px; }
.row { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.spacer { flex: 1; }

/* ================================================================ вкладки */

nav.tabs {
  position: fixed;
  top: calc(98px + env(safe-area-inset-top));
  left: 0; right: 0;
  /* 60 > 50 у шапки: иначе затемнение из header.top::before, уходящее
     на 220px вниз, ложится поверх кнопок и «съедает» их */
  z-index: 60;
  display: flex;
  gap: 6px;
  padding: 0 18px 12px;
  overflow-x: auto;
  scrollbar-width: none;
}
nav.tabs::-webkit-scrollbar { display: none; }
nav.tabs button {
  flex: none;
  font: inherit;
  /* ЕДИНСТВЕННОЕ место, где задаётся размер вкладок — на всех страницах
     (владелец / сервис / водитель) и на всех ширинах экрана.
     Кегль как у основного текста (18px), высота совпадает с высотой
     кнопок .btn (54px) — элементы управления в одной шкале.
     Высоту определяет padding: 16 + 18*1.2 + 16 ≈ 54px. */
  font-size: 18px;
  line-height: 1.2;
  color: var(--w45);
  background: var(--glass);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: none;
  border-radius: 11px;
  padding: 16px 28px;
  cursor: pointer;
  white-space: nowrap;
  transition: color .2s, background .2s;
}
nav.tabs button:hover { color: #fff; }
nav.tabs button.on { background: #fff; color: #000; }

.tabpane { display: none; }
.tabpane.on { display: block; animation: fadeUp .9s var(--ease); }
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(25px); }
  to   { opacity: 1; transform: none; }
}

/* ============================================= крупные заголовки секций */

.display {
  font-size: clamp(44px, 7vw, 96px);
  font-weight: 200;
  line-height: .95;
  letter-spacing: -.03em;
  margin-bottom: 18px;
}
.eyebrow {
  font-size: 15px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--w40);
  margin-bottom: 22px;
}
.lede {
  font-size: 18px;
  color: var(--w45);
  line-height: 1.7;
  max-width: 40em;
}

/* ====================================================== госномер (бренд) */

/* белый на чёрном — в монохромной системе номер и так самый яркий объект */
.plate {
  display: inline-block;
  font-family: var(--mono);
  font-weight: 700;
  font-size: 17px;
  letter-spacing: .06em;
  background: #fff;
  color: #000;
  border-radius: 4px;
  padding: 3px 9px;
  text-transform: uppercase;
  white-space: nowrap;
}
.plate.lg {
  font-size: clamp(26px, 5vw, 40px);
  padding: 8px 18px;
  border-radius: 7px;
  letter-spacing: .07em;
}

/* ================================================================= бейджи */

/* цвет несёт точка, слово всегда рядом — смысл никогда не только в цвете */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 14px;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: 4px 11px 4px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--w60);
  white-space: nowrap;
}
.badge::before {
  content: "";
  width: 5px; height: 5px;
  border-radius: 50%;
  background: currentColor;
  flex: none;
}
.b-new          { color: var(--s-new); }
.b-part_ordered { color: var(--s-ordered); }
.b-part_arrived { color: var(--s-arrived); }
.b-scheduled    { color: var(--s-sched); }
.b-in_repair    { color: var(--s-repair); }
.b-done         { color: var(--s-done); }
.b-rejected     { color: var(--s-off); }
.b-off          { color: var(--s-off); }
.b-active       { color: var(--s-done); }
.b-in_service   { color: var(--s-repair); }

/* «срочно» — единственный залитый бейдж */
.b-urgent {
  background: var(--s-repair);
  border-color: var(--s-repair);
  color: #180001;
}
.b-urgent::before { background: #180001; }

/* ================================================================== формы */

label.f { display: block; margin-bottom: 20px; }
label.f > span {
  display: block;
  font-size: 14px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--w40);
  margin-bottom: 9px;
}
label.f > span b { color: #fff; font-weight: 400; }

input, select, textarea {
  width: 100%;
  font: inherit;
  font-size: 18px;
  color: #fff;
  background: transparent;
  padding: 15px 0;
  border: none;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  transition: border-color .25s;
}
input::placeholder, textarea::placeholder { color: var(--w25); }
input:focus, select:focus, textarea:focus {
  outline: none;
  border-bottom-color: #fff;
}
textarea { min-height: 74px; resize: vertical; line-height: 1.6; }
select {
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--w40) 50%),
    linear-gradient(135deg, var(--w40) 50%, transparent 50%);
  background-position: calc(100% - 11px) 55%, calc(100% - 6px) 55%;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
  padding-right: 26px;
}
select option { background: #0a0a0a; color: #fff; }
input[type=file] { padding: 11px 0; color: var(--w45); font-size: 16px; }
input[type=file]::file-selector-button {
  font: inherit;
  font-size: 15px;
  margin-right: 12px;
  padding: 8px 15px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: transparent;
  color: #fff;
  cursor: pointer;
}
input[type=file]::file-selector-button:hover { background: rgba(255,255,255,.08); }

/* ползунок топлива */
input[type=range] {
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  border: none;
  padding: 0;
  height: 24px;
}
input[type=range]::-webkit-slider-runnable-track {
  height: 1px; background: var(--line-2);
}
input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 14px; height: 14px;
  margin-top: -6.5px;
  border-radius: 50%;
  background: #fff;
  cursor: pointer;
}
input[type=range]::-moz-range-track { height: 1px; background: var(--line-2); }
input[type=range]::-moz-range-thumb {
  width: 14px; height: 14px; border: none;
  border-radius: 50%; background: #fff; cursor: pointer;
}

/* ================================================================ кнопки */

button.btn {
  font: inherit;
  font-size: 17px;
  height: 54px;
  padding: 0 30px;
  border: none;
  border-radius: 999px;
  background: #fff;
  color: #000;
  cursor: pointer;
  transition: background .2s, transform .12s, opacity .2s;
}
button.btn:hover:not(:disabled) { background: #e2e2e6; transform: scale(1.03); }
button.btn:active:not(:disabled) { transform: scale(.97); }
button.btn:disabled { opacity: .35; cursor: default; }
button.btn.wide { width: 100%; }
button.btn.ghost, button.btn.dark {
  background: transparent;
  color: var(--w60);
  border: 1px solid var(--line);
}
button.btn.ghost:hover, button.btn.dark:hover {
  background: transparent;
  color: #fff;
  border-color: var(--w40);
}
button.btn.sm { height: 42px; padding: 0 19px; font-size: 15px; }
button.btn.danger { background: var(--s-repair); color: #180001; }

/* ============================================================ сообщения */

.msg {
  padding: 13px 16px;
  border: 1px solid var(--line);
  border-left-width: 2px;
  border-radius: 6px;
  margin-bottom: 18px;
  font-size: 16px;
  line-height: 1.55;
}
.msg.err { border-left-color: var(--s-repair); color: #ffc9cb; }
.msg.ok  { border-left-color: var(--s-done);   color: #e0f7a8; }
.msg:empty { display: none; }

/* ======================================= метрики (секция Metrics из спеки) */

.tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 30px 26px;
  margin-bottom: 26px;
}
.tile { position: relative; }
.tile .n {
  font-size: clamp(56px, 8vw, 116px);
  font-weight: 200;
  letter-spacing: -.04em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: #fff;
}
.tile .l {
  font-size: 15px;
  color: var(--w40);
  letter-spacing: .1em;
  margin-top: 14px;
}
.tile.alarm .n { color: var(--s-repair); }

/* =============================================================== таблицы */

.tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
table { width: 100%; border-collapse: collapse; font-size: 17px; }
th, td { padding: 15px 12px; text-align: left; border-bottom: 1px solid var(--line); }
th {
  font-size: 14px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--w30);
  font-weight: 400;
  white-space: nowrap;
}
td { color: var(--w85); }
tbody tr { transition: background .15s; }
tbody tr:hover { background: rgba(255,255,255,.025); }
td.num, th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
tr:last-child td { border-bottom: none; }
td.bad { color: var(--s-repair); }

/* ================================================================ заявки */

/* строка-карточка в духе Layer-карточек из секции Architecture */
.ticket {
  position: relative;
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-bottom: 10px;
  overflow: hidden;
  transition: border-color .2s, background .2s;
}
.ticket:hover { border-color: var(--line-2); background: rgba(255,255,255,.014); }
.ticket.urgent { border-color: rgba(255,90,95,.34); }

.ticket .head { padding: 22px; cursor: pointer; }
.ticket .title {
  font-size: clamp(22px, 2.6vw, 30px);
  font-weight: 300;
  letter-spacing: -.02em;
  margin: 14px 0 6px;
  line-height: 1.25;
}
.ticket .body {
  display: none;
  padding: 22px;
  border-top: 1px solid var(--line);
  background: rgba(255,255,255,.02);
}
.ticket.open .body { display: block; animation: fadeUp .5s var(--ease); }

/* ------------------------------------------------- снимки по заявке */

.shots {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}
.shot {
  display: block;
  width: 92px;
  height: 92px;
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  background: rgba(255,255,255,.03);
  transition: border-color .2s, transform .12s;
}
.shot:hover { border-color: var(--w40); transform: scale(1.03); opacity: 1; }
.shot img {
  width: 100%;
  height: 100%;
  object-fit: cover;   /* кадрируем, чтобы сетка миниатюр была ровной */
  display: block;
}

/* -------------------------------------------------- лента этапов заявки */

.flow { display: flex; gap: 4px; margin-top: 20px; }
.flow .step {
  flex: 1;
  font-size: 13px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--w25);
  text-align: left;
}
.flow .step .bar {
  height: 1px;
  background: var(--line-2);
  margin-bottom: 9px;
  transition: background .3s, height .3s;
}
.flow .step.done .bar { background: var(--w45); }
.flow .step.done { color: var(--w45); }
.flow .step.cur .bar { background: #fff; height: 2px; }
.flow .step.cur { color: #fff; }

/* ----------------------------------------------------- история заявки */

.events { margin-top: 24px; border-top: 1px solid var(--line); padding-top: 18px; }
.events .ev {
  font-size: 16px;
  color: var(--w60);
  padding: 11px 0 11px 20px;
  position: relative;
}
.events .ev::before {
  content: "";
  position: absolute;
  left: 0; top: 18px;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--w30);
}
.events .ev::after {
  content: "";
  position: absolute;
  left: 2px; top: 25px; bottom: -11px;
  width: 1px;
  background: var(--line);
}
.events .ev:last-child::after { display: none; }
.events .ev .when {
  color: var(--w25);
  font-size: 14px;
  letter-spacing: .06em;
  margin-top: 3px;
}

/* ================================================== вход (герой-секция) */

.login-page {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 90px 26px 44px;
  position: relative;
  overflow: hidden;
}
.login-box {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 26px;
}
@media (min-width: 860px) {
  .login-box { flex-direction: row; align-items: flex-end; justify-content: space-between; }
  .login-box form { max-width: 400px; }
}
.login-box h1 {
  font-size: clamp(48px, 9vw, 118px);
  font-weight: 200;
  line-height: .95;
  letter-spacing: -.03em;
  margin-bottom: 18px;
}
.login-box h1 span { display: block; }
.login-box .sub {
  font-size: 17px;
  color: var(--w60);
  line-height: 1.7;
  max-width: 27em;
  margin-bottom: 4px;
}
.login-box form { width: 100%; }

/* ============================================================= мобильная */

@media (max-width: 720px) {

  /* ---------------------------------------------------------- шапка */

  /* На десктопе затемнение тянется на 250%, чтобы накрыть панель вкладок
     под шапкой. На телефоне вкладки внизу — накрывать нечего, и длинный
     градиент ложился на первое поле формы. */
  header.top::before { height: 128%; }

  header.top {
    height: calc(66px + env(safe-area-inset-top));
    padding-left: calc(12px + env(safe-area-inset-left));
    padding-right: calc(12px + env(safe-area-inset-right));
    gap: 6px;
  }
  header.top h1 {
    height: 44px; line-height: 44px;
    padding: 0 15px; font-size: 16px; border-radius: 11px;
  }
  header.top h1::before { width: 13px; height: 13px; margin-right: 7px; }
  header.top .who {
    height: 44px; padding: 0 6px 0 15px;
    font-size: 15px; border-radius: 11px; gap: 9px;
  }
  header.top .who b { font-size: 15px; }
  /* «выйти» — 30px по высоте, но с увеличенной зоной нажатия по вертикали */
  header.top .who a { height: 34px; padding: 0 14px; font-size: 14px; }

  /* ------------------------------- вкладки уходят вниз, под большой палец */

  nav.tabs {
    top: auto;
    bottom: 0;
    padding: 10px calc(10px + env(safe-area-inset-left))
             calc(10px + env(safe-area-inset-bottom))
             calc(10px + env(safe-area-inset-right));
    gap: 6px;
    /* растушёвка, чтобы список уезжал под панель, а не обрывался */
    background: linear-gradient(0deg, #000 62%, rgba(0,0,0,.82) 84%, transparent);
  }
  /* размер вкладок задан один раз в общем правиле выше */

  /* пока водитель печатает — панель уезжает вниз, не мешая клавиатуре */
  body.typing nav.tabs {
    transform: translateY(140%);
    transition: transform .22s var(--ease);
    pointer-events: none;
  }
  nav.tabs { transition: transform .22s var(--ease); }

  .wrap {
    padding: calc(100px + env(safe-area-inset-top)) 14px
             calc(116px + env(safe-area-inset-bottom));
  }

  /* --------------------------------------------------------- контент */

  .card { padding: 22px 17px; border-radius: 10px; }
  .card > h2 { margin-bottom: 20px; }
  .tiles { grid-template-columns: repeat(2, 1fr); gap: 22px 14px; }
  .tile .n { font-size: clamp(42px, 12vw, 66px); }
  .tile .l { font-size: 14px; margin-top: 10px; }
  .ticket .head { padding: 19px; }
  .shot { width: 104px; height: 104px; }
  .chart-grid { grid-template-columns: 1fr; gap: 0; }
  .chart-note { font-size: 12.5px; margin: -10px 0 14px; }
  .ticket .body { padding: 19px; }
  th, td { padding: 12px 9px; font-size: 15px; }
  .flow .step { font-size: 13px; letter-spacing: .04em; }
  .login-page { padding: 84px 16px calc(34px + env(safe-area-inset-bottom)); }
  /* форма прижата к низу — надпись уводим в самый верх экрана.
     translate по Y убираем: иначе центрирование по top срезало бы
     половину надписи за верхнюю кромку. */
  .watermark {
    top: calc(env(safe-area-inset-top) + 6px);
    transform: translate(-50%, 0);
  }

  /* --------------------------------------------------------- ввод */

  /* 16px обязателен: при меньшем размере iOS Safari зумит страницу
     на фокусе, и водителю приходится каждый раз отщипывать обратно */
  input, select, textarea { font-size: 18px; padding: 15px 0; }
  input[type=file] { font-size: 17px; }
  label.f { margin-bottom: 24px; }

  /* пальцу нужна цель крупнее, чем курсору */
  button.btn { height: 56px; font-size: 18px; width: 100%; }
  button.btn.sm { height: 48px; font-size: 16px; padding: 0 20px; width: auto; }
  .row > button.btn { flex: 1 1 auto; }

  input[type=file]::file-selector-button { padding: 11px 17px; font-size: 17px; }

  /* ползунок топлива: 14px-«горошина» пальцем не ловится */
  input[type=range] { height: 44px; }
  input[type=range]::-webkit-slider-thumb {
    width: 26px; height: 26px; margin-top: -13px;
  }
  input[type=range]::-moz-range-thumb { width: 26px; height: 26px; }

  /* ------------------------- таблицы-карточки вместо горизонтальной прокрутки */

  table.stack, table.stack tbody, table.stack tr, table.stack td { display: block; }
  table.stack thead { display: none; }
  table.stack tr {
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 6px 14px;
    margin-bottom: 10px;
  }
  table.stack td {
    border: none;
    padding: 9px 0;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 14px;
    font-size: 17px;
  }
  table.stack td + td { border-top: 1px solid rgba(255,255,255,.06); }
  table.stack td::before {
    content: attr(data-label);
    flex: none;
    font-size: 14px;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--w30);
  }
  table.stack td.num { text-align: right; }
}

/* на очень узких экранах (iPhone SE) вкладок четыре — ужимаем, чтобы влезли */
@media (max-width: 380px) {
  .wrap { padding-left: 11px; padding-right: 11px; }
  .card { padding: 17px 13px; }
}

/* референс уважает системную настройку — уважаем и мы */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  body { opacity: 1; }
}
