/* Калькулятор Chang — в стиле сайта changcafe.ru (решение владельца 2026-10-03):
   розовато-белый фон, приглушённый лесной зелёный, графитовые кнопки-«таблетки»,
   заголовки и вкладки моноширинным Source Code Pro, текст — Inter, розовые плашки-акценты.
   Шрифты — Google Fonts (подключены в base.html и login.html). */
:root {
  --green: #285936;
  --green-deep: #1E4529;
  --pink: #EF9CB8;
  --rose: #C3768E;
  --cream: #FFFBFC;     /* фон страницы, как на сайте */
  --warm: #F5F4F0;      /* шапки таблиц, подложки */
  --beige: #EFE6D6;
  --ochre: #B8813E;
  --teal: #00A099;
  --charcoal: #313536;  /* основные кнопки — как кнопки цены на сайте */
  --ink: #2B2B2B;
  --muted: #6E696B;
  --line: #ECE7E8;      /* разделители */
  --field: #918B8D;     /* рамки полей: контраст 3.3:1 на белом (WCAG 1.4.11) */
  --paper: #FFFFFF;
  --warn-bg: #F8EDD8;
  --warn-ink: #7A5320;
  --bad-bg: #FBE3EB;
  --bad-ink: #8C2F4C;
  --ok-bg: #E3EFE6;
  --ok-ink: #1E4529;
  --radius: 12px;
  --tabbar: 64px;
  --mono: "Source Code Pro", ui-monospace, Menlo, monospace;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--cream); color: var(--ink);
  font: 16px/1.45 "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-feature-settings: "tnum" 1;
}
a { color: var(--green); }
:focus-visible { outline: 3px solid var(--green); outline-offset: 2px; }   /* на светлом — зелёная рамка */

.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
h1, h2, h3 { font-family: var(--mono); letter-spacing: -.01em; }
h1 { font-size: 28px; line-height: 1.2; font-weight: 700; color: var(--green); margin: 0 0 8px; }
h2 { font-size: 20px; font-weight: 600; color: var(--ink); margin: 28px 0 10px; }
.hint, .small { color: var(--muted); font-size: 14px; }
.small { font-size: 13px; }
.path { word-break: break-all; }

