/* Аналитик кормов: оформление по дизайн-системе АгроХакинг.
   Значения берутся из brand/tokens.css. Без скруглений, градиентов и теней.
   Углы режутся «засечкой» (clip-path). Рапс (--accent) один на экран. */

:root {
  color-scheme: light;
  --muted: var(--text-muted);
  --ink: var(--text);
  --amber-soft: var(--ah-soil-100);
  --amber: var(--ah-soil-700);
  --blue-soft: var(--surface-2);
  --blue: var(--text-muted);
  --green-soft: var(--ah-oz-100);
  --green: var(--ah-oz-700);
  --green-dark: var(--ah-pine-700);
  --red: var(--danger);
  --red-soft: #f6dedc;
  --type-table-head: 0.75rem;
  --type-caption: 0.8125rem;
  --type-table: 0.8125rem;
  --type-label: 0.875rem;
  --control-height: 44px;
  --space-field: var(--sp-3);
  --space-card: var(--sp-5);
  --space-section: var(--sp-6);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  overflow-x: hidden;
  color: var(--text);
  background: var(--bg);
  font-family: var(--font-text);
  font-size: var(--fs-md);
  line-height: 1.5;
}

/* clip, not hidden: hidden makes <main> a scroll container and breaks position: sticky */
main { overflow-x: clip; }
main *, .topbar * { min-width: 0; }
img, iframe { max-width: 100%; }
textarea { max-width: 100%; overflow-wrap: anywhere; }
.code, p, dd, td, th, .button, .warning-box, .info-box { overflow-wrap: anywhere; }

button, input, select, textarea { font: inherit; }
button,
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
select,
textarea { min-height: var(--control-height); }
a { color: inherit; }

/* Засечка: срез правого верхнего угла */
.hero, .card, .metric-card, .rating-card, .economy-result, .technical-ph,
.confirm-bar, .file-drop, .metadata-review, .loading, .empty, .export-card,
.override-panel, .license-card {
  clip-path: polygon(0 0, calc(100% - var(--cut-m)) 0, 100% var(--cut-m), 100% 100%, 0 100%);
}
.hero { clip-path: polygon(0 0, calc(100% - var(--cut-l)) 0, 100% var(--cut-l), 100% 100%, 0 100%); }
.metric-card, .component, .compensation-mini, .check-card, .warning-box, .info-box,
.scope-note, .button, .toast {
  clip-path: polygon(0 0, calc(100% - var(--cut-s)) 0, 100% var(--cut-s), 100% 100%, 0 100%);
}

/* Фокус рисуется внутри */
.button:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible, a:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: -5px;
}

/* Шапка */
.topbar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: grid;
  grid-template-columns: minmax(260px, 1fr) auto minmax(180px, 1fr);
  align-items: center;
  min-height: 72px;
  padding: 0 4vw;
  border-bottom: 1px solid var(--line);
  background: var(--brand);
  color: var(--on-brand);
}

.brand { display: flex; gap: var(--sp-3); align-items: center; text-decoration: none; }
.brand-mark { display: block; width: 36px; height: 28px; flex: none; }
.brand-mark img { display: block; width: 100%; height: 100%; }
.brand strong, .brand small { display: block; }
.brand strong {
  font-family: var(--font-display);
  font-size: var(--fs-md);
  font-weight: 800;
  letter-spacing: -0.01em;
}
.brand small { margin-top: 2px; color: var(--ah-pine-200); font-size: var(--type-caption); }

nav { display: flex; gap: 2px; }
nav a {
  padding: 10px 14px;
  border-bottom: 3px solid transparent;
  color: var(--ah-pine-200);
  font-size: var(--fs-xs);
  font-weight: 600;
  text-decoration: none;
}
nav a:hover { color: var(--on-brand); }
nav a.active { color: var(--on-brand); border-bottom-color: var(--ah-field-50); }

.topbar .button.secondary { color: var(--on-brand); border-color: var(--ah-pine-300); background: transparent; }
.topbar .button.secondary:hover { background: var(--ah-pine-600); color: var(--on-brand); }

