:root {
  --bg: #fafaf9;
  --surface: #fff;
  --text: #1c1917;
  --muted: #78716c;
  --border: #e7e5e4;
  --border-strong: #d6d3d1;
  --accent: #c2410c;
  --accent-hover: #9a3412;
  --accent-soft: #fff7ed;
  --accent-ring: #fed7aa;
  --warn-bg: #fffbeb;
  --warn-border: #fcd34d;
  --warn-text: #78350f;
  --danger: #b91c1c;
  --danger-bg: #fef2f2;
  --radius: 12px;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 16px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  -webkit-font-smoothing: antialiased;
}

h1 { font-size: 1.25rem; font-weight: 600; margin: 0.25rem 0; }
h2 { font-size: 1rem; font-weight: 600; margin: 0 0 0.75rem; }
p { margin: 0; }
a { color: inherit; text-decoration: none; }

.wrap { max-width: 48rem; margin: 0 auto; padding: 0 1rem; }
.wrap.wide { max-width: 84rem; }
.narrow { max-width: 46rem; margin-left: auto; margin-right: auto; }
main.wrap { padding-top: 1.25rem; padding-bottom: 2rem; }

.topbar {
  position: sticky; top: 0; z-index: 10;
  background: rgba(255, 255, 255, 0.95);
  border-bottom: 1px solid var(--border);
  backdrop-filter: blur(6px);
}
.topbar nav { display: flex; align-items: center; gap: 1rem; padding-top: 0.75rem; padding-bottom: 0.75rem; }
.brand { font-weight: 600; color: var(--accent); }
.topbar .btn { margin-left: auto; }
.nav-link { color: var(--muted); font-size: 0.875rem; }
.nav-right { margin-left: auto; display: flex; align-items: center; gap: 0.75rem; }
.topbar nav { flex-wrap: wrap; }
.topbar .wrap { max-width: 84rem; } /* шапка шире контента: в ней меню, задания и кнопки */
@media (max-width: 640px) { .nav-link { font-size: 0.8125rem; } .topbar nav { gap: 0.5rem 0.75rem; } }

.lang-switch label { display: flex; align-items: center; gap: 0.5rem; }
.lang-switch select { width: auto; }

/* выпадающие меню: заведения, пользователь, задания */
.menu { position: relative; }
.menu > summary { list-style: none; cursor: pointer; }
.menu > summary::-webkit-details-marker { display: none; }
.caret { font-size: 0.75rem; opacity: 0.7; }
.menu-panel {
  position: absolute; top: calc(100% + 0.5rem); left: 0; z-index: 20; min-width: 16rem; max-width: 90vw;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); padding: 0.75rem;
}
.menu-right .menu-panel, .jobs .menu-panel { left: auto; right: 0; }
.menu-panel > * + * { margin-top: 0.375rem; }
.menu-item {
  display: flex; justify-content: space-between; gap: 0.75rem; width: 100%; text-align: left;
  background: none; border: 0; border-radius: 6px; padding: 0.375rem 0.5rem; font: inherit; color: inherit; cursor: pointer;
}
.menu-item:hover, .menu-item.active { background: var(--accent-soft); }
.avatar {
  width: 2rem; height: 2rem; border-radius: 50%; background: var(--accent-soft); color: var(--accent-hover);
  display: inline-flex; align-items: center; justify-content: center; font-weight: 600; overflow: hidden; flex-shrink: 0;
}
.avatar img { width: 100%; height: 100%; object-fit: cover; }

