/* Служебные страницы: заказ, документы, авторы фото, аварийная заглушка, панель.
   Страницы в теме «улица» подключают styles.css и theme-street.css как витрина,
   здесь — только то, чего у витрины нет. Аудит 23.09.2026, отчёты 08 и 05. */


/* ---------- подвал ---------- */
/* Низ без запаса под липкую кнопку корзины: её на этих страницах нет, и 104 px
   под подвалом были пустой тёмной полосой. Отступ сверху — потому что правило
   темы «margin: 0 calc(50% - 50vw)» обнуляет его, и кнопка ложилась на подвал. */
body[data-theme="street"] footer {
  margin-top: 56px;
  padding-bottom: calc(40px + env(safe-area-inset-bottom));
}
/* Короткая страница («заказ не найден», заглушка на компьютере): подвал прижат
   к низу экрана, а не висит посередине с белой полосой под ним. У каждой
   страницы в main один блок содержимого и подвал — растёт содержимое. */
body[data-theme="street"] .app { display: flex; flex-direction: column; min-height: 100dvh; }
body[data-theme="street"] .app > main { flex: 1 0 auto; display: flex; flex-direction: column; }
body[data-theme="street"] .app > main > :not(footer) { flex: 1 0 auto; width: 100%; }


/* ---------- документы: оферта, политика, согласие, авторы фото ---------- */
/* Вернуться в меню с документа длиной в три экрана можно сразу, а не только
   ссылкой в самом конце (08 №20). */
.doc-back { margin: 16px 0 0; }
.doc-back a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: var(--ink-soft);
  font-size: 15px;
  text-decoration: none;
}
.doc-back a:hover { color: var(--brand-ink); }
body[data-theme="street"] .doc h1 {
  margin: 8px 0 0;
  font-size: var(--fs-title);
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: -0.03em;
  text-wrap: balance;
}
body[data-theme="street"] .doc h2 {
  margin: 36px 0 8px;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.01em;
}
body[data-theme="street"] .doc :is(p, li) { font-size: 16px; line-height: 1.65; text-wrap: pretty; }
body[data-theme="street"] .doc .head-note { margin-top: 12px; font-size: 14px; color: var(--ink-soft); }
/* Номер телефона не рвётся посередине (08 №12). */
a[href^="tel:"] { white-space: nowrap; }

/* Список авторов фото: одна позиция — один абзац, без таблицы: на 320 px
   четыре колонки превращаются в столбик по слову. */
.doc ul.credits { margin: 0; padding: 0; list-style: none; }
body[data-theme="street"] .credits li {
  margin: 0;
  padding: 14px 0;
  border-bottom: 1px solid var(--border);
  font-size: 15px;
  line-height: 1.55;
}
.credits li:last-child { border-bottom: 0; }
.credits b { display: block; color: var(--ink); }
.credits span { color: var(--ink-soft); }


/* ---------- страница заказа ---------- */
/* Нижний отступ экрана витрины здесь не нужен: до подвала хватает его собственного. */
#screen-done { padding-bottom: 0; }
/* Цвет статуса — классы .waiting / .failed из styles.css, ставит order.js.
   Кнопка звонка — рядом со словами «позвоните нам», а не в шапке. */
.ticket .call-btn { margin-top: 14px; }
.ticket .call-btn[hidden] { display: none; }
/* На странице заказа снимков в строках нет: колонка под них не нужна, иначе
   название съезжает на 12 px правее «К оплате» (08 №13). */
#lines .line { grid-template-columns: minmax(0, 1fr) auto; }
#lines .line > .line-main { grid-column: 1; }
#lines .line > .line-price { grid-column: 2; }
/* Ссылка на розовой плашке «Такого заказа нет»: оранжевый давал 3,5 — тёмный текст. */
.notice a { color: var(--ink); font-weight: var(--w-semi); }