.topbar-end, .account-panel { display: flex; align-items: center; gap: var(--sp-3); }
.topbar-end { justify-self: end; }
.account-panel > span { max-width: 180px; color: var(--on-brand); font-size: var(--type-caption); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.local-badge {
  justify-self: end;
  color: var(--ah-pine-200);
  font-family: var(--font-data);
  font-size: var(--type-caption);
}
.local-badge span {
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-right: 6px;
  background: var(--ah-oz-300);
}

main { width: min(1480px, 94vw); margin: 0 auto; padding: var(--sp-6) 0 var(--sp-8); }

.loading, .empty {
  padding: var(--sp-7);
  border: 1px dashed var(--ah-furrow-400);
  color: var(--text-muted);
  text-align: center;
  background: var(--surface);
}

/* Главный блок: выбранная владельцем обложка А. */
.hero {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(300px, 0.7fr);
  gap: var(--sp-5);
  min-height: clamp(280px, 22vw, 320px);
  padding: clamp(var(--sp-6), 3vw, var(--sp-7));
  overflow: hidden;
  color: var(--ah-field-50);
  background-color: var(--ah-pine-700);
  background-image: url("/static/brand/hero-cover.webp?v=ah-cover-1");
  background-position: 62% 60%;
  background-size: cover;
}
.hero::before {
  position: absolute;
  z-index: 0;
  inset: 0;
  background: linear-gradient(90deg, rgba(14, 42, 36, 0.6) 0%, rgba(14, 42, 36, 0.6) 58%, rgba(14, 42, 36, 0.35) 72%, rgba(14, 42, 36, 0) 100%);
  content: "";
  pointer-events: none;
}
.hero > * { position: relative; z-index: 1; min-width: 0; }
.hero-copy { max-width: 650px; align-self: start; }
.hero h1 { font-size: clamp(40px, 3.2vw, 48px); }
.hero .lede { color: var(--ah-field-50); }
.hero .muted { color: var(--ah-pine-200); }
.hero .eyebrow { color: var(--ah-field-50); }
.hero .button { border-color: var(--ah-field-50); background: var(--ah-field-50); color: var(--ah-pine-700); }
.hero .button:hover { background: var(--ah-field-100); }
.hero .button.secondary {
  background: transparent;
  color: var(--ah-field-50);
  border-color: var(--ah-pine-300);
}
.hero .button.secondary:hover { background: var(--ah-pine-600); }
.hero .metric-card { background: var(--ah-pine-600); border-color: var(--ah-pine-500); }
.hero .metric-card span { color: var(--ah-pine-200); }
.hero .metric-card strong { color: var(--ah-field-50); font-family: var(--font-data); }

.eyebrow {
  margin: 0 0 var(--sp-3);
  color: var(--positive);
  font-family: var(--font-data);
  font-size: var(--type-caption);
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--font-display); }
h1 {
  max-width: 750px;
  margin-bottom: var(--sp-4);
  font-size: var(--fs-3xl);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.03em;
}
h2 { margin-bottom: var(--sp-2); font-size: var(--fs-xl); font-weight: 800; letter-spacing: -0.02em; }
h3 { margin-bottom: 6px; font-size: var(--fs-md); font-weight: 600; }

.lede { max-width: 710px; color: var(--text-muted); font-size: var(--fs-md); }

.actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: var(--sp-5); }

