/* Витрина инструментов LogistHelper — дизайн v8 (03_СИСТЕМА/ДИЗАЙН_СИСТЕМА.md).
   Один файл на все страницы витрины: главная + страницы инструментов. */

:root{
  --bg:#FBFBFD; --bg-2:#F5F5F7; --bg-3:#EBEBEF; --card:#FFFFFF; --surface:#F8FAFC;
  --t1:#1D1D1F; --t2:#6E6E73; --t3:#AEAEB2;
  --em:#10B981; --em-dk:#059669; --em-lt:#F0FDF9; --em-lnk:#0B7A5D;
  --navy:#0A2540; --navy-2:#0D2E4D;
  --warn:#F59E0B; --danger:#EF4444; --info:#3B82F6;
  --bdr:#E5E7EB;
  --font-ui:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --maxw:1120px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font-ui);font-size:15px;background:var(--bg);color:var(--t1);line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{max-width:100%}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}

/* ── Шапка: липкая, с призывом к действию ── */
.hdr{position:sticky;top:0;z-index:50;background:rgba(251,251,253,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--bdr)}
.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:16px;height:60px}
.logo{display:flex;align-items:center;gap:10px;font-weight:600;font-size:17px;white-space:nowrap}
.logo-mark{width:26px;height:26px;border-radius:8px;background:var(--em);display:flex;align-items:center;justify-content:center;color:#04342C;font-size:15px;font-weight:700}
.logo-tag{font-size:13px;color:var(--t2);font-weight:400;border-left:1px solid var(--bdr);padding-left:10px}
.nav{display:flex;align-items:center;gap:18px;font-size:15px;color:var(--t2)}
.nav a:hover{color:var(--t1)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--bdr);background:var(--card);color:var(--t1);
  border-radius:8px;padding:9px 16px;font-size:15px;font-weight:500;cursor:pointer;transition:.15s;white-space:nowrap;font-family:inherit}
.btn:hover{border-color:var(--t3)}
.btn-p{background:var(--em);border-color:var(--em);color:#04342C}
.btn-p:hover{background:var(--em-dk);border-color:var(--em-dk);color:#fff}
.btn-lg{padding:12px 22px;font-size:15px}

/* ── Первый экран ── */
.hero{padding:56px 0 40px;text-align:center}
.eyebrow{display:inline-block;font-size:13px;color:var(--em-dk);background:var(--em-lt);border:1px solid #CFF4E6;padding:5px 14px;border-radius:999px;margin-bottom:18px}
h1{font-size:38px;line-height:1.2;font-weight:700;letter-spacing:-.02em;margin-bottom:14px}
.lead{font-size:17px;color:var(--t2);max-width:640px;margin:0 auto 22px}
.search{max-width:480px;margin:0 auto 20px;position:relative}
.search input{width:100%;border:1px solid var(--bdr);background:var(--card);border-radius:8px;padding:13px 16px 13px 42px;font-size:15px;font-family:inherit;color:var(--t1)}
.search input:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);opacity:.4}
.hero-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.marks{display:flex;gap:20px;justify-content:center;flex-wrap:wrap;margin-top:20px;font-size:15px;color:var(--t2)}

/* ── Первый экран главной: слева обещание, справа живое демо ── */
/* padding задаём вместе с боковыми: .wrap идёт раньше и его 0 20px здесь перекрывается */
.hero-split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:48px;align-items:center;padding:64px 20px 56px}
.hero-split h1{font-size:40px;line-height:1.14;margin-bottom:16px}
.hero-split .lead{margin:0 0 24px;max-width:52ch;font-size:17px;text-align:left}
.hero-split .hero-btns{justify-content:flex-start}
.role-ask{margin-top:16px;font-size:15px;color:var(--t2)}
.role-ask a{color:var(--em-lnk);border-bottom:1px solid #CFF4E6}
.role-ask a:hover{border-bottom-color:var(--em-dk)}

/* Демо-карточка укладки в первом экране */
.demo{background:var(--card);border:1px solid var(--bdr);border-radius:18px;padding:18px}
.demo-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.demo-ttl{font-weight:600;font-size:15px;display:flex;align-items:center;gap:8px}
.demo-live{font-size:13px;color:var(--t2)}
.demo-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}
.demo-f label{display:block;font-size:13px;color:var(--t2);margin-bottom:3px}
.demo-f input,.demo-sel{width:100%;border:1px solid var(--bdr);border-radius:8px;padding:7px 9px;font-size:15px;
  font-family:inherit;color:var(--t1);background:var(--card)}
.demo-f input:focus,.demo-sel:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.demo-sel{margin-bottom:10px}

/* Готовые варианты груза: нажать, а не заполнять */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.chip{border:1px solid var(--bdr);background:var(--card);color:var(--t2);border-radius:999px;padding:7px 13px;
  font-size:13px;font-family:inherit;cursor:pointer;transition:.15s}
