/* Космо-портфель — стили интерфейса. Две темы через data-theme на <html>; все цвета — токены ниже. */
:root{color-scheme:light;
  --bg:#f3f6f4;--surface:#ffffff;--surface-2:#f7f9f7;--ink:#15211a;--ink-2:#465349;--muted:#7b8880;--rule:#e1e8e3;--rule-2:#ecf1ed;
  --brand:#0f6f40;--brand-soft:#e8f0ea;--on-brand:#ffffff;--accent:#15784a;
  --good:#2b7a4b;--good-soft:#e9f1ec;--good-ink:#1d5433;
  --crit:#b1483c;--crit-soft:#f5e9e7;--crit-ink:#7d2a22;
  --warn:#b07c23;--warn-soft:#f6efe1;--warn-ink:#63491a;
  --side:#0b4a2e;--side-ink:#cfe3d5;--side-dim:rgba(255,255,255,.42);--side-on-1:#276845;--side-on-2:#1f5c3d;--side-hover:rgba(255,255,255,.08);
  --seg-a:#2a5c43;--seg-b:#93b8a3;--hl-chip:#dde9e2;--s1:#336b4c;--s2:#b07f3d;
  --shadow:0 6px 18px rgba(21,33,26,.10);--shadow-sm:0 1px 2px rgba(21,33,26,.06);
  --f-ui:"Montserrat","Segoe UI",Arial,sans-serif;
  --f-display:"Montserrat","Segoe UI",Arial,sans-serif;
  --f-num:"Montserrat","Segoe UI",Arial,sans-serif;
  --f-code:"Montserrat","Segoe UI",Arial,sans-serif;
  --code-tracking:.03em;}
:root[data-theme="dark"]{color-scheme:dark;
  --bg:#0e1411;--surface:#161e19;--surface-2:#1b2520;--ink:#e9f0ea;--ink-2:#b3c0b7;--muted:#7d8b82;--rule:#26322b;--rule-2:#1f2a24;
  --brand:#63a884;--brand-soft:#1b2c23;--on-brand:#08130d;--accent:#63a884;
  --good:#5ba077;--good-soft:#1a2a21;--good-ink:#a8c9b5;
  --crit:#c9705f;--crit-soft:#2e201e;--crit-ink:#e0aca3;
  --warn:#c19a4c;--warn-soft:#2c271a;--warn-ink:#d8c391;
  --side:#08301f;--side-ink:#b6ccbc;--side-dim:rgba(255,255,255,.38);--side-on-1:#215c3d;--side-on-2:#1b5236;--side-hover:rgba(255,255,255,.07);
  --seg-a:#3d7357;--seg-b:#7aa891;--hl-chip:#23362b;--s1:#5f9c79;--s2:#b8904f;
  --shadow:0 12px 32px rgba(0,0,0,.55);--shadow-sm:0 1px 2px rgba(0,0,0,.4);}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-ui);font-size:14px;line-height:1.5}
a{color:var(--brand);text-decoration:none}a:hover{color:var(--accent)}
button{font-family:inherit}
.shell{width:100%;min-height:100vh;background:var(--bg);display:grid;grid-template-columns:224px 1fr}
.shell.collapsed{grid-template-columns:64px 1fr}
.body{min-width:0;display:flex;flex-direction:column}

/* ---- боковая панель ---- */
.side{background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;padding:14px 12px 12px;
      position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto}