/* Кнопки */
.button {
  display: inline-flex;
  min-height: var(--control-height);
  align-items: center;
  justify-content: center;
  padding: 10px var(--sp-4);
  border: 2px solid var(--brand);
  color: var(--on-brand);
  background: var(--brand);
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.15s;
}
.button:hover { background: var(--ah-pine-550); }
.button.primary { border-color: var(--accent); color: var(--on-accent); background: var(--accent); }
.button.primary:hover { border-color: var(--ah-rapeseed-600); color: var(--on-accent); background: var(--ah-rapeseed-600); }
.button.secondary, .button.ghost { color: var(--text); border-color: var(--brand); background: var(--surface); }
.button.secondary:hover, .button.ghost:hover { background: var(--surface-2); }
.button.tertiary { min-height: var(--control-height); padding-inline: var(--sp-2); border-width: 0; color: var(--brand); background: transparent; text-decoration: underline; text-underline-offset: 4px; }
.button.tertiary:hover { color: var(--ah-pine-550); background: var(--surface-2); }
.button.danger { color: var(--danger); border-color: var(--danger); background: transparent; }
.button.danger:hover { background: #f6dedc; }
.button:disabled, .button.disabled {
  cursor: not-allowed;
  border-color: var(--text-muted);
  color: var(--text-muted);
  background: var(--surface-2);
  opacity: 1;
}
.button.disabled { pointer-events: none; }

.hero-aside { display: grid; gap: 10px; align-content: center; }

.metric-card, .card {
  border: 1px solid var(--line);
  background: var(--surface);
}
.metric-card { padding: var(--sp-4) 18px; }
.metric-card span {
  display: block;
  color: var(--text-muted);
  font-size: var(--type-caption);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.metric-card strong { display: block; margin-top: 5px; overflow-wrap: anywhere; font-size: var(--fs-sm); }

.section { margin-top: var(--space-section); }
.section-head, .page-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--space-card);
  margin-bottom: var(--sp-4);
}
.page-head { align-items: center; }

.muted { color: var(--text-muted); }
.small { font-size: var(--type-caption); }

/* Список анализов */
.analysis-list { display: grid; gap: 8px; }
.analysis-row {
  display: grid;
  grid-template-columns: 120px minmax(200px, 1.3fr) minmax(180px, 1fr) 150px 110px;
  gap: var(--sp-4);
  align-items: center;
  padding: 14px 18px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--brand);
  background: var(--surface);
  text-decoration: none;
}
.analysis-row:hover { background: var(--surface-2); }
.analysis-row strong, .analysis-row span { min-width: 0; overflow-wrap: anywhere; white-space: normal; }
.analysis-row .open { color: var(--positive); font-weight: 600; text-align: right; }

.status {
  display: inline-flex;
  width: fit-content;
  padding: 4px 9px;
  font-family: var(--font-data);
  font-size: var(--type-caption);
  font-weight: 600;
  letter-spacing: 0.03em;
}
.status.provisional { color: var(--ah-soil-700); background: var(--ah-soil-100); }
.status.limited { color: var(--text-muted); background: var(--surface-2); border: 1px solid var(--line); }
.status.complete { color: var(--ah-oz-700); background: var(--ah-oz-100); }

/* Формы */
.form-card { max-width: 930px; margin: 0 auto; padding: var(--space-card); }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-card); }
.field { display: grid; gap: var(--sp-2); align-content: start; }
.field.full { grid-column: 1 / -1; }
.field label { color: var(--text); font-size: var(--type-label); font-weight: 600; }

.field input, .field select, .field textarea {
  width: 100%;
  min-height: var(--control-height);
  padding: 10px 12px;
  border: 1px solid var(--ah-furrow-400);
  border-radius: 0;
  background: var(--surface);
  color: var(--text);
}
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--brand); }
.field input[readonly] { color: var(--text-muted); background: var(--surface-2); }

[data-screen="new"] .form-card { width: 100%; max-width: none; margin-inline: 0; }
[data-screen="new"] #source_file {
  min-height: 56px;
  padding: var(--sp-2);
  border: 2px solid var(--ah-furrow-400);
  background: var(--surface-2);
  cursor: pointer;
}
[data-screen="new"] #source_file::file-selector-button {
  min-height: var(--control-height);
  margin-right: var(--sp-3);
  padding-inline: var(--sp-4);
  border: 0;
  color: var(--on-brand);
  background: var(--brand);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}
[data-screen="new"] .confirmation-field { align-content: center; min-height: var(--control-height); }
[data-screen="new"] .confirmation-field .check-line { width: fit-content; font-size: var(--type-label); }
[data-screen="new"] .actions { align-items: stretch; }