.chip:hover{border-color:var(--t3);color:var(--t1)}
.chip.on{background:var(--em-lt);border-color:var(--em);color:var(--em-dk);font-weight:500}
.demo-qty{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.demo-qty label{font-size:13px;color:var(--t2)}
.demo-qty input{width:76px;border:1px solid var(--bdr);border-radius:8px;padding:8px 10px;font-size:15px;
  font-family:inherit;color:var(--t1);background:var(--card);text-align:center}
.demo-qty input:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.linky{margin-left:auto;background:none;border:none;border-bottom:1px dashed var(--t3);color:var(--t2);
  font-size:13px;font-family:inherit;cursor:pointer;padding:0 0 1px}
.linky:hover{color:var(--t1);border-bottom-color:var(--t2)}
.demo-dims{margin-bottom:12px}
.plan{position:relative;width:100%;background:var(--bg-2);border:1px solid var(--bdr);border-radius:8px;overflow:hidden}
.plan i{position:absolute;background:var(--em-lt);border:1px solid var(--em);border-radius:2px}
.demo-res{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:12px}
.demo-res b{font-size:22px;font-weight:600}
.demo-note{font-size:13px;color:var(--t2);margin-top:4px}
.demo-more{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-size:15px;color:var(--em-lnk)}
.demo-more:hover{text-decoration:underline}

/* ── Секции и ритм зон: светлая → серая → светлая → тёмный якорь ── */
section{padding:56px 0}
section.zone-line{border-top:1px solid var(--bdr)}
section.zone-grey{background:var(--bg-2)}
section.zone-dark{background:var(--navy);color:#fff}
section.zone-dark h2{color:#fff}
section.zone-dark .sec-sub{color:#B5D4F4}
section.plain{border-top:none}
h2{font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1.2;margin-bottom:12px}
.sec-sub{color:var(--t2);font-size:15px;max-width:62ch;margin-bottom:26px}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.sec-head h2{margin-bottom:0}
.cat{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--t2);margin:26px 0 12px;font-weight:500}
.cat:first-of-type{margin-top:0}

/* ── Карточки инструментов ── */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:12px}
.tool{display:block;background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:16px 18px;transition:.15s}
.tool:hover{border-color:var(--em);transform:translateY(-1px);box-shadow:0 4px 14px rgba(10,37,64,.06)}
.tool-ico{width:22px;height:22px;display:block;margin-bottom:10px;color:var(--em-dk);stroke:currentColor;fill:none;
  stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.tool-n{font-weight:600;font-size:15px;margin-bottom:3px}
/* Пометка партнёрского размещения: слово «Реклама», рекламодатель и токен ОРД
   (38-ФЗ ст. 18.1). Мелко, но читаемо — закон требует, чтобы пометка была видна. */
.tool-ad{margin-top:9px;font-size:13px;line-height:1.4;color:var(--t3);word-break:break-word}
.tool-d{font-size:13px;color:var(--t2);line-height:1.45}
/* Ещё не построенные инструменты: видны, но приглушены — со сроком и «сообщить» */
.tool.soon{background:var(--bg-2);border-style:dashed;border-color:var(--bdr);cursor:default}
.tool.soon:hover{border-color:var(--bdr);transform:none;box-shadow:none}
.tool.soon .tool-ico{color:var(--t2)}
.tool.soon .tool-n{color:var(--t2)}
.soon-row{display:flex;align-items:center;gap:10px;margin-top:10px}
.soon-b{font-size:13px;color:var(--t2);background:var(--bg-3);border-radius:999px;padding:2px 9px}
.soon-a{background:none;border:none;border-bottom:1px solid #CFF4E6;color:var(--em-lnk);font-size:13px;
  font-family:inherit;cursor:pointer;padding:0 0 1px}
.soon-a:hover{border-bottom-color:var(--em-lnk)}

/* ── Иконка в тексте/карточке: один стиль на всю витрину (ДИЗАЙН_СИСТЕМА §10.8.2) ── */
.ico{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ico-b{width:22px;height:22px;display:block;margin-bottom:10px;color:var(--em-dk)}

/* ── Шаги / карточки текста ── */
.cards3{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
.c{background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:18px}
.c-n{font-weight:600;margin-bottom:4px}
.c-d{font-size:15px;color:var(--t2)}

/* ── Платформа: сравнение + очередь ── */
.cmp{width:100%;border-collapse:collapse;font-size:15px;background:var(--card);border:1px solid var(--bdr);border-radius:14px;overflow:hidden}
.cmp th{text-align:left;font-weight:500;font-size:13px;color:var(--t2);padding:12px 16px;background:var(--bg-2);border-bottom:1px solid var(--bdr)}
.cmp td{padding:11px 16px;border-bottom:1px solid var(--bdr);vertical-align:top}
.cmp tr:last-child td{border-bottom:none}
.cmp td:first-child{color:var(--t2);width:50%}
.cmp td:last-child{color:var(--t1);font-weight:500}
.queue{margin-top:20px;background:var(--navy);border-radius:18px;padding:26px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.queue h3{color:#fff;font-size:22px;font-weight:600;margin-bottom:6px}
.queue p{color:#B5D4F4;font-size:15px;max-width:560px}

/* ── «Было / стало» вместо длинной таблицы: читается за три секунды ── */
.cmp2{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.cmp-col{border-radius:14px;padding:20px 22px}
.cmp-bad{background:#FEF2F2}
.cmp-good{background:var(--em-lt);border:1px solid #CFF4E6}
.cmp-h{font-size:13px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;margin-bottom:12px}
.cmp-bad .cmp-h{color:#B91C1C}
.cmp-good .cmp-h{color:var(--em-dk)}
.cmp-col li{list-style:none;font-size:15px;line-height:1.5;padding:7px 0 7px 22px;position:relative}
.cmp-bad li{color:#7F1D1D}
.cmp-good li{color:#065F46}
.cmp-col li::before{position:absolute;left:0;top:7px;font-size:15px}
.cmp-bad li::before{content:'×';color:#DC2626;font-weight:600}
.cmp-good li::before{content:'✓';color:var(--em-dk);font-weight:600}

/* ── Тёмный якорь: очередь на подключение ── */
.anchor{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.anchor-t{max-width:52ch}
.anchor h3{font-size:22px;font-weight:600;color:#fff;margin-bottom:8px}
.anchor p{color:#B5D4F4;font-size:15px}
.anchor p b{color:#fff}

/* ── Вопросы аккордеоном ── */
.acc{max-width:62ch;border-top:1px solid var(--bdr)}
.acc details{border-bottom:1px solid var(--bdr)}
.acc summary{list-style:none;cursor:pointer;padding:16px 32px 16px 0;font-size:15px;font-weight:500;position:relative}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:'';position:absolute;right:6px;top:22px;width:8px;height:8px;border-right:1.5px solid var(--t3);
  border-bottom:1.5px solid var(--t3);transform:rotate(45deg);transition:.15s}
.acc details[open] summary::after{transform:rotate(-135deg);top:26px}
.acc summary:hover{color:var(--em-lnk)}
.acc p{font-size:15px;color:var(--t2);padding:0 32px 16px 0;line-height:1.6}

/* ── Доверие / вопросы ── */
.qa{max-width:820px}
.qa-q{font-weight:600;font-size:15px;margin:18px 0 4px}
.qa-a{font-size:15px;color:var(--t2)}
.partner{margin-top:14px;border:1px dashed var(--bdr);border-radius:14px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* ── Футер ── */
footer{background:var(--bg-2);border-top:1px solid var(--bdr);padding:36px 0 28px;margin-top:10px}
.f-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:24px}
.f-h{font-weight:600;font-size:15px;margin-bottom:10px}
.f-l{display:block;font-size:15px;color:var(--t2);margin-bottom:7px}
.f-l:hover{color:var(--em-lnk)}
.f-bot{margin-top:26px;padding-top:18px;border-top:1px solid var(--bdr);font-size:13px;color:var(--t2);line-height:1.9}

/* ── Форма подписки (модалка) ── */
.ovl{position:fixed;inset:0;background:rgba(10,37,64,.45);backdrop-filter:blur(4px);z-index:100;display:none;align-items:center;justify-content:center;padding:16px}
.ovl.on{display:flex}
.modal{background:var(--card);border-radius:18px;width:100%;max-width:460px;padding:28px;max-height:92vh;overflow-y:auto;position:relative}
.modal h3{font-size:22px;font-weight:600;margin-bottom:8px}
.modal p.m-sub{font-size:15px;color:var(--t2);margin-bottom:18px}
.fld{width:100%;border:1px solid var(--bdr);border-radius:8px;padding:11px 14px;font-size:15px;font-family:inherit;color:var(--t1);background:var(--card);margin-bottom:10px}
.fld:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--t2);margin:6px 0 16px;cursor:pointer;line-height:1.5}
.consent input{margin-top:2px;width:16px;height:16px;accent-color:var(--em);flex-shrink:0;cursor:pointer}
.consent a{color:var(--em-lnk);text-decoration:underline}
.x{position:absolute;top:14px;right:16px;font-size:24px;color:var(--t2);background:none;border:none;cursor:pointer;line-height:1}

/* ── Уведомление ── */
/* ⚠️ Пустое уведомление всё равно имеет высоту, и сдвига на 120% не хватало: снизу
   на КАЖДОЙ странице торчала тёмная полоска (особенно заметно на телефоне, поймано
   при проверке 17.08). Прячем по-настоящему — видимостью, а не только сдвигом. */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(120%);background:var(--navy);color:#fff;padding:13px 20px;border-radius:8px;
  font-size:15px;z-index:200;transition:transform .3s ease,opacity .3s ease;max-width:90vw;text-align:center;
  opacity:0;visibility:hidden}
.toast.on{transform:translateX(-50%) translateY(0);opacity:1;visibility:visible}

@media (max-width:900px){
  .hero-split{grid-template-columns:minmax(0,1fr);gap:28px;padding:36px 20px 32px}
  .hero-split h1{font-size:30px;max-width:none}
  .hero-split .lead{font-size:15px}
}

@media (max-width:480px){
  /* Шапка на телефоне: логотип + две кнопки должны помещаться в ширину экрана */
  .hdr-in{gap:8px}
  .logo{font-size:15px;gap:8px}
  .logo-mark{width:22px;height:22px;font-size:13px}
  .nav .btn{padding:7px 11px;font-size:13px}
  .hero-btns .btn{width:100%}
}

@media (max-width:760px){
  h1{font-size:28px}
  h2{font-size:24px}
  .hero{padding:36px 0 30px}
  .logo-tag,.nav a.hide-sm{display:none}
  .nav{gap:12px}
  section{padding:36px 0}
  .queue{padding:20px}
  .cmp td:first-child{width:46%}
  .demo-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* пальцем по мелким полям не попасть — на телефоне поля и кнопки крупнее */
  .demo-f input,.demo-sel,.demo-qty input{min-height:44px;font-size:15px}
  .chip{padding:10px 14px;min-height:40px}
  .linky{min-height:40px}
  .soon-a{min-height:40px;display:inline-flex;align-items:center}
  .cmp-col{padding:16px 18px}
  .anchor h3{font-size:22px}
}

/* ── Баннер согласия на cookie ────────────────────────────────────────────────
   Появляется при первом заходе, пока выбор не сделан. Обе кнопки равноправны:
   баннер, где нельзя отказаться, — зафиксированное нарушение (АНАЛИЗ_P §5.1).
   Полоса внизу, а не окно по центру: не перекрывает содержимое и не выглядит
   как ловушка, из которой не выйти. */
#lhCookieBar{
  position:fixed; left:0; right:0; bottom:0; z-index:9999;
  background:var(--card); border-top:1px solid var(--bdr);
  box-shadow:0 -6px 24px rgba(10,37,64,.08);
  padding:14px 0 max(14px, env(safe-area-inset-bottom));
  animation:ckUp .22s ease-out;
}
@keyframes ckUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
@media (prefers-reduced-motion: reduce){ #lhCookieBar{animation:none} }
.ck-in{max-width:var(--maxw); margin:0 auto; padding:0 20px}
.ck-tx{font-size:13px; line-height:1.6; color:var(--t2); margin:0 0 12px; max-width:78ch}
.ck-row{display:flex; gap:10px; align-items:center; flex-wrap:wrap}
.ck-b{
  font-family:var(--font-ui); font-size:15px; font-weight:600; cursor:pointer;
  padding:9px 20px; border-radius:8px; border:1px solid var(--bdr);
  background:var(--card); color:var(--t1); min-height:40px;
}
.ck-b:hover{border-color:var(--t3)}
.ck-yes{background:var(--em); border-color:var(--em); color:#fff}
.ck-yes:hover{background:var(--em-dk); border-color:var(--em-dk)}
.ck-b:focus-visible{outline:2px solid var(--em-dk); outline-offset:2px}
.ck-l{font-size:13px; color:var(--em-lnk); margin-left:auto; text-decoration:none}
.ck-l:hover{text-decoration:underline}

@media (max-width:640px){
  /* Две кнопки в ряд на узком экране получаются мелкими — ставим в столбец
     на всю ширину, чтобы попадать пальцем. */
  .ck-tx{font-size:13px; margin-bottom:10px}
  .ck-row{flex-direction:column; align-items:stretch; gap:8px}
  .ck-b{width:100%; min-height:44px}
  .ck-l{margin:2px auto 0; text-align:center}
}

/* ══ Планировщик загрузки: страница инструмента и страница расчёта по ссылке ══
   До 01.08 инструмент жил на своей тёмной «неоновой» вёрстке — отдельный сайт
   внутри сайта (ДИЗАЙН_СИСТЕМА §10.2/§10.8). Теперь он на общей витрине. */
.pl-grid{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:16px;align-items:start}
.pl-card{background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:18px 20px}
.pl-card + .pl-card{margin-top:12px}
.pl-h{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px;margin-bottom:14px}
.pl-h .ico{color:var(--em-dk)}
.pl-lbl{display:block;font-size:13px;color:var(--t2);margin-bottom:4px}
.pl-in,.pl-sel{width:100%;border:1px solid var(--bdr);border-radius:8px;padding:9px 11px;font-size:15px;
  font-family:inherit;color:var(--t1);background:var(--card)}
.pl-in:focus,.pl-sel:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.pl-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}
.pl-row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}
.pl-chk{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--t2);margin-bottom:12px;line-height:1.5}
.pl-chk input{margin-top:2px;flex-shrink:0}
/* Без этого ссылки в подписи наследуют общий стиль (a{color:inherit;text-decoration:none})
   и выглядят обычным текстом — человек не понимает, что согласие и политику можно открыть
   (замечание Олега 04.08). Подчёркиваем явно. */
.pl-chk a{color:var(--em-lnk);text-decoration:underline}
.pl-facts{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--t2);margin-bottom:12px}
.pl-facts b{color:var(--t1);font-weight:600}
.pl-cap{font-size:13px;color:var(--t2);margin:14px 0 6px}
.pl-note{font-size:13px;color:var(--t2);margin-top:6px}
.pl-kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:4px}
.pl-kpi div{background:var(--bg-2);border-radius:8px;padding:12px 14px}
.pl-kpi span{display:block;font-size:13px;color:var(--t2)}
.pl-kpi b{font-size:22px;font-weight:600}
.pl-bad{margin-top:14px;background:#FEF2F2;border-radius:8px;padding:14px 16px}
.pl-bad-h{font-size:15px;font-weight:600;color:#B91C1C;margin-bottom:6px}
.pl-bad-r{font-size:13px;color:#7F1D1D;line-height:1.5}
.pl-bad-s{margin-top:6px;font-weight:500}
.pl-empty{text-align:center;color:var(--t2);padding:48px 20px}
.pl-empty .ico{width:32px;height:32px;color:var(--t3);margin:0 auto 10px;display:block}
.pl-items{display:flex;flex-direction:column;gap:8px}
.pl-item{display:flex;align-items:center;justify-content:space-between;gap:10px;
  border:1px solid var(--bdr);border-radius:8px;padding:10px 12px}
.pl-item-n{font-size:15px}
.pl-item-v{font-size:13px;color:var(--t2)}
.pl-x{background:none;border:none;cursor:pointer;color:var(--t2);font-family:inherit;font-size:15px;padding:4px 6px}
.pl-x:hover{color:#B91C1C}
.pl-dis{font-size:13px;color:var(--t2);line-height:1.5;margin-top:12px}

/* ── Хуки к подписке: строка после результата, не баннер (ДИЗАЙН_СИСТЕМА §10.8.3) ── */
.hook{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--bdr);
  margin-top:14px;padding-top:14px;font-size:15px;color:var(--t2)}
.hook .ico{color:var(--t2)}
.hook-a{margin-left:auto;background:none;border:1px solid var(--bdr);border-radius:8px;
  padding:8px 14px;font-size:15px;font-family:inherit;color:var(--t1);cursor:pointer}
.hook-a:hover{border-color:var(--t3)}
.hook-mail{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.hook-mail input{flex:1;min-width:200px;border:1px solid var(--bdr);border-radius:8px;padding:9px 12px;
  font-size:15px;font-family:inherit;color:var(--t1);background:var(--card)}
.hook-ok{font-size:13px;color:var(--em-lnk);margin-top:8px}
.hook-err{font-size:13px;color:#B91C1C;margin-top:8px}
.hook-quiet{font-size:13px;color:var(--t2);margin-top:12px}
.hook-quiet a{color:var(--em-lnk);border-bottom:1px solid #CFF4E6}
.hook-link{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}
.hook-link input{flex:1;min-width:220px;border:1px solid var(--bdr);border-radius:8px;padding:9px 12px;
  font-size:13px;font-family:inherit;color:var(--t2);background:var(--bg-2)}

@media (max-width:900px){
  .pl-grid{grid-template-columns:minmax(0,1fr)}
}

/* ── Варианты компоновки (АНАЛИЗ_O §20.1.4 п.3) ── */
.vr-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-bottom:14px}
.vr{display:flex;flex-direction:column;gap:2px;text-align:left;background:var(--card);border:1px solid var(--bdr);
  border-radius:14px;padding:12px 14px;font-family:inherit;cursor:pointer;transition:.15s}
.vr:hover{border-color:var(--t3)}
.vr-on{border-color:var(--em);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.vr-t{font-size:15px;font-weight:600;color:var(--t1)}
.vr-l{font-size:13px;color:var(--t1)}
.vr-n{font-size:13px;color:var(--t2)}
.vr-b{font-size:13px;font-weight:500;color:var(--em-dk);background:var(--em-lt);border-radius:999px;padding:2px 8px;margin-left:4px}
/* Тянуть можно только на виде сверху: на виде сбоку вертикаль — это высота,
   там перетаскивание означало бы не то, что человек ожидает. */
.pl-r[data-i]:not([data-i="-1"]){cursor:grab;touch-action:none}
.pl-r[data-i]:not([data-i="-1"]):active{cursor:grabbing}

/* ── Печать плана загрузки: на бумагу уходит только сам план ── */
.print-head{display:none}
@media print{
  /* На бумагу идут план, список мест и оси. Поля ввода — нет. */
  .hdr, footer, .hero, .zone-grey, #lhCookieBar, .toast,
  .hook, .vr-row, .no-print,
  #axleCard .pl-in, #axleCard .pl-lbl, #axleCard .pl-note:first-of-type{display:none !important}
  .pl-h{display:flex !important;font-size:15px;margin-bottom:8px}
  #planCard .pl-h, #planCard .pl-h button{display:none !important}
  body{background:#fff}
  section{padding:0}
  .pl-grid{display:block}
  .pl-card{border:0;padding:0;margin:0 0 12px}
  .print-head{display:block;margin-bottom:12px}
  .print-t{font-size:22px;font-weight:600}
  .print-s{font-size:13px;color:var(--t2);margin-top:2px}
  .pl-kpi{grid-template-columns:repeat(4,1fr)}
  .pl-r{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  a[href]:after{content:''}
}

/* ── Вопросик у поля: объяснение термина ────────────────────────────────────
   Повод — вопрос Олега 01.08 «не менее 1,5 €/кг — что это?». Правило: у каждого
   слова, которого человек может не знать, стоит «?» с объяснением по-русски.
   Делаем на <details>, а не на скриптах: работает без JS, открывается с клавиатуры
   и остаётся в исходном коде страницы — значит виден поисковым и ИИ-ботам. */
.hint{display:inline-block;vertical-align:-2px;margin-left:5px}
.hint>summary{list-style:none;cursor:pointer;width:17px;height:17px;border-radius:50%;
  border:1px solid var(--bdr);background:var(--card);color:var(--t2);font-size:11px;font-weight:600;
  line-height:15px;text-align:center;transition:.15s}
.hint>summary::-webkit-details-marker{display:none}
.hint>summary:hover{border-color:var(--em);color:var(--em-dk)}
.hint[open]>summary{border-color:var(--em);color:var(--em-dk);background:var(--em-lt)}
.hint-b{position:relative;background:var(--em-lt);border:1px solid #CFF4E6;border-radius:12px;
  padding:12px 14px;margin:8px 0 12px;font-size:13px;line-height:1.6;color:var(--t1)}
.hint-b b{font-weight:600}
.hint-b p{margin-bottom:8px}
.hint-b p:last-child{margin-bottom:0}
.hint-t{font-weight:600;margin-bottom:6px;font-size:13px}
/* Открытая подсказка занимает всю ширину под подписью, а не распирает строку */
.hint[open]{width:100%;margin-left:0}

/* ── Калькулятор таможенных платежей (АНАЛИЗ_O §20.2) ── */
.cu-lbl{display:flex;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--t2);margin-bottom:4px}
.cu-cur{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:8px;margin-bottom:12px}
.cu-seg{display:flex;gap:4px;margin-bottom:12px;flex-wrap:wrap}
.cu-seg button{flex:1;min-width:96px;background:var(--card);border:1px solid var(--bdr);border-radius:8px;
  padding:8px 6px;font-family:inherit;font-size:13px;color:var(--t2);cursor:pointer;transition:.15s}
.cu-seg button:hover{border-color:var(--t3)}
.cu-seg button.on{border-color:var(--em);background:var(--em-lt);color:var(--em-dk);font-weight:500}
.cu-total{font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1.15}
.cu-eff{font-size:13px;color:var(--t2);margin-top:2px}
.cu-rows{border-top:1px solid var(--bdr);margin-top:14px;padding-top:10px}
.cu-r{display:flex;justify-content:space-between;gap:12px;font-size:15px;padding:5px 0}
.cu-r span:first-child{color:var(--t2)}
.cu-r.tot{border-top:1px solid var(--bdr);margin-top:6px;padding-top:10px;font-weight:600}
.cu-r.tot span:first-child{color:var(--t1)}
.cu-why{background:var(--bg-2);border-radius:8px;padding:10px 12px;margin-top:12px;font-size:13px;
  color:var(--t2);line-height:1.55}
.cu-why b{color:var(--t1);font-weight:600}
.cu-pro{background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:16px 18px;margin-top:12px}
.cu-pro-t{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px;margin-bottom:6px}
.cu-pro-t .ico{color:var(--em-dk)}
.cu-pro p{font-size:13px;color:var(--t2);line-height:1.6;margin-bottom:10px}
@media print{
  .cu-seg,.hint{display:none !important}
}

/* ── Чек-лист документов (АНАЛИЗ_O §20.3.17) ── */
.dc-row{background:var(--card);border:1px solid var(--bdr);border-radius:12px;padding:12px 14px;margin-bottom:8px}
/* wrap обязателен: раскрытая подсказка занимает всю ширину строки и переносится
   под название. Без него на телефоне она сжималась в узкую колонку. */
.dc-head{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap}
.dc-head input[type=checkbox]{margin-top:3px;width:17px;height:17px;flex-shrink:0;accent-color:var(--em)}
.dc-name{flex:1;font-size:15px;line-height:1.4}
.dc-who{display:block;font-size:13px;color:var(--t2);margin-top:2px}
.dc-done .dc-name{color:var(--t2)}
.dc-done{border-color:#CFF4E6;background:var(--em-lt)}
.dc-tag{font-size:13px;color:var(--t2);white-space:nowrap}
.dc-sum{background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:18px 20px;position:sticky;top:76px}
.dc-big{font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1.1}
.dc-bar{height:6px;background:var(--bg-3);border-radius:999px;overflow:hidden;margin:10px 0 12px}
.dc-bar i{display:block;height:100%;background:var(--em);transition:width .25s}
.dc-basis{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--bg-2);border-radius:12px;padding:12px 14px;margin-bottom:14px}
.dc-basis select{max-width:260px;border:1px solid var(--bdr);border-radius:8px;padding:8px 10px;font-size:15px;
  font-family:inherit;background:var(--card);color:var(--t1)}
.dc-note{font-size:13px;color:var(--t2)}
@media print{
  .dc-basis,.hook,.dc-sum button,.no-print{display:none !important}
  .dc-row{break-inside:avoid;border-color:#ddd}
}

/* ── Проверка документов (АНАЛИЗ_O §20.3.14) ── */
.dv-doc{background:var(--card);border:1px solid var(--bdr);border-radius:12px;padding:12px 14px;margin-bottom:8px}
.dv-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:15px;margin-bottom:8px}
.dv-file{font-size:13px;color:var(--t3);flex:1;min-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-q{font-size:13px;color:#B45309;background:#FEF3C7;border-radius:999px;padding:1px 8px}
.dv-type{margin-bottom:8px}
.dv-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.dv-f{display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--t2)}
.dv-f i{font-style:normal;color:var(--t3);margin-left:4px}
.dv-f input{border:1px solid var(--bdr);border-radius:8px;padding:7px 9px;font-size:15px;font-family:inherit;
  background:var(--card);color:var(--t1);width:100%}
.dv-f input:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.dv-count{font-size:22px;font-weight:600;margin-bottom:10px}
.dv-i{border-radius:10px;padding:10px 12px;margin-bottom:8px}
.dv-e{background:#FEF2F2}
.dv-e .dv-t{color:#B91C1C}
.dv-e .dv-y{color:#7F1D1D}
.dv-w{background:#FFFBEB}
.dv-w .dv-t{color:#B45309}
.dv-w .dv-y{color:#92400E}
.dv-t{font-size:15px;font-weight:600;margin-bottom:3px;line-height:1.4}
.dv-y{font-size:13px;line-height:1.5}
.dv-ok{background:var(--em-lt);border:1px solid #CFF4E6;border-radius:10px;padding:12px 14px;margin-bottom:10px}
.dv-ok b{font-size:15px;color:var(--em-dk)}
.dv-ok p{font-size:13px;color:var(--t2);margin-top:4px;line-height:1.5}
/* Сводка источников и «где именно» под каждым расхождением (Олег 04.08) */
.dv-src{background:var(--bg-2);border-radius:10px;padding:10px 12px;margin-bottom:12px}
.dv-src-h{font-size:13px;font-weight:600;margin-bottom:6px}
.dv-src-r{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline;font-size:13px;color:var(--t2);padding:2px 0}
.dv-src-r b{color:var(--t1);font-weight:600}
.dv-src-f{color:var(--t3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
.dv-src-w{margin-left:auto}
.dv-src-list{display:flex;flex-direction:column;gap:2px;margin:6px 0 8px}
.dv-src-i{display:flex;gap:8px;align-items:baseline;font-size:13px;background:rgba(255,255,255,.55);border-radius:6px;padding:4px 8px}
.dv-src-d{flex:1;min-width:90px}
.dv-src-v{font-weight:600;font-variant-numeric:tabular-nums}
.dv-diff .dv-src-v{color:#B91C1C}
.dv-w .dv-diff .dv-src-v{color:#B45309}
/* Спокойное «к сведению»: не ошибка и не предупреждение, а подсказка «чего ещё нет». */
.dv-n{background:var(--bg-2)}
.dv-n .dv-t{color:var(--t1)}
.dv-n .dv-y{color:var(--t2)}

/* ── Подготовка спецификации (АНАЛИЗ_O §20.3.12) ─────────────────────────────
   Два разных вида одного документа: слева-снизу — редактируемая таблица (экран),
   справа — бланк ровно в том виде, в каком он уйдёт на печать. Человек всё время
   видит результат, а не форму «заполните 40 полей». */
.sp-doc{font-size:13px;line-height:1.5}
.sp-doc-h{text-align:center;border-bottom:1px solid var(--bdr);padding-bottom:10px;margin-bottom:12px}
.sp-doc-t{font-size:19px;font-weight:600;letter-spacing:-.01em}
.sp-doc-s{font-size:13px;color:var(--t2);margin-top:3px}
.sp-parties{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:12px}
.sp-party{background:var(--bg-2);border-radius:10px;padding:10px 12px}
.sp-party-t{font-size:13px;color:var(--t2);margin-bottom:3px}
.sp-party-n{font-size:15px;font-weight:600}
.sp-party-n i{font-style:normal;font-weight:400;color:var(--t3)}
.sp-party-a{font-size:13px;color:var(--t2);margin-top:2px}
.sp-facts{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--t2);margin-bottom:12px}
.sp-tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.sp-tbl{width:100%;border-collapse:collapse;font-size:13px}
.sp-tbl th,.sp-tbl td{border:1px solid var(--bdr);padding:5px 7px;text-align:left;vertical-align:top}
/* Заголовки переносятся, а не растягивают таблицу: 12 колонок с nowrap не влезали
   ни в предпросмотр, ни на лист А4 — правый край уезжал за экран. */
.sp-tbl th{background:var(--bg-2);font-weight:600}
.sp-tbl .sp-tot td:first-child{white-space:nowrap}
.sp-tbl th i{display:block;font-style:normal;font-weight:400;color:var(--t3);font-size:11px}
.sp-tbl .sp-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.sp-tbl .sp-tot td{background:var(--bg-2);font-weight:600}
.sp-sums{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px;color:var(--t2);margin-top:10px}
.sp-sums b{color:var(--t1);font-weight:600}
.sp-words{font-size:13px;color:var(--t2);margin-top:4px}
.sp-note-doc{font-size:13px;color:var(--t2);margin-top:10px}
.sp-signs{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-top:22px}
.sp-sign-t{font-size:13px;color:var(--t2)}
.sp-sign-l{border-bottom:1px solid var(--t3);height:26px}
/* Отметка «Подготовлено в LogistHelper» — вариант Б (Олег 04.08): тонкая строка
   со знаком L, без QR. Документ уходит в банк и таможню — метка не должна
   выглядеть как участие третьего лица в сделке. */
.sp-mark{display:flex;align-items:center;gap:6px;border-top:1px solid var(--bdr);margin-top:18px;
  padding-top:8px;font-size:11px;color:var(--t3)}
.sp-mark-l{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;
  border:1px solid var(--t3);border-radius:4px;font-size:10px;font-weight:600;line-height:1}

/* ── Образцы документов (АНАЛИЗ_O §20.3.15) ─────────────────────────────────
   Свой вид документа не заводим: образец рисуется теми же классами `.sp-*`,
   что и бланк спецификации, — иначе наши документы разъедутся между собой.
   Здесь только то, что есть у образца и нет у рабочего бланка: водяной знак
   и пояснения к полям. */
.sm-doc{position:relative;overflow:hidden;border:1px solid var(--bdr);border-radius:12px;padding:16px 18px;background:var(--card)}
/* Знак идёт ПОВЕРХ документа, а не под ним: под таблицей с белыми ячейками он
   пропадал, и середина образца выглядела как настоящий документ. */
.sm-wm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;
  user-select:none;-webkit-user-select:none;z-index:3}
.sm-wm span{transform:rotate(-24deg);font-size:clamp(38px,9vw,86px);font-weight:600;letter-spacing:.12em;
  color:rgba(174,174,178,.26);white-space:nowrap}
/* Цифра-сноска в бланке и та же цифра в пояснении под ним */
.sm-ref{color:var(--em-lnk);font-size:11px;font-weight:600;vertical-align:super;margin-left:2px}
.sm-notes{display:grid;gap:6px;margin-top:14px}
.sm-note{display:flex;gap:8px;font-size:13px;line-height:1.55;background:var(--bg-2);border-radius:8px;padding:8px 10px}
.sm-note b{color:var(--em-lnk);font-weight:600;flex-shrink:0}
.sm-note.key{background:var(--em-lt);border:1px solid #CFF4E6}
.sm-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.sm-cav{font-size:13px;color:var(--t2);line-height:1.55;margin-top:10px}
@media print{
  /* Образец печатают, чтобы показать поставщику «сделай так». Знак ОБРАЗЕЦ
     обязан остаться на бумаге — иначе распечатку примут за настоящий документ. */
  .sm-wm span{color:rgba(174,174,178,.34);-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sm-acts,.sm-notes{display:none !important}
}

/* Кнопки над бланком: главное действие — Excel (рабочий файл), PDF рядом второстепенным. */
.sp-acts{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sp-acts .btn{padding:7px 14px;font-size:13px}

/* Редактор позиций: таблица шире экрана — прокрутка ВНУТРИ блока, страница не едет. */
.sp-edit-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.sp-edit{border-collapse:collapse;font-size:13px}
.sp-edit th{font-weight:600;color:var(--t2);text-align:left;padding:0 4px 6px;white-space:nowrap}
.sp-edit td{padding:0 2px 4px}
.sp-edit .sp-i{color:var(--t3);padding-right:6px;font-variant-numeric:tabular-nums}
.sp-in{width:118px;border:1px solid var(--bdr);border-radius:8px;padding:6px 8px;font-size:13px;
  font-family:inherit;background:var(--card);color:var(--t1)}
.sp-in:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
/* Обязательное и пустое: без кода ТН ВЭД, страны и веса нетто документ вернут. */
.sp-need{border-color:#FCD34D;background:#FFFBEB}

@media print{
  /* На бумагу уходит ТОЛЬКО бланк: ни формы, ни объяснений, ни блока инструментов. */
  .sp-page section:not(#spMain){display:none !important}
  .sp-page .pl-card{break-inside:auto}
  .sp-doc{font-size:11px}
  .sp-tbl-wrap{overflow:visible}
  /* На листе прокрутки нет: длинное название переносится внутри ячейки,
     иначе таблица уезжает за поля и правые колонки не печатаются вовсе. */
  .sp-tbl{width:100%;table-layout:auto;font-size:10px}
  .sp-tbl td{word-break:break-word}
  .sp-tbl th,.sp-tbl td{border-color:#bbb;padding:3px 4px}
  .sp-tbl tr{break-inside:avoid}
  .sp-party{background:none;border:1px solid #ddd}
  .sp-mark{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