/* ---------- аварийная заглушка ---------- */
/* Колонка как у страницы заказа: на мониторе кнопка на 1180 px читается как полоса. */
.offline,
.not-found { max-width: 720px; }


/* ---------- панель персонала ---------- */
/* Над списком — время обновления и кнопка «Обновить»: вечером список длинный,
   а кнопка внизу страницы пропадала из виду (08 №7). */
.admin-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  margin: var(--s-7) 0 var(--s-3);
}
.admin-bar .cat-title { margin: 0; }
.admin-bar .btn { width: auto; min-height: var(--h-sec); margin: 0; padding-inline: var(--s-4); }
.admin-updated { margin: 0 0 var(--s-2); font-size: var(--t-sm); color: var(--ink-soft); }

/* «Нужна проверка»: заказы, которые касса не подтвердила. Выделены рамкой и
   фоном целиком, а не полоской сбоку — это тревога, её нельзя не заметить. */
.review {
  margin-top: var(--s-5);
  padding: var(--s-4);
  border-radius: var(--r-lg);
  border: 1.5px solid var(--err);
  background: color-mix(in oklab, var(--err) 7%, white);
}
.review[hidden] { display: none; }
.review h2 { margin: 0; font-size: var(--t-xl); color: var(--err); }
.review > p { margin: var(--s-1) 0 0; font-size: var(--t-md); }
.review-item { padding: var(--s-3) 0 0; margin-top: var(--s-3); border-top: 1px solid color-mix(in oklab, var(--err) 25%, transparent); }
.review-head { font-size: var(--t-lg); font-weight: var(--w-bold); font-variant-numeric: tabular-nums; }
.review-err { margin-top: var(--s-1); font-size: var(--t-sm); color: var(--ink-soft); overflow-wrap: anywhere; }

/* Телефон гостя — отдельной строкой ссылкой: его обрезало многоточием
   вместе с длинным именем, а звонить надо именно по нему (08 №8). */
.order-phone { display: inline-flex; align-items: center; min-height: var(--tap); font-size: var(--t-base); font-weight: var(--w-semi); white-space: nowrap; }
.order-who { margin-top: 0; }
/* Сумма и статус — колонкой постоянной ширины: у каждой строки своя сетка,
   и при «max-width: 42%» правый край прыгал от строки к строке. */
@media (min-width: 480px) {
  .order-row { grid-template-columns: 4.5rem minmax(0, 1fr) 13rem; }
  .order-right { max-width: none; }
}
.order-status.is-wait { color: var(--warn); font-weight: var(--w-semi); }
.order-status.is-bad { color: var(--err); font-weight: var(--w-semi); }

/* Панель в теме «улица»: опасные кнопки («Остановить приём», «Не готовим») остаются
   красной обводкой. Заливка темы делала их главными оранжевыми — самыми заметными. */
body[data-theme="street"] .btn.btn-danger,
body[data-theme="street"] .btn.btn-danger:hover {
  background: transparent;
  border: 1.5px solid var(--err);
  color: var(--err);
}
@media (hover: hover) and (pointer: fine) {
  body[data-theme="street"] .btn.btn-danger:hover { background: color-mix(in oklab, var(--err) 8%, transparent); }
}

/* 🔴 Пауза доставки: у .btn display: inline-flex, и он перебивал атрибут hidden —
   при выключенной настройкой доставке кассир видел рабочую кнопку «на паузу». */
.dl-admin .btn[hidden] { display: none; }

/* Разбор «нужна проверка»: три решения кассира кнопками, каждое — с подтверждением. */
.review-actions { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-3); }
.review-actions .btn { width: auto; flex: 1 1 auto; min-height: var(--tap); margin: 0; padding-inline: var(--s-4); white-space: normal; line-height: 1.25; }
.review-actions .btn + .btn { margin-top: 0; }
.review-item .error { margin: var(--s-2) 0 0; }
.review-item .error:empty { display: none; }