.metadata-review {
  padding: var(--sp-4);
  margin-bottom: var(--sp-4);
  border: 1px solid var(--line);
  background: var(--surface-2);
}
.metadata-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-card); margin: var(--space-field) 0; }

.field-error input { border-color: var(--danger); border-width: 2px; }
.field-error-message { display: none; color: var(--danger); font-size: var(--type-caption); font-weight: 600; }
.field-error .field-error-message { display: block; }

.file-drop {
  display: grid;
  min-height: 130px;
  place-items: center;
  padding: 20px;
  border: 1.5px dashed var(--ah-pine-300);
  background: var(--surface);
  text-align: center;
}
.file-drop input { max-width: 100%; }

.scope-note {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 12px 14px;
  color: var(--text);
  background: var(--ah-oz-100);
  font-size: var(--type-caption);
}

/* Проверка: PDF слева, значения справа */
.review-layout {
  display: grid;
  grid-template-columns: minmax(420px, 0.72fr) minmax(0, 1.28fr);
  gap: 18px;
  align-items: start;
}
.pdf-panel { overflow: hidden; }
/* clip keeps sticky descendants (the confirm bar) attached to the viewport */
.review-panel { overflow: clip; }
.pdf-panel { position: sticky; top: 84px; display: flex; height: calc(100vh - 104px); min-height: 560px; flex-direction: column; }

.panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px var(--sp-4);
  border-bottom: 1px solid var(--line);
}
.panel-head h2 { margin: 0; font-size: var(--fs-md); }

.pdf-panel iframe {
  display: block;
  width: 100%;
  min-height: 0;
  flex: 1 1 auto;
  border: 0;
  background: var(--surface-2);
}
.pdf-frame-error { display: grid; min-height: 240px; flex: 1 1 auto; place-items: center; padding: var(--space-card); color: var(--text); background: var(--surface-2); text-align: center; }
.review-content { padding: 18px; }

.warning-box, .info-box {
  margin-bottom: var(--sp-4);
  padding: 12px 14px;
  border-left: 4px solid var(--ah-soil-400);
  color: var(--ah-soil-700);
  background: var(--ah-soil-100);
  font-size: var(--type-caption);
}
.info-box { border-left-color: var(--ah-pine-300); color: var(--text); background: var(--surface-2); }
.review-warnings { margin-top: var(--space-field); }
.review-warnings ul { margin: var(--sp-2) 0 0; padding-left: var(--space-card); }
.review-warnings li + li { margin-top: var(--sp-2); }

/* Таблицы: данные моноширинным */
.table-wrap { max-width: 100%; overflow: auto; border: 1px solid var(--line); }
.table-wrap > table { min-width: 720px; }
.sensitivity-table { min-width: 1220px !important; }

table {
  width: 100%;
  border-collapse: collapse;
  background: var(--surface);
  font-size: var(--type-table);
}
th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 10px 8px;
  color: var(--on-brand);
  background: var(--brand);
  font-family: var(--font-data);
  font-size: var(--type-table-head);
  font-weight: 600;
  letter-spacing: 0.04em;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
  word-break: normal;
  overflow-wrap: normal;
}
td { padding: 9px 8px; border-top: 1px solid var(--line); vertical-align: top; }
tbody tr:hover td { background: var(--surface-2); }

.history-table td:last-child, .history-table td:last-child a { min-width: 76px; white-space: nowrap; }
.sort-link {
  padding: 2px 4px;
  border: 0;
  color: inherit;
  background: transparent;
  font: inherit;
  font-size: var(--type-caption);
  font-weight: 600;
  cursor: pointer;
}