.jobs { position: relative; }
.jobs-btn {
  border: 1px solid var(--border-strong); background: #fff; border-radius: 999px; padding: 0.25rem 0.75rem;
  font: inherit; font-size: 0.8125rem; cursor: pointer; color: var(--text);
}
.jobs-btn.busy { border-color: var(--accent); color: var(--accent); }
.jobs-btn.busy::before { content: ""; display: inline-block; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--accent); margin-right: 0.375rem; animation: pulse 1.2s infinite; }
@keyframes pulse { 50% { opacity: 0.3; } }
.jobs-panel { width: 22rem; }
.job + .job { border-top: 1px solid var(--border); padding-top: 0.5rem; margin-top: 0.5rem; }
.job > * + * { margin-top: 0.25rem; }
.progress { height: 0.375rem; background: #f5f5f4; border-radius: 999px; overflow: hidden; }
.progress-fill { height: 100%; background: var(--accent); transition: width 0.4s; }
.progress-fill.has-errors { background: linear-gradient(90deg, var(--accent), var(--danger)); }

/* продукты */
.products-table td { vertical-align: top; }
.products-table .chips { margin-top: 0.25rem; }
.products-table tr.editing td > * + * { margin-top: 0.375rem; }
.num-input { width: 5rem; text-align: right; }
.ingredient-hint { margin-top: 0.375rem; }
.ingredient-hint:empty { display: none; }

/* закупки */
.camera-btn { align-self: flex-start; }
.doc-thumb { width: 3rem; height: 4rem; object-fit: cover; object-position: top; border-radius: 4px; border: 1px solid var(--border); display: block; }
.purchases-table td { vertical-align: middle; }
.chip.ok { color: #15803d; border-color: #bbf7d0; }
.lines-table td { vertical-align: top; padding-right: 0.375rem; }
.lines-wrap { overflow-x: auto; }
.lines-table input.num-input { width: 4.75rem; }
.lines-table input.unit-input { width: 3.5rem; }
.lines-table td:first-child input { min-width: 11rem; }
@media (min-width: 900px) { .editor-split.purchase-split { grid-template-columns: minmax(0, 1fr) minmax(0, 3fr); } }
.lines-table .unit-input { width: 4rem; }
.lines-table .product-select { min-width: 12rem; max-width: 18rem; }
.lines-table .new-product:empty { display: none; }
.lines-table .new-product { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-top: 0.25rem; align-items: center; }
.lines-table tr.match-ai td { background: var(--warn-bg); }
.lines-table tr.match-new td { background: #f0fdf4; }
.lines-table tr.match-none td:nth-child(6) .product-select { border-color: var(--danger); }
.lines-table tr.match-skip td { opacity: 0.6; }
.sum-check { font-weight: 600; padding: 0.5rem 0; }
.sum-check.ok { color: #15803d; }
.sum-check.danger { color: var(--danger); }

/* расход ИИ */
.progress-lg { height: 0.75rem; }
.day-chart { display: flex; align-items: flex-end; gap: 3px; height: 8rem; margin: 0.5rem 0 0.25rem; }
.day-bar { flex: 1; height: 100%; display: flex; flex-direction: column-reverse; background: #f5f5f4; border-radius: 3px 3px 0 0; overflow: hidden; }
.day-fill { background: var(--accent); min-height: 0; }
.day-fill.local { background: #a8a29e; }
.usage-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; margin-top: 0.5rem; }
.usage-table th { text-align: left; font-weight: 500; color: var(--muted); padding: 0.375rem 0.5rem 0.375rem 0; }
.usage-table td { border-top: 1px solid var(--border); padding: 0.5rem 0.5rem 0.5rem 0; vertical-align: middle; }
.usage-table .num { text-align: right; white-space: nowrap; }
.usage-table .limit-input { width: 8rem; text-align: right; }
.usage-table .progress { margin-top: 0.25rem; }
@media (max-width: 640px) { .usage-table th:nth-child(2), .usage-table td:nth-child(2) { display: none; } }

/* персонал */
.member-list { list-style: none; padding: 0; margin: 0; }
.member { display: flex; align-items: center; gap: 0.75rem; padding: 0.625rem 0; flex-wrap: wrap; }
.member + .member { border-top: 1px solid var(--border); }
.member-info { flex: 1; min-width: 10rem; }
.member-edit { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.member-edit .position { width: 11rem; }
.invite-form { display: grid; gap: 0.5rem; }
@media (min-width: 720px) { .invite-form { grid-template-columns: 1fr 1fr; } .invite-form select, .invite-form button { grid-column: span 1; } }

.narrow-sm { max-width: 28rem; margin: 2rem auto 0; }
.btn-google { background: #fff; color: #1f1f1f; border-color: var(--border-strong); }
.btn-google:hover { background: #f5f5f4; }

/* избранное и секретные рецепты */
.card.card-row { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; }
.star { background: none; border: 0; font-size: 1.25rem; line-height: 1; color: var(--border-strong); cursor: pointer; padding: 0.25rem; }
.star.on { color: #f59e0b; }
.star:hover { color: #f59e0b; }
.big-star { font-size: 1.75rem; }
.secret-check { color: var(--text); white-space: normal; }
.nav-link:hover { color: var(--text); }
.source-strip { display: flex; gap: 0.5rem; overflow-x: auto; }
.strip-item { display: flex; flex-direction: column; gap: 0.25rem; flex-shrink: 0; max-width: 12rem; }
.strip-item span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.source-strip img { height: 10rem; border-radius: 6px; border: 1px solid var(--border); display: block; }

/* ---------- раскладка ---------- */
.stack > * + * { margin-top: 1.25rem; }
.stack-sm > * + * { margin-top: 0.75rem; }
.row { display: flex; align-items: center; gap: 0.5rem; }
.row-between { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 1rem; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; margin-top: 0.5rem; }
.grid-yield { display: grid; grid-template-columns: 1fr 6rem; gap: 0.75rem; }
.actions { display: flex; gap: 0.75rem; }
.grow { flex: 1; }
.full { width: 100%; }
.mt { margin-top: 0.75rem; }
.center { text-align: center; }
.center p { margin-bottom: 0.75rem; }

/* ---------- текст ---------- */
.muted { color: var(--muted); }
.small { font-size: 0.875rem; }
.tiny { font-size: 0.75rem; margin-top: 0.5rem; }
.strong { font-weight: 600; }
.big { font-size: 2rem; }
.nowrap { white-space: nowrap; }
.pre { white-space: pre-line; font-size: 0.875rem; line-height: 1.65; }
.link { color: var(--accent); text-decoration: underline; background: none; border: 0; padding: 0; font: inherit; font-size: 0.875rem; cursor: pointer; }
.danger { color: var(--danger) !important; }

/* ---------- карточки ---------- */
.card {
  display: block;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.card-accent { border-color: var(--accent-ring); background: #fffcf8; }
.card-link:hover { border-color: var(--accent-ring); }
.card-title { font-weight: 500; }
.card-list { list-style: none; padding: 0; margin: 0.75rem 0 0; }
.card-list li + li { margin-top: 0.5rem; }

/* ---------- формы ---------- */
.input {
  width: 100%;
  border: 1px solid var(--border-strong);
  border-radius: 8px;
  background: #fff;
  padding: 0.5rem 0.75rem;
  font: inherit;
  color: inherit;
}
.input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
.input.small { font-size: 0.875rem; }
textarea.input { resize: vertical; }
.label { display: block; margin-bottom: 0.25rem; font-size: 0.875rem; font-weight: 500; color: var(--muted); }
.check { display: flex; align-items: center; gap: 0.25rem; font-size: 0.875rem; color: var(--muted); white-space: nowrap; }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  border-radius: 8px; padding: 0.5rem 1rem;
  font: inherit; font-weight: 500; cursor: pointer;
  border: 1px solid transparent;
}
.btn:disabled { opacity: 0.5; cursor: default; }
.btn-sm { padding: 0.375rem 0.75rem; font-size: 0.875rem; }
.btn-primary { background: var(--accent); color: #fff; }
.btn-primary:hover:not(:disabled) { background: var(--accent-hover); }
.btn-secondary { background: #fff; color: var(--text); border-color: var(--border-strong); }
.btn-secondary:hover:not(:disabled) { background: #f5f5f4; }

.warnings, .warnings-box {
  background: var(--warn-bg);
  border: 1px solid var(--warn-border);
  border-radius: var(--radius);
  color: var(--warn-text);
  font-size: 0.875rem;
  padding: 0.75rem 0.75rem 0.75rem 2rem;
  margin: 0;
}
.warnings-box { padding-left: 0.75rem; }
.warnings-box ul { margin: 0.25rem 0 0; padding-left: 1.25rem; }
.notice { background: var(--accent-soft); color: var(--accent-hover); border-radius: 8px; padding: 0.75rem; font-size: 0.875rem; }
.duplicates { background: var(--accent-soft); border: 1px solid var(--accent-ring); border-radius: var(--radius); padding: 0.75rem; font-size: 0.875rem; }
.duplicates ul { margin: 0.25rem 0 0; padding-left: 1.25rem; }
.duplicates li + li { margin-top: 0.375rem; }
.duplicates .link { margin-left: 0.5rem; }
.error { background: var(--danger-bg); color: #991b1b; border-radius: 8px; padding: 0.75rem; font-size: 0.875rem; }

/* ---------- редактор ---------- */
.ingredient { border: 1px solid var(--border); border-radius: 8px; padding: 0.75rem; }
.ingredient > .row + .grid-3 + .row { margin-top: 0.5rem; }
.updown { display: flex; flex-direction: column; }
.updown button { background: none; border: 0; color: var(--muted); cursor: pointer; padding: 0 0.5rem; font-size: 0.75rem; }
.savebar {
  position: sticky; bottom: 0;
  display: flex; gap: 0.75rem;
  margin: 0 -1rem; padding: 0.75rem 1rem;
  background: rgba(250, 250, 249, 0.95);
  border-top: 1px solid var(--border);
}
details summary { cursor: pointer; }

/* исходные скриншоты рядом с формой: колонкой слева на широком экране, лентой сверху на телефоне */
.editor-split { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
.source-column { display: flex; gap: 0.5rem; overflow-x: auto; }
.source-column img { height: 14rem; border-radius: 8px; border: 1px solid var(--border); display: block; }
@media (min-width: 900px) {
  .editor-split { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); align-items: start; }
  .source-column {
    position: sticky; top: 4.5rem; flex-direction: column; overflow-x: hidden; overflow-y: auto;
    max-height: calc(100vh - 5.5rem);
  }
  .source-column img { height: auto; width: 100%; }
}

.lang-tabs { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-top: 0.5rem; }
.lang-tabs a, .lang-tabs button {
  border: 1px solid var(--border-strong); background: #fff; color: var(--text);
  border-radius: 999px; padding: 0.25rem 0.75rem; font: inherit; font-size: 0.875rem; cursor: pointer;
}
.lang-tabs .active { background: var(--accent); border-color: var(--accent); color: #fff; }

/* ---------- импорт ---------- */
.dropzone {
  display: flex; flex-direction: column; align-items: center; gap: 0.5rem;
  border: 2px dashed var(--border-strong); padding: 2rem 1rem; color: var(--muted); cursor: pointer;
}
.dropzone.dragover { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.dropzone .hint { font-size: 0.875rem; }
.thumbs { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.75rem; }
.thumbs:empty { display: none; }
@media (min-width: 640px) { .thumbs { grid-template-columns: repeat(4, 1fr); } }
.thumbs li { position: relative; }
.thumbs img { width: 100%; aspect-ratio: 9 / 16; object-fit: cover; object-position: top; border-radius: 8px; border: 1px solid var(--border); display: block; }
.thumb-num, .thumb-remove {
  position: absolute; top: 0.25rem;
  background: rgba(0, 0, 0, 0.6); color: #fff; border: 0; border-radius: 4px;
  font-size: 0.75rem; padding: 0 0.375rem;
}
.thumb-num { left: 0.25rem; }
.thumb-remove { right: 0.25rem; cursor: pointer; }
.thumb-move { display: flex; justify-content: space-between; margin-top: 0.25rem; }
.thumb-move button { background: none; border: 0; color: var(--muted); cursor: pointer; padding: 0 0.5rem; }

/* ---------- варианты названия ---------- */
.name-suggestions { margin-top: 0.5rem; }
.name-suggestions ul { list-style: none; padding: 0; margin: 0.25rem 0 0; }
.name-suggestions li + li { margin-top: 0.375rem; }
.chip-btn {
  border: 1px solid var(--accent-ring); background: var(--accent-soft); color: var(--accent-hover);
  border-radius: 999px; padding: 0.25rem 0.75rem; font: inherit; font-size: 0.875rem; cursor: pointer;
}
.chip-btn.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.badge { margin-left: 0.375rem; font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.03em; opacity: 0.8; }

/* ---------- импорт: страница = скриншот слева, текст справа ---------- */
.page-row { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
@media (min-width: 900px) { .page-row { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); align-items: start; } }
.page-image img { width: 100%; border-radius: 8px; border: 1px solid var(--border); display: block; }
@media (max-width: 899px) { .page-image img { max-height: 24rem; object-fit: contain; object-position: top; } }
.page-text > * + * { margin-top: 0.75rem; }
.page-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.75rem; }
.push { margin-left: auto; }
.chips { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem; }
.chip { background: #f5f5f4; border: 1px solid var(--border); border-radius: 999px; padding: 0 0.5rem; font-size: 0.8125rem; }
.icon-btn { background: none; border: 0; color: var(--muted); cursor: pointer; font-size: 1rem; padding: 0.25rem; }
.input-sm { width: auto; padding: 0.25rem 0.5rem; font-size: 0.875rem; }
.mono { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; font-size: 0.8125rem; line-height: 1.5; }
.loading { padding: 2rem 0; text-align: center; }
.assemble-bar {
  position: sticky; bottom: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem;
  margin: 0 -1rem; padding: 0.75rem 1rem; background: rgba(250, 250, 249, 0.95); border-top: 1px solid var(--border);
}
.wrap-row { flex-wrap: wrap; align-items: flex-start; }
.row-between.tight { margin-bottom: 0.25rem; }

/* ---------- архив скриншотов ---------- */
.toolbar { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.toolbar .input[type="search"] { flex: 1; min-width: 14rem; }
.sort-select { width: auto; }
.source-meta .small span[title] { display: inline-block; max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
.source-grid { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.75rem; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); }
.source-item { display: flex; flex-direction: column; gap: 0.5rem; }
.source-thumb img { width: 100%; height: 14rem; object-fit: cover; object-position: top; border-radius: 8px; border: 1px solid var(--border); display: block; }
.source-meta > * + * { margin-top: 0.375rem; }
.source-excerpt {
  font-size: 0.8125rem; color: var(--muted); white-space: pre-line;
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden;
}
.chip.danger { color: var(--danger); border-color: #fecaca; }
.batch-group > summary { list-style: none; cursor: pointer; }
.batch-group > summary::-webkit-details-marker { display: none; }
.batch-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.75rem; }
.batch-head::before { content: "▾"; color: var(--muted); }
.batch-group:not([open]) .batch-head::before { content: "▸"; }
.batch-title { font-weight: 600; }
.batch-group > * + * { margin-top: 0.75rem; }
.batch-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.batch-group.drop-target { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
.source-num { font-weight: 600; font-size: 0.8125rem; color: var(--accent); }
.sortable .source-item { cursor: grab; }
.source-item.dragging { opacity: 0.4; }
.dialog { max-width: 26rem; width: 92vw; }
.dialog::backdrop { background: rgba(0, 0, 0, 0.35); }

/* ---------- карточка блюда ---------- */
.recipe { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
.recipe th { text-align: left; font-weight: 500; color: var(--muted); padding: 0.25rem 0; }
.recipe td { border-top: 1px solid #f5f5f4; padding: 0.375rem 0; }
.recipe .num { text-align: right; white-space: nowrap; padding-left: 0.75rem; }
.scaled { list-style: none; padding: 0; margin: 0.75rem 0 0; font-size: 0.875rem; }
.scaled li { display: flex; justify-content: space-between; gap: 0.75rem; padding: 0.375rem 0; }
.scaled li + li { border-top: 1px solid var(--border); }

/* ---------- банкеты ---------- */
.banquet-split { display: grid; gap: 1rem; align-items: start; }
@media (min-width: 1000px) { .banquet-split { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); } }
.dish-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem 0.75rem; padding: 0.375rem 0; }
.dish-row + .dish-row { border-top: 1px solid var(--border); }
.dish-field { display: inline-flex; align-items: center; gap: 0.25rem; }
.dish-picker select { min-height: 8rem; }
.divider-row td { padding-top: 1rem; }
.plan-table { width: 100%; }
.plan-table .group-row td { font-weight: 600; color: var(--accent-hover); padding-top: 0.875rem; border-top: 0; }
.plan-table tr.bought td:not(:first-child) { color: var(--muted); text-decoration: line-through; }
.plan-table tr.bought input.num-input { text-decoration: line-through; }
.uses summary { cursor: pointer; list-style: none; }
.uses summary::-webkit-details-marker { display: none; }
.uses ul { margin: 0.25rem 0 0; padding-left: 1rem; }
.badge { display: inline-block; margin-left: 0.375rem; padding: 0 0.375rem; border-radius: 999px; font-size: 0.75rem;
  background: var(--accent-soft); color: var(--accent-hover); text-decoration: none; }
.badge.warn { background: #fef2f2; color: var(--danger); }
.link-select { margin-top: 0.25rem; max-width: 16rem; }
.print-only { display: none; }
@media (max-width: 640px) {
  .plan-table th:nth-child(2), .plan-table td:nth-child(2) { display: table-cell; }
  .banquets-table th:nth-child(2), .banquets-table td:nth-child(2) { display: table-cell; }
  .banquets-table th:nth-child(3), .banquets-table td:nth-child(3) { display: none; }
}
@media print {
  .topbar, .no-print, .link-select, #plan > p.muted { display: none !important; }
  .print-only { display: inline; }
  .banquet-split { display: block; }
  .card { border: 0; padding: 0; box-shadow: none; }
  .plan-table input.num-input { border: 0; padding: 0; background: none; }
  .uses ul { display: none; }
}
.plan-table .num-input, .dish-row .num-input { width: 4.5rem; }
.price-input { display: inline-flex; align-items: center; gap: 0.25rem; }
.cost-box { border: 1px solid var(--accent-ring); background: var(--accent-soft); border-radius: var(--radius); padding: 0.75rem; }
.cost-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 0.75rem; }
.cost-big { font-size: 1.25rem; font-weight: 600; }
.dish-cost { color: var(--accent-hover); }
.warn-text { color: var(--warn-text); }
.history-row > td { background: var(--accent-soft); }
.price-history { width: auto; min-width: 60%; }
.proposal { padding: 0.625rem 0; border-top: 1px solid var(--border); display: grid; gap: 0.375rem; }
.proposal.off > :not(.proposal-head) { opacity: 0.5; }
.proposal-head { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.proposal-head select { max-width: 18rem; margin-left: auto; }
.import-fields { display: flex; flex-wrap: wrap; gap: 0.375rem; align-items: center; }
.import-fields > .input:first-child { flex: 1 1 12rem; }
.receipt-chip { display: inline-flex; align-items: center; gap: 0.125rem; cursor: pointer; }
.manual-row { border-top: 1px solid var(--border); padding-top: 0.75rem; gap: 0.5rem; }
.doc-thumb-manual { display: flex; align-items: center; justify-content: center; font-size: 1.25rem; text-decoration: none; }
.expense-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem 0.5rem; }
.expense-name { flex: 1 1 12rem; }
.stock-actions { display: flex; flex-wrap: wrap; gap: 0.375rem; align-items: center; }
.stock-actions .input:not(.num-input) { flex: 1 1 8rem; }
.ok-text { color: #15803d; }
@media (max-width: 640px) { .stock-table th:nth-child(2), .stock-table td:nth-child(2) { display: none; } }
.point-select { max-width: 11rem; }
.group-sum { font-weight: 400; }
.import-fields .num-input, .stock-actions .num-input { width: 4.5rem; flex: 0 0 auto; }

/* ---------- неподвижные заголовки таблиц ---------- */
/* Заголовок прилипает под шапкой сайта; у следующей таблицы — свой, он вытесняет предыдущий.
   В списке закупки под заголовком прилипают и строки групп (категория, точка закупки). */
:root { --topbar-h: 3.5rem; --thead-h: 2.25rem; }
.usage-table > thead th {
  position: sticky; top: var(--topbar-h); z-index: 2;
  background: var(--surface); box-shadow: inset 0 -1px 0 var(--border);
}
.usage-table .usage-table > thead th, .price-history > thead th { position: static; box-shadow: none; }
.plan-table .group-row td { position: sticky; top: calc(var(--topbar-h) + var(--thead-h)); z-index: 1; background: var(--surface); }
/* Прокрутка вбок мешает прилипанию — на широком экране таблицы и так помещаются. */
@media (min-width: 900px) { .lines-wrap { overflow-x: visible; } }
dialog:not([open]) { display: none !important; }
@media (min-width: 1000px) { .banquet-split { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); } }
.plan-table .num-input { width: 4rem; }
.plan-table td, .plan-table th { padding-right: 0.375rem; }
/* Таблица всё же шире колонки — прокрутка вбок (заголовок тогда не прилипает). */
@media (min-width: 900px) { .lines-wrap.overflowing { overflow-x: auto; } }
.store-cell { display: grid; gap: 0.125rem; justify-items: end; }
.store-img { width: 2.5rem; height: 2.5rem; object-fit: contain; border-radius: 4px; background: #fff; }
.store-results { width: 100%; }
.trash { border-style: dashed; }
.trash > summary { cursor: pointer; }
.trash-table { margin-top: 0.5rem; }
.ai-notice { background: var(--warn-bg); color: var(--warn-text); border-top: 1px solid var(--warn-border); padding: 0.375rem 1rem; font-size: 0.875rem; text-align: center; }
.price-table .input { min-width: 6rem; }
.fin-row, .pay-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem 0.5rem; padding: 0.25rem 0; }
.fin-row + .fin-row, .pay-row + .pay-row { border-top: 1px solid var(--border); }
.fin-pick { max-width: 12rem; }
.fin-name { flex: 1 1 10rem; }
.fin-person { flex: 0 1 8rem; }
.fin-sum { min-width: 5rem; text-align: right; }
.pay-row.deleted > :not(button) { text-decoration: line-through; opacity: 0.6; }
.pay-summary { gap: 0.5rem; }
.price-table td:first-child { width: 45%; }
.price-table .num-input { width: 6rem; min-width: 0; }
.point-editor { border: 1px solid var(--border); border-radius: var(--radius); padding: 0.75rem; }
.point-map { height: 18rem; border-radius: 6px; border: 1px solid var(--border); background: var(--accent-soft); }
.chip.active { border-color: var(--accent); }
.tier-prices { border-top: 1px solid var(--border); padding-top: 0.5rem; margin-top: 0.5rem; }
.tier-field { flex-wrap: wrap; }
.ai-notice.info { background: var(--accent-soft); color: var(--muted); border-top-color: var(--border); }
.cost-problem td:first-child { color: var(--warn-text); }
.match-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem 0.75rem; padding: 0.5rem 0; }
.match-row + .match-row { border-top: 1px solid var(--border); }
.match-select { max-width: 16rem; }
.match-done { opacity: 0.3; transition: opacity 0.3s; }

/* План и факт банкета */
.fact-picker { position: relative; }
.fact-picker > summary { cursor: pointer; }
.fact-batches { padding: 0.5rem 0; }
.fact-batches label { display: flex; gap: 0.375rem; align-items: baseline; }
.fact-table td a.link.small { margin-left: 0.125rem; }

a.menu-item { text-decoration: none; }

.login-tagline { font-style: italic; margin: 0.25rem 0; }

/* ---------- навигация: разделы, вкладки раздела, нижняя панель на телефоне ---------- */
.sections { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; }
.nav-link.active { color: var(--text); font-weight: 600; }
.menu-sep { border: 0; border-top: 1px solid var(--border); margin: 0.5rem 0; }
.subtabs {
  display: flex; gap: 0.25rem; margin: -0.25rem 0 1rem; border-bottom: 1px solid var(--border);
  overflow-x: auto; scrollbar-width: none;
}
.subtabs::-webkit-scrollbar { display: none; }
.subtab {
  padding: 0.5rem 0.75rem; margin-bottom: -1px; border-bottom: 2px solid transparent;
  color: var(--muted); font-size: 0.875rem; white-space: nowrap; text-decoration: none;
}
.subtab:hover { color: var(--text); }
.subtab.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
.bottom-nav { display: none; }
@media (max-width: 700px) {
  .sections { display: none; }
  .bottom-nav {
    display: grid; grid-template-columns: repeat(5, 1fr);
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
    background: rgba(255, 255, 255, 0.97); border-top: 1px solid var(--border); backdrop-filter: blur(6px);
    padding-bottom: env(safe-area-inset-bottom);
  }
  .bottom-nav a {
    display: flex; flex-direction: column; align-items: center; gap: 0.125rem;
    padding: 0.4rem 0 0.45rem; color: var(--muted); font-size: 0.6875rem; text-decoration: none;
  }
  .bottom-nav a.active { color: var(--accent); font-weight: 600; }
  body:has(.bottom-nav) { padding-bottom: calc(3.5rem + env(safe-area-inset-bottom)); }
  body:has(.bottom-nav) .savebar, body:has(.bottom-nav) .assemble-bar { bottom: calc(3.5rem + env(safe-area-inset-bottom)); }
  /* Страница не шире экрана: длинные подписи переносятся, широкие таблицы прокручиваются сами. */
  .check { white-space: normal; align-items: flex-start; }
  main table.usage-table:not(.lines-wrap table) { display: block; max-width: 100%; overflow-x: auto; }
}
@media print { .bottom-nav, .subtabs { display: none !important; } }

/* Поле секрета (ключ API): текст с точками вместо поля пароля — его не трогают менеджеры паролей. */
.secret-field { position: relative; display: inline-flex; align-items: center; flex: 1 1 14rem; min-width: 0; }
.secret-field .input { width: 100%; padding-right: 2.25rem; }
.masked { -webkit-text-security: disc; text-security: disc; }
.secret-toggle { position: absolute; right: 0.25rem; background: none; border: 0; cursor: pointer; padding: 0.25rem; line-height: 1; opacity: 0.6; }
.secret-toggle[aria-pressed="true"], .secret-toggle:hover { opacity: 1; }

/* Строка чека: кол-во × цена ≠ сумма */
.input-warn { border-color: var(--warn-text) !important; box-shadow: 0 0 0 1px var(--warn-text); }
.line-check { white-space: nowrap; margin-top: 0.125rem; }
