/* Стиль «Чистый лист» (дизайн-система сети, утверждён Деном 05.11.2026): белый лист, один акцент, тонкие линии, системный
   sans и воздух. Акцент сайта подставляет novyj-sajt.py (--cvet), производные от него считает color-mix. Светлая тема -
   :root, тёмная стоит ДВАЖДЫ и должна совпадать (настройка системы и ручной выбор data-theme="dark"). Ниже переменных -
   правила поверх скелета; характер самого инструмента (форма результата) сайт дописывает в конец этого файла. */
:root {
  color-scheme: light dark;
  --bg: #ffffff;
  --surface: #ffffff;
  --surface-2: #f5f7fa;
  --ink: #0f172a;
  --muted: #5b6576;
  --line: #e5e8ee;
  --line-strong: #cdd3dd;
  --accent: #1f7a4d;
  --accent-ink: #ffffff;
  --accent-soft: color-mix(in srgb, #1f7a4d 12%, #ffffff);
  --link: #1f7a4d;
  --ok: #16a34a;
  --bad: #b3261e;
  --radius: 10px;
  --radius-s: 8px;
  --shadow: none;
  --font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI Variable Display", "Segoe UI", system-ui, sans-serif;
  --font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
}
@media screen and (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #1b1e23;
    --surface: #22262c;
    --surface-2: #282d34;
    --ink: #e9ecf1;
    --muted: #9ba4b3;
    --line: #333944;
    --line-strong: #474f5c;
    --accent: color-mix(in srgb, #1f7a4d 72%, #ffffff);
    --accent-ink: #0d1424;
    --accent-soft: color-mix(in srgb, #1f7a4d 22%, #22262c);
    --link: color-mix(in srgb, #1f7a4d 60%, #ffffff);
    --ok: #4ade80;
    --bad: #ff7b72;
    --shadow: none;
  }
}
@media screen {
:root[data-theme="dark"] {
  --bg: #1b1e23;
  --surface: #22262c;
  --surface-2: #282d34;
  --ink: #e9ecf1;
  --muted: #9ba4b3;
  --line: #333944;
  --line-strong: #474f5c;
  --accent: color-mix(in srgb, #1f7a4d 72%, #ffffff);
  --accent-ink: #0d1424;
  --accent-soft: color-mix(in srgb, #1f7a4d 22%, #22262c);
  --link: color-mix(in srgb, #1f7a4d 60%, #ffffff);
  --ok: #4ade80;
  --bad: #ff7b72;
  --shadow: none;
}
}

/* характер: шапка и заголовки */
.top { background: var(--bg); padding: 12px 0; }
.brand { font-weight: 650; font-size: 19px; letter-spacing: -.01em; }
.brand svg { width: 24px; height: 24px; }
.top nav a { color: var(--muted); }
.top nav a:hover { color: var(--ink); }
h1, h2, h3 { font-weight: 650; letter-spacing: -.022em; }
h1 { font-size: clamp(30px, 4.2vw, 44px); max-width: 20em; }
.hero { padding: 30px 0 14px; }
.lede { font-size: clamp(16px, 1.7vw, 18px); line-height: 1.5; }
.badge { background: none; padding: 0; margin-top: 10px; color: var(--muted); font-size: 14px; }

/* форма: спокойная, тонкие линии */
.panel { border-color: var(--line); }
.form .field label { font-weight: 600; font-size: 14px; }
.field textarea { background: var(--surface); border-color: var(--line-strong); line-height: 1.6; }
.btn { border-radius: 8px; font-weight: 600; }
.btn.secondary { border-color: var(--line-strong); }
.btn.secondary:hover { background: var(--surface-2); filter: none; }

/* результат: четыре карточки с крупными числами */
.out { background: var(--surface-2); border-color: var(--line); }
.out .status { margin-top: 0; font-size: 14px; color: var(--muted); }
.out .status.is-error { color: var(--bad); }
.out .result { margin-top: 12px; }
.out .mini { border: 0; background: none; padding: 4px 0; min-height: 30px; color: var(--accent); font-weight: 600; }
.out .mini:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ниже инструмента */
.steps li { border-color: var(--line); background: var(--surface); }
.steps li::before { background: var(--accent-soft); color: var(--accent); }

/* четыре кнопки формы в одну строку на компьютере */
.form .row { gap: 8px; }
.form .row .btn { padding-left: 14px; padding-right: 14px; }

/* ---- ROAS Calculator: форма из трёх нумерованных блоков слева, «лист медиабайера» справа ---- */
/* цвета вердикта (светлая / тёмная дважды, как велит система) */
:root { --v-ok: #13733d; --v-ok-bg: #e3f3e9; --v-bad: #a52a21; --v-bad-bg: #fbe7e5; }
@media screen and (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --v-ok: #6fd39a; --v-ok-bg: #1e3a2b; --v-bad: #ff8a80; --v-bad-bg: #44262a; } }
@media screen { :root[data-theme="dark"] { --v-ok: #6fd39a; --v-ok-bg: #1e3a2b; --v-bad: #ff8a80; --v-bad-bg: #44262a; } }

/* форма: три блока, тонкая линия между ними, номер в кружке */
.roas .blk { border: 0; margin: 0 0 14px; padding: 0 0 12px; border-bottom: 1px solid var(--line); min-width: 0; }
.roas .blk:last-of-type { margin-bottom: 4px; padding-bottom: 0; border-bottom: 0; }
.roas legend { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; padding: 0; font-weight: 650; font-size: 15px; }
.roas legend .n { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); font-size: 12px; font-weight: 700; }
.roas legend small, .roas label small { margin-left: 4px; font-size: 12px; font-weight: 500; color: var(--muted); }
.roas .two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 10px; }
.roas .field, .form.roas .field:last-of-type { margin: 0 0 10px; gap: 4px; }
.roas .field label { font-size: 13px; }
.roas .field input, .roas .field select { width: 100%; min-height: 44px; font-variant-numeric: tabular-nums; }
.roas .half { max-width: calc(50% - 5px); }
.roas .pair { display: flex; gap: 6px; }
.roas .pair input { flex: 1 1 auto; min-width: 0; }
.roas .pair select { flex: 0 0 64px; width: 64px; }
.roas .hint { margin: 0 0 6px; font-size: 13px; }
.roas .m-line { margin: 2px 0 4px; font-size: 14px; color: var(--muted); }
.roas .m-line strong { color: var(--ink); font-variant-numeric: tabular-nums; }
.roas .row .hint { flex: 1 1 100%; margin: 0; }
/* переключатель «знаю % / по заказу» - две половинки одной рамки; состояние без скрипта, через :has */
.seg { position: relative; display: flex; margin: 0 0 12px; border: 1px solid var(--line-strong); border-radius: var(--radius-s); overflow: hidden; }
.seg input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.seg label { flex: 1 1 0; min-height: 40px; padding: 9px 8px; text-align: center; font-size: 13.5px; font-weight: 600; color: var(--muted); cursor: pointer; }
.seg label:last-of-type { border-left: 1px solid var(--line-strong); }
.seg input:checked + label { background: var(--accent); color: var(--accent-ink); }
.seg input:focus-visible + label { outline: 3px solid var(--link); outline-offset: -3px; }
.m-pct { display: none; }
.roas:has(#mode-pct:checked) .m-pct { display: block; }
.roas:has(#mode-pct:checked) .m-order { display: none; }

/* лист медиабайера: шапка моноширинным, крупный ROAS, вердикт, линейка «безубыточность - вы - цель», плитки, цель, формула */
.sheet { padding: 16px 16px 14px; border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--surface); color: var(--ink); font-variant-numeric: tabular-nums; }
.s-head { display: flex; justify-content: space-between; gap: 12px; margin: 0; font: 600 11px/1.4 var(--font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.s-big { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; margin: 8px 0 0; }
.s-big strong { font: 700 54px/1 var(--font-display); letter-spacing: -.03em; color: var(--accent); }
.s-big span { font-size: 15px; font-weight: 600; color: var(--muted); }
.s-verdict { margin: 12px 0 0; padding: 10px 12px; border-radius: var(--radius-s); background: var(--v-ok-bg); color: var(--v-ok); font-size: 14px; line-height: 1.45; }
.s-verdict.bad { background: var(--v-bad-bg); color: var(--v-bad); }
.s-scale { margin: 10px 0 0; padding: 22px 0 48px; }
.s-bar { position: relative; height: 10px; border: 1px solid var(--line-strong); border-radius: 5px; background: linear-gradient(to right, var(--v-bad-bg) 0, var(--v-bad-bg) 61.7%, var(--v-ok-bg) 61.7%, var(--v-ok-bg) 100%); }
.s-mark { position: absolute; top: -5px; bottom: -5px; width: 0; }
.s-mark::before { content: ""; position: absolute; left: -1px; top: 0; bottom: 0; width: 2px; background: var(--ink); }
.s-mark > span { position: absolute; left: 50%; transform: translateX(-50%); white-space: nowrap; font: 600 11.5px/1.2 var(--font-mono); color: var(--muted); }
.s-mark.be { left: 61.7%; }
.s-mark.be > span, .s-mark.target > span { bottom: 100%; margin-bottom: 6px; }
.s-mark.target { left: 85.3%; }
.s-mark.target::before { width: 0; background: none; border-left: 2px dashed var(--muted); }
.s-mark.you { left: 75%; }
.s-mark.you::before { left: -9px; top: -4px; bottom: auto; width: 18px; height: 18px; border-radius: 50%; background: var(--accent); border: 3px solid var(--surface); box-shadow: 0 0 0 1.5px var(--accent); }
.s-mark.you > span { top: 100%; margin-top: 10px; color: var(--accent); }
.s-tick { position: absolute; top: 100%; margin-top: 30px; transform: translateX(-50%); white-space: nowrap; font: 11px/1 var(--font-mono); color: var(--muted); }
.s-tick.t0 { left: 0; transform: none; }
.s-tick.t1 { left: 33.3%; }
.s-tick.t2 { left: 66.7%; }
.s-tick.t3 { left: 100%; transform: translateX(-100%); }
.s-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 14px 0 0; border-top: 1px dashed var(--line-strong); }
.s-tiles > div { min-width: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--surface-2); }
.s-tiles dt { font: 600 11px/1.3 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.s-tiles dd { margin: 2px 0 0; font: 700 22px/1.1 var(--font-display); letter-spacing: -.02em; overflow-wrap: anywhere; }
.s-tiles .profit dd { color: var(--v-ok); }
.s-goal { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px; margin: 10px 0 0; padding: 10px 12px; border-radius: var(--radius-s); background: var(--accent-soft); font-size: 14px; color: var(--muted); }
.s-goal .lbl { flex: 1 1 100%; font: 600 11px/1.3 var(--font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.s-goal b { font-size: 18px; font-weight: 700; color: var(--ink); }
.s-goal .gap { flex: 1 1 100%; font-size: 13px; }
.s-formula { margin: 12px 0 0; font: 12px/1.6 var(--font-mono); color: var(--muted); }
.out-act { margin-top: 14px; gap: 8px; }
.out-act .btn { flex: 1 1 calc(50% - 4px); padding-left: 10px; padding-right: 10px; white-space: nowrap; }
.file-btn { cursor: pointer; }
.file-btn:focus-within { outline: 3px solid var(--link); outline-offset: 2px; }
.s-note { margin: 10px 0 0; font-size: 13px; }

/* «что если»: строки-сценарии под инструментом, убыточная строка подсвечена */
.whatif { margin-top: 20px; }
.w-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px; margin: 0 0 10px; }
.w-head h2 { margin: 0; font-size: 20px; }
.w-head .hint { margin: 0; }
.w-tab { width: 100%; border-collapse: collapse; font-size: 14px; font-variant-numeric: tabular-nums; }
.w-tab th, .w-tab td { padding: 9px 8px; text-align: right; border-top: 1px solid var(--line); font-weight: 400; }
.w-tab thead th { padding-top: 0; border-top: 0; font: 600 11px/1.3 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.w-tab tr > :first-child { padding-left: 0; text-align: left; }
.w-tab tbody th { font-weight: 600; }
.w-tab td.ok { font-weight: 700; color: var(--v-ok); }
.w-tab td.bad { font-weight: 700; color: var(--v-bad); }
.w-tab tr.loss th, .w-tab tr.loss td { background: var(--v-bad-bg); }
.w-tab tr.loss th { padding-left: 8px; border-radius: var(--radius-s) 0 0 var(--radius-s); }
.w-tab tr.loss td:last-child { border-radius: 0 var(--radius-s) var(--radius-s) 0; }
@media (max-width: 640px) {
  .sheet { padding: 14px 12px 12px; }
  .s-head { flex-direction: column; gap: 2px; }
  .s-scale { padding-top: 38px; }
  .s-mark.target > span { margin-bottom: 22px; } /* на узком экране подписи над линейкой в два ряда, иначе налезают */
  .s-big strong { font-size: 46px; }
  .s-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .s-tiles dd { font-size: 20px; }
  .roas .half { max-width: none; }
  .w-tab thead { display: none; }
  .w-tab, .w-tab tbody { display: block; }
  .w-tab tr { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px 8px; margin: 0 0 8px; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--surface); }
  .w-tab tr.loss { background: var(--v-bad-bg); border-color: transparent; }
  .w-tab tr.loss th, .w-tab tr.loss td { background: none; }
  .w-tab tbody th { grid-column: 1 / -1; padding: 0; border: 0; text-align: left; }
  .w-tab td { display: block; padding: 0; border: 0; text-align: left; }
  .w-tab td::before { content: attr(data-l); display: block; font: 600 10.5px/1.3 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
}
@media print {
  .tool-grid > .form, .out-act, .s-note, .out .status, aside[data-ad] { display: none !important; }
  .tool-grid { display: block; } .tool-grid .out { position: static; }
  .s-bar { background: none; }
}

/* ---- код (стадия К): живая линейка, правка строк на месте, каталог CSV, страница CPM ---- */
.s-bar { background: linear-gradient(to right, var(--v-bad-bg) 0 var(--be, 61.7%), var(--v-ok-bg) var(--be, 61.7%) 100%); }
.s-bar.no-be { background: var(--surface-2); }
.s-bar.all-bad { background: var(--v-bad-bg); }
.s-mark.l > span { left: 0; transform: none; margin-left: -2px; }
.s-mark.r > span { left: auto; right: 0; transform: none; margin-right: -2px; }
.s-mark.you.l > span { margin-left: -9px; }
.s-scale.tesno { padding-top: 38px; }
.s-scale.tesno .s-mark.target > span { margin-bottom: 22px; }
.s-big.empty strong { color: var(--muted); }
.s-tiles dd.add { font: 600 14px/1.35 var(--font-body); letter-spacing: 0; color: var(--muted); padding-top: 4px; }
.s-tiles .profit.bad dd { color: var(--v-bad); }
.roas .field input[aria-invalid="true"], .w-tab input[aria-invalid="true"] { border-color: var(--bad); outline-color: var(--bad); }
.w-head .mini { margin-left: auto; }
.w-tab input { width: 100%; min-width: 0; min-height: 36px; padding: 4px 6px; border: 1px solid transparent; border-radius: 6px; background: transparent; color: inherit; font: inherit; text-align: inherit; }
.w-tab td input { max-width: 9em; }
.w-tab input:hover { border-color: var(--line-strong); }
.w-tab input:focus { outline: 3px solid var(--link); outline-offset: 0; border-color: transparent; background: var(--surface); }
.w-th { display: flex; align-items: center; gap: 4px; }
.w-th .w-name { flex: 1 1 auto; }
.whatif:not(.katalog) .w-tab tr > :first-child { width: 26%; }
.w-tab tbody th .w-name { font-weight: 600; text-align: left; margin-left: -6px; }
.w-del { flex: none; width: 32px; min-height: 32px; border: 0; border-radius: 6px; background: none; color: var(--muted); font-size: 20px; line-height: 1; cursor: pointer; }
.w-del:hover { background: var(--surface-2); color: var(--bad); }
.w-del:focus-visible { outline: 3px solid var(--link); }
.k-tab tbody th { font-weight: 600; overflow-wrap: anywhere; }
.k-tab td.bad { color: var(--v-bad); font-weight: 700; }
.k-act { display: flex; gap: 6px; margin-left: auto; }
.katalog { scroll-margin-top: 16px; }
@media (max-width: 640px) {
  .w-tab td input { max-width: none; padding-left: 0; }
  .whatif:not(.katalog) .w-tab tr > :first-child { width: auto; }
  .k-tab .k-x { display: none; }
  .k-tab tr { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media print { .w-del, .w-head .mini, .k-act { display: none !important; } .w-tab input { border: 0; padding: 0; } }

/* страница CPM: та же форма и тот же лист, вместо линейки - воронка показы → клики → заказы */
.cpm:has(#mode-plan:checked) .m-res { display: none; }
.cpm .m-plan { display: none; }
.cpm:has(#mode-plan:checked) .m-plan { display: block; }
.cpm details.blk > summary { cursor: pointer; font-weight: 650; font-size: 15px; padding: 4px 0 10px; }
.cpm details.blk[open] > summary { padding-bottom: 12px; }
.funnel { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 8px; }
.funnel li { --w: 100%; position: relative; width: var(--w); min-width: 62%; margin: 0 auto; padding: 10px 14px; border-radius: var(--radius-s); background: var(--accent-soft); border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent); }
.funnel li:nth-child(2) { --w: 86%; }
.funnel li:nth-child(3) { --w: 72%; }
.funnel li.off { background: var(--surface-2); border-color: var(--line); color: var(--muted); }
.f-top { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 12px; }
.f-top b { font: 700 24px/1.15 var(--font-display); letter-spacing: -.02em; color: var(--ink); }
.funnel li.off .f-top b { font: 600 14px/1.4 var(--font-body); color: var(--muted); }
.f-top span { font: 600 11px/1.3 var(--font-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.f-cost { margin: 4px 0 0; font-size: 13.5px; color: var(--muted); }
.f-cost b { color: var(--ink); font-weight: 650; }
.cmp { width: 100%; margin: 14px 0 0; border-collapse: collapse; font-size: 14px; font-variant-numeric: tabular-nums; }
.cmp th, .cmp td { padding: 7px 6px; text-align: right; border-top: 1px solid var(--line); font-weight: 400; }
.cmp thead th { border-top: 0; font: 600 11px/1.3 var(--font-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.cmp tr > :first-child { text-align: left; padding-left: 0; }
.cmp td.better { color: var(--v-ok); font-weight: 650; }
.cmp td.worse { color: var(--v-bad); font-weight: 650; }
@media (max-width: 640px) { .funnel li, .funnel li:nth-child(n) { width: 100%; } .f-top b { font-size: 21px; } }