td input {
  width: 100%;
  min-height: var(--control-height);
  padding: 6px 7px;
  border: 1px solid var(--ah-furrow-400);
  border-radius: 0;
  font-family: var(--font-data);
}
.review-panel .table-wrap > table { min-width: 1040px; table-layout: fixed; }
.review-panel .table-wrap th:nth-child(1) { width: 22%; }
.review-panel .table-wrap th:nth-child(2) { width: 24%; }
.review-panel .table-wrap th:nth-child(3) { width: 19%; }
.review-panel .table-wrap th:nth-child(4) { width: 25%; }
.review-panel .table-wrap th:nth-child(5) { width: 10%; }
.table-input-label { display: grid; gap: var(--sp-1); margin-bottom: var(--sp-2); color: var(--text-muted); font-size: var(--type-label); font-weight: 500; }
.normalized-display { display: block; color: var(--text); font-family: var(--font-data); font-size: var(--fs-md); font-weight: 600; }
.edit-normalized { min-height: var(--control-height); margin-top: var(--sp-2); padding: var(--sp-2); border: 2px solid var(--brand); color: var(--text); background: var(--surface); font-weight: 600; cursor: pointer; }
.technical-code-label { margin-top: var(--sp-2); }
tr.edited, tr.edited td { background: var(--ah-oz-100); }

.source-cell { max-width: 190px; color: var(--text-muted); font-size: var(--type-caption); }

.warning-tags { display: flex; min-width: 160px; flex-wrap: wrap; gap: 4px; }
.warning-tags span {
  padding: 3px 5px;
  color: var(--ah-soil-700);
  background: var(--ah-soil-100);
  font-size: var(--type-caption);
  font-weight: 600;
}

/* Рейтинги */
.ratings { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: var(--sp-4); }
.rating-card { padding: var(--sp-4); border: 1px solid var(--line); background: var(--surface); }
.rating-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.rating-score {
  margin: 18px 0 14px;
  font-family: var(--font-data);
  font-size: 24px;
  font-weight: 600;
}
.rating-score.missing { color: var(--text-muted); font-size: var(--fs-md); }

.primary-badge {
  display: inline-block;
  margin: 6px 0 4px;
  padding: 2px 10px;
  background: var(--ah-oz-100);
  color: var(--ah-oz-700);
  font-size: var(--type-caption);
  font-weight: 600;
}

/* Блоки данных о поле и кислотах */
.technical-ph {
  margin-top: var(--space-field);
  padding: var(--space-card);
  border: 1px solid var(--line);
  color: var(--text);
  background: var(--surface-2);
}
.technical-ph dl { display: grid; grid-template-columns: minmax(180px, 1fr) auto; gap: 6px 18px; margin: 10px 0 0; }
.technical-ph dt { color: var(--text-muted); }
.technical-ph dd { margin: 0; font-family: var(--font-data); font-weight: 600; text-align: right; }
.technical-acids { color: var(--text); background: var(--surface-2); }
.technical-acids dt { color: var(--text-muted); }
.acid-total { margin: 8px 0 4px; color: var(--text); font-family: var(--font-data); font-size: var(--fs-lg); font-weight: 600; }
.acid-total span { font-size: var(--fs-sm); }
.rank-note { margin: var(--space-field) 0 0; padding: var(--space-field); border-left: 4px solid var(--brand); color: var(--text-muted); background: var(--surface-2); font-size: var(--type-caption); }
.analysis-details { margin-top: var(--space-card); padding-top: var(--space-field); border-top: 1px solid var(--line); }
.analysis-details summary { color: var(--brand); font-weight: 600; cursor: pointer; }
.analysis-details .kv { margin-top: var(--space-field); }

.rating-card dl { display: grid; grid-template-columns: auto 1fr; gap: 5px 8px; margin: 0; font-size: var(--type-caption); }
.rating-card dt { color: var(--text-muted); }
.rating-card dd { margin: 0; overflow-wrap: anywhere; text-align: right; font-family: var(--font-data); }