.side-top{display:flex;flex-direction:column}
.side .brand{display:flex;align-items:center;gap:10px;padding:4px 6px 18px;color:#fff;font-family:var(--f-display);font-size:15px;font-weight:700;letter-spacing:-.02em;white-space:nowrap}
.side .brand i{width:34px;height:34px;border-radius:10px;background:#eef4ee;display:grid;place-items:center;flex:none}
.side .brand img{width:26px;height:26px;object-fit:contain}
.nav{display:flex;flex-direction:column;gap:3px}
.nav .grp{padding:16px 12px 6px;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--side-dim);white-space:nowrap}
.nav .grp:first-child{padding-top:2px}
.nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;color:var(--side-ink);font-weight:500;font-size:14.5px;white-space:nowrap;cursor:pointer;user-select:none}
.nav a:hover{background:var(--side-hover);color:#fff}
.nav a.on,.nav a.on:hover{background:linear-gradient(100deg,var(--side-on-1),var(--side-on-2));color:#fff;font-weight:600}
.nav svg{width:18px;height:18px;flex:none}
.collapse{margin-top:auto;width:40px;height:40px;display:grid;place-items:center;border-radius:10px;color:#a9cbb4;cursor:pointer}
.collapse:hover{background:var(--side-hover);color:#fff}
.collapse svg{width:16px;height:16px}
.shell.collapsed .side{padding:14px 10px 12px;align-items:center}
.shell.collapsed .side .brand{padding:4px 0 18px}
.shell.collapsed .side .brand span,.shell.collapsed .nav a span,.shell.collapsed .nav .grp{display:none}
.shell.collapsed .nav a{width:44px;padding:12px 0;justify-content:center}
.shell.collapsed .collapse svg{transform:scaleX(-1)}

/* ---- шапка ---- */
.hdr{height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 32px;background:var(--surface);border-bottom:1px solid var(--rule)}
.hleft,.hright{display:flex;align-items:center;gap:14px}
.ver{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.toast{font-size:13px;color:var(--good);opacity:0;transition:opacity .3s}.toast.show{opacity:1}
/* выпадающий выбор сценария */
.dd{position:relative}
.dd-btn{height:42px;display:inline-flex;align-items:center;gap:10px;padding:0 12px 0 14px;border-radius:12px;border:1px solid var(--rule);background:var(--surface);color:var(--ink);font-size:14px;cursor:pointer}
.dd-btn:hover,.dd.open .dd-btn{border-color:var(--brand)}
.dd-btn .k{font-size:12.5px;font-weight:500;color:var(--ink-2)}
.dd-btn b{font-weight:700;letter-spacing:.03em}
.dd-btn .lim{font-size:12.5px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums;padding-left:8px;border-left:1px solid var(--rule)}
.dd-btn svg{width:14px;height:14px;color:var(--muted);transition:transform .15s}
.dd.open .dd-btn svg{transform:rotate(180deg)}
.dd-pop{display:none;position:absolute;top:48px;right:0;min-width:250px;background:var(--surface);border:1px solid var(--rule);border-radius:14px;box-shadow:var(--shadow);padding:6px;z-index:6}
.dd.open .dd-pop{display:block}
.dd-it{display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;cursor:pointer}
.dd-it:hover{background:var(--bg)}
.dd-it b{display:block;font-size:14px;font-weight:700;letter-spacing:.03em;color:var(--ink)}
.dd-it span{display:block;font-size:12.5px;color:var(--ink-2)}
.dd-it .ck{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);visibility:hidden}
.dd-it.on .ck{visibility:visible}
.dd-it .ck svg{width:12px;height:12px}
/* переключатель темы */
.tsw{display:flex;background:var(--bg);border:1px solid var(--rule);border-radius:12px;padding:3px}
.tsw button{width:38px;height:34px;border:0;border-radius:9px;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer}
.tsw button:hover{color:var(--ink)}
.tsw button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}
.tsw svg{width:17px;height:17px}

/* ---- страница ---- */
.main{padding:26px 32px 40px;display:flex;flex-direction:column;gap:22px}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px}
h1{font-family:var(--f-display);font-size:30px;font-weight:700;letter-spacing:-.02em;margin:0;line-height:1.1}
.pill{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:14px;padding:8px 14px 8px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--rule);color:var(--ink);font-variant-numeric:tabular-nums}
.pill .dot{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--good)}
.pill.bad .dot{background:var(--crit)}.pill.warn .dot{background:var(--warn)}
.pill .dot svg{width:12px;height:12px}
/* вкладки внутри страницы */
.tabs{display:flex;gap:30px;border-bottom:1px solid var(--rule);margin:-6px 0 2px}
.tabs a{position:relative;padding:8px 2px 14px;font-size:15px;font-weight:600;color:var(--ink-2);cursor:pointer;white-space:nowrap;user-select:none}
.tabs a:hover{color:var(--ink)}
.tabs a.on{color:var(--brand)}
.tabs a.on::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:var(--brand)}
.card{background:var(--surface);border-radius:18px;padding:22px 24px;box-shadow:var(--shadow-sm)}
.card h2{font-family:var(--f-display);font-size:17px;font-weight:700;letter-spacing:-.01em;margin:0 0 16px;display:flex;align-items:center;gap:12px}
.card h2 .tog{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-family:var(--f-ui);font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer;white-space:nowrap}
.card h2 .tog input{accent-color:var(--brand)}
.card h2 .u{font-family:var(--f-ui);font-size:13px;font-weight:500;color:var(--ink-2);margin-left:auto}
.card h2 .help{margin-left:auto}.card h2 .u+.help,.card h2 .more+.help{margin-left:0}
.card h2 .more{margin-left:auto}
.tag{display:inline-flex;align-items:center;font-size:12px;font-weight:700;letter-spacing:.04em;padding:4px 9px;border-radius:8px;background:var(--brand-soft);color:var(--brand)}
.more{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--brand);cursor:pointer;white-space:nowrap}
.more svg{width:14px;height:14px}
/* кнопка «?» и подсказка */
.help{position:relative;display:inline-flex;flex:none}
.help i{width:24px;height:24px;border-radius:50%;border:1px solid var(--rule);background:var(--surface);color:var(--ink-2);font-family:var(--f-ui);font-style:normal;font-weight:700;font-size:12.5px;display:grid;place-items:center;cursor:pointer}
.help i:hover{border-color:var(--brand);color:var(--brand)}
.help.open i{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.pop{display:none;position:absolute;top:32px;right:0;width:400px;background:var(--surface);border:1px solid var(--rule);border-radius:14px;box-shadow:var(--shadow);padding:14px 16px;font-family:var(--f-ui);font-size:13.5px;line-height:1.55;font-weight:400;color:var(--ink);letter-spacing:0;z-index:5;text-align:left;white-space:normal}
.pop b{font-weight:700}
.pop .lg{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:8px;font-weight:500}
.help.open .pop{display:block}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.row2.w{grid-template-columns:1.1fr 1fr}
.code{font-family:var(--f-code);letter-spacing:var(--code-tracking);font-weight:700;font-size:13.5px;color:var(--brand)}
.mode{font-family:var(--f-code);letter-spacing:var(--code-tracking);font-size:12px;font-weight:700;color:var(--ink);background:var(--brand-soft);padding:4px 9px;border-radius:8px;white-space:nowrap}
.btn{height:48px;display:inline-flex;align-items:center;padding:0 18px;border-radius:12px;background:var(--brand);color:var(--on-brand);font-weight:600;font-size:14.5px;white-space:nowrap;cursor:pointer}
.btn.ghost{background:var(--surface);border:1px solid var(--rule);color:var(--ink);font-weight:500}
.btn.ghost:hover{border-color:var(--brand)}
.btn.sm{height:40px;padding:0 14px;font-size:13.5px}
.btn.off{opacity:.45;pointer-events:none}

/* ---- обзор портфеля: карточки лотов и балл ---- */
.hero{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.hl-lot{background:var(--bg);border-radius:18px;padding:18px 20px 16px;display:flex;flex-direction:column;gap:6px;min-height:168px}
.hl-h{display:flex;justify-content:space-between;align-items:center;gap:8px}
.hl-code{font-family:var(--f-code);font-size:22px;font-weight:700;letter-spacing:.01em;color:var(--brand)}
.hl-name{font-size:14.5px;font-weight:600;line-height:1.3}
.hl-sub{font-size:13px;color:var(--ink-2)}
.hl-c0{margin-top:auto;padding-top:12px;font-family:var(--f-num);font-size:22px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px}
.hl-c0 small{font-size:12px;font-weight:500;color:var(--ink-2);letter-spacing:0}
.hl-score{background:var(--side);color:#fff;border-radius:18px;padding:18px 20px 16px;display:flex;flex-direction:column;gap:4px}
.hl-score .k{font-size:13px;font-weight:600;color:rgba(255,255,255,.75)}
.hl-score .v{font-family:var(--f-num);font-size:44px;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;margin-top:4px}
.hl-score .v small{font-size:14px;font-weight:500;color:rgba(255,255,255,.75);margin-left:8px;letter-spacing:0}
.hl-score .s{margin-top:auto;font-size:13.5px;color:rgba(255,255,255,.85);display:flex;align-items:baseline;gap:6px}
.hl-score .s b{color:#fff;font-size:20px;font-variant-numeric:tabular-nums}
.hl-score .more{color:#fff;margin-top:6px}
/* сводка проверок */
.sum{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sum-it{background:var(--bg);border-radius:16px;padding:16px 18px;display:flex;flex-direction:column;gap:12px}
.sum-h{display:flex;align-items:center;gap:12px}
.sum-h .circ{width:28px;height:28px}.sum-h .circ svg{width:14px;height:14px}
.sum-h .t{font-size:15px;font-weight:700}
.sum-h .n{margin-left:auto;font-family:var(--f-num);font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}
.sum-l{display:flex;flex-wrap:wrap;gap:8px}
.sum-l span{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;padding:7px 11px;border-radius:10px;background:var(--good-soft);color:var(--good-ink)}
.sum-l span.bad{background:var(--crit-soft);color:var(--crit-ink)}
.sum-l span i{width:7px;height:7px;border-radius:50%;background:currentColor}

/* ---- плитки ---- */
.tiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.tile{background:var(--surface);border-radius:18px;box-shadow:var(--shadow-sm);padding:18px 20px 16px;display:flex;flex-direction:column;gap:8px}
.tile .tl{display:flex;justify-content:space-between;align-items:center;font-size:13.5px;color:var(--ink);font-weight:600}
.seg{display:flex;height:8px;border-radius:4px;overflow:hidden;margin-top:8px;background:var(--rule-2)}
.seg i{display:block;height:100%}.seg .req{background:var(--seg-a)}.seg .sur{background:var(--seg-b)}
.seglbl{display:flex;justify-content:space-between;flex-wrap:wrap;gap:2px 10px;font-size:12px;font-weight:500;color:var(--ink-2);margin-top:6px;font-variant-numeric:tabular-nums}
.seglbl>span{display:inline-flex;align-items:center;white-space:nowrap;min-width:0}
.seglbl .sw{width:8px;height:8px;border-radius:2px;margin-right:5px}
.tile .tv{font-family:var(--f-num);font-size:34px;font-weight:700;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums}
.tile .tv small{font-family:var(--f-ui);font-size:12.5px;font-weight:500;color:var(--ink-2);margin-left:6px;letter-spacing:0;white-space:nowrap}
.two{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.two div{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:600;color:var(--ink-2)}
.two b{font-family:var(--f-num);font-size:26px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.two b.neg{color:var(--crit)}

/* ---- проверки ограничений ---- */
.circ{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--good)}
.circ.bad{background:var(--crit)}
.circ svg{width:11px;height:11px}

/* ---- таблицы ---- */
table{border-collapse:collapse;width:100%;font-size:14px}
th{font-size:12.5px;color:var(--ink-2);text-align:left;padding:0 10px 12px;border-bottom:1px solid var(--rule);font-weight:600;white-space:nowrap}
td{padding:12px 10px;border-bottom:1px solid var(--rule-2);vertical-align:middle}
tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
td.num{font-family:var(--f-num);font-weight:500}
td .code{color:var(--ink)}
td .name{font-weight:600}td .sub{color:var(--ink-2);font-size:12.5px;margin-top:2px}
td.why{color:var(--ink-2);font-size:13px}
td.mono{font-family:var(--f-code);letter-spacing:.03em;font-size:13px;color:var(--ink-2)}
tr.hl td{background:var(--brand-soft)}
tr.hl td:first-child{border-radius:10px 0 0 10px}tr.hl td:last-child{border-radius:0 10px 10px 0}
tr.pick{cursor:pointer}tr.pick:hover td{background:var(--bg)}tr.pick.hl:hover td{background:var(--brand-soft)}
tr.dim td{color:var(--muted)}tr.dim .lot{color:var(--muted)}
tr.total td{border-top:2px solid var(--rule);border-bottom:0;font-weight:700;color:var(--ink)}
table.half{max-width:560px}
.scroll{overflow-x:auto}.scroll table{min-width:900px}
.tw{overflow-x:auto;max-width:100%}
/* широкие таблицы прокручиваются целиком, а не ужимают первый столбец в колонку чипов */
@media (max-width:1080px){.tw.wide>table{min-width:900px}}
.st{display:inline-flex;align-items:center;font-family:var(--f-code);letter-spacing:var(--code-tracking);font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:8px;white-space:nowrap}
.st.ok{background:var(--good-soft);color:var(--good-ink)}.st.fail{background:var(--crit-soft);color:var(--crit-ink)}.st.thin{background:var(--warn-soft);color:var(--warn-ink)}
.note{font-size:13px;color:var(--ink-2);margin-top:12px}
.empty{padding:24px;color:var(--ink-2);font-size:14px}

/* ---- графики ---- */
svg text{font-family:var(--f-ui);font-size:11px;fill:var(--ink-2)}
svg text.n{font-family:var(--f-num);font-variant-numeric:tabular-nums;font-weight:500}
svg text.t{fill:var(--ink);font-weight:600}
svg text.xl,svg .xl text{font-size:9.5px;letter-spacing:.02em;fill:var(--ink-2)}
svg .xm text{font-size:9px;letter-spacing:.1em;fill:var(--muted);font-weight:600}
svg .grid{stroke:var(--rule-2);stroke-width:1}svg .axis{stroke:var(--rule);stroke-width:1}
.legend{display:flex;gap:18px;font-size:13px;font-weight:500;color:var(--ink-2);margin-top:10px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.legend i.line{width:14px;height:0;border-top:2px dashed var(--crit);vertical-align:2px;border-radius:0}
.sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.sw.ok{background:var(--good-soft);border:1px solid var(--good)}.sw.thin{background:var(--warn-soft);border:1px solid var(--warn)}.sw.bad{background:var(--crit-soft);border:1px solid var(--crit)}

/* ---- чипы лотов и комбинаций ---- */
.radio{display:inline-block;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--rule);background:var(--surface);vertical-align:-4px;cursor:pointer}
.radio.on{border-color:var(--brand);background:radial-gradient(circle,var(--brand) 0 4.5px,var(--surface) 5.5px)}
.lots{display:inline-flex;gap:5px;flex-wrap:wrap}
.lot{font-family:var(--f-code);letter-spacing:var(--code-tracking);font-size:12px;font-weight:700;color:var(--ink);background:var(--rule-2);padding:4px 8px;border-radius:8px;white-space:nowrap}
tr.hl .lot{background:var(--hl-chip)}
.lot.swap{background:var(--warn-soft);color:var(--warn-ink)}
.lot b{margin-left:5px;padding:0 5px;border-radius:5px;background:var(--brand-soft);color:var(--brand);font-weight:700}
.lot b.chg{background:var(--warn-soft);color:var(--warn-ink)}
.lot.txt{background:var(--brand-soft)}
.cols{display:flex;flex-wrap:wrap;gap:5px}.cols .lot{font-weight:500;letter-spacing:0}

/* ---- стресс-матрица ---- */
.matrix td{text-align:center}
.matrix td:first-child,.matrix th:first-child,.matrix td:last-child,.matrix th:last-child{text-align:left}
.cell{display:inline-block;font-family:var(--f-num);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;padding:6px 12px;border-radius:9px;min-width:104px}
.cell.ok{background:var(--good-soft);color:var(--good-ink)}.cell.thin{background:var(--warn-soft);color:var(--warn-ink)}.cell.bad{background:var(--crit-soft);color:var(--crit-ink)}

/* ---- карточки сервисов (тексты из config/lots_ui.csv) ---- */
.svc{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.sv{display:flex;flex-direction:column;gap:9px;padding:16px 18px 18px;background:var(--bg);border-radius:16px;min-width:0}
.sv-h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.sv-h .name{font-weight:600;min-width:0;line-height:1.35;font-size:14.5px}
.sv-h .mode{flex:none;margin-top:1px}
.sv-r{font-size:13px;color:var(--ink-2);margin-top:-4px}
.sv p{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink)}
.sv dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;margin:4px 0 0;font-size:13px;line-height:1.45}
.sv dt{color:var(--ink-2);font-weight:600;white-space:nowrap}.sv dd{margin:0;color:var(--ink)}
.sv .muted{color:var(--muted)}

/* ---- вкладка «Данные» ---- */
.slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.slot{display:flex;flex-direction:column;gap:8px;padding:18px 20px;border:1.5px dashed var(--rule);border-radius:16px;background:var(--bg);cursor:pointer;min-height:104px;justify-content:center}
.slot:hover{border-color:var(--brand)}.slot.ok{border-style:solid;border-color:var(--good);background:var(--good-soft)}.slot.bad{border-style:solid;border-color:var(--crit);background:var(--crit-soft)}
.slot input{display:none}
.slot-t{display:flex;align-items:baseline;gap:10px}.slot-t b{font-size:14.5px}.slot-t span{font-size:13px;color:var(--ink-2)}
.slot-s{font-size:13px}.slot-s .muted{color:var(--ink-2)}
.dz.over{outline:2px solid var(--brand);outline-offset:-2px}
.issues{margin-top:12px;font-size:13.5px}.issues b{display:block;margin:8px 0 4px}
.iss{padding:7px 11px;border-radius:9px;margin-bottom:4px}.iss.bad{background:var(--crit-soft);color:var(--crit-ink)}.iss.warn{background:var(--warn-soft);color:var(--warn-ink)}
.acts2{display:flex;gap:10px;align-items:center;margin-top:18px}
.fmt{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;font-size:13.5px}.fmt b{display:block;margin-bottom:10px;font-size:14.5px}

@media (max-width:1280px){.tiles,.hero{grid-template-columns:repeat(3,minmax(0,1fr))}.row2,.row2.w,.sum{grid-template-columns:minmax(0,1fr)}.svc{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---- метки вариантов, места, подсказки-предположения ---- */
.tag.warn{background:var(--warn-soft);color:var(--warn-ink)}
.fin{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px 4px 8px;border-radius:999px;background:var(--brand);color:var(--on-brand);white-space:nowrap;vertical-align:1px}
.fin svg{width:11px;height:11px;flex:none}
tr.hl .fin,.alt-h .fin{margin-left:2px}
.rk{display:inline-block;margin-left:8px;font-size:12px;font-weight:600;color:var(--ink-2)}
.hyp{display:inline-block;font-size:11px;font-weight:600;padding:2px 6px;border-radius:6px;background:var(--warn-soft);color:var(--warn-ink);margin-left:4px;vertical-align:1px}
.muted{color:var(--muted)}
.callout{margin-top:16px;padding:14px 16px;border-radius:12px;background:var(--brand-soft);color:var(--ink);font-size:14px;font-weight:500;line-height:1.5}
.callout.warn{background:var(--warn-soft)}
.callout .more{margin-left:8px}
/* сегментированный переключатель и чипы */
.segc{display:inline-flex;background:var(--bg);border-radius:10px;padding:3px}
.segc span{padding:7px 14px;border-radius:8px;font-size:14px;font-weight:600;color:var(--ink-2);cursor:pointer;user-select:none;letter-spacing:.04em}
.segc span.on{background:var(--brand);color:var(--on-brand)}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;padding:6px 12px;white-space:nowrap;border-radius:8px;background:var(--surface);color:var(--ink-2);border:1px solid var(--rule);cursor:pointer;user-select:none}
.chip:hover{border-color:var(--brand);color:var(--ink)}
.chip.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.cmp-pick{display:inline-flex;gap:6px;margin-left:6px;flex-wrap:wrap}

/* ---- конструктор портфеля ---- */
.bld{display:flex;flex-direction:column;gap:10px}
.bld-row{display:grid;grid-template-columns:32px 380px auto 1fr;gap:14px;align-items:center;padding:12px 14px;border-radius:14px;background:var(--surface)}
.bld-row.dup{border-color:var(--crit);background:var(--crit-soft)}
.bld-n{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);font-weight:700;font-size:14px}
.bld-sel{position:relative;display:block}
.bld-sel select{width:100%;height:46px;padding:0 40px 0 14px;border-radius:12px;border:1px solid var(--rule);background:var(--surface);color:var(--ink);font-family:inherit;font-size:14.5px;font-weight:600;appearance:none;-webkit-appearance:none;cursor:pointer}
.bld-sel select:hover,.bld-sel select:focus{border-color:var(--brand);outline:none}
.bld-sel svg{position:absolute;right:14px;top:16px;width:14px;height:14px;color:var(--muted);pointer-events:none}
.bld-info{font-size:13px;color:var(--ink-2);display:flex;flex-direction:column;gap:2px;min-width:0}
.bld-info b{color:var(--brand)}
.bld-where{color:var(--ink);font-weight:500}
.bld-eff{font-variant-numeric:tabular-nums}
.bld-state{font-size:13px;font-weight:500;color:var(--ink-2)}
.bld-state.ok{color:var(--good-ink)}
/* вопрос при уходе из конструктора с нерассчитанным составом */
.dlg{display:none;position:fixed;inset:0;z-index:20;background:rgba(9,16,12,.5);place-items:center;padding:20px}
.dlg.open{display:grid}
.dlg-box{background:var(--surface);border:1px solid var(--rule);border-radius:18px;box-shadow:var(--shadow);padding:22px 24px;max-width:520px;width:100%}
.dlg-box h3{margin:0 0 8px;font-family:var(--f-display);font-size:17px;font-weight:700}
.dlg-box p{margin:0 0 18px;font-size:14px;color:var(--ink-2);line-height:1.5}
.dlg-a{display:flex;flex-wrap:wrap;gap:10px}
.bld-err{margin-top:14px;padding:12px 16px;border-radius:12px;background:var(--crit-soft);color:var(--crit-ink);font-size:14px;font-weight:600}
.res2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.res{border-radius:16px;padding:16px 18px;display:flex;flex-direction:column;gap:10px;background:var(--good-soft)}
.res.bad{background:var(--crit-soft)}
.res-h{display:flex;align-items:center;gap:12px}
.res-s{font-size:20px;font-weight:700;letter-spacing:.03em}
.res-n{margin-left:auto;font-family:var(--f-num);font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.res-c0{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
.res-ok{font-size:14px;color:var(--good-ink);font-weight:500}
.res-f{margin:0;padding-left:18px;font-size:14px;font-weight:600;color:var(--crit-ink);line-height:1.5}

/* ---- таблица девяти ограничений, BASE/STRESS рядом ---- */
.chk2{grid-template-columns:1.45fr 1fr;align-items:start}
table.chk tr.grp td{padding:14px 10px 10px;font-weight:700;font-size:14px;background:var(--bg);border-bottom:1px solid var(--rule)}
table.chk tr.grp td .circ{display:inline-grid;vertical-align:-5px;margin-right:10px}
table.chk tr.grp td .cnt{margin-left:10px;font-size:13px;color:var(--ink-2);font-weight:600}
table.chk td .unit{margin-left:8px;font-size:12px;font-weight:500;color:var(--ink-2)}
table.chk td.req{color:var(--ink-2);font-weight:500}
table.chk td.neg{color:var(--crit);font-weight:700}table.chk td.warn{color:var(--warn-ink);font-weight:700}
table.chk td .rel{margin-left:8px;font-size:12px;font-weight:500;color:var(--ink-2)}
table.chk tr.bad td{background:var(--crit-soft)}
td .sub.fail{color:var(--crit);font-weight:600;font-size:13px;margin-top:4px}
table.bs td{font-size:14.5px}table.bs tr.big td{font-size:15px}table.bs tr.big b{font-family:var(--f-num);font-size:24px;font-weight:700;letter-spacing:-.02em}
table.bs b.neg{color:var(--crit)}

/* ---- экран «Почему FINAL» ---- */
.why-hero{display:grid;grid-template-columns:1.5fr 1fr;gap:22px;align-items:start}
.why-st{font-size:16px;font-weight:700;line-height:1.4;margin-bottom:10px}
.why-txt p{margin:0 0 10px;font-size:14.5px;line-height:1.55}
.why-pareto{color:var(--ink-2);font-weight:500}
.why-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ws{background:var(--bg);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:6px;min-width:0}
.ws span{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.ws b{font-family:var(--f-num);font-size:26px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.ws b small{font-size:12px;font-weight:500;color:var(--ink-2);margin-left:6px;letter-spacing:0}
.ws .lots{margin-top:4px}
table.alts td .sub{max-width:520px}
.alt-h{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.wl{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.wl-col{border-radius:16px;padding:16px 18px}
.wl-col.win{background:var(--good-soft)}.wl-col.lose{background:var(--crit-soft)}
.wl-h{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;margin-bottom:10px}
.wl-h svg{width:16px;height:16px}
.wl ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.wl li{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:baseline;font-size:14px;font-variant-numeric:tabular-nums}
.wl li em{font-style:normal;white-space:nowrap}
.wl li span{font-weight:600}.wl li b{font-family:var(--f-num);font-weight:700}
.wl li i{font-style:normal;font-weight:700;padding:3px 8px;border-radius:7px;background:var(--surface);font-size:13px}
.wl li.none{color:var(--ink-2)}
.wl-even{margin-top:10px;font-size:13px;color:var(--ink-2)}
.cmp-note{margin-top:14px;font-size:13.5px;color:var(--ink-2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.why-rob{margin:0;font-size:14.5px;line-height:1.55}
.mini{position:relative;height:22px;min-width:160px;background:var(--rule-2);border-radius:6px;overflow:hidden}
.mini i{position:absolute;left:0;top:0;height:100%;background:var(--brand);border-radius:6px}
.mini span{position:absolute;right:8px;top:0;line-height:22px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink)}
table.brk td .sub{font-size:12px}
.tiles.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.tile.thin{border-color:var(--warn);background:var(--warn-soft)}.tile.bad{border-color:var(--crit);background:var(--crit-soft)}
.tile .tc{font-size:12.5px;font-weight:500;color:var(--ink-2);margin-top:2px}
.sv-p{font-size:13px;color:var(--ink-2)}.sv-p b{color:var(--ink);font-weight:600}
@media (max-width:1280px){.why-hero,.wl,.res2,.chk2{grid-template-columns:minmax(0,1fr)}.bld-row{grid-template-columns:32px minmax(0,1fr) auto;grid-auto-rows:auto}.bld-info{grid-column:2/-1}}

/* ---- адаптив ниже 1280px ---- */
/* На узком экране боковая панель всегда узкая: 224px отнимают ширину у таблиц.
   Переключатель «свернуть» при этом нечего переключать, поэтому он скрыт. */
@media (max-width:1080px){
  .shell,.shell.collapsed{grid-template-columns:64px 1fr}
  .side{padding:14px 10px 12px;align-items:center}
  .side .brand{padding:4px 0 18px}
  .side .brand span,.nav a span,.nav .grp{display:none}
  .nav a{width:44px;padding:12px 0;justify-content:center}
  .collapse{display:none}
  .hdr{padding:0 20px}
  .main{padding:22px 20px 34px}
  .tiles,.hero,.tiles.four,.svc{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fmt,.slots{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pop{width:min(400px,calc(100vw - 104px))}
}
@media (max-width:720px){
  .hdr{height:auto;flex-wrap:wrap;gap:10px;padding:12px 14px}
  .hleft,.hright{flex-wrap:wrap;gap:10px}
  .ver{width:100%}
  .main{padding:18px 14px 30px}
  .card{padding:18px 16px}
  .tabs{gap:20px;overflow-x:auto;margin-bottom:0}
  .tiles,.hero,.tiles.four,.svc,.sum,.row2,.row2.w{grid-template-columns:minmax(0,1fr)}
  .card,.row2>*,.sum>*,.res2>*,.chk2>*,.why-hero>*,.wl>*,.tiles>*,.hero>*,.svc>*{min-width:0}
  .card h2{flex-wrap:wrap;row-gap:6px}
  .card h2 .help,.card h2 .u,.card h2 .more,.card h2 .tog{margin-left:auto}
  .sum-l span,.chips{max-width:100%}
  table.alts td .sub{max-width:none}
  .pop{width:calc(100vw - 92px)}
  .top{flex-direction:column;align-items:flex-start;gap:10px}
  h1{font-size:24px}
  .sum-h{flex-wrap:wrap}
  .sum-h .n{white-space:nowrap}
  .cell{min-width:0}
  .fmt,.slots{grid-template-columns:minmax(0,1fr)}
  .slot-t{flex-wrap:wrap;gap:4px 10px}
  .acts2{flex-wrap:wrap}
  .cols .lot{white-space:normal;overflow-wrap:anywhere}
  .mini{min-width:110px}
}
@media (max-width:520px){
  .main{padding:14px 10px 26px}
  .card{padding:16px 12px}
  .hdr{padding:10px}
  .pop{width:calc(100vw - 40px)}
}