/* шапка */
.top { background: var(--cream); color: var(--ink); border-bottom: 1px solid var(--line); }
.top-in { max-width: 1240px; margin: 0 auto; display: flex; align-items: center; gap: 20px; padding: 14px 20px; }
.logo img { height: 26px; display: block; }
.bizsw { display: inline-flex; border: 1px solid var(--line, #E3DEDF); border-radius: 999px; padding: 3px; background: #fff; flex: none; }
.bizsw a, .bizsw button { border: 0; cursor: pointer; font-family: inherit; padding: 7px 14px; border-radius: 999px; font-size: 14px; font-weight: 600; color: var(--muted); text-decoration: none; min-height: 32px; display: inline-flex; align-items: center; }
.bizsw a[aria-current], .bizsw button[aria-current] { background: var(--green); color: #fff; }
.bizsw button:not([aria-current]) { background: transparent; }
.bizsw .bs { display: none; }
.who { margin-left: auto; display: flex; align-items: center; gap: 10px; font-size: 14px; }
.who a { color: var(--muted); padding: 10px 4px; }
.chip { background: var(--pink); color: var(--green-deep); border-radius: 999px; padding: 3px 12px; font-weight: 600; font-size: 14px; white-space: nowrap; }
.tabs { max-width: 1240px; margin: 0 auto; display: flex; gap: 6px; padding: 0 12px; }
.tabs a { color: var(--ink); text-decoration: none; padding: 10px 12px 11px; border-bottom: 3px solid transparent; font: 500 16px var(--mono); display: flex; align-items: center; gap: 8px; }
.tabs a:hover { color: var(--green); }
.tabs a[aria-current="page"] { border-bottom-color: var(--green); color: var(--green); }
.tabs svg { width: 20px; height: 20px; }
.badge { background: var(--pink); color: var(--green-deep); border-radius: 999px; font-size: 12px; font-weight: 700; padding: 0 7px; line-height: 18px; }

main { max-width: 1240px; margin: 0 auto; padding: 24px 20px 60px; }
main.narrow { max-width: 620px; }
.copyright { margin-top: 40px; font-size: 12px; color: var(--muted); text-align: center; }

/* сообщения */
.note { padding: 12px 14px; border-radius: var(--radius); margin-bottom: 16px; }
.note.ok { background: var(--ok-bg); color: var(--ok-ink); }
.note.bad { background: var(--bad-bg); color: var(--bad-ink); }
.note.warn { background: var(--warn-bg); color: var(--warn-ink); }

/* кнопки */
button, .btn {
  font: inherit; font-weight: 500; padding: 9px 16px; border-radius: 10px; cursor: pointer;
  border: 1.5px solid var(--green); background: transparent; color: var(--green);
  text-decoration: none; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
button, .btn { border-color: var(--ink); color: var(--ink); }
button.primary, .btn.primary { background: var(--charcoal); border-color: var(--charcoal); color: #fff; font-weight: 600; }
button.primary:hover, .btn.primary:hover { background: #000; border-color: #000; }
button.ghost, .btn.ghost { border-color: var(--line); color: var(--muted); }
button.big, .btn.big { width: 100%; padding: 15px; font-size: 18px; border-radius: 12px; }
button:disabled { opacity: .55; cursor: default; }
form { margin: 0; }

/* поля */
input, select, textarea { font: inherit; color: var(--ink); }
.field { display: grid; gap: 6px; font-size: 14px; color: var(--muted); }
.field input, .field select, .txt {
  font-size: 17px; padding: 11px 12px; border: 1.5px solid var(--field); border-radius: 10px; background: var(--paper); width: 100%;
}
.field input:focus, .field select:focus, .txt:focus { border-color: var(--green); outline: none; }

/* переключатели-«таблетки» */
.seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 6px; }
.seg label { display: block; position: relative; }
.seg.many { grid-auto-flow: row; grid-template-columns: repeat(3, minmax(0, 1fr)); }  /* фудхоллы: 6 разделов — 2 строки по 3 */
.seg.many span { overflow-wrap: anywhere; }
@media (max-width: 420px) { .seg.four { grid-auto-flow: row; grid-template-columns: repeat(2, minmax(0, 1fr)); } }  /* ресторанное списание: 4 раздела — 2×2 */
.seg input { position: absolute; opacity: 0; inset: 0; }
.seg span { display: block; text-align: center; padding: 11px 6px; border: 1.5px solid var(--field); border-radius: 10px; background: var(--paper); font-size: 15px; }
.seg input:checked + span { background: var(--green); border-color: var(--green); color: #fff; }
.seg input:focus-visible + span { outline: 3px solid var(--green); outline-offset: 2px; }
.points { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 18px; }
.points a { text-decoration: none; padding: 7px 14px; min-height: 44px; display: inline-flex; align-items: center; border-radius: 999px; border: 1.5px solid var(--green); color: var(--green); font-weight: 500; }
.points a[aria-current="true"] { background: var(--green); color: #fff; }

/* «Действие» */
.acts { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.act { background: var(--paper); border: 1px solid var(--line); border-radius: 16px; padding: 18px; display: grid; gap: 10px; align-content: start; box-shadow: 0 1px 2px rgba(43,43,43,.04); }
.act h3 { margin: 0; font-size: 20px; color: var(--green); }
.act p { margin: 0; color: var(--muted); font-size: 14px; }
.act .row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; }

/* ввод цифрами */
.form { display: grid; gap: 14px; background: var(--paper); border: 1px solid var(--line); border-radius: 16px; padding: 16px; }
.items { list-style: none; margin: 0; padding: 0; }
.items li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.items .nm { font-size: 15px; }
.items .in { display: flex; align-items: center; gap: 6px; flex: none; }
.items input { width: 92px; font-size: 18px; padding: 9px; text-align: right; border: 1.5px solid var(--field); border-radius: 10px; background: #fff; }
.items input:not(:placeholder-shown) { border-color: var(--green); background: var(--ok-bg); }
.items select { min-width: 58px; min-height: 44px; font-size: 16px; padding: 6px 4px; border: 1.5px solid var(--field); border-radius: 10px; background: #fff; }
.items em { font-style: normal; color: var(--muted); width: 38px; font-size: 14px; }
.sticky-save { position: sticky; bottom: 0; z-index: 2; margin: 0 -16px -16px; padding: 12px 16px 16px; background: linear-gradient(to bottom, rgba(255,255,255,0), var(--paper) 30%); border-radius: 0 0 16px 16px; }

/* загрузка */
.shoot { position: relative; }
.shoot input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.shoot span { display: block; text-align: center; padding: 24px; border: 2px dashed var(--green); border-radius: 14px; color: var(--green); font-size: 18px; background: var(--paper); }
.shoot input:focus-visible + span { outline: 3px solid var(--green); outline-offset: 2px; }
.previews { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.previews img { width: 100%; aspect-ratio: 3/4; object-fit: cover; border-radius: 8px; }
.previews .doc { grid-column: 1 / -1; padding: 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; }

/* списки */
.list { width: 100%; border-collapse: collapse; background: var(--paper); border-radius: var(--radius); overflow: hidden; }
.list th, .list td { padding: 10px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.list th { font-weight: 500; font-size: 13px; color: var(--muted); background: var(--warm); }
.list tr:last-child td { border-bottom: 0; }
.list .num { text-align: right; white-space: nowrap; }
.list .path { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cards { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.cards a, .cards .card { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; padding: 12px 14px; background: var(--paper); border: 1.5px solid var(--line); border-radius: 12px; text-decoration: none; color: var(--ink); }
.cards .t { font-weight: 500; white-space: pre-line; }
.cards .m { color: var(--muted); font-size: 14px; }
.cards .r { text-align: right; color: var(--muted); font-size: 14px; }
.empty { color: var(--muted); padding: 28px 0; }

/* статусы и пометки */
.status { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 13px; background: var(--beige); color: var(--ink); white-space: nowrap; }
.st-draft { background: var(--warn-bg); color: var(--warn-ink); }
.st-confirmed, .st-sent { background: #E5E0F2; color: #463A75; }
.st-posted { background: var(--ok-bg); color: var(--ok-ink); }
.st-failed { background: var(--bad-bg); color: var(--bad-ink); }
.st-cancelled { background: transparent; color: var(--muted); border: 1px solid var(--line); }
tr.undone td { color: var(--muted); }
.flag { background: var(--warn-bg); color: var(--warn-ink); border-radius: 999px; padding: 1px 9px; font-size: 13px; }
.remind { background: var(--warn-bg); color: var(--warn-ink); border-radius: var(--radius); padding: 12px 14px; margin-bottom: 18px; }
.remind ul { margin: 6px 0 0; padding-left: 18px; }
.remind a { color: var(--warn-ink); }

.bar { display: flex; gap: 12px; align-items: center; justify-content: space-between; margin-bottom: 10px; flex-wrap: wrap; }
.bar.actions { justify-content: flex-start; margin-top: 18px; }
/* фильтры: сетка, подписи всегда сверху на одном уровне; на телефоне — точка и кнопка
   на всю ширину, две даты рядом */
.filters { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px 12px; align-items: end; margin: 6px 0 16px; max-width: 760px; }
.filters .field { min-width: 0; }
.filters .field input, .filters .field select { font-size: 16px; padding: 9px 10px; min-height: 46px; width: 100%; min-width: 0; }
.filters input[type="date"] { -webkit-appearance: none; appearance: none; display: block; text-align: left; }
.filters input[type="date"]::-webkit-date-and-time-value { text-align: left; }
.filters button { min-height: 46px; }
@media (max-width: 760px) {
  .filters { grid-template-columns: 1fr 1fr; }
  .filters .field.wide, .filters button { grid-column: 1 / -1; }
}
.typechips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.typechips a { text-decoration: none; padding: 5px 14px; min-height: 40px; display: inline-flex; align-items: center; border-radius: 999px; border: 1px solid var(--field); color: var(--ink); background: var(--paper); font-size: 14px; }
.typechips a[aria-current="true"] { border-color: var(--green); background: var(--green); color: var(--cream); }

/* черновик */
.split { display: grid; grid-template-columns: minmax(260px, 32%) 1fr; gap: 20px; align-items: start; }
.photo { position: sticky; top: 12px; }
.photo-box { overflow: hidden; border: 1.5px solid var(--line); border-radius: var(--radius); background: var(--paper); }
.photo img { display: block; width: 100%; }
.edit { width: 100%; border-collapse: collapse; background: var(--paper); }
.edit th, .edit td { padding: 6px 8px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.edit th { font-weight: 500; font-size: 13px; color: var(--muted); }
.edit input, .edit select { font: inherit; font-size: 14px; padding: 5px 7px; min-height: 36px; border: 1px solid var(--field); border-radius: 6px; width: 100%; background: #fff; }
.edit select[name^="section"] { width: 150px; } .edit select[name^="unit"] { width: 72px; }
.edit .q { width: 84px; } .edit .p { min-width: 220px; } .edit .c { min-width: 120px; }
.edit tr.flagged td { background: var(--warn-bg); }
.edit tr.flags td { background: var(--warn-bg); color: var(--warn-ink); font-size: 13px; padding-top: 0; }
.written { color: var(--muted); font-size: 12px; margin-top: 2px; }
.route { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin-bottom: 10px; }
.route select { font: inherit; padding: 5px 7px; border: 1px solid var(--line); border-radius: 6px; }
.route .arrow { font-size: 18px; color: var(--muted); }
.route .note, .route .written { flex-basis: 100%; margin: 0; }
.inline { display: inline-flex; gap: 8px; align-items: center; margin-bottom: 10px; }
.rows > button { margin-top: 12px; }

/* учётки */
.userform { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; align-items: end; background: var(--paper); border: 1.5px solid var(--line); border-radius: 16px; padding: 16px; margin: 12px 0 20px; }
.userform .checks { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 15px; color: var(--ink); }
.pw { font-family: ui-monospace, Menlo, monospace; font-size: 17px; }
.actions-cell { white-space: nowrap; } .actions-cell form { display: inline-block; margin-left: 4px; }

/* вход */
.login-wrap { min-height: 100vh; display: grid; place-items: center; padding: 20px; background: var(--cream); }
.login { width: 100%; max-width: 360px; background: var(--paper); border: 1px solid var(--line); padding: 28px 24px; border-radius: 20px; display: grid; gap: 14px; }
.login img { height: 34px; justify-self: start; }

/* телефон: вкладки внизу */
@media (max-width: 760px) {
  h1 { font-size: 24px; }
  .top-in { padding: 12px 16px; }
  .who { gap: 8px; min-width: 0; } .who .name { font-size: 13px; color: var(--muted); max-width: 34vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .tabs { position: fixed; z-index: 10; left: 0; right: 0; bottom: 0; height: calc(var(--tabbar) + env(safe-area-inset-bottom)); background: var(--paper);
          padding: 0 4px env(safe-area-inset-bottom); justify-content: space-around; box-shadow: 0 -1px 0 var(--line); }
  .tabs a { flex-direction: column; gap: 2px; font: 500 12px "Inter", sans-serif; color: var(--muted); padding: 8px 6px; border-bottom: 0; border-top: 3px solid transparent; }
  /* текущая вкладка — заметной плашкой (владелец 2026-10-16) */
  .tabs a[aria-current="page"] { border-top-color: var(--green); color: var(--green); font-weight: 700;
                                 background: rgba(40, 89, 54, .12); border-radius: 0 0 12px 12px; }
  .tabs a.desk { display: none; }
  main { padding: 18px 16px calc(var(--tabbar) + 40px); }
  .sticky-save { bottom: var(--tabbar); }
  .split { grid-template-columns: 1fr; } .photo { position: static; }
  .split > * { min-width: 0; }  /* крупное фото не распирает экран */
  .list .hide-m { display: none; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

/* табель смен: первый столбец закреплён, дни прокручиваются вбок */
.grid-wrap { overflow-x: auto; border: 1.5px solid var(--line); border-radius: var(--radius); background: var(--paper); }
.grid-wrap:focus-visible { outline: 3px solid var(--green); }
.tsheet { border-collapse: separate; border-spacing: 0; font-size: 14px; min-width: 100%; }
.tsheet th, .tsheet td { padding: 4px 3px; border-bottom: 1px solid var(--line); text-align: center; vertical-align: middle; }
.tsheet thead th { font-weight: 500; color: var(--muted); background: var(--warm); position: sticky; top: 0; }
.tsheet .who-col { position: sticky; left: 0; z-index: 1; background: var(--paper); text-align: left; min-width: 118px; max-width: 160px; padding: 6px 10px; font-weight: 500; border-right: 1px solid var(--line); }
.tsheet thead .who-col { background: var(--warm); z-index: 2; }
.tsheet .who-col .small { font-weight: 400; }
.tsheet td input { width: 50px; font: inherit; font-size: 15px; text-align: center; padding: 6px 2px; border: 1px solid var(--field); border-radius: 6px; background: #fff; display: block; margin: 1px auto; }
.tsheet td input.changed { background: var(--warn-bg); border-color: var(--ochre); font-weight: 600; }
.tsheet td input.removed { background: var(--bad-bg); border-color: var(--rose); text-decoration: line-through; }
.tsheet .tot { font-weight: 600; color: var(--green); padding: 6px 10px; white-space: nowrap; }
.tsheet td input.odd, .oddmark { box-shadow: 0 0 0 2px var(--ochre); }
.oddmark { border-radius: 4px; padding: 0 3px; }
@media (max-width: 760px) { .tabs a { flex: 1 1 auto; font-size: 12px; padding: 8px 2px; text-align: center; } }
.tsheet thead th:not(.who-col):not(.tot) { min-width: 58px; }
.cellinfo { margin: 0 0 8px; font-size: 14px; color: var(--ink); background: var(--beige); border-radius: 8px; padding: 8px 10px; }

/* Проработка и новое блюдо */
.grid3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px 12px; }
.grid3 .field input { width: 100%; min-width: 0; }
.tscroll { overflow-x: auto; border-radius: var(--radius); }
.list.ing td { padding: 6px 8px; }
.list.ing input, .list.edit input:not([type="checkbox"]), .list.edit select { width: 100%; min-width: 0; min-height: 40px; font: inherit; font-size: 16px; padding: 8px; border: 1px solid var(--field); border-radius: 6px; background: #fff; }
.list.ing td:last-child { width: 34%; }
.photo .photo-box + .photo-box { margin-top: 10px; }
@media (max-width: 480px) { .grid3 { grid-template-columns: 1fr; } }

/* Лимиты: шкала заполнения */
.limit { background: var(--paper); border: 1px solid var(--line); border-radius: 16px; padding: 16px 18px; margin: 0 0 14px; display: grid; gap: 10px; }
.limit-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.limit-head h2 { margin: 0; color: var(--green); }
.limit-rate { font: 500 14px var(--mono); color: var(--muted); }
.meter { height: 14px; background: var(--warm); border-radius: 999px; overflow: hidden; border: 1px solid var(--line); }
.meter span { display: block; height: 100%; background: var(--green); border-radius: 999px; }
.limit.near .meter span { background: var(--ochre); }
.limit.over .meter span { background: var(--rose); }
.limit-nums { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0; }
.limit-nums div { min-width: 0; }
.limit-nums dt { font-size: 13px; color: var(--muted); }
.limit-nums dd { margin: 2px 0 0; font: 600 18px var(--mono); color: var(--ink); white-space: nowrap; }
.limit.over .left { color: var(--bad-ink); }
.limit details summary, details.small summary { cursor: pointer; color: var(--green); padding: 10px 0; }
.money { font-variant-numeric: tabular-nums; }
@media (max-width: 480px) { .limit-nums dd { font-size: 15px; } }
@media (max-width: 760px) {
  .tabs a { min-width: 0; white-space: nowrap; }
  .tabs:has(a:not(.desk):nth-of-type(6)) a { flex: 1 1 auto; font-size: 11px; letter-spacing: -.02em; padding-left: 1px; padding-right: 1px; }
  .tabs:has(a:not(.desk):nth-of-type(8)) a { font-size: 10px; letter-spacing: -.03em; padding-left: 0; padding-right: 0; min-width: 40px; }  /* управляющий: 8 вкладок */
  /* 9 и больше видимых вкладок (управляющий со «Входящими», 2026-10-09) — панель листается вбок */
  .tabs:has(a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk)) { overflow-x: auto; justify-content: flex-start; scrollbar-width: none; }
  .tabs:has(a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk) ~ a:not(.desk)) a { flex: 0 0 auto; min-width: 50px; padding-left: 4px; padding-right: 4px; }
}

/* выбор ресторана в шапке (розовая плашка) */
.pointpick { position: relative; }
.pointpick summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; min-height: 36px; padding: 4px 10px 4px 14px; }
.pointpick summary::-webkit-details-marker { display: none; }
.pointpick summary svg { width: 16px; height: 16px; transition: transform .15s; }
.pointpick[open] summary svg { transform: rotate(180deg); }
.pp-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 200px; background: var(--paper); border: 1px solid var(--line);
           border-radius: 14px; box-shadow: 0 8px 24px rgba(43,43,43,.12); padding: 6px; display: grid; }
.pp-menu a { padding: 11px 12px; border-radius: 10px; color: var(--ink); text-decoration: none; font-weight: 500; }
.pp-menu a:hover { background: var(--warm); }
.pp-menu a[aria-current="true"] { background: var(--green); color: #fff; }
.check { display: flex; align-items: center; gap: 10px; font-size: 15px; color: var(--ink); cursor: pointer; min-height: 44px; }
.check input { width: 22px; height: 22px; accent-color: var(--green); flex: none; }
@media (max-width: 400px) { .seg span { font-size: 14px; padding: 11px 2px; } }
.nowrap { white-space: nowrap; }
.pointpick summary { min-height: 40px; }

/* Telegram на вкладке «Уведомления» */
.tgbox { background: var(--paper); border: 1px solid var(--line); border-radius: 16px; padding: 14px 16px; margin: 0 0 16px; display: grid; gap: 10px; }
.tgbox p { margin: 0; }
.tgbox .row { display: flex; gap: 8px; flex-wrap: wrap; }
.limit form.row { display: flex; gap: 8px; flex-wrap: wrap; }
.limit form.row .txt { flex: 1 1 200px; font-size: 16px; padding: 10px 12px; }

/* Входящие бухгалтера: счётчики этапов и очередь */
.tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin: 6px 0 14px; }
.tile { display: grid; gap: 2px; padding: 14px 16px; background: var(--paper); border: 1px solid var(--line); border-radius: 14px; text-decoration: none; color: var(--ink); }
.tile b { font: 700 28px var(--mono); color: var(--green); }
.tile span { font-size: 14px; color: var(--muted); }
.tile.zero b { color: var(--muted); }
.tile:not(.zero) { border-color: var(--green); }
.queue { margin: 18px 0 8px; }
.queue h2 { margin: 0 0 8px; }
.queue .bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.flag.bad { background: var(--bad-bg); color: var(--bad-ink); }
.typechips + .typechips { margin-top: -6px; }
.nav-next { margin-left: auto; display: inline-flex; align-items: center; gap: 12px; font-size: 15px; }
/* кнопки решения по документу всегда под рукой (не листать вниз длинный акт) */
.bar.actions { position: sticky; bottom: 0; z-index: 5; background: var(--cream); padding: 12px 0; margin-bottom: 0; border-top: 1px solid var(--line); }
@media (max-width: 760px) { .bar.actions { bottom: var(--tabbar); } }
/* ФОТ и остатки во вкладке «Лимиты» */
.fot .fot-row { display: grid; gap: 8px; padding: 12px 0; border-top: 1px solid var(--line); }
.fot .fot-row:first-of-type { border-top: 0; padding-top: 0; }
.fot-row.near .meter span { background: var(--ochre); }
.fot-row.over .meter span { background: var(--rose); }
.fot-row.over .left { color: var(--bad-ink); }
.stock-list { margin: 0; display: grid; gap: 0; }
.stock-list div { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.stock-list dt { color: var(--ink); }
.stock-list dd { margin: 0; font: 600 17px var(--mono); }
.stock-list .total { border-bottom: 0; }
.stock-list .total dt, .stock-list .total dd { font-weight: 700; color: var(--green); }

/* Опасные операции */
.tile.lv3:not(.zero) { border-color: var(--rose); } .tile.lv3:not(.zero) b { color: var(--bad-ink); }
.tile.lv2:not(.zero) { border-color: var(--ochre); } .tile.lv2:not(.zero) b { color: var(--warn-ink); }
.tile[aria-current="true"] { box-shadow: 0 0 0 2px var(--green) inset; }
.danger-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.dg { background: var(--paper); border: 1px solid var(--line); border-left: 5px solid var(--line); border-radius: 12px; padding: 12px 14px; display: grid; gap: 4px; }
.dg.lv3 { border-left-color: var(--rose); background: #FFF6F8; }
.dg.lv2 { border-left-color: var(--ochre); }
.dg-head { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.dg-head .money { font: 600 16px var(--mono); }
.dg-why { font-size: 15px; }
.muted { color: var(--muted); }
@media (max-width: 760px) { .name-rest { display: none; } .who .name { max-width: 28vw; } }
@media (max-width: 600px) { .top-in:has(.bizsw) { gap: 8px; } .top-in:has(.bizsw) .who .name { display: none; } .bizsw a, .bizsw button { padding: 6px 9px; font-size: 13px; } .bizsw .bl { display: none; } .bizsw .bs { display: inline; } .top-in:has(.bizsw) .logo img { height: 20px; } .top-in:has(.bizsw) .pointpick summary { max-width: 24vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .top-in:has(.bizsw) { padding-left: 10px; padding-right: 10px; gap: 6px; } .top-in:has(.bizsw) .who { gap: 4px; } .top-in:has(.bizsw) .who a { padding-left: 2px; padding-right: 2px; } .bizsw a, .bizsw button { padding: 6px 7px; } }

/* Сводка управляющего */
.sum { background: var(--paper); border: 1px solid var(--line); border-radius: 18px; padding: 18px; margin: 0 0 16px; display: grid; gap: 14px; }
.sum-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; }
.sum-head h2 { margin: 0; color: var(--green); }
.sum-rev { display: grid; justify-items: end; gap: 2px; }
.sum-rev .money { font: 700 24px var(--mono); }
.sum-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; }
.st { display: grid; gap: 2px; align-content: start; padding: 12px 14px; border-radius: 14px; border: 1px solid var(--line); border-left: 5px solid var(--line); text-decoration: none; color: var(--ink); background: var(--cream); min-height: 96px; }
.st span { font-size: 14px; color: var(--muted); }
.st b { font: 700 24px var(--mono); }
.st b i { font-style: normal; font-size: 16px; }
.st b.wo { font: 600 15px var(--sans); line-height: 1.5; }
.st small { font-size: 12px; color: var(--muted); }
.st.ok { border-left-color: var(--green); }
.st.warn { border-left-color: var(--ochre); }
.st.bad { border-left-color: var(--rose); background: #FFF6F8; }
.st:hover { border-color: var(--green); }
@media (max-width: 480px) { .sum-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .sum-rev { justify-items: start; } }
/* Опасное: компактно, детали по нажатию */
details.inline { display: inline; } details.inline summary { display: inline; cursor: pointer; color: var(--green); text-decoration: underline; }
details.inline[open] { display: block; margin-top: 6px; }
.lvbar { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 14px; }
.lvb { flex: 1 1 0; min-width: 0; text-align: center; padding: 10px 8px; border-radius: 12px; border: 1px solid var(--line); background: var(--paper); text-decoration: none; color: var(--ink); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lvb b { font: 700 20px var(--mono); display: block; }
.lvb.lv3:not(.zero) { border-color: var(--rose); } .lvb.lv3:not(.zero) b { color: var(--bad-ink); }
.lvb.lv2:not(.zero) { border-color: var(--ochre); } .lvb.lv2:not(.zero) b { color: var(--warn-ink); }
.lvb[aria-current="true"] { box-shadow: 0 0 0 2px var(--green) inset; }
.dg details > summary { list-style: none; cursor: pointer; display: grid; gap: 4px; }
.dg details > summary::-webkit-details-marker { display: none; }
.dg details[open] > summary .dg-why { display: none; }
.dg-more { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); font-size: 15px; }
.dg-more p { margin: 0 0 8px; }
.dg-more dl { display: grid; grid-template-columns: max-content 1fr; gap: 4px 12px; margin: 0; }
.dg-more dt { color: var(--muted); } .dg-more dd { margin: 0; min-width: 0; }
.st b { white-space: nowrap; } .st b.wo { white-space: normal; } .st { min-width: 0; overflow-wrap: anywhere; }
.st b.pair { font-size: 22px; }
.st b.pair i { margin: 0 6px 0 2px; }
@media (max-width: 480px) { .st b { font-size: 20px; } .st b.pair { font-size: 19px; } .st { padding: 10px 12px; } }

/* поле с ошибкой — подсветка, введённое не сбрасывается */
input.bad, select.bad { border-color: #C2416B !important; background: #FBE3EB !important; }
.ing select { min-width: 64px; min-height: 40px; }

/* смены: отправлено управляющему; расписание */
.tsheet input.sent { border-color: #3B6FB6 !important; background: #E3ECF8 !important; }
.sentmark { border: 2px solid #3B6FB6; background: #E3ECF8; padding: 0 4px; border-radius: 4px; }
.sentnote { background: #E3ECF8; border-left: 4px solid #3B6FB6; }
.tsheet.sched select { font-size: 13px; padding: 4px 2px; min-width: 74px; border-radius: 6px; }
.tsheet.sched select.changed { border-color: var(--green); background: #E6EFE8; }
.tsheet th.past, .tsheet td.past { opacity: .55; }
.tsheet th.wknd { color: #C2416B; }

.plan-line .ok, .plan-days .ok { color: var(--green); font-weight: 600; } .plan-line .bad, .plan-days .bad { color: #B23A5E; font-weight: 600; }
.plan-days td, .plan-days th { white-space: nowrap; padding: 8px 6px; font-variant-numeric: tabular-nums; }
.plan-days td:first-child, .plan-days th:first-child { padding-left: 10px; }
tr.wknd td:first-child { color: #C2416B; }

/* KPI шефа и су-шефа */
.kpi { background: var(--paper); border: 1.5px solid var(--line); border-radius: var(--radius); padding: 14px 16px; margin: 0 0 16px; }
.kpi-total { margin: 4px 0 10px; } .kpi-total .money { font-size: 26px; color: var(--green); }
.kpi-t tr.ok td:last-child { color: var(--green); font-weight: 600; }
.kpi-t tr.bad td:last-child { color: #B23A5E; text-decoration: line-through; }
.kpi-t tr.bad td:nth-child(3) b { color: #B23A5E; }
.kpi-t tr.unk td { color: var(--muted, #6B6668); }
/* телефон: строка KPI — карточкой (название на всю ширину, ниже «сейчас» и «премия»), без листания вбок (2026-10-13) */
@media (max-width: 600px) {
  .kpi-t thead { display: none; }
  .kpi-t, .kpi-t tbody { display: block; width: 100%; }
  .kpi-t tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; padding: 10px 0; border-bottom: 1px solid var(--line, #ECE7E8); }
  .kpi-t td { display: block; border: 0; padding: 0; min-width: 0; }
  .kpi-t td:first-child { grid-column: 1 / -1; overflow-wrap: normal; word-break: normal; hyphens: none; }
  .kpi-t td.num { text-align: left; white-space: normal; }
  .kpi-t td.num:last-child { text-align: right; }
}
.kpi-t th, .kpi-t td { padding: 9px 6px; } .kpi-t th:first-child, .kpi-t td:first-child { padding-left: 0; } .kpi-t .num { white-space: nowrap; }
@media (max-width: 480px) { .kpi { padding: 12px; } .kpi-t td:first-child { hyphens: auto; } }
[hidden] { display: none !important; }  /* скрытые поля не показывать, даже если у них свой display */
.ing td:first-child { width: 52%; } .ing td:first-child input { width: 100%; }
.ing td:nth-child(2) input { width: 100%; min-width: 64px; }

/* явки: статусы ячеек (2026-10-05) */
.cellwrap { position: relative; display: inline-block; }
.tsheet input.st-ok { border-color: #3E8E5A !important; background: #E3F2E7 !important; }
.tsheet input.st-far { border-color: #D9822B !important; background: #FCEBD7 !important; }
.tsheet input.st-nosched { border-color: #C2416B !important; background: #FBE3EB !important; }
.cellwrap .bang { position: absolute; top: -6px; right: -4px; background: #D9822B; color: #fff; border-radius: 50%; width: 15px; height: 15px; font-size: 11px; line-height: 15px; text-align: center; pointer-events: none; }
.tsheet .cell { font: inherit; min-width: 44px; padding: 6px 4px; border-radius: 6px; background: transparent; border: 1.5px dashed #B9B4B6; color: #8A8587; cursor: pointer; }
.tsheet .cell.pen { display: block; margin: 2px auto 0; border: 0; background: #FDF0E1; color: #8A4B0F; font-size: 11px; font-weight: 600; white-space: nowrap; min-height: 0; padding: 2px 4px; width: auto; }
.tsheet .cell.pen.chk { background: #FBE3EB; color: #A3214B; }
.legend .lg.penl { background: #FDF0E1; color: #8A4B0F; border-color: transparent; }
.pen-table { width: 100%; }
.dr-form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 10px; align-items: end; margin: 2px 0 14px; padding: 14px; background: var(--paper); border: 1.5px solid var(--green); border-radius: 14px; }
.dr-form .field { font-weight: 600; }
.dr-form .field { min-width: 0; } .dr-form input[type=date] { min-height: 52px; font-size: 18px; padding: 10px 10px; width: 100%; min-width: 0; box-sizing: border-box; }
.dr-form button { min-height: 52px; font-size: 18px; padding: 0 28px; }
@media (max-width: 600px) { .dr-form { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); padding: 12px; gap: 8px; } .dr-form input[type=date] { font-size: 16px; padding: 10px 6px; } .dr-form button { grid-column: 1 / -1; width: 100%; } }
.lim-t { width: 100%; border-collapse: collapse; } .lim-t td { padding: 8px 4px; border-top: 1px solid var(--line, #EEE8E9); vertical-align: top; } .lim-t td:first-child { overflow-wrap: anywhere; } /* длинные пояснения KPI не растягивают таблицу на телефоне (2026-10-14) */ .lim-t .num { text-align: right; white-space: nowrap; } .lim-t tr.bad td:first-child { color: #A3214B; } .lim-t summary { cursor: pointer; } .lim-t .num-in { width: 88px; text-align: right; padding: 8px; } .lim-t select { padding: 8px; } .pen-table td, .pen-table th { padding: 6px 8px; text-align: left; vertical-align: top; } .pen-table .num { text-align: right; white-space: nowrap; }
.tsheet .cell.adjb { border: 0; color: inherit; } .tsheet .cell.adjb.has { text-decoration: underline dotted; color: var(--green); font-weight: 600; }
.legend .lg { display: inline-block; padding: 0 6px; border-radius: 4px; border: 1.5px solid; font-size: 12px; }
.legend .lg.ok { border-color: #3E8E5A; background: #E3F2E7; } .legend .lg.far { border-color: #D9822B; background: #FCEBD7; }
.legend .lg.nosched { border-color: #C2416B; background: #FBE3EB; } .legend .lg.noatt { border-style: dashed; border-color: #B9B4B6; }
.tsheet td.adj { white-space: nowrap; } .adjd { display: inline-block; } .adjd summary { cursor: pointer; padding: 6px 10px; color: var(--green); }
.adjform { position: absolute; z-index: 5; background: var(--paper); border: 1.5px solid var(--line); border-radius: 10px; padding: 10px; display: flex; flex-direction: column; gap: 6px; min-width: 220px; right: 8px; }
.adjd summary { list-style: none; } .adjd summary::-webkit-details-marker { display: none; }

.weekpick { display: flex; align-items: flex-end; gap: 8px; flex-wrap: wrap; } .weekpick .field { flex: 1; min-width: 150px; margin: 0; }
.weekpick .btn { padding: 10px 14px; }
.tsheet th.locked, .tsheet td.locked { background: #EEEAEB; color: #8A8587; }

.addemp { display: flex; gap: 8px; margin: 12px 0; } .addemp input { flex: 1; } .tsheet tr.added th { color: var(--green); }
/* телефон: неделя (7 дней) целиком на экране */
@media (max-width: 600px) {
  .tsheet { font-size: 12px; }
  .tsheet th.who-col { min-width: 0; width: 78px; max-width: 78px; font-size: 11px; line-height: 1.2; white-space: normal; padding: 4px; }
  .tsheet th.who-col .small { font-size: 9px; }
  .tsheet .cell.pen { font-size: 9px; padding: 1px 2px; }
  .pen-table td, .pen-table th { padding: 6px 4px; font-size: 14px; }
  .tsheet thead th { font-size: 11px; padding: 4px 1px; }
  .tsheet td { padding: 3px 1px; }
  .tsheet td input, .tsheet .cell { width: 36px; min-width: 0; min-height: 36px; font-size: 12px; padding: 5px 1px; text-align: center; }
  .tsheet.sched .sc { position: relative; display: block; width: 38px; }
  .tsheet.sched th.who-col { width: 60px; max-width: 60px; }
  .tsheet.sched .sc .lbl { display: flex; align-items: center; justify-content: center; white-space: pre-line; text-align: center; min-height: 38px; font-size: 11px; line-height: 1.15; border: 1px solid var(--field); border-radius: 6px; background: #fff; padding: 2px 1px; }
  .tsheet.sched .sc.changed .lbl { border-color: var(--green); background: #E6EFE8; font-weight: 600; }
  .tsheet.sched .sc.dis .lbl { background: transparent; border-style: dashed; color: var(--muted); }
  .tsheet.sched .sc select { position: absolute; inset: 0; width: 100%; height: 100%; min-width: 0; opacity: 0; font-size: 16px; }
  .tsheet.sched .sc:has(select:focus-visible) .lbl { outline: 2px solid var(--green); outline-offset: 1px; }
  .cellwrap .bang { width: 12px; height: 12px; font-size: 9px; line-height: 12px; top: -5px; right: -3px; }
  .tsheet thead th:not(.who-col):not(.tot) { min-width: 0; width: 37px; }
  .tsheet .who-col { min-width: 0; width: 78px; max-width: 78px; padding: 4px; }
  .tsheet td input { margin: 1px auto; }
}

/* явки: ячейка-кнопка и панель «приход / уход» */
.tsheet button.att { font: inherit; width: 50px; padding: 6px 2px; border: 1px solid var(--field); border-radius: 6px; background: #fff; cursor: pointer; }
.tsheet button.att.st-ok { border-color: #3E8E5A; background: #E3F2E7; } .tsheet button.att.st-far { border-color: #D9822B; background: #FCEBD7; }
.tsheet button.att.st-nosched { border-color: #C2416B; background: #FBE3EB; } .tsheet button.att.sent { border-color: #3B6FB6; background: #E3ECF8; }
.tsheet button.att.changed { border: 2px solid var(--ochre); font-weight: 700; } .tsheet button.att.removed { text-decoration: line-through; border: 2px solid var(--rose); }
.tsheet button.att.odd { box-shadow: 0 0 0 2px var(--ochre); }
.att-editor { position: fixed; right: 16px; bottom: 16px; width: min(420px, calc(100vw - 32px)); max-height: 70vh; overflow-y: auto; z-index: 30; background: var(--paper); border: 2px solid var(--green); border-radius: 14px; padding: 12px 14px; margin: 10px 0; box-shadow: 0 6px 24px rgba(0,0,0,.12); }
.att-editor .ed-head { display: flex; justify-content: space-between; align-items: center; } .att-editor .row { display: flex; gap: 8px; flex-wrap: wrap; }
@media (max-width: 600px) { .tsheet button.att { width: 36px; min-height: 36px; font-size: 12px; padding: 5px 1px; } .att-editor { left: 8px; right: 8px; width: auto; bottom: calc(72px + env(safe-area-inset-bottom)); max-height: 58vh; } }
body:has(.att-editor:not([hidden])) main { padding-bottom: 60vh; } /* открытая панель явки не закрывает нижние строки */
summary.small { padding: 8px 0; cursor: pointer; color: var(--green); } /* «Блюда: N» — удобнее попадать пальцем */
details.inline summary { padding: 6px 0; }
.st b.wo .wo-i { display: block; font-style: normal; }
@media (min-width: 601px) { .tsheet.sched .sc .lbl { display: none; } }
@media (max-width: 420px) { .seg { grid-auto-columns: minmax(0, 1fr); gap: 4px; } .seg span { font-size: 13px; padding: 11px 0; letter-spacing: -.01em; } }
.filters > .field:only-of-type { grid-column: 1 / -1; max-width: 420px; } /* «Утилизация» не упирается в край */
/* расписание: ячейка-кнопка со временем смены и ползунки начала и конца (2026-10-05) */
.tsheet.sched .slot { white-space: pre-line; min-width: 64px; min-height: 40px; font: 500 13px/1.15 var(--sans, Inter, sans-serif); padding: 4px 2px; border: 1px solid var(--field); border-radius: 6px; background: #fff; color: var(--ink); cursor: pointer; }
.tsheet.sched .slot.changed { border-color: var(--green); background: #E6EFE8; font-weight: 600; }
.tsheet.sched .slot:disabled { background: transparent; border-style: dashed; color: var(--muted); cursor: default; }
.att-editor input[type="range"] { width: 100%; height: 36px; accent-color: var(--green); margin: 2px 0 6px; }
.att-editor .field b { float: right; font: 600 18px var(--mono); color: var(--green); }
@media (max-width: 600px) { .tsheet.sched .slot { width: 38px; min-width: 0; min-height: 38px; font-size: 11px; padding: 2px 1px; } }
/* сверки с поставщиками (закупщик, 2026-10-05) */
.rc { display: grid; gap: 14px; }
.rc-box { border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; background: var(--paper); display: grid; gap: 8px; min-width: 0; }
.rc-box legend { font-weight: 600; padding: 0 6px; }
.rc .chk { display: flex; gap: 10px; align-items: flex-start; min-height: 36px; cursor: pointer; }
.rc .chk input { width: 20px; height: 20px; margin-top: 2px; flex: none; accent-color: var(--green); }
.rc .chk .small { display: block; color: var(--muted); }
.rc-dates { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rc-dates input { width: 100%; min-height: 44px; font-size: 16px; }
.rc-list { list-style: none; margin: 0; padding: 0; }
.rc-list li { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 260px); gap: 6px 12px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--line); }
.rc-list .em { min-height: 40px; font-size: 15px; }
.rc-list .em.set { border-color: var(--green); background: var(--ok-bg); }
.rc-letter { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin: 10px 0; background: #fff; }
.rc-letter pre { white-space: pre-wrap; font: 15px/1.5 var(--sans, Inter, sans-serif); margin: 8px 0 0; }
@media (max-width: 600px) { .rc-list li { grid-template-columns: 1fr; } }
.rc-actions { position: sticky; bottom: 0; z-index: 3; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 10px 0 12px; background: linear-gradient(to bottom, rgba(255,251,252,0), var(--bg, #FFFBFC) 30%); }
.rc-actions button { min-height: 48px; }
@media (max-width: 760px) { .rc-actions { bottom: calc(64px + env(safe-area-inset-bottom)); } }
.rc-dates .field { min-width: 0; }
.rc-dates input[type="date"] { -webkit-appearance: none; appearance: none; display: block; min-width: 0; max-width: 100%; box-sizing: border-box; text-align: left; }
.adjd input, .adjd select { min-height: 40px; }  /* надбавки и удержания — удобнее пальцем */
label.inline input[type="date"] { min-height: 40px; font-size: 16px; padding: 6px 8px; }
/* владелец видит все вкладки — на компьютере меню переносится, а не уходит за край (найдено автопроверкой 2026-10-06) */
@media (min-width: 761px) { .tabs { flex-wrap: wrap; row-gap: 0; } .tabs a { padding: 10px 10px 11px; font-size: 15px; } }
/* график выручки по дням в «Сводке» */
.sum-chart { margin: 0; display: grid; gap: 6px; }
.sum-canvas { position: relative; height: 180px; }
@media (max-width: 600px) { .sum-canvas { height: 150px; } }
.chart-key { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; color: var(--ink); }
.chart-key { gap: 4px 14px; } .chart-key .ki { white-space: nowrap; display: inline-flex; align-items: center; gap: 6px; }
.chart-key .sw { display: inline-block; width: 12px; height: 12px; border-radius: 3px; }
.chart-key .sw.ok { background: #285936; } .chart-key .sw.bad { background: #C2577A; }
.chart-key .sw.line { height: 0; border-top: 2px dashed #2B2B2B; border-radius: 0; width: 16px; }
/* сверка накладных (2026-10-06) */
.inv-sum { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 16px; }
.inv-sum .tag { padding: 6px 10px; border-radius: 999px; border: 1px solid var(--line); background: var(--paper); font-size: 14px; }
.inv-sum .tag.bad { border-color: #C2577A; color: #8F2E4E; } .inv-sum .tag.warn { border-color: #C9A227; } .inv-sum .tag.ok { border-color: var(--green); color: var(--green); }
.inv-point { margin: 0 0 22px; }
.inv-card { border: 1px solid var(--line); border-left: 5px solid var(--line); border-radius: 12px; padding: 10px 12px; margin: 10px 0; background: var(--paper); display: grid; gap: 8px; }
.inv-card.diff { border-left-color: #C2577A; } .inv-card.noiiko { border-left-color: #C9A227; } .inv-card.noiiko.missing { border-left-color: #c0392b; background: #fff6f5; }
.inv-card p { margin: 0; } .inv-card .small, .inv-list .small { color: var(--muted); }
.inv-photos { display: flex; gap: 8px; overflow-x: auto; }
.inv-photos img { height: 140px; width: auto; border-radius: 8px; border: 1px solid var(--line); background: #fff; }
.inv-list ul { margin: 6px 0 0; padding-left: 18px; display: grid; gap: 6px; }
.inv-list summary { cursor: pointer; padding: 8px 0; font-weight: 600; }
.inline-form { display: inline; margin-left: 6px; } .inline-form button { min-height: 32px; padding: 4px 10px; }
/* «Лимиты»: строка разделов закреплена сверху — к нужному блоку одним нажатием (2026-10-06) */
.jump { position: sticky; top: 0; z-index: 5; display: flex; gap: 6px; overflow-x: auto; padding: 8px 0; margin: 0 0 10px;
  background: var(--bg, #FFFBFC); border-bottom: 1px solid var(--line); scrollbar-width: none; }
.jump::-webkit-scrollbar { display: none; }
.jump a { flex: none; padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--ink); text-decoration: none; font-size: 14px; min-height: 36px; display: inline-flex; align-items: center; }
.jump a.on { background: var(--green); border-color: var(--green); color: #fff; }
.kpi, .limit, #fot, #stock { scroll-margin-top: 64px; }
/* дашборд продаж (2026-10-06): две колонки плиток, крупно — сейчас, ниже мелко — прошлый период */
.dash-kind { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 4px 0 10px; }
.dash-kind a { text-align: center; padding: 10px 0; border: 1.5px solid var(--field); border-radius: 12px; color: var(--ink); text-decoration: none; font-weight: 600; background: var(--paper); }
.dash-kind a[aria-current] { background: var(--green); border-color: var(--green); color: #fff; }
.dash-date { display: grid; grid-template-columns: 48px 1fr 48px; align-items: center; margin: 4px 0; }
.dd-arrow { display: flex; align-items: center; justify-content: center; height: 48px; font-size: 40px; line-height: 1; color: var(--green); text-decoration: none; }
.dd-arrow.off { color: var(--line); }
.dd-mid { text-align: center; display: grid; gap: 2px; }
.dd-mid b { font: 700 22px var(--mono); color: var(--green); } .dd-mid span { font-size: 14px; color: var(--muted); }
.dash-upd { text-align: center; margin: 0 0 12px; }
.dash-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.dt { background: var(--paper); border: 1px solid var(--line); border-radius: 16px; padding: 12px 8px 14px; display: grid; justify-items: center; gap: 4px; text-align: center; min-width: 0; }
.dt-t { font-size: 14px; color: var(--ink); line-height: 1.2; min-height: 2.4em; display: flex; align-items: center; }
.dt-t::after { content: ""; }
.dt-now { font: 700 22px var(--mono); color: var(--green); white-space: nowrap; position: relative; padding-top: 8px; }
.dt-now::before { content: ""; position: absolute; top: 0; left: 50%; width: 56px; margin-left: -28px; height: 3px; border-radius: 2px; background: var(--green); opacity: .5; }
.dt-was { font: 500 15px var(--mono); color: var(--muted); white-space: nowrap; }
@media (max-width: 380px) { .dt-now { font-size: 20px; } .dt-was { font-size: 14px; } }
@media (min-width: 761px) { .dash-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
/* дашборд, вариант 2 (2026-10-06): секции по городам, «Итого» выделены, у каждого показателя свой цвет */
.dsec { margin: 18px 0 8px; font-size: 18px; color: var(--green); }
a.dt { color: inherit; text-decoration: none; }
a.dt:active { background: #EEF3EF; }
.dtot { margin: 10px 0 4px; padding: 12px 12px 14px; border-radius: 18px; background: #EEF3EF; border: 2px solid var(--green); }
.dtot.big { background: var(--green); border-color: var(--green); color: #fff; }
.dtot h3 { margin: 0 0 4px; font-size: 16px; text-align: center; }
.dtot-rev { display: grid; justify-items: center; margin-bottom: 10px; }
.dtot-rev b { font: 700 28px var(--mono); color: var(--green); } .dtot.big .dtot-rev b { color: #fff; }
.dtot-rev span { font: 500 15px var(--mono); color: var(--muted); } .dtot.big .dtot-rev span { color: #CFE0D3; }
.dtot-m { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.dtot-m > div { background: #fff; border-radius: 12px; padding: 8px 6px; display: grid; justify-items: center; gap: 1px; border-top: 4px solid var(--mc); }
.dtot-m span { font-size: 13px; color: #4A4648; } .dtot-m b { font: 700 19px var(--mono); color: var(--mc); } .dtot-m i { font: normal 500 13px var(--mono); color: var(--muted); }
.m-orders { --mc: #B05A0A; } .m-guests { --mc: #2F6DB5; } .m-avg { --mc: #8A4FB3; } .m-cost { --mc: #0F7F7A; }
@media (min-width: 761px) { .dtot-m { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Фото том яма на входе (решение владельца 2026-10-06): WebP 65 КБ, размеры заданы — страница не прыгает */
.login-wrap.has-hero { place-items: start center; padding: 0 16px 24px; align-content: start; margin: 0; max-width: none; }
.login-hero { width: calc(100% + 32px); max-width: none; margin: 0 -16px; height: 42vh; min-height: 240px; max-height: 420px; overflow: hidden; position: relative; }
.login-hero img { width: 100%; height: 100%; object-fit: cover; display: block; }
.login-hero::after { content: ""; position: absolute; inset: auto 0 0 0; height: 45%; background: linear-gradient(to bottom, rgba(255,251,252,0), var(--cream)); }
.has-hero .login { margin-top: -72px; position: relative; box-shadow: 0 10px 30px rgba(43,43,43,.08); }
@media (min-width: 900px) {
  .login-wrap.has-hero { grid-template-columns: 1fr 1fr; padding: 0; min-height: 100vh; align-items: center; }
  .login-hero { width: 100%; margin: 0; height: 100vh; max-height: none; }
  .login-hero::after { inset: 0 0 0 auto; width: 30%; height: 100%; background: linear-gradient(to right, rgba(255,251,252,0), var(--cream)); }
  .has-hero .login { margin: 0 auto; }
}

/* Компьютер: шапка с выбором ресторана закреплена вверху (решение владельца 2026-10-08); --hdr — её высота (base.html) */
@media (min-width: 761px) {
  header.top { position: sticky; top: 0; z-index: 30; }
  .jump { top: var(--hdr, 0px); }
  .photo { top: calc(var(--hdr, 0px) + 12px); }
  .kpi, .limit, #fot, #stock { scroll-margin-top: calc(var(--hdr, 0px) + 64px); }
}
.cards .status { align-self: start; justify-self: end; height: auto; line-height: 1.4; }  /* плашка статуса не раздувается в карточке */
.tabs a svg { flex-shrink: 0; }  /* иконка не сжимается, когда рядом счётчик */


/* «Бюджет» (2026-10-14): карточки итогов и таблица статей план/факт */
.bud-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 12px 0 20px; }
@media (min-width: 900px) { .bud-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.bud-card { border: 1px solid var(--line); border-left: 4px solid var(--line); border-radius: var(--radius); padding: 10px 12px; background: #fff; min-width: 0; }
.bud-card.good { border-left-color: #2e8b57; } .bud-card.bad { border-left-color: #c0392b; } .bud-card.warn { border-left-color: #d68910; }
main.bud { max-width: 980px; }
.bud-big { font-family: "Source Code Pro", monospace; font-size: 19px; font-weight: 700; margin: 2px 0; white-space: nowrap; letter-spacing: -0.5px; }
.bud-sec { margin-top: 18px; }
.bud-t { width: 100%; border-collapse: collapse; table-layout: fixed; }
.bud-t th { font-size: 12px; color: var(--muted); font-weight: 500; text-align: left; padding: 4px 6px; border-bottom: 1px solid var(--line); }
.bud-t th:nth-child(2), .bud-t th:nth-child(3) { width: 24%; } .bud-t th:nth-child(4) { width: 13%; }
.bud-t td { padding: 7px 6px; border-bottom: 1px solid var(--line); vertical-align: top; overflow-wrap: anywhere; font-size: 14px; }
.bud-t .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.bud-g.bad td:nth-child(3), .bud-g.bad td:nth-child(4) { color: #c0392b; }
.bud-g.warn td:nth-child(3), .bud-g.warn td:nth-child(4) { color: #b9770e; }
.bud-g.good td:nth-child(4) { color: #2e8b57; }
.bud-g summary { cursor: pointer; }
.bud-items { width: 100%; margin-top: 6px; font-size: 12px; color: var(--muted); border-collapse: collapse; }
.bud-items td { padding: 3px 0; border: 0; } .bud-items .num { text-align: right; padding-left: 8px; white-space: nowrap; }
.bud-items tr.bad td { color: #c0392b; }
.bud-up { margin-top: 28px; padding-top: 12px; border-top: 1px solid var(--line); }
@media (max-width: 600px) { .bud-t td, .bud-t th { padding: 6px 3px; font-size: 13px; } .bud-big { font-size: 15px; } }
.bud-secs { border-top: 1px solid var(--line); }
details.bud-sec { border-bottom: 1px solid var(--line); border-left: 4px solid var(--line); margin: 0; }
details.bud-sec.good { border-left-color: #2e8b57; } details.bud-sec.bad { border-left-color: #c0392b; } details.bud-sec.warn { border-left-color: #d68910; }
details.bud-sec > summary { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding: 12px 10px; cursor: pointer; min-height: 44px; }
.bud-sn { font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.bud-sv { white-space: nowrap; font-variant-numeric: tabular-nums; text-align: right; }
.bud-sv .small { color: var(--muted); margin-right: 6px; }
.bud-pc { display: inline-block; min-width: 3.2em; text-align: right; font-size: 13px; }
details.bud-sec.bad .bud-pc { color: #c0392b; } details.bud-sec.good .bud-pc { color: #2e8b57; } details.bud-sec.warn .bud-pc { color: #b9770e; }
details.bud-sec[open] > summary { background: #f6f3f4; }
details.bud-sec .bud-t { margin: 4px 0 10px; }
@media (max-width: 600px) { .bud-sv .small { display: block; margin: 0; } details.bud-sec > summary { padding: 10px 6px; } }
/* «Бюджет» по образцу «Chang — план/факт» (2026-10-14): строки категорий с цветной кромкой, план | факт */
.bud-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 14px; }
.bud-chips a { padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px; text-decoration: none; color: var(--ink); background: #fff; min-height: 36px; display: inline-flex; align-items: center; font-size: 14px; }
.bud-chips a[aria-current] { background: var(--green, #285936); border-color: var(--green, #285936); color: #fff; }
.bud-pace { margin-top: 4px; padding-top: 4px; border-top: 1px dashed var(--line); }
.brow-head { display: grid; grid-template-columns: 1fr 30% 30%; gap: 8px; padding: 0 10px 4px 14px; color: var(--muted); }
.brow-head .num, .brow .num { text-align: right; }
.brow-sec { margin: 22px 0 8px; font-size: 17px; border-bottom: 1px solid var(--line); padding-bottom: 6px; }
.brow { border: 1px solid var(--line); border-left: 4px solid var(--line); border-radius: 10px; background: #fff; margin: 6px 0; padding: 9px 10px; }
.brow.good { border-left-color: #2e8b57; } .brow.bad { border-left-color: #c0392b; }
.brow-main { display: grid; grid-template-columns: 1fr 30% 30%; gap: 8px; align-items: start; }
.brow-name { min-width: 0; overflow-wrap: anywhere; font-weight: 500; }
.brow-code { color: var(--muted); font-size: 12px; margin-right: 6px; font-family: "Source Code Pro", monospace; }
.brow-name details summary { cursor: pointer; display: list-item; }
.brow-plan, .brow-fact { white-space: nowrap; font-variant-numeric: tabular-nums; font-size: 14px; }
.brow-pc { font-size: 12px; font-weight: 600; }
.brow.bad .brow-fact b, .brow.bad .brow-pc { color: #c0392b; } .brow.good .brow-fact b, .brow.good .brow-pc { color: #2e8b57; }
.brow-note { margin-top: 6px; color: var(--muted); }
.brow-items { margin-top: 8px; display: grid; gap: 2px; font-size: 12px; font-weight: 400; }
.brow-it { display: grid; grid-template-columns: 1fr auto auto; gap: 10px; color: var(--muted); padding: 2px 0; border-top: 1px dotted var(--line); }
.brow-it .num { white-space: nowrap; min-width: 64px; } .brow-it.bad span:last-child { color: #c0392b; } .brow-it.good span:last-child { color: #2e8b57; }
.bud-below, .bud-help { margin-top: 18px; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: #fff; }
.bud-below > summary, .bud-help > summary { cursor: pointer; font-weight: 600; }
@media (max-width: 600px) {
  /* телефон: название на всю ширину, под ним план | факт */
  .brow-main { grid-template-columns: 1fr 1fr; grid-template-areas: "name name" "plan fact"; gap: 4px 10px; }
  .brow-name { grid-area: name; font-size: 14px; } .brow .brow-plan { grid-area: plan; text-align: left; color: var(--muted); } .brow-fact { grid-area: fact; }
  .brow-plan::before { content: "план "; font-size: 11px; } .brow-fact::before { content: "факт "; font-size: 11px; color: var(--muted); }
  .brow-head { display: none; }
  .brow-plan, .brow-fact { font-size: 13px; }
}

/* бюджет фудхоллов: главная строка раскрывается в категории (2026-10-14) */
details.drill > summary { list-style: none; cursor: pointer; }
details.drill > summary::-webkit-details-marker { display: none; }
details.drill > summary .brow { position: relative; }
details.drill > summary .brow-name::after { content: " ▸ раскрыть"; color: var(--muted); font-size: 12px; font-weight: 400; }
details.drill[open] > summary .brow-name::after { content: " ▾ свернуть"; }
.drill-in { margin: 0 0 8px 14px; padding-left: 8px; border-left: 2px dashed var(--line); }
/* накладная у бухгалтера: от кого / куда (2026-10-16) */
.inv-who { background: var(--paper); border: 1px solid var(--line); border-radius: 14px; padding: 10px 14px; margin: 0 0 12px; }
.inv-who p { margin: 4px 0; }
/* накладная у бухгалтера: фото сверху (не липнет), правка на всю ширину (2026-10-16) */
.inv-page .photo { position: static; max-width: 760px; }
.inv-page .photo-box img { max-height: 420px; width: 100%; object-fit: contain; }
.inv-page .edit input, .inv-page .edit select { min-width: 0; width: 100%; }
.inv-page .edit td:first-child { min-width: 260px; }
.inv-page .edit td:nth-child(2), .inv-page .edit td:nth-child(3) { width: 90px; }
.inv-page .edit td:nth-child(4) { width: 140px; }
/* «Сверка»: крупные кнопки-фильтры (2026-10-16) */
.inv-sum.big { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.inv-btn { display: flex; flex-direction: column; gap: 2px; padding: 14px 16px; min-height: 76px; border-radius: 14px; border: 2px solid var(--line);
           background: var(--paper); color: var(--ink, #2B2B2B); text-decoration: none; }
.inv-btn b { font: 700 28px/1 "Source Code Pro", monospace; }
.inv-btn span { font-size: 14px; }
.inv-btn.bad { border-color: #C2577A; } .inv-btn.bad b { color: #8F2E4E; }
.inv-btn.warn { border-color: #C9A227; } .inv-btn.ok { border-color: var(--green); } .inv-btn.ok b { color: var(--green); }
.inv-btn[aria-current] { box-shadow: 0 0 0 3px var(--green) inset; background: rgba(40, 89, 54, .08); }
@media (max-width: 760px) { .inv-sum.big { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* шапка с розовой плашкой закреплена и на телефоне (владелец 2026-10-16) */
@media (max-width: 760px) { header.top { position: sticky; top: 0; z-index: 30; } }

/* «Сверка»: быстрые периоды плашками (меньше «Показать») — 2026-10-16 */
.quick { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.quick a { padding: 7px 12px; border: 1.5px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--ink, #2B2B2B);
           text-decoration: none; font-size: 14px; font-weight: 600; }
.quick a[aria-current] { border-color: var(--green); background: rgba(40, 89, 54, .1); color: var(--green); }

/* поворот фото накладной в «Сверке» (2026-10-16) */
.inv-photos figure.rot { margin: 0; display: inline-flex; flex-direction: column; align-items: flex-start; gap: 4px; overflow: hidden; }
.inv-photos figure.rot img { transition: transform .2s; }
.rot-btn { font-size: 13px; padding: 4px 10px; min-height: 32px; }