.components { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.component { padding: 13px; background: var(--surface-2); }
.component strong { display: block; margin-bottom: 6px; font-size: var(--type-caption); }
.component dl { display: grid; grid-template-columns: 1fr auto; gap: 4px 8px; margin: 0; font-size: var(--type-caption); }
.component dt { color: var(--text-muted); }
.component dd { margin: 0; font-family: var(--font-data); font-weight: 600; }

/* Панель подтверждения: единственный жёлтый элемент на экране проверки */
.confirm-bar {
  position: sticky;
  bottom: 14px;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  margin-top: 18px;
  padding: 14px var(--sp-4);
  border: 1px solid var(--brand);
  background: var(--surface);
}

.detail-grid { display: grid; grid-template-columns: 1fr 320px; gap: 18px; }
.detail-main, .detail-side { display: grid; gap: 14px; align-content: start; }
.detail-card { padding: var(--space-card); }
.detail-main { display: grid; gap: var(--space-card); }
.detail-main > .detail-card { margin: 0; }
.detail-card h2 + form,
.detail-card h2 + .form-grid,
.detail-card h2 + .table-wrap { margin-top: var(--space-card); }
.detail-card form h3 { margin: var(--space-section) 0 var(--space-field); }

.kv { display: grid; grid-template-columns: 170px 1fr; gap: 8px 18px; margin: 0; }
.kv dt { color: var(--text-muted); }
.kv dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }

.export-card { padding: 20px; background: var(--surface-2); }
.export-card .button { width: 100%; margin-top: var(--sp-2); }

.interpretation-item, .compensation-output {
  display: grid;
  gap: 0.35rem;
  padding: 0.85rem 0;
  border-bottom: 1px solid var(--line);
}
.interpretation-item:last-child, .compensation-output:last-child { border-bottom: 0; }
.compensation-output strong { color: var(--text); font-family: var(--font-data); font-size: 1.2rem; }
.compensation-dashboard .form-grid { margin-top: 1rem; }

.feed-rating-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4); }
.feed-rating-card {
  display: flex;
  min-height: 240px;
  flex-direction: column;
  justify-content: space-between;
  padding: var(--sp-5);
}
.feed-rating-card dl { display: grid; grid-template-columns: 1fr auto; gap: 8px 18px; }
.feed-rating-card dd { margin: 0; font-family: var(--font-data); font-size: var(--fs-lg); font-weight: 600; }

.rating-filters { display: grid; grid-template-columns: repeat(5, minmax(150px, 1fr)); gap: var(--space-card); padding: var(--space-card); }
.rating-export-head { align-items: flex-end; margin-top: 18px; }
.rating-table tr.place-1 td { background: var(--ah-oz-100); }
.rating-table tr.place-2 td { background: var(--surface-2); }
.rating-table tr.place-3 td { background: var(--field-100, var(--surface-2)); }

.code { font-family: var(--font-data); font-size: var(--type-caption); overflow-wrap: anywhere; }

#toast {
  position: fixed;
  right: var(--sp-5);
  top: 92px;
  bottom: auto;
  z-index: 50;
  max-width: min(430px, 88vw);
  padding: 12px var(--sp-4);
  color: var(--ah-field-50);
  background: var(--ah-pine-700);
  border-left: 4px solid var(--ah-oz-300);
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition: 0.2s ease;
}
#toast.show { opacity: 1; transform: translateY(0); }
#toast.error { background: var(--danger); border-left-color: var(--ah-field-50); color: #fff; }

@media (max-width: 1100px) {
  .topbar { grid-template-columns: minmax(220px, 1fr) auto; padding: 10px 3vw; }
  .topbar nav { grid-column: 1 / -1; justify-self: center; }
  .local-badge { grid-column: 2; grid-row: 1; }
  .review-layout, .detail-grid { grid-template-columns: 1fr; }
  .pdf-panel { position: static; }
  .pdf-panel iframe { height: 620px; }
  .analysis-row { grid-template-columns: 100px 1fr 1fr 120px; }
  .analysis-row .open { display: none; }
  .rating-filters { grid-template-columns: repeat(2, minmax(160px, 1fr)); }
}

@media (max-width: 640px) {
  .metadata-grid { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .topbar { grid-template-columns: 1fr auto; padding: 10px 4vw; }
  .topbar nav {
    grid-column: 1 / -1;
    width: 100%;
    max-width: 100%;
    justify-self: stretch;
    justify-content: flex-start;
    margin-top: 8px;
    overflow-x: auto;
    white-space: nowrap;
  }
  .topbar nav a { flex: 0 0 auto; }
  .local-badge { display: none; }
  main { padding-top: var(--sp-5); }
  .hero {
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr auto;
    min-height: 660px;
    padding: var(--sp-5);
    background-position: 63% 50%;
    background-size: auto 100%;
  }
  .hero::before { background: linear-gradient(180deg, rgba(14, 42, 36, 0.6) 0%, rgba(14, 42, 36, 0.42) 46%, rgba(14, 42, 36, 0.12) 72%, rgba(14, 42, 36, 0.34) 100%); }
  .hero h1 { font-size: 30px; }
  .hero .eyebrow { font-size: 11px; }
  .hero .lede { font-size: var(--fs-sm); }
  .hero-aside { grid-row: 3; align-self: end; }
  .auth-cover { height: 104px; }
  .form-grid, .ratings, .components, .feed-rating-grid, .rating-filters { grid-template-columns: 1fr; }
  .analysis-row { grid-template-columns: 1fr; gap: 5px; }
  .confirm-bar { align-items: stretch; flex-direction: column; }
  .kv { grid-template-columns: 1fr; gap: 3px; }
}

/* Экономические сценарии */
.economy-summary, .economy-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-card);
  margin-bottom: var(--space-card);
  padding: var(--space-card);
}
.economy-summary > div:first-child { display: grid; gap: 5px; min-width: 240px; }
.economy-summary > div:first-child strong { font-size: 1.1rem; }
.economy-summary > div:first-child span { color: var(--text-muted); font-size: .84rem; }
.economy-summary .ratings { grid-template-columns: repeat(3, minmax(125px, 1fr)); }
.economy-summary .rating-card { padding: 12px; }
.economy-summary .rating-score { font-size: 1.2rem; }
.economy-toolbar .field { min-width: min(420px, 100%); }
.economy-form, .economy-results { margin-top: var(--space-card); padding: var(--space-card); }
.economy-form h3, .economy-results h3 { margin: var(--space-section) 0 var(--space-field); }
.economy-result-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: var(--sp-4) 0 22px; }
.economy-result { display: grid; gap: var(--sp-2); padding: 18px; border: 1px solid var(--line); background: var(--surface-2); }
.economy-result span { color: var(--text-muted); font-size: .85rem; }
.economy-result strong { color: var(--text); font-family: var(--font-data); font-size: 1.25rem; line-height: 1.2; }
.economy-result small { color: var(--text-muted); line-height: 1.5; }
.economy-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.economy-detail-grid > div { padding: var(--sp-4); background: var(--surface-2); }
.economy-detail-grid h3 { margin-top: 0; }
.costs-grid { grid-template-columns: repeat(5, minmax(150px, 1fr)); }
.check-card {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 12px;
  border: 1px solid var(--line);
  color: var(--text);
  background: var(--surface-2);
}
.check-card input, .check-line input { width: auto; margin-top: 2px; }
.check-line { display: flex; gap: 7px; align-items: center; color: var(--text); font-size: var(--type-label); }
.check-line + .small { display: block; margin-top: 4px; }
.override-panel { margin: 20px 0; padding: 14px; border: 1px solid var(--line); }
.override-panel summary { cursor: pointer; font-weight: 600; }
.override-panel .table-wrap { margin-top: 12px; }
.vat-note {
  display: inline-flex;
  padding: 7px 11px;
  background: var(--ah-soil-100);
  color: var(--ah-soil-700);
  font-weight: 600;
  font-size: .82rem;
}
.status-pill {
  padding: 6px 11px;
  background: var(--ah-oz-100);
  color: var(--ah-oz-700);
  font-family: var(--font-data);
  font-size: .8rem;
  font-weight: 600;
}
.empty.compact { margin: 18px 0; padding: var(--sp-5); }
textarea { width: 100%; resize: vertical; }

.license-screen { display: grid; min-height: calc(100vh - 176px); place-items: center; padding: var(--sp-4) 0; }
.auth-shell { width: min(760px, 100%); }
.auth-cover {
  width: 100%;
  height: clamp(120px, 10vw, 152px);
  overflow: hidden;
  background: var(--ah-pine-700);
}
.auth-cover img { width: 100%; height: 100%; object-fit: cover; object-position: 63% 58%; }
.license-card { width: min(760px, 100%); padding: clamp(20px, 4vw, 40px); }
.license-card h1 { font-size: clamp(30px, 5vw, 48px); }
.copy-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: start; }
.license-card textarea {
  min-height: 90px;
  padding: 12px;
  border: 1px solid var(--ah-furrow-400);
  border-radius: 0;
  font-family: var(--font-data);
  overflow-wrap: anywhere;
  word-break: break-all;
}
.license-locked .topbar { grid-template-columns: 1fr auto; }

@media (max-width: 980px) {
  .economy-summary, .economy-toolbar { align-items: stretch; flex-direction: column; }
  .economy-result-grid, .economy-detail-grid { grid-template-columns: 1fr; }
  .costs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .copy-row { grid-template-columns: 1fr; }
  .copy-row .button { width: 100%; }
  #toast { top: 132px; right: 4vw; }
}
.hidden, [hidden] { display: none !important; }

.compensation-mini-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; margin: 12px 0; }
.compensation-mini { display: grid; gap: 5px; padding: 12px; border: 1px solid var(--line); background: var(--surface-2); }
.compensation-mini span { color: var(--text-muted); font-size: .88rem; }
.passport-section { margin-top: var(--space-card); }
.passport-section .table-wrap { max-height: 440px; }
.passport-section input { min-width: 130px; }
[data-screen="passport-detail"] .page-head .actions { margin: 0; }

.source-tabs { display: flex; gap: .65rem; flex-wrap: wrap; }
.source-tab { color: var(--text); border-color: var(--brand); background: var(--surface); }
.source-tab.active { color: var(--on-brand); border-color: var(--brand); background: var(--brand); outline: 0; box-shadow: inset 0 -4px 0 var(--accent); }
.excel-source .empty { margin: 1rem; }
.mapping-code, .mapping-unit, .mapping-basis { display: block; width: 100%; margin-bottom: .45rem; }
.unsupported-pdf { margin-top: 1rem; }
.backup-row { display: flex; justify-content: space-between; gap: var(--sp-4); align-items: center; padding: 12px 0; border-top: 1px solid var(--line); }
.backup-row:first-child { border-top: 0; }
.backup-row .actions { margin: 0; flex-wrap: wrap; }
#faq-list details { border-top: 1px solid var(--line); padding: 10px 0; }
#faq-list summary { cursor: pointer; font-weight: 600; }
@media (max-width: 720px) { .backup-row { align-items: flex-start; flex-direction: column; } }
/* Русская кнопка выбора Excel поверх системного file input. */
.hidden-file-input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.file-picker { display: inline-flex; width: fit-content; margin-right: 10px; }
.admin-account-list { display: grid; gap: var(--space-card); }
.admin-account { padding: var(--space-card); }

[data-screen="passports"] > .rating-filters,
[data-screen="passports"] > .history-result-head,
[data-screen="passports"] > .card,
[data-screen="passports"] > form.card { margin-top: var(--space-card); }
[data-screen="passports"] > .history-result-head { margin-bottom: 0; }
[data-screen="admin"] #invite-account { padding: var(--space-card); }
[data-screen="admin"] #invite-account h2 { margin-bottom: var(--space-card); }
[data-screen="admin"] > .section,
[data-screen="admin"] > .card { margin-top: var(--space-section); }
[data-screen="technologies"] > .card + .card { margin-top: var(--space-card); }
[data-screen="technologies"] > .card:last-child { padding: var(--space-card); }
[data-screen="analysis-detail"] [data-testid="passport-link"] .form-grid,
[data-screen="analysis-detail"] [data-testid="technical-details"] .table-wrap { margin-top: var(--space-card); }
.tester-ui #delete-passport { display: none !important; }
