/* =====================================================================
   AUTOPAPYRUS — дизайн-система (canon)
   Утверждена 2026-05-25. Источник: guides/index.html (Drive2-like).
   Принципы: один акцент (амбер), типографика держит иерархию, плотные
   карточки, тёмная шапка, светлый body. Без синего вообще.
   ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=JetBrains+Mono:wght@500;600&display=swap');

:root{
  /* нейтрали */
  --nav:#141414; --nav-2:#222;
  --bg:#efeeec; --surface:#ffffff; --paper:#f6f4ef;
  --ink:#141414; --ink-2:#4a4a4a; --muted:#8a8479;
  --line:#dcd9d1; --line-2:#c8c4b8; --rule:#1a1a1a;
  /* единственный акцент */
  --accent:#ea580c; --accent-d:#c2480a; --accent-soft:#fff1e6;
  /* состояние «в корзине» — единый зелёный на всём сайте */
  --incart:#0d9847; --incart-d:#0a7a37;
  /* единая ширина контента на всём сайте (= navbar/subbar) */
  --page-max:1280px;
  /* шрифты */
  --sans:'Manrope',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
}

/* ========= BASE ========= */
*{box-sizing:border-box;margin:0;padding:0}
/* Sticky footer: body — flex-колонка минимум на всю высоту вьюпорта,
   footer прижимается к низу через margin-top:auto (см. FOOTER).
   Работает на любой странице каркаса без доп. обёрток. */
html{height:100%}
body{font-family:var(--sans);font-size:14.5px;color:var(--ink);background:var(--bg);line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}
a{color:inherit;text-decoration:none;transition:color .12s}
a:hover{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
img{max-width:100%;display:block}
button{font:inherit;cursor:pointer}

/* ========= NAVBAR ========= */
.navbar{background:var(--nav);color:#fff;border-bottom:3px solid var(--accent);position:relative}
/* Шапка: [лого+тэглайн] [CTA по центру свободного места] [действия справа]. */
.navbar-inner{max-width:var(--page-max);margin:0 auto;padding:0 20px;height:54px;display:flex;align-items:center;gap:18px}
.nav-left{display:flex;align-items:center;gap:14px;min-width:0;flex:none}
.nav-left .tagline{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0}
.brand{display:flex;align-items:center;text-decoration:none;flex:none}
.brand:hover{text-decoration:none;opacity:.85}
.brand img{height:22px;width:auto;display:block}
.tagline{color:#a0a0a0;font-size:12px;border-left:1px solid #404040;padding-left:14px;margin-left:2px}

.nav-search{flex:1;max-width:620px;margin-left:auto;background:#fff;border:1px solid #fff;border-radius:6px;padding:0 0 0 14px;display:flex;align-items:center;gap:10px;height:38px;transition:box-shadow .15s,border-color .15s}
.nav-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgba(234,88,12,.25)}
.nav-search svg{width:16px;height:16px;color:var(--ink-2);flex:none}
.nav-search input{flex:1;background:transparent;border:0;outline:0;color:var(--ink);font-family:inherit;font-size:14px;font-weight:500;height:100%}
.nav-search input::placeholder{color:var(--muted);font-weight:400}
.nav-search button{background:var(--accent);border:0;color:#fff;font-weight:700;font-size:13px;padding:0 18px;height:100%;border-radius:0 5px 5px 0;letter-spacing:.02em}
.nav-search button:hover{background:var(--accent-d)}
.nav-search .kbd{font-family:var(--mono);font-size:10.5px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:2px 5px;background:var(--paper)}

.nav-actions{display:flex;gap:8px;align-items:center}
.nav-actions a{color:#cfcfcf;font-size:13px;padding:7px 12px;border-radius:5px;text-decoration:none}
.nav-actions a:hover{background:#252525;color:#fff;text-decoration:none}
.nav-actions .reg{color:#fff;font-weight:600;border:1px solid #4a4a4a}
.nav-actions .reg:hover{background:transparent;border-color:var(--accent);color:var(--accent)}

/* Гамбургер + мобильная панель (разметка — partials/navbar.html).
   На десктопе обоих нет: навигация — сайдбар и .nav-actions. */
.nav-burger{display:none;background:none;border:0;padding:10px;align-items:center;justify-content:center}
.nav-burger-box{display:block;width:20px;height:14px;position:relative}
.nav-burger-box span{position:absolute;left:0;width:100%;height:2px;background:#fff;border-radius:1px;transition:transform .18s,opacity .12s,top .18s}
.nav-burger-box span:nth-child(1){top:0}
.nav-burger-box span:nth-child(2){top:6px}
.nav-burger-box span:nth-child(3){top:12px}
.nav-burger.open .nav-burger-box span:nth-child(1){top:6px;transform:rotate(45deg)}
.nav-burger.open .nav-burger-box span:nth-child(2){opacity:0}
.nav-burger.open .nav-burger-box span:nth-child(3){top:6px;transform:rotate(-45deg)}
.nav-menu{display:none}

/* ========= SUB-BAR (амбер) ========= */
.subbar{background:var(--accent);color:#fff;font-size:13px}
.subbar-inner{max-width:var(--page-max);margin:0 auto;padding:7px 20px 7px 30px;display:flex;align-items:center;gap:16px}
.subbar a{color:#fff;font-weight:600;text-decoration:underline}
.subbar .crumbs{color:#fff;opacity:.92;font-size:12.5px}
.subbar .crumbs a{font-weight:400;text-decoration:none;opacity:.9}
.subbar .crumbs a:hover{text-decoration:underline}

/* ========= SHELL (sidebar | content) ========= */
.shell{max-width:var(--page-max);margin:0 auto;padding:20px;display:grid;grid-template-columns:200px 1fr;gap:24px;align-items:start}
.shell.solo{grid-template-columns:1fr;max-width:1080px}

.side{position:sticky;top:14px;display:flex;flex-direction:column}
.side a{display:block;padding:7px 12px;color:var(--ink);font-weight:600;text-decoration:none;font-size:14px;border-left:2px solid transparent;margin-left:-2px;transition:.12s}
.side a:hover{background:var(--surface);border-left-color:var(--accent);color:var(--ink);text-decoration:none}
.side a.cur{background:var(--surface);border-left-color:var(--accent);color:var(--ink);cursor:default}
.side hr{border:0;border-top:1px solid var(--line);margin:10px 0}
.side .label{font-size:10.5px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding:4px 12px;margin-top:6px;font-weight:700}
/* Длинный sticky-сайдбар: если контент выше вьюпорта — прокручивается внутри,
   чтобы нижняя карточка не «срезалась». padding-left:2px компенсирует margin-left:-2px
   у ссылок (иначе overflow-x спрятал бы 2px акцент-полоски на hover). Тонкий скроллбар. */
.side{max-height:calc(100vh - 28px);overflow:hidden auto;padding-left:2px;scrollbar-width:thin}
.side::-webkit-scrollbar{width:6px}
.side::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}

/* ========= MAIN ========= */
.main h1{font-size:28px;font-weight:800;letter-spacing:-.015em;margin-bottom:6px}
.main .sub{color:var(--ink-2);font-size:14.5px;margin-bottom:18px;max-width:760px}

/* ========= FEATURED CARD ========= */
.featured{background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden;display:grid;grid-template-columns:300px 1fr;gap:0;margin-bottom:22px}
.featured .ph{aspect-ratio:4/3;background:#222;overflow:hidden}
.featured .ph img{width:100%;height:100%;object-fit:cover}
.featured-cover{
  position:relative;overflow:hidden;
  background:linear-gradient(135deg,#1f1d1a 0%,#2a2724 50%,#181614 100%);
  display:flex;align-items:flex-end;padding:18px 20px;
  text-decoration:none;color:#fff;
}
.featured-cover::before{
  content:'';position:absolute;inset:0;
  background:repeating-linear-gradient(45deg,rgba(234,88,12,.06) 0 18px,transparent 18px 36px);
  pointer-events:none;
}
.featured-cover-label{
  font-family:var(--mono);font-size:13px;color:#e8d4b8;letter-spacing:.02em;
  position:relative;z-index:1;line-height:1.4;
  border-left:3px solid var(--accent);padding-left:10px;
}
.featured .body{padding:18px 22px}
.featured .cat{display:inline-block;background:var(--accent);color:#fff;font-size:11px;font-weight:700;padding:3px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}
.featured h2{font-size:24px;font-weight:800;letter-spacing:-.015em;line-height:1.18;margin-bottom:10px}
.featured h2 a{color:var(--ink);text-decoration:none}
.featured h2 a:hover{color:var(--accent);text-decoration:none}
.featured .lede{color:var(--ink-2);font-size:14.5px;margin-bottom:14px}
.featured .meta{font-size:12px;color:var(--muted);margin-bottom:12px}
.featured .meta b{color:var(--ink-2)}
.featured .open{color:var(--ink);font-weight:700;font-size:14px;border-bottom:2px solid var(--accent);padding-bottom:2px;display:inline-block}
.featured .open:hover{color:var(--accent);text-decoration:none}

/* ========= BLOCK (заголовок-секция с амбер-тиком) ========= */
.block{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:16px 18px 18px;margin-bottom:18px}
.block .head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px;border-bottom:2px solid var(--rule);padding-bottom:10px;gap:14px}
.block h3{font-size:17px;font-weight:800;letter-spacing:-.005em;display:flex;align-items:center;gap:9px}
.block h3::before{content:"";display:inline-block;width:7px;height:18px;background:var(--accent);border-radius:1px}
.block .all{font-size:12.5px;color:var(--ink);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.block .all:hover{color:var(--accent);text-decoration:none}
.block .head .badge{font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:600;background:var(--paper);border:1px solid var(--line);padding:2px 7px;border-radius:2px}

/* ========= FEED (двухколоночный список карточек) ========= */
.feed{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 22px}
.feed.cols-1{grid-template-columns:1fr}
.item{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}
.item:nth-last-child(-n+2){border-bottom:0;padding-bottom:0}
.item .ph{aspect-ratio:4/3;background:#222;border-radius:5px;overflow:hidden}
.item .ph img{width:100%;height:100%;object-fit:cover}
.item h4{font-size:15px;font-weight:700;line-height:1.25;letter-spacing:-.005em;margin-bottom:5px}
.item h4 a{color:var(--ink);text-decoration:none}
.item h4 a:hover{color:var(--accent);text-decoration:none}
.item .m{font-size:12px;color:var(--muted)}
.item .m .cat{color:var(--ink);font-weight:700;text-transform:uppercase;font-size:11px;letter-spacing:.04em;border-bottom:1.5px solid var(--accent);padding-bottom:1px}

/* ========= DEMAND LIST («что чинят сейчас») ========= */
.demand{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:0 28px}
.demand li{padding:9px 0;border-bottom:1px dotted var(--line-2);font-size:14px;display:flex;align-items:baseline;gap:12px}
.demand li:nth-last-child(-n+2){border-bottom:0}
.demand .n{font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:600;width:20px;text-align:right}
.demand a{color:var(--ink);text-decoration:none;flex:1;font-weight:500}
.demand a:hover{color:var(--accent);text-decoration:none}
.demand .v{font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:600;background:var(--paper);padding:2px 6px;border-radius:2px;border:1px solid var(--line)}

/* ========= BOOKS STRIP (полка) ========= */
.books{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.books.cols-3{grid-template-columns:repeat(3,1fr)}
.books.cols-4{grid-template-columns:repeat(4,1fr)}
.bk{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:10px;text-decoration:none;color:var(--ink);transition:.15s;position:relative;display:block}
.bk:hover{border-color:var(--rule);transform:translateY(-1px);text-decoration:none;box-shadow:0 3px 0 var(--accent)}
.bk .cv{aspect-ratio:3/4;border-radius:3px;background:#1a1a1a;margin-bottom:9px;padding:10px;display:flex;flex-direction:column;justify-content:space-between;color:#f3f0e8;position:relative;overflow:hidden;border-left:3px solid var(--accent)}
.bk .cv::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.04) 0%,transparent 40%);pointer-events:none}
.bk .cv.v2{background:#2b1d10;border-left-color:#c2480a}
.bk .cv.v3{background:#0f1e1c;border-left-color:#d97706}
.bk .cv.dig{background:linear-gradient(155deg,#1a3b30,#0f5b4a);border-left-color:#fff;color:#e8f5ef}
.bk .cv .t{font-weight:800;font-size:12px;line-height:1.18;letter-spacing:-.01em}
.bk .cv .p{font-size:9px;opacity:.6;letter-spacing:.06em;text-transform:uppercase}
.bk .cv .mk{font-size:9px;color:var(--accent);font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-top:1px solid rgba(255,255,255,.12);padding-top:6px;margin-top:6px}
.bk .cv.dig .mk{color:#7ddca3;border-top-color:rgba(255,255,255,.18)}
.bk h5{font-size:12.5px;font-weight:600;line-height:1.25;min-height:48px;color:var(--ink)}
.bk .price{font-weight:800;font-size:15px;margin-top:6px}
.bk .price .cur{color:var(--muted);font-weight:600;font-size:12px;margin-left:2px}

/* ========= AI BASELINE ANSWER (для search-live) ========= */
.ai-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:18px 22px;margin-bottom:18px;position:relative;border-left:3px solid var(--accent)}
.ai-card .lab{font-family:var(--mono);font-size:10.5px;color:var(--accent);font-weight:700;letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px}
.ai-card h2{font-size:20px;font-weight:800;letter-spacing:-.01em;line-height:1.22;margin-bottom:10px}
.ai-card .body{color:var(--ink-2);font-size:14.5px;line-height:1.55}
.ai-card .body p{margin-bottom:8px}
.ai-card .body p:last-child{margin-bottom:0}
.ai-card .body ul{margin:6px 0 10px 18px}
.ai-card .body code{font-family:var(--mono);font-size:12.5px;background:var(--paper);padding:1px 5px;border-radius:2px;border:1px solid var(--line);color:var(--ink)}
.ai-card .foot{display:flex;align-items:center;gap:14px;margin-top:14px;padding-top:12px;border-top:1px dotted var(--line-2);font-size:12px;color:var(--muted)}
.ai-card .foot .pro{color:var(--ink-2);font-weight:600}

/* ========= GENERATING STATE («собирается») ========= */
.gen{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:22px 24px;margin-bottom:18px;border-left:3px solid var(--accent);position:relative}
.gen .lab{font-family:var(--mono);font-size:10.5px;color:var(--accent);font-weight:700;letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px;display:flex;align-items:center;gap:8px}
.gen .lab::after{content:"";width:8px;height:8px;background:var(--accent);border-radius:50%;animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}
.gen h2{font-size:18px;font-weight:800;letter-spacing:-.005em;margin-bottom:14px}
.gen .steps{list-style:none;display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.gen .steps li{font-size:13.5px;color:var(--ink-2);padding-left:22px;position:relative}
.gen .steps li::before{content:"○";position:absolute;left:0;top:0;color:var(--muted);font-size:14px}
.gen .steps li.done{color:var(--muted)}
.gen .steps li.done::before{content:"●";color:var(--accent)}
.gen .steps li.active{color:var(--ink);font-weight:600}
.gen .steps li.active::before{content:"◐";color:var(--accent);animation:spin 1.4s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.gen .email{display:flex;gap:8px;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin-top:6px}
.gen .email input{flex:1;background:transparent;border:0;outline:0;font:inherit;font-size:13.5px;color:var(--ink)}
.gen .email input::placeholder{color:var(--muted)}
.gen .email button{background:var(--accent);border:0;color:#fff;font-weight:700;font-size:12.5px;padding:7px 14px;border-radius:4px}
.gen .email button:hover{background:var(--accent-d)}

/* ========= EMPTY STATE ========= */
.empty{background:var(--surface);border:1px dashed var(--line-2);border-radius:8px;padding:22px 24px;color:var(--muted);font-size:13.5px;text-align:center}
.empty h4{font-size:14px;color:var(--ink-2);font-weight:700;margin-bottom:5px}
.empty a{color:var(--ink);font-weight:600;border-bottom:1.5px solid var(--accent);padding-bottom:1px}

/* ========= QUERY ECHO (повторение запроса) ========= */
.q-echo{display:flex;align-items:baseline;gap:10px;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.q-echo .lab{font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.q-echo .q{font-size:22px;font-weight:800;color:var(--ink);letter-spacing:-.01em}

/* ========= GUIDE META (полоса бейджей: сложность, время, шаги) ========= */
.guide-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.guide-meta .m{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--ink-2);background:var(--paper);border:1px solid var(--line);padding:5px 10px;border-radius:2px;display:inline-flex;align-items:center;gap:6px}
.guide-meta .m b{color:var(--ink);font-weight:700}
.guide-meta .m.accent{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}

/* ========= PROVENANCE PILL (источник: ИИ/владельцы/редакция) ========= */
.prov{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;font-weight:600;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent);padding:5px 10px;border-radius:2px;margin-bottom:14px;text-transform:uppercase;letter-spacing:.04em}
.prov.owner{color:#075d3a;background:#e6f5ec;border-color:#0f5b4a}
.prov.editorial{color:#0f4570;background:#e7f0fa;border-color:#1a4675}

.steps-list{counter-reset:s;list-style:none;display:flex;flex-direction:column}
.steps-list li{counter-increment:s;position:relative;padding:14px 0 14px 48px;border-top:1px solid var(--line);color:var(--ink-2);line-height:1.55}
.steps-list li:first-child{border-top:0;padding-top:6px}
.steps-list li::before{content:counter(s);position:absolute;left:0;top:14px;width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;font-weight:800;font-size:13px;font-family:var(--mono);display:grid;place-items:center}
.steps-list li:first-child::before{top:6px}
.steps-list li .tc{display:inline-flex;align-items:center;gap:5px;margin-top:6px;font-family:var(--mono);font-size:11px;color:var(--muted);background:var(--paper);padding:3px 8px;border-radius:2px;border:1px solid var(--line)}
.steps-list li b{color:var(--ink);font-weight:700}
.steps-list li code{font-family:var(--mono);font-size:12.5px;background:var(--paper);padding:1px 5px;border-radius:2px;border:1px solid var(--line);color:var(--ink)}

/* ========= PARTS (запчасти) ========= */
.parts{display:flex;flex-direction:column;gap:10px}
.part{display:grid;grid-template-columns:48px 1fr auto;gap:14px;align-items:center;background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:4px;padding:12px 14px}
.part .ico{width:38px;height:38px;background:var(--ink);color:#fff;border-radius:4px;display:grid;place-items:center;font-size:16px}
.part .nm{font-weight:700;font-size:15px;color:var(--ink);letter-spacing:-.005em;margin-bottom:3px}
.part .oe{font-family:var(--mono);font-size:12px;color:var(--ink-2);font-weight:600;display:inline-flex;align-items:center;gap:6px}
.part .oe .lbl{color:var(--muted);font-weight:500;text-transform:uppercase;letter-spacing:.04em;font-size:10.5px}
.part .ft{font-size:12px;color:var(--ink-2);margin-top:4px}
.part .ft::before{content:"✓ ";color:#0f5b4a;font-weight:700}
.part .buy{background:var(--accent);color:#fff;font-weight:700;font-size:13px;padding:8px 14px;border-radius:4px;text-decoration:none;white-space:nowrap}
.part .buy:hover{background:var(--accent-d);color:#fff;text-decoration:none}

/* ========= PITFALLS («частые ошибки») ========= */
.pitfalls{list-style:none;display:flex;flex-direction:column;gap:8px}
.pitfalls li{font-size:14px;color:var(--ink-2);padding:8px 0 8px 30px;position:relative;line-height:1.5;border-bottom:1px dotted var(--line-2)}
.pitfalls li:last-child{border-bottom:0}
.pitfalls li::before{content:"!";position:absolute;left:0;top:8px;width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;font-family:var(--mono);font-weight:800;font-size:12px;display:grid;place-items:center}

/* ========= SOURCES (YouTube/книги/официальные) ========= */
.sources{list-style:none;display:flex;flex-direction:column}
.sources li{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.sources li:first-child{border-top:0;padding-top:2px}
.sources .yt{width:32px;height:22px;background:#ff0000;color:#fff;border-radius:3px;display:grid;place-items:center;flex:none;font-size:11px}
.sources .bk{width:32px;height:22px;background:var(--ink);color:#fff;border-radius:3px;display:grid;place-items:center;flex:none;font-size:11px;font-weight:700}
.sources a{font-size:14px;font-weight:600;color:var(--ink);flex:1;line-height:1.35}
.sources a:hover{color:var(--accent)}
.sources .src-meta{font-size:11.5px;color:var(--muted);font-family:var(--mono)}

/* ========= SIDE CARD (правая колонка контента) ========= */
.side-card{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:14px 16px;margin-bottom:14px}
.side-card h4{font-size:14px;font-weight:800;letter-spacing:-.005em;margin-bottom:6px;display:flex;align-items:center;gap:8px}
.side-card h4::before{content:"";display:inline-block;width:5px;height:14px;background:var(--accent);border-radius:1px}
.side-card p{font-size:13px;color:var(--ink-2);line-height:1.5;margin-bottom:10px}
.side-card .capture{display:flex;gap:6px;background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:6px}
.side-card .capture input{flex:1;background:transparent;border:0;outline:0;font:inherit;font-size:13px;padding:4px 6px;color:var(--ink)}
.side-card .capture input::placeholder{color:var(--muted)}
.side-card .capture button{background:var(--accent);color:#fff;border:0;font-weight:700;font-size:12px;padding:6px 12px;border-radius:3px}
.side-card .btn-ghost{display:block;text-align:center;background:transparent;border:1px solid var(--line-2);color:var(--ink);font-weight:700;font-size:13px;padding:9px 12px;border-radius:4px;text-decoration:none}
.side-card .btn-ghost:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}

/* ========= GUIDE LAYOUT (sidebar | main | aside) ========= */
.shell.guide{grid-template-columns:200px 1fr 280px}
@media(max-width:1100px){.shell.guide{grid-template-columns:200px 1fr}.guide-aside{display:none}}
@media(max-width:900px){.shell.guide{grid-template-columns:1fr}}

/* ========= FOOTER ========= */
/* Тёмный футер, прижатый к низу вьюпорта (margin-top:auto — часть
   sticky-footer каркаса, см. BASE). Раньше при коротком контенте висел
   посреди страницы чёрной полосой — теперь всегда у нижней кромки. */
footer{background:var(--nav);color:#9a9a9a;font-size:13px;margin-top:auto;padding:28px 20px 32px;text-align:center}
footer a{color:#cfcfcf}
footer .pubs{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin-bottom:14px;font-size:12px;color:#666}

/* ========= UTILITY ========= */
.mono{font-family:var(--mono)}
.muted{color:var(--muted)}

/* ========= HERO-SECTION (h1+sub+форма на главной) ========= */
.hero-section{background:linear-gradient(180deg,#fff 0%,var(--paper) 100%);
  border:1px solid var(--line);border-radius:10px;padding:28px 28px 22px;
  margin-bottom:22px;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.hero-section h1{margin-bottom:8px}
.hero-section .sub{margin-bottom:20px;color:var(--ink-2);font-size:15px;line-height:1.55;max-width:780px}

/* «Как это работает» — onboarding-стрип между hero и формой поиска.
   Карточки шагов уже стоят на .paper-фоне — head делаем компактнее. */
.how-block{margin-bottom:14px}
.how-block .head{margin-bottom:10px}

/* Disambiguation — карточки выбора варианта на /neo/, когда задача
   допускает несколько разных процедур («передние/задние колодки»).
   Структура как у .ai-wait — живёт внутри .block.search-block,
   собственного фона/рамки не имеет. */
.disambig{display:flex;flex-direction:column;gap:14px}
.disambig-h1{
  font-size:17px;font-weight:800;color:var(--ink);line-height:1.25;
  letter-spacing:-.005em;display:flex;align-items:center;gap:9px;
  padding-bottom:10px;border-bottom:2px solid var(--rule);margin-bottom:2px;
}
.disambig-h1::before{
  content:"";display:inline-block;width:7px;height:18px;
  background:var(--accent);border-radius:1px;
}
.disambig-car{font-size:14px;color:var(--ink-2);font-weight:600}
.disambig-sub{font-size:14px;color:var(--ink-2);line-height:1.5;
  padding:8px 12px;background:var(--accent-soft);border-radius:4px}
.disambig-cards{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:10px;margin-top:4px;
}
.disambig-card{
  display:flex;flex-direction:column;gap:6px;text-align:left;
  padding:18px 18px 16px;background:#fff;
  border:1px solid var(--line-2);border-radius:6px;
  cursor:pointer;transition:.15s;font-family:var(--sans);
}
.disambig-card:hover{
  border-color:var(--accent);box-shadow:0 4px 14px rgba(0,0,0,.07);
  transform:translateY(-1px);
}
.disambig-card-label{
  font-size:15px;font-weight:800;color:var(--ink);letter-spacing:-.005em;
}
.disambig-card-hint{
  font-size:12.5px;color:var(--ink-2);line-height:1.45;
}
@media (max-width:520px){
  .disambig-cards{grid-template-columns:1fr}
}
/* Мгновенный отклик на выбор варианта (клик по карточке) */
.disambig-cards.is-locked{pointer-events:none}
.disambig-cards.is-locked .disambig-card{opacity:.45;transition:opacity .15s}
.disambig-card.is-picked{opacity:1!important;border-color:var(--accent);
  background:#fff6f0;box-shadow:0 4px 14px rgba(234,88,12,.15);transform:none}
.disambig-card:disabled{cursor:default}
.disambig-status{display:flex;align-items:center;gap:9px;margin-top:16px;
  font-family:var(--sans);font-weight:700;font-size:14px;color:var(--accent)}
.disambig-status .cs-submit-dot{background:var(--accent)}

/* Хлебные крошки на /neo/ — компактный navigation hint над поиском */
.neo-crumbs{font-size:13px;color:var(--muted);margin-bottom:10px}
.neo-crumbs a{color:var(--ink-2);text-decoration:none}
.neo-crumbs a:hover{color:var(--accent);text-decoration:underline}

/* Форма поиска в составе обычного .block-контейнера: убираем у формы
   собственный фон/рамку/padding, чтобы не было «карточка в карточке».
   Дубль-лейбл «Что нужно починить?» внутри формы скрываем — он уже
   вынесен в .block .head как h3. */
.search-block{margin-bottom:22px}
.search-block #search-form .cs-form{background:transparent;border:0;box-shadow:none;padding:0;margin:0}
.search-block #search-form .cs-form-label{display:none}
.search-block #results:empty{display:none}
.search-block #results:not(:empty){margin-top:8px}

/* ========= NAVBAR SCROLL-CTA (заменяет navbar-search на главной) ========= */
/* CTA центрируется в промежутке между лого-блоком и действиями (margin auto). */
.nav-scroll-cta{margin:0 auto;flex:0 0 auto;width:420px;max-width:100%;background:#1f1f1f;border:1px solid #3a3a3a;border-radius:6px;padding:0 16px;display:flex;align-items:center;gap:10px;height:38px;color:#cfcfcf;text-decoration:none;transition:border-color .12s,color .12s}
.nav-scroll-cta:hover{border-color:var(--accent);color:#fff;text-decoration:none}
.nav-scroll-cta svg{width:16px;height:16px;flex:none;color:var(--accent)}
.nav-scroll-cta span{font-size:13px;font-weight:600;letter-spacing:.01em}

/* ========= CAR-SELECTOR ФОРМА (на главной и в search-live.html) ========= */
.cs-form{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:22px 24px;margin-bottom:18px}
.cs-form.hero{background:linear-gradient(180deg,#fff 0%,#faf7f2 100%);border-color:var(--line-2);box-shadow:0 1px 3px rgba(0,0,0,.04)}
.cs-form-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:700;margin-bottom:14px}
.cs-row{display:grid;gap:10px;margin-bottom:12px}
.cs-row-3{grid-template-columns:1.2fr 1.4fr 1.4fr}
.cs-row-2{grid-template-columns:1fr 2fr}
.cs-row-2-eq{grid-template-columns:1fr 1fr}
.cs-field{display:flex;flex-direction:column;gap:5px}
/* Подпись поля — всегда ОДНА строка: длинная подсказка (например «4 поколения ·
   выберите или укажите год» у ПОКОЛЕНИЯ) обрезается многоточием, а не переносит
   label на 2 строки и не сдвигает селект ниже соседей по ряду. */
.cs-field>span{font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs-field>span small{font-weight:400;color:var(--line-2);text-transform:none;letter-spacing:0;margin-left:6px}
.cs-field>select,.cs-field>input{padding:10px 12px;border:1px solid var(--line);border-radius:4px;font:inherit;font-size:14px;background:var(--surface);color:var(--ink);height:42px;box-sizing:border-box;font-family:var(--sans)}
.cs-field>select:focus,.cs-field>input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(234,88,12,.15)}
.cs-field>select:disabled,.cs-field>input:disabled{background:var(--paper);color:var(--muted);cursor:not-allowed}
.cs-task-input{padding:11px 14px !important;font-size:15px !important;height:46px !important}
.cs-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;align-items:center}
.cs-chips-label{font-size:11px;color:var(--muted);font-weight:600;margin-right:4px}
.cs-chip{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:14px;padding:5px 12px;font-size:12.5px;cursor:pointer;font-family:var(--sans)}
.cs-chip:hover{border-color:var(--accent);color:var(--accent)}
.cs-actions{display:flex;justify-content:space-between;align-items:center;gap:12px}
.cs-submit{background:var(--accent);color:#fff;font-weight:700;font-size:14px;padding:12px 22px;border:0;border-radius:4px;cursor:pointer;font-family:var(--sans)}
.cs-submit:hover{background:var(--accent-d)}
/* Loading-state на время lookup (200-500 мс между кликом и редиректом).
   Кнопка disabled, показывает «Проверяем нашу базу…» с пульсирующим
   дотом. Юзер видит что что-то происходит — без blank screen на /neo/. */
.cs-submit-busy{background:var(--accent-d);cursor:wait;opacity:.92;
  display:inline-flex;align-items:center;gap:10px;justify-content:center}
.cs-submit-busy:hover{background:var(--accent-d)}
.cs-submit-dot{width:9px;height:9px;border-radius:50%;background:#fff;
  animation:cs-submit-pulse 1s ease-in-out infinite;flex:none}
@keyframes cs-submit-pulse{0%,100%{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}
.cs-reset{background:transparent;color:var(--muted);font-size:12.5px;padding:6px 10px;border:0;cursor:pointer;font-family:var(--sans);text-decoration:underline}
.cs-reset:hover{color:var(--accent)}

/* ========= SIDE-MENU «скоро» (заглушки без href) ========= */
.side .soon{display:block;color:var(--muted);font-size:13px;padding:4px 0;font-style:italic;cursor:default}
.side .all-brands{font-size:12.5px;color:var(--muted);font-weight:500}
.side .all-brands:hover{color:var(--accent)}

/* ========= HEAD-MUTED — пометки «пример», «скоро» рядом с h3 ========= */
.head-muted{font-weight:400;font-size:12.5px;color:var(--muted);margin-left:10px;letter-spacing:0;text-transform:none}

/* ========= POPULAR REQUESTS — без счётчиков, чистые ссылки ========= */
.demand li .v{display:none}  /* счётчики (старая разметка) скрываем */
.demand li::after{content:"→";color:var(--muted);margin-left:auto;padding-left:8px;opacity:.5;transition:opacity .15s}
.demand li:hover::after{opacity:1;color:var(--accent)}

/* ========= PRICE — «от 690 ₽» с серым префиксом ========= */
.books .price .muted{color:var(--muted);font-weight:500;font-size:11.5px;margin-right:3px}

/* ========= RESPONSIVE ========= */
@media(max-width:900px){
  .shell{grid-template-columns:1fr}
  /* Левый сайдбар (марки/работы) на мобилке скрыт — та же навигация в панели гамбургера */
  .side{display:none}
  .featured{grid-template-columns:1fr}
  .feed{grid-template-columns:1fr}
  .demand{grid-template-columns:1fr}
  .books{grid-template-columns:repeat(2,1fr)}
  /* Мобильная шапка: [бургер | логотип по центру | спейсер] / CTA на всю ширину */
  .navbar-inner{display:grid;grid-template-columns:44px 1fr 44px;height:auto;padding:8px 10px 10px;gap:6px 0;align-items:center}
  .nav-burger{display:flex;grid-row:1;grid-column:1;justify-self:start}
  .nav-left{grid-row:1;grid-column:2;justify-self:center;gap:0}
  .nav-search{grid-row:2;grid-column:1/-1;width:auto;max-width:none;margin:0 4px}
  .nav-scroll-cta{position:static;transform:none;grid-row:2;grid-column:1/-1;width:auto;max-width:none;margin:0 4px;justify-content:center}
  .tagline{display:none}
  .nav-actions{display:none}
  .subbar .crumbs{display:none}
  /* Панель гамбургера: оверлей под шапкой, в цвет навбара */
  .nav-menu{display:block;position:absolute;top:100%;left:0;right:0;z-index:80;background:var(--nav);border-bottom:3px solid var(--accent);box-shadow:0 24px 48px rgba(0,0,0,.5);max-height:calc(100vh - 120px);overflow:auto}
  .nav-menu[hidden]{display:none}
  .nav-menu-inner{padding:4px 18px 20px}
  .nav-menu-label{font-size:10.5px;color:#8f8f8f;letter-spacing:.09em;text-transform:uppercase;font-weight:700;margin:16px 0 4px}
  .nav-menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
  .nav-menu a{display:block;color:#e4e4e4;text-decoration:none;font-weight:600;font-size:14.5px;padding:10px 2px;border-bottom:1px solid #272727}
  .nav-menu a:hover{color:#fff;text-decoration:none}
  .nav-menu a.nav-menu-all{color:#a8a8a8;font-weight:500}
  .nav-menu-acc{display:flex;gap:10px;padding-top:14px}
  .nav-menu-acc a{flex:1;text-align:center;border:1px solid #3a3a3a;border-radius:6px;padding:11px 8px;font-size:14px}
  .nav-menu-acc a:first-child{border-color:var(--accent);color:#fff}
  html.nav-menu-locked,html.nav-menu-locked body{overflow:hidden}
}
@media(max-width:640px){
  body{font-size:14px}
  h1{font-size:24px !important;line-height:1.2 !important}
  .sub{font-size:14px !important}
  .hero-section{padding:18px 14px;border-radius:6px}
  .cs-form{padding:16px 14px;margin-bottom:14px}
  .cs-row-3,.cs-row-2,.cs-row-2-eq{grid-template-columns:1fr;gap:8px;margin-bottom:8px}
  .cs-field>select,.cs-field>input{font-size:16px;height:46px}
  .cs-task-input{font-size:16px !important;height:50px !important}
  .cs-actions{flex-wrap:wrap;gap:8px}
  .cs-submit{flex:1;min-width:60%;padding:14px 18px;font-size:15px}
  .books{grid-template-columns:1fr}
  .subbar-inner{padding:7px 14px}
  .navbar .kbd{display:none}
}

/* ─── Combobox (search-in-dropdown для brand/model) ────────────── */
.cs-combo{position:relative;width:100%}
.cs-combo-input{
  width:100%;box-sizing:border-box;
  padding:9px 30px 9px 12px;font-size:14px;font-weight:500;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M3 4l3 4 3-4' fill='none' stroke='%23888' stroke-width='1.5'/></svg>") no-repeat right 10px center #fff;
  border:1px solid var(--line-2);border-radius:4px;
  color:var(--ink);outline:none;transition:border-color .12s,box-shadow .12s;
}
.cs-combo-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft,rgba(234,88,12,.12))}
.cs-combo-input:disabled,.cs-combo-disabled .cs-combo-input{
  background-color:#f5f4f0;color:var(--muted);cursor:not-allowed
}
.cs-combo-list{
  display:none;position:absolute;z-index:50;
  top:calc(100% + 4px);left:0;right:0;
  max-height:280px;overflow-y:auto;
  margin:0;padding:4px 0;
  list-style:none;
  background:#fff;border:1px solid var(--line);border-radius:6px;
  box-shadow:0 8px 24px rgba(0,0,0,.10),0 2px 6px rgba(0,0,0,.05);
  font-size:14px;
}
.cs-combo.open .cs-combo-list{display:block}
.cs-combo-list li{
  padding:8px 12px;cursor:pointer;color:var(--ink);
  border-left:2px solid transparent;
}
.cs-combo-list li[role=option]:hover,
.cs-combo-list li.cs-combo-hl{
  background:var(--accent-soft,#fef0e6);border-left-color:var(--accent)
}
.cs-combo-list li mark{
  background:transparent;color:var(--accent-d,#c2410c);font-weight:700;padding:0
}
.cs-combo-list .cs-combo-empty{
  color:var(--muted);font-style:italic;cursor:default;padding:10px 12px
}
.cs-combo-list .cs-combo-empty:hover{background:transparent;border-left-color:transparent}

/* =====================================================================
   AI PRECHECK — первые 1-3 секунды: pre-flight классификатор задачи.
   Цель: не показывать тяжёлый skeleton если задача очевидно не про авто
   (унитаз, ноут) — backend отказывает за ~1.5 сек.
   ===================================================================== */
.ai-precheck{
  background:var(--surface);border:1px solid var(--line);
  border-left:4px solid var(--accent);padding:18px 22px;border-radius:6px;
  display:flex;align-items:center;gap:14px;max-width:680px;
}
.ai-precheck-dot{
  width:10px;height:10px;border-radius:50%;background:var(--accent);
  animation:ai-precheck-pulse 1.1s ease-in-out infinite;flex:none;
}
.ai-precheck-title{font-size:14px;font-weight:700;color:var(--ink);line-height:1.3}
.ai-precheck-sub{font-size:12.5px;color:var(--muted);margin-top:2px;line-height:1.4}
@keyframes ai-precheck-pulse{
  0%,100%{transform:scale(1);   box-shadow:0 0 0 0 rgba(234,88,12,.5)}
  50%   {transform:scale(1.15); box-shadow:0 0 0 8px rgba(234,88,12,0)}
}

/* =====================================================================
   AI WAIT — ожидание AI-генерации руководства (renderSkeleton)
   Профи-паттерн: 4 шага с галочками, прогресс-бар, таймер, ротация фактов.
   Цель: пользователь видит движение, понимает что идёт, не уходит.
   ===================================================================== */
/* «Готовим инструкцию» — wait-UI рендерится внутри #results, который
   уже сидит в .block.search-block (та же ширина и фон/рамка, что у
   других блоков «Как это работает», «Новинки каталога» и т.п.).
   .ai-wait — это layout-обёртка БЕЗ собственного фона/рамки/padding,
   чтобы не получилась «карточка в карточке». Заголовок «Готовим
   инструкцию» рисуем стилем .block h3 (tick + 17px). */
.ai-wait{
  background:transparent;border:0;border-radius:0;padding:0;
  display:flex;flex-direction:column;gap:14px;max-width:none;
}
/* При показе wait-UI скрываем шапку «Что нужно починить?» и форму:
   .search-block становится самостоятельным блоком «Готовим инструкцию»
   с такой же шириной как все остальные. */
.search-block.is-busy > .head,
.search-block.is-busy > .neo-prebuild,
.search-block.is-busy > #search-form{display:none}
.ai-wait-eyebrow{
  font-size:11px;color:var(--muted);
  text-transform:uppercase;letter-spacing:.06em;font-weight:700;
}
.ai-wait-h1{
  font-size:17px;font-weight:800;color:var(--ink);line-height:1.25;
  letter-spacing:-.005em;
  display:flex;align-items:center;gap:9px;
  padding-bottom:10px;border-bottom:2px solid var(--rule);margin-bottom:2px;
}
.ai-wait-h1::before{
  content:"";display:inline-block;width:7px;height:18px;
  background:var(--accent);border-radius:1px;
}
.ai-wait-car{
  font-size:14px;color:var(--ink-2);font-weight:600;
}
.ai-wait-task{
  font-size:14px;color:var(--ink);font-weight:500;
  padding:8px 12px;background:var(--accent-soft);
  border-radius:4px;display:inline-block;align-self:flex-start;
}
.ai-wait-progress{
  height:3px;background:var(--line);border-radius:2px;overflow:hidden;
  margin:6px 0 4px;
}
.ai-wait-progress-fill{
  height:100%;width:0;background:var(--accent);
  border-radius:2px;
  transition:width .8s cubic-bezier(.4,0,.2,1);
}
.ai-steps{
  list-style:none;padding:0;margin:0;
  display:flex;flex-direction:column;gap:10px;
}
.ai-step{
  display:grid;grid-template-columns:22px 1fr auto;align-items:center;
  gap:12px;font-size:14px;color:var(--muted);
  transition:color .25s ease;
}
.ai-step-icon{
  width:18px;height:18px;border-radius:50%;
  border:1.5px solid var(--line-2);
  position:relative;flex:none;
  transition:all .3s ease;
}
.ai-step-label{line-height:1.35;min-width:0;overflow-wrap:anywhere}
.ai-step-time{
  font-family:var(--mono);font-size:11.5px;color:var(--muted);
  font-variant-numeric:tabular-nums;letter-spacing:-.01em;
}
.ai-step[data-state='active']{color:var(--ink);font-weight:600}
.ai-step[data-state='active'] .ai-step-icon{
  border-color:var(--accent);
  background:var(--accent-soft);
  animation:ai-step-pulse 1.6s ease-in-out infinite;
}
.ai-step[data-state='active'] .ai-step-icon::after{
  content:'';position:absolute;top:50%;left:50%;
  width:6px;height:6px;border-radius:50%;
  background:var(--accent);
  transform:translate(-50%,-50%);
}
.ai-step[data-state='active'] .ai-step-time{color:var(--accent);font-weight:600}
.ai-step[data-state='done']{color:var(--ink-2)}
.ai-step[data-state='done'] .ai-step-icon{
  border-color:var(--accent);background:var(--accent);
  animation:ai-step-pop .35s ease;
}
.ai-step[data-state='done'] .ai-step-icon::after{
  content:'';position:absolute;top:50%;left:50%;
  width:9px;height:5px;
  border-left:1.8px solid #fff;border-bottom:1.8px solid #fff;
  transform:translate(-50%,-65%) rotate(-45deg);
}
.ai-wait-meta{
  display:flex;justify-content:space-between;align-items:center;
  font-size:12.5px;color:var(--muted);
  padding-top:4px;
}
.ai-wait-elapsed{
  font-family:var(--mono);font-variant-numeric:tabular-nums;
  font-weight:600;color:var(--ink-2);
}
.ai-wait-fact{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:5px;padding:14px 16px;
  margin-top:4px;
}
.ai-wait-fact-label{
  font-size:10.5px;color:var(--accent);
  text-transform:uppercase;letter-spacing:.08em;
  font-weight:700;margin-bottom:6px;
}
.ai-wait-fact-body{
  font-size:13.5px;color:var(--ink);line-height:1.5;
  transition:opacity .22s ease,transform .22s ease;
}
.ai-wait-fact-fade{opacity:0;transform:translateY(4px)}
@keyframes ai-step-pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(234,88,12,.4)}
  50%   {box-shadow:0 0 0 6px rgba(234,88,12,0)}
}
@keyframes ai-step-pop{
  0%  {transform:scale(.7)}
  60% {transform:scale(1.15)}
  100%{transform:scale(1)}
}

@media (max-width:520px){
  .ai-wait{padding:18px 18px 16px}
  .ai-wait-h1{font-size:17px}
  .ai-step{font-size:13.5px}
  .ai-wait-fact-body{font-size:13px}
}

/* =====================================================================
   ГЛАВНАЯ — "Как это работает", "Свежие гайды", "Каталог"
   ===================================================================== */
.how-steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.how-steps > li{display:flex;gap:14px;padding:16px 18px;background:var(--paper);border-radius:6px;border:1px solid var(--line)}
.how-num{
  flex:none;width:34px;height:34px;border-radius:50%;
  background:var(--accent);color:#fff;font-family:var(--mono);
  font-size:15px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
}
/* min-height = 2 строки: одностр. заголовок («Выберите автомобиль») резервирует
   ту же высоту, что двухстрочные 2/3 → детальная инфа во всех карточках на одном
   уровне (просьба Яна). На узких экранах (1 колонка) заголовки и так однострочные. */
.how-body h4{font-size:15px;font-weight:800;color:var(--ink);margin:2px 0 4px;letter-spacing:-.005em;line-height:1.3;min-height:2.6em}
.how-body p{font-size:13.5px;color:var(--ink-2);line-height:1.5;margin:0}
@media (max-width:860px){
  .how-steps{grid-template-columns:1fr}
}

/* ГАЛЕРЕЯ ПОПУЛЯРНЫХ РУКОВОДСТВ — карточки с ТЁМНЫМ тайлом-иконкой (на главной
   обложки лучше на тёмном; страницы гайдов используют светлый .q-echo-cover). */
.guides-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.gg-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface);text-decoration:none;box-shadow:var(--sh-card);transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}
.gg-card:hover{transform:translateY(-2px);box-shadow:0 12px 26px -14px rgba(26,21,13,.32);border-color:var(--line-2);text-decoration:none}
.gg-cover{aspect-ratio:16/9;overflow:hidden;background:#141110}
.gg-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.gg-card:hover .gg-cover img{transform:scale(1.03)}
.gg-body{padding:12px 14px;display:flex;flex-direction:column;gap:5px}
/* Подпись машины: тёмная (видно) + фикс. высота 2 строки → заголовки ниже
   выравниваются по одному уровню независимо от длины названия. */
.gg-machine{font-family:var(--mono);font-size:11.5px;color:var(--ink-2);letter-spacing:.01em;line-height:1.35;
  min-height:calc(2 * 1.35em);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gg-task{font-weight:700;font-size:15px;color:var(--ink);letter-spacing:-.01em;line-height:1.25}
.gg-card:hover .gg-task{color:var(--accent)}
@media(max-width:760px){.guides-gallery{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.guides-gallery{grid-template-columns:1fr}}

.latest-guides{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0}
.latest-guides li{border-top:1px solid var(--line)}
.latest-guides li:first-child{border-top:0}
.latest-guides a{
  display:flex;align-items:baseline;gap:14px;padding:10px 0;
  text-decoration:none;color:var(--ink);
  transition:color .12s;
}
.latest-guides a:hover{color:var(--accent-d)}
.latest-guides a:hover .latest-task{color:var(--accent-d)}
.latest-machine{
  font-family:var(--mono);font-size:12px;color:var(--muted);
  letter-spacing:-.01em;flex:none;min-width:220px;
}
.latest-task{font-size:14px;color:var(--ink-2);font-weight:500;line-height:1.4}
@media (max-width:780px){
  .latest-guides a{flex-direction:column;gap:2px}
  .latest-machine{min-width:0}
}

.catalog-pitch{
  font-size:14px;color:var(--ink-2);line-height:1.55;
  margin:0 0 16px;max-width:720px;
}
.catalog-links{
  display:flex;flex-wrap:wrap;gap:8px;
}
.catalog-link{
  display:inline-block;padding:7px 14px;
  background:var(--paper);border:1px solid var(--line);border-radius:4px;
  font-size:13px;font-weight:600;color:var(--ink);
  text-decoration:none;transition:.12s;
}
.catalog-link:hover{
  background:var(--accent-soft);border-color:var(--accent);
  color:var(--accent-d);text-decoration:none;
}

/* =====================================================================
   NEW-BOOKS — карточки книг на главной (новинки каталога)
   ===================================================================== */
.new-books{
  display:grid;grid-template-columns:repeat(4,1fr);gap:14px;
}

/* =====================================================================
   NB-CARD — карточка книги. Та же разметка что на site/index.html.j2
   (главная — «Новинки каталога»). Используется компонентом
   templates/components/_book_card.html в боковой колонке guide-страницы.

   При изменении вида книги — менять В ОДНОМ МЕСТЕ (или здесь, или в
   site/assets/design.css — оба должны быть синхронизированы).
   ===================================================================== */
.nb{
  display:flex;flex-direction:column;text-decoration:none;color:var(--ink);
  background:#fff;border:1px solid var(--line);border-radius:8px;
  overflow:hidden;transition:transform .15s,border-color .15s,box-shadow .15s;
  cursor:pointer;position:relative;
}
/* Кнопка «в избранное» — правый верхний угол карточки */
.nb-fav{
  position:absolute;top:8px;right:8px;z-index:3;
  width:32px;height:32px;border:0;border-radius:50%;
  background:rgba(255,255,255,.9);color:#c0392b;
  font-size:17px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 1px 4px rgba(0,0,0,.12);transition:transform .12s,background .12s;
}
.nb-fav:hover{transform:scale(1.12);background:#fff}
.nb:hover{
  border-color:var(--accent);box-shadow:0 6px 18px rgba(0,0,0,.10);
  transform:translateY(-2px);text-decoration:none;color:var(--ink);
}
.nb-gallery{
  position:relative;aspect-ratio:4/5;background:#fff;
  overflow:hidden;padding-bottom:22px;
}
/* Плавный переход галерея → body вместо жёсткой линии:
   1. лёгкий vignette внизу галереи (тень обложки на «листке»)
   2. inset-shadow сверху body — обложка визуально «лежит» на нём
   Гораздо мягче чем border-bottom:1px solid. */
.nb-gallery::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:24px;
  background:linear-gradient(to bottom,
    rgba(0,0,0,0) 0%,
    rgba(0,0,0,.04) 100%);
  pointer-events:none;z-index:1;
}
.nb-body{box-shadow:inset 0 1px 0 rgba(0,0,0,.04)}
.nb-photo{
  position:absolute;inset:0;
  width:100%;height:100%;object-fit:contain;
  padding:14px;box-sizing:border-box;background:#fff;display:block;
  opacity:0;visibility:hidden;transition:opacity .2s;pointer-events:none;
}
.nb-photo-active{opacity:1;visibility:visible}

/* Стрелки prev/next — появляются на hover */
.nb-arr{
  position:absolute;top:50%;transform:translateY(-50%);
  width:36px;height:36px;background:rgba(255,255,255,.92);
  border:1px solid var(--line);border-radius:50%;cursor:pointer;
  font-size:22px;line-height:1;color:var(--ink);
  display:flex;align-items:center;justify-content:center;
  opacity:0;transition:opacity .15s,background .12s;
  font-weight:300;font-family:Arial,sans-serif;
  z-index:2;padding:0;padding-bottom:3px;
}
.nb-arr:hover{background:#fff;border-color:var(--accent);color:var(--accent-d)}
.nb-arr-prev{left:8px}
.nb-arr-next{right:8px}
.nb:hover .nb-arr{opacity:1}
.nb-gallery{
  position:relative;aspect-ratio:4/5;background:#fff;
  overflow:hidden;padding-bottom:22px;
}
/* Точки внизу */
.nb-dots{
  position:absolute;bottom:6px;left:50%;transform:translateX(-50%);
  display:flex;gap:5px;z-index:2;
}
.nb-dot{
  width:7px;height:7px;border-radius:50%;
  background:rgba(20,20,20,.25);border:0;cursor:pointer;padding:0;
  transition:background .15s,width .15s;
}
.nb-dot-active{background:var(--accent);width:18px;border-radius:4px}
.nb-dot:hover{background:rgba(20,20,20,.5)}
.nb-dot-active:hover{background:var(--accent)}
.nb-body{
  box-shadow:inset 0 1px 0 rgba(0,0,0,.04);
  padding:11px 13px 12px;
  display:flex;flex-direction:column;gap:5px;flex:1;
  text-decoration:none;color:var(--ink);
}
.nb-body:hover{text-decoration:none;color:var(--ink)}
.nb-pub{
  font-family:var(--mono);font-size:9.5px;color:var(--accent-d);
  letter-spacing:.06em;text-transform:uppercase;font-weight:700;
}
.nb-name{
  font-size:12.5px;font-weight:700;color:var(--ink);line-height:1.35;
  letter-spacing:-.005em;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;
  overflow:hidden;
}
.nb-price{
  font-size:14px;font-weight:800;color:var(--ink);margin-top:auto;
  font-variant-numeric:tabular-nums;padding-top:5px;
}
.nb-price .muted{font-size:10.5px;font-weight:500;color:var(--muted)}
.nb-price .cur{font-size:11px;font-weight:600;color:var(--ink-2)}

/* Кнопки CTA на карточке (как .b-actions на странице книги).
   Двойная специфичность .nb-card + !important на color/background чтобы
   родительские стили (.main a:hover{color:accent}, обёртки в side-card
   на странице гайда) не перебивали. */
.nb-actions{
  display:flex;flex-wrap:wrap;gap:5px;
  padding:0 13px 12px;margin-top:-2px;
}
/* .main a:hover в guide.css перебивает цвета кнопок (становятся рыжими).
   Поэтому используем удвоенную специфичность .nb .nb-btn + !important
   на color/background. */
.nb .nb-btn{
  flex:1;min-width:0;display:inline-flex;align-items:center;
  justify-content:center;padding:8px 10px;font-size:13px;
  font-weight:700;border-radius:5px;text-decoration:none !important;
  text-align:center;letter-spacing:.005em;transition:.12s;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.nb .nb-btn-primary{
  background:var(--accent) !important;color:#fff !important;
  border:1px solid var(--accent) !important;
}
.nb .nb-btn-primary:hover{
  background:var(--accent-d) !important;border-color:var(--accent-d) !important;
  color:#fff !important;
}
.nb .nb-cart-in{
  background:var(--incart) !important;border-color:var(--incart) !important;
  color:#fff !important;
}
/* «В корзине» на детальной странице книги (.b-btn-primary) — тот же
   зелёный. Правило глобальное, чтобы цвет жил в одном месте. */
.b-btn-primary.b-cart-in{background:var(--incart)}
.b-btn-primary.b-cart-in:hover{background:var(--incart-d)}
.nb .nb-cart-in:hover{
  background:var(--incart-d) !important;border-color:var(--incart-d) !important;
  color:#fff !important;
}
.nb .nb-btn-secondary{
  background:#fff !important;color:var(--ink) !important;
  border:1px solid var(--line-2) !important;
}
.nb .nb-btn-secondary:hover{
  border-color:var(--accent) !important;color:var(--accent-d) !important;
}
/* «Подписан» — состояние кнопки .js-notify-modal после успешной подписки */
.nb .nb-btn-secondary.nb-notify-done,
.nb .nb-btn-secondary.nb-notify-done:hover{
  background:#f0f9f2 !important;color:#16a34a !important;
  border-color:#bfe6cb !important;cursor:default;opacity:1;
}

/* ─── Notify-модалка «Сообщить о появлении» (карточка книги) ───
   В карточке видна только кнопка .js-notify-modal; клик открывает overlay
   (строится в book-card.js). Тело окна: форма email → подтверждение. */
.nb-nm-overlay{
  position:fixed;inset:0;z-index:1000;
  display:flex;align-items:center;justify-content:center;
  padding:16px;
  background:rgba(20,17,16,.55);
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  animation:nbNmFade .16s ease;
}
.nb-nm-overlay[hidden]{display:none}
html.nb-nm-lock{overflow:hidden}
.nb-nm{
  position:relative;width:100%;max-width:380px;
  background:var(--surface);color:var(--ink);
  border:1px solid var(--line);border-radius:14px;
  padding:26px 24px 24px;
  box-shadow:0 24px 60px -18px rgba(20,17,13,.5);
  animation:nbNmRise .18s ease;
}
.nb-nm--done{text-align:center}
.nb-nm-close{
  position:absolute;top:8px;right:10px;
  width:30px;height:30px;padding:0;line-height:1;
  border:0;background:none;cursor:pointer;
  font-size:24px;color:var(--muted);border-radius:6px;
}
.nb-nm-close:hover{color:var(--ink);background:var(--paper)}
.nb-nm-title{margin:0 0 6px;font-size:18px;font-weight:800;letter-spacing:-.01em;color:var(--ink)}
.nb-nm-sub{margin:0 0 16px;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.nb-nm--done .nb-nm-sub{margin-bottom:18px}
.nb-nm-form{display:flex;flex-direction:column;gap:10px}
.nb-nm-input{
  width:100%;padding:11px 12px;font-size:14px;
  border:1px solid var(--line-2);border-radius:8px;
  background:#fff;color:var(--ink);
}
.nb-nm-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
/* Кнопки модалки задаём самостоятельно: окно живёт в <body>, вне .nb,
   поэтому styling `.nb .nb-btn` до него не достаёт. */
.nb-nm-submit,.nb-nm-ok{
  display:inline-flex;align-items:center;justify-content:center;
  width:100%;padding:11px 14px;font-size:14px;font-weight:700;
  border:1px solid var(--accent);border-radius:8px;cursor:pointer;
  background:var(--accent);color:#fff;text-decoration:none;transition:.12s;
}
.nb-nm-submit:hover,.nb-nm-ok:hover{background:var(--accent-d);border-color:var(--accent-d)}
.nb-nm-submit:disabled{opacity:.6;cursor:default}
.nb-nm-ok{margin-top:4px}
.nb-nm-status{font-size:12.5px;color:#b91c1c;min-height:1em}
.nb-nm-done-ic{
  width:46px;height:46px;margin:0 auto 12px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:var(--accent-soft);color:var(--accent);
  font-size:26px;font-weight:700;
}
@keyframes nbNmFade{from{opacity:0}to{opacity:1}}
@keyframes nbNmRise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.nb-nm-overlay,.nb-nm{animation:none}}

@media (max-width:1100px){
  .new-books{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:760px){
  .new-books{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:480px){
  .new-books{grid-template-columns:1fr;gap:12px}
  .nb-cover{aspect-ratio:16/9}
}

/* ==================================================
   Блоки, добавленные на страницах /guides/ и /cart/
   ================================================== */

/* CTA-ссылка справа в subbar — короткий путь в каталог книг.
   Призыв слабее основного h1/buy, чтобы не отвлекать от чтения гайда. */
.subbar-trust{
  margin-left:auto;color:#fff;opacity:.9;font-size:12.5px;
  font-weight:600;letter-spacing:.005em;white-space:nowrap;
  text-decoration:none;border-bottom:1px solid rgba(255,255,255,.3);
  padding-bottom:1px;transition:opacity .12s,border-color .12s;
}
.subbar-trust:hover{opacity:1;border-bottom-color:#fff;text-decoration:none;color:#fff}
@media(max-width:760px){.subbar-trust{display:none}}

/* ====================================================================
   SIDE-CATS — навигация по системам автомобиля (стиль Haynes/ALLDATA)
   Используется на страницах /guides/* — левый sidebar.
   ==================================================================== */
.side-cats{gap:0}
.side-cats .side-top{
  display:block;padding:6px 12px;font-size:13px;font-weight:600;
  color:var(--ink-2);border-left:2px solid transparent;margin-left:-2px;
  transition:.12s;text-decoration:none;
}
.side-cats .side-top:hover{background:var(--surface);border-left-color:var(--accent);color:var(--ink)}

.side-machine{
  margin:14px 0 8px;padding:10px 12px;background:var(--paper);
  border-left:3px solid var(--accent);border-radius:0 4px 4px 0;
}
.side-machine-label{
  font-size:10px;color:var(--muted);letter-spacing:.08em;
  text-transform:uppercase;font-weight:700;margin-bottom:3px;
}
.side-machine-name{
  font-size:14px;font-weight:800;color:var(--ink);line-height:1.3;
  letter-spacing:-.005em;
}
.side-machine-gen{font-size:12px;font-weight:600;color:var(--ink-2)}

.side-cat{margin:0;padding:0;border-bottom:1px solid var(--line)}
.side-cat:first-of-type{border-top:1px solid var(--line)}
.side-cat-head{
  display:flex;align-items:center;gap:8px;padding:9px 12px;
  font-size:13px;font-weight:600;color:var(--ink);
  cursor:pointer;user-select:none;list-style:none;
  border-left:2px solid transparent;margin-left:-2px;
  transition:background .12s;
}
.side-cat-head::-webkit-details-marker{display:none}
.side-cat-head::marker{display:none}
.side-cat-head:hover{background:var(--surface)}
/* Текущая категория: extra-bold тёмный текст (как .side-machine-name).
   Без амбер-цвета — фон+полоска у active-гайда внутри уже сигнализируют. */
.side-cat--current > .side-cat-head{
  font-weight:800;color:var(--ink);
}
.side-cat-title{flex:1;letter-spacing:-.005em}
.side-cat-count{
  font-family:var(--mono);font-size:11px;font-weight:600;
  color:var(--muted);background:var(--line);padding:1px 7px;border-radius:8px;
  font-variant-numeric:tabular-nums;line-height:1.5;
}
/* Шеврон ▸ → ▾ (CSS-only через border) */
.side-cat-chev{
  width:0;height:0;flex:none;
  border-top:4px solid transparent;border-bottom:4px solid transparent;
  border-left:5px solid var(--muted);
  transition:transform .15s ease;
  margin-left:-2px;
}
.side-cat[open] > .side-cat-head .side-cat-chev{
  transform:rotate(90deg);
}

/* Active гайд в списке — тот же стиль что у блока .side-machine
   (бежевый paper фон + амбер-полоска 3px слева). */
.side-cat-active{position:relative}
.side-cat-active > span[aria-current]{
  display:block;padding:6px 12px 6px 22px;font-size:12.5px;
  color:var(--ink);font-weight:700;line-height:1.35;
  background:var(--paper);
  border-left:3px solid var(--accent);margin-left:-3px;
  border-radius:0 4px 4px 0;
}

.side-cat-list,.side-cat-suggestions{
  list-style:none;margin:0;padding:0;
}
.side-cat-list li,.side-cat-suggestions li{margin:0;padding:0}
.side-cat-list{padding-bottom:6px}
.side-cat-list a{
  display:block;padding:5px 12px 5px 24px;font-size:12.5px;
  color:var(--ink-2);font-weight:500;line-height:1.35;
  border-left:2px solid transparent;margin-left:-2px;
  text-decoration:none;transition:.12s;
}
.side-cat-list a:hover{
  background:var(--surface);color:var(--ink);
  border-left-color:var(--line-2);
}
.side-cat-status{
  font-size:10px;color:var(--muted);margin-left:6px;
  font-weight:500;
}

.side-cat-suggestions{padding-bottom:8px}
.side-cat-suggest{
  display:flex;align-items:flex-start;gap:7px;
  padding:4px 12px 4px 14px;font-size:12px;
  color:var(--muted);font-weight:500;line-height:1.35;
  border-left:2px dashed transparent;margin-left:-2px;
  text-decoration:none;transition:.12s;
}
.side-cat-suggest:hover{
  color:var(--accent-d);background:var(--accent-soft);
  border-left-color:var(--accent);
}
.side-cat-suggest-plus{
  font-family:var(--mono);font-size:14px;color:var(--accent);
  font-weight:800;line-height:1;flex:none;width:14px;text-align:center;
  margin-top:1px;
}

@media (max-width: 820px){
  .side-cats{position:static}
  .side-cat-list a{padding-left:24px}
}

/* =====================================================================
   GUIDE-REPORT — кнопка «сообщить о неточности» под гайдом
   ===================================================================== */
.guide-report{margin:24px 0 12px}
.report-details{
  background:var(--paper);border:1px dashed var(--line-2);
  border-radius:6px;padding:0;
}
.report-summary{
  display:flex;align-items:center;gap:10px;
  padding:14px 18px;cursor:pointer;user-select:none;
  font-size:13.5px;color:var(--ink-2);font-weight:500;
  list-style:none;
}
.report-summary::-webkit-details-marker{display:none}
.report-summary::marker{display:none}
.report-summary-icon{
  width:22px;height:22px;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--accent-soft);color:var(--accent);
  border-radius:50%;font-size:13px;font-weight:700;
}
.report-summary-cta{
  color:var(--accent-d);font-weight:700;text-decoration:underline;
  text-underline-offset:3px;text-decoration-thickness:1px;
}
.report-details[open] .report-summary{
  border-bottom:1px dashed var(--line-2);
}

.report-form{padding:14px 18px 18px}
.report-thanks{
  padding:14px 18px;font-size:13.5px;color:var(--ink);line-height:1.5;
}
.report-label{display:block;margin-bottom:12px}
.report-label-text{
  display:block;font-size:12px;color:var(--ink-2);font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px;
}
.report-optional{
  font-weight:500;color:var(--muted);text-transform:none;letter-spacing:0;
}
.report-textarea,.report-input{
  width:100%;padding:9px 11px;font-family:inherit;font-size:13.5px;
  color:var(--ink);background:#fff;
  border:1px solid var(--line);border-radius:4px;outline:none;
  box-sizing:border-box;transition:border-color .12s,box-shadow .12s;
}
.report-textarea{min-height:90px;resize:vertical;line-height:1.45}
.report-textarea:focus,.report-input:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(234,88,12,.18);
}
.report-hint{
  display:block;font-size:11.5px;color:var(--muted);margin-top:4px;
}
.report-actions{
  display:flex;align-items:center;gap:14px;margin-top:6px;
}
.report-submit{
  padding:9px 18px;background:var(--accent);color:#fff;
  border:0;border-radius:4px;font-weight:700;font-size:13px;
  letter-spacing:.01em;cursor:pointer;transition:background .12s;
}
.report-submit:hover{background:var(--accent-d)}
.report-submit:disabled{background:var(--muted);cursor:default}
.report-status{font-size:12.5px;color:var(--ink-2)}
.report-status-error{color:#c0392b;font-weight:600}

/* ========= STEPS LIST (нумерованные с амбер-кружком + таймкод) ========= */
/* ========= PHASES (группировка шагов по фазам) ========= */
.phases{counter-reset:s;display:flex;flex-direction:column;gap:8px}
.phases .steps-list{counter-reset:none}
.phase{border:1px solid var(--line);border-radius:6px;background:var(--surface,#fff);overflow:hidden}
.phase[open]{border-color:var(--accent)}
.phase-head{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;background:var(--paper);user-select:none;list-style:none}
.phase-head::-webkit-details-marker{display:none}
.phase-head::after{content:"▾";margin-left:auto;color:var(--muted);font-size:14px;transition:transform .15s ease}
.phase[open] .phase-head::after{transform:rotate(180deg)}
.phase-num{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;background:var(--accent-soft,#fef0e6);padding:3px 8px;border-radius:3px;border:1px solid var(--accent);flex:none}
.phase-title{font-size:15px;font-weight:700;color:var(--ink);flex:1;text-transform:none;letter-spacing:-.005em}
.phase-count{font-size:12px;color:var(--muted);font-family:var(--mono);flex:none;margin-right:8px}
.phase[open] .steps-list{padding:6px 18px 14px 18px}
.phase:not([open]) .steps-list{display:none}
.hero-section #search-form .cs-form{background:#fff;box-shadow:0 2px 8px rgba(20,20,20,.06);border-color:var(--line-2)}
.hero-section #results:empty{display:none}
.hero-section #results:not(:empty){margin-top:8px}
.nb-reason{
  font-size:11px;color:var(--ink-2);font-style:italic;line-height:1.4;
}

/* Кнопки CTA */
.nb-actions{
  display:flex;flex-wrap:wrap;gap:5px;
  padding:0 13px 12px;margin-top:-2px;
}

/* ─── Запчасти-список — компактные строки с гайкой-буллетом ─── */
.parts-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.parts-item{
  display:flex;align-items:flex-start;gap:10px;
  padding:10px 12px;background:var(--paper);
  border:1px solid var(--line);border-radius:5px;
  font-size:14px;line-height:1.45;color:var(--ink);
}
.parts-item:hover{border-color:var(--accent-soft)}
.parts-bullet{
  flex:none;font-size:15px;line-height:1.4;
  filter:saturate(.8);  /* нейтрализуем «эмодзи»-яркость */
}
.parts-text{flex:1;min-width:0}
/* ═══════════════════════════════════════════════════════════════════
   ПОЛИРОВКА (2026-07) — глубина, сдержанность акцента, жизнь при hover.
   Только визуал (тени / hover / типографика / ритм). Разметку и логику
   не трогает. Аддитивный слой в конце файла — легко откатить целиком.
   ═══════════════════════════════════════════════════════════════════ */
:root{
  --sh-card:0 1px 2px rgba(26,21,13,.05),0 14px 30px -20px rgba(26,21,13,.18);
  --sh-hover:0 6px 14px rgba(26,21,13,.06),0 26px 50px -24px rgba(26,21,13,.30);
  --r-card:12px;
}
/* 1+5 — глубина и единый радиус на карточках-контейнерах */
.block,.featured,.side-card,.ai-card,.hero-section{border-radius:var(--r-card);box-shadow:var(--sh-card)}
.cs-form{border-radius:var(--r-card)}
.cs-form.hero{box-shadow:var(--sh-card)}
/* 3 — жизнь при наведении на кликабельных карточках */
.featured{transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease}
.featured:hover{box-shadow:var(--sh-hover);transform:translateY(-2px)}
.how-steps>li{transition:background .16s,box-shadow .16s,transform .16s,border-color .16s}
.how-steps>li:hover{background:var(--surface);box-shadow:var(--sh-card);transform:translateY(-2px);border-color:var(--line-2)}
.bk{transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.bk:hover{transform:translateY(-3px);box-shadow:var(--sh-hover);border-color:var(--line-2)}
.nb:hover{box-shadow:var(--sh-hover)}
/* 2 — сдержать амбер: кружки шагов из «залитых» в мягкие (акцент, не крик) */
.how-num{background:var(--accent-soft);color:var(--accent-d);border:1.5px solid rgba(234,88,12,.30);box-shadow:none}
/* 4 — тугой трекинг крупным заголовкам */
.hero-section h1,.featured h2,.ai-card h2{letter-spacing:-.02em}
.block h3{letter-spacing:-.01em}
/* 6 — «Свежие руководства»: плоский список → кликабельные строки */
.latest-guides li{border-top:0}
.latest-guides a{padding:11px 12px;border-radius:9px;margin:1px 0;transition:background .14s,transform .14s,color .12s}
.latest-guides a:hover{background:var(--paper);transform:translateX(4px)}
/* 7 — форма подбора: заметнее фокус + скругление под остальное */
.cs-field>select,.cs-field>input{border-radius:8px;transition:border-color .14s,box-shadow .14s}
.cs-field>select:focus,.cs-field>input:focus{box-shadow:0 0 0 3px var(--accent-soft)}
.cs-submit{border-radius:9px;transition:background .15s,transform .15s,box-shadow .15s;box-shadow:0 7px 20px -9px rgba(234,88,12,.55)}
.cs-submit:hover{transform:translateY(-1px);box-shadow:0 12px 28px -10px rgba(234,88,12,.6)}
.cs-chip{border-radius:16px;transition:border-color .14s,color .14s,background .14s}
.cs-chip:hover{background:var(--accent-soft)}
/* 8 — микро-переходы */
.block .all,.catalog-link,.side-cat-suggest,.demand a,.item h4 a{transition:color .13s,background .13s,border-color .13s,transform .13s}
@media (prefers-reduced-motion:reduce){
  .featured,.how-steps>li,.bk,.nb,.latest-guides a,.cs-submit{transition:none!important}
  .featured:hover,.how-steps>li:hover,.bk:hover,.latest-guides a:hover,.cs-submit:hover{transform:none!important}
}

/* ═══════════════════════════════════════════════════════════════════
   ПОЛИРОВКА-2 (2026-07-13) — красивый лоадер генерации + блик на кнопке.
   Взято/вдохновлено: CSS-loaders (SpinKit) + Uiverse button shine.
   Только визуал, CSS-only, разметку/JS не трогает.
   ═══════════════════════════════════════════════════════════════════ */

/* ЛОАДЕР ГЕНЕРАЦИИ — «сканирующий» прогресс со свечением (было: плоский бар) */
.ai-wait-progress{height:5px;background:var(--line);border-radius:3px}
.ai-wait-progress-fill{
  position:relative;overflow:hidden;border-radius:3px;
  background:linear-gradient(90deg,var(--accent-d),var(--accent));
  box-shadow:0 0 12px -2px rgba(234,88,12,.65);
}
/* Прогресс-бар просто плавно едет вправо (transition:width из основного
   правила). Бегущий «шиммер» убран — он читался как «бар ходит туда-сюда». */
/* «дышащая» точка-тик у заголовка «Готовим инструкцию» */
.search-block.is-busy .ai-wait-h1::before{animation:ai-wait-tick 1.5s ease-in-out infinite}
@keyframes ai-wait-tick{0%,100%{box-shadow:0 0 0 0 rgba(234,88,12,.55)}50%{box-shadow:0 0 0 5px rgba(234,88,12,0)}}
@media (prefers-reduced-motion:reduce){
  .search-block.is-busy .ai-wait-h1::before{animation:none!important}
}

/* КНОПКА-БЛИК (Uiverse-style) — лёгкая полоса света по главным амбер-кнопкам */
.cs-submit,.btn-build,.subbar-trust{position:relative;overflow:hidden}
.cs-submit::before,.btn-build::before{
  content:"";position:absolute;top:0;left:-70%;width:45%;height:100%;pointer-events:none;
  background:linear-gradient(120deg,transparent,rgba(255,255,255,.38),transparent);
  transform:skewX(-20deg);
}
.cs-submit:hover::before,.btn-build:hover::before{animation:btn-shine .7s ease}
@keyframes btn-shine{from{left:-70%}to{left:140%}}
@media (prefers-reduced-motion:reduce){
  .cs-submit:hover::before,.btn-build:hover::before{animation:none!important}
}

/* Скелет формы подбора — держит место и лейблы до рендера search.js,
   убирает мигание «пустой блок → впрыгнули поля». Заменяется renderForm(). */
.cs-skel{height:42px;border-radius:8px;background:var(--line);position:relative;overflow:hidden}
.cs-skel.tall{height:46px}
.cs-skel.btn{height:44px;width:210px;border-radius:9px}
.cs-skel.pill{height:26px;width:120px;border-radius:16px;display:inline-block}
.cs-skel::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.6),transparent);
  animation:cs-skel-sh 1.3s ease-in-out infinite}
@keyframes cs-skel-sh{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
@media (prefers-reduced-motion:reduce){.cs-skel::after{animation:none}}

/* Обложка-иконка гайда — техническая иконка по теме (см. partials/cover_icons.html).
   БЕЛЫЙ фон + рамка + едва заметная нейтральная сетка + амбер-иконка (единственный акцент). */
.featured-cover.icn{
  background:var(--surface);
  display:flex;align-items:flex-end;padding:18px 20px;position:relative;overflow:hidden;
  box-shadow:inset -1px 0 0 var(--line);
}
.featured-cover.icn::before{
  content:"";position:absolute;inset:0;opacity:.7;
  background-image:linear-gradient(rgba(20,20,20,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(20,20,20,.035) 1px,transparent 1px);
  background-size:22px 22px;
  mask-image:radial-gradient(circle at 50% 42%,#000,transparent 78%);
}
.featured-cover.icn .featured-cover-label{color:var(--ink-2)}
.cover-icn{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);
  width:184px;height:184px;stroke:var(--accent);stroke-width:1.25;fill:none;
  stroke-linecap:round;stroke-linejoin:round;opacity:1;
  filter:drop-shadow(0 1px 1px rgba(20,20,20,.10));
}
.cover-icn .dim{stroke:rgba(20,20,20,.26)}
.cover-icn .fill{fill:var(--accent);stroke:none;opacity:.92}

/* Та же обложка-иконка, компактная — в шапке самого руководства (слева от эха
   запроса). Логику q-echo не меняем: добавили иконку + перенесли текст в колонку. */
.q-echo.has-cover{align-items:center;gap:14px}
.q-echo-cover.icn{
  flex:0 0 auto;width:66px;height:66px;border-radius:11px;position:relative;overflow:hidden;
  background:var(--surface);
  border:1px solid var(--line);
  display:grid;place-items:center;box-shadow:0 1px 2px rgba(20,20,20,.06);
}
.q-echo-cover.icn::before{
  content:"";position:absolute;inset:0;opacity:.6;
  background-image:linear-gradient(rgba(20,20,20,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(20,20,20,.04) 1px,transparent 1px);
  background-size:13px 13px;mask-image:radial-gradient(circle at 50% 45%,#000,transparent 82%);
}
.q-echo-cover.icn .cover-icn{
  position:static;transform:none;width:54px;height:54px;stroke-width:1.4;
  filter:drop-shadow(0 1px 1px rgba(20,20,20,.10));
}
/* Версия/дата в правой карточке «AI-руководство» (перенесено из плашки над H1). */
.side-card-prov{
  font-family:var(--mono);font-size:11px;font-weight:600;color:var(--accent-d);
  letter-spacing:.03em;text-transform:uppercase;
  margin-top:11px;padding-top:10px;border-top:1px solid rgba(194,72,10,.20);
}
.q-echo-txt{display:flex;flex-direction:column;gap:3px;min-width:0}
.q-echo.has-cover .lab{line-height:1.2}
.q-echo.has-cover .q{line-height:1.15}
/* Заголовок гайда с иконкой темы слева (когда есть parsed.title —
   q-echo не рисуется, дублирования нет). */
.guide-title{display:flex;align-items:center;gap:14px;margin:8px 0 16px}
.guide-title h1{font-size:24px;font-weight:800;letter-spacing:-.01em;margin:0;line-height:1.2;min-width:0}
@media (max-width:560px){
  .q-echo-cover.icn{width:54px;height:54px;border-radius:9px}
  .q-echo-cover.icn .cover-icn{width:44px;height:44px}
  .guide-title{gap:11px}
  .guide-title h1{font-size:21px}
}

/* ─── Инфо-/юр-страницы: оферта, доставка, оплата, контакты ───────────────
   Спокойная типографика для длинного текста. Блок .ap-doc живёт внутри
   .shell.solo > .main, поэтому наследует ширину колонки; сам текст ужимаем
   до читаемой меры. Плитки .ap-contact — для страницы контактов. */
.ap-doc{max-width:720px;font-size:15px;line-height:1.72;color:var(--ink-2)}
.ap-doc h2{font-size:18px;font-weight:800;color:var(--ink);letter-spacing:-.01em;margin:28px 0 8px}
.ap-doc h2:first-child{margin-top:0}
.ap-doc h3{font-size:15px;font-weight:700;color:var(--ink);margin:18px 0 5px}
.ap-doc p{margin:0 0 12px}
.ap-doc ul,.ap-doc ol{margin:0 0 14px;padding-left:20px}
.ap-doc li{margin:0 0 6px}
.ap-doc a{color:var(--accent);text-decoration:none;border-bottom:1px solid transparent}
.ap-doc a:hover{border-bottom-color:currentColor}
.ap-doc strong,.ap-doc b{color:var(--ink);font-weight:700}
.ap-doc .lead{font-size:15.5px;color:var(--ink-2);margin-bottom:20px}
/* Врезка-подсказка (например «стоимость считается при оформлении») */
.ap-note{background:var(--accent-soft);border:1px solid var(--line);border-radius:10px;padding:13px 16px;margin:0 0 18px;color:var(--ink-2)}
.ap-note b{color:var(--ink)}
/* Реквизиты продавца */
.ap-req{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin:6px 0 4px;font-size:14px;line-height:1.6}
.ap-req dt{color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;margin-top:10px}
.ap-req dt:first-child{margin-top:0}
.ap-req dd{margin:1px 0 0;color:var(--ink);font-weight:600}
/* Контактные плитки */
.ap-contacts{display:flex;flex-wrap:wrap;gap:14px;margin:0 0 24px;max-width:720px}
.ap-contact{flex:1 1 230px;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.ap-contact .lbl{color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px}
.ap-contact .val{font-size:18px;font-weight:800;color:var(--ink);letter-spacing:-.01em;line-height:1.25;overflow-wrap:anywhere}
.ap-contact .val a{color:var(--ink);border:0}
.ap-contact .val a:hover{color:var(--accent)}
.ap-contact .hint{color:var(--ink-2);font-size:13px;margin-top:4px}
/* Форма обратной связи «Напишите нам» */
.ap-form{max-width:560px;margin:0 0 12px}
.ap-form-row{display:flex;gap:14px;flex-wrap:wrap}
.ap-field{display:flex;flex-direction:column;gap:5px;margin:0 0 14px;flex:1 1 240px;min-width:0}
.ap-field>span{font-size:12.5px;font-weight:700;color:var(--ink-2)}
.ap-field>span i{font-style:normal;color:var(--muted);font-weight:600}
.ap-field>span i.req{color:var(--accent)}
.ap-field input,.ap-field textarea{font:inherit;font-size:14.5px;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:9px;padding:10px 12px;width:100%;box-sizing:border-box;transition:border-color .12s}
.ap-field textarea{resize:vertical;min-height:112px;line-height:1.5}
.ap-field input:focus,.ap-field textarea:focus{outline:none;border-color:var(--accent)}
.ap-field input::placeholder,.ap-field textarea::placeholder{color:var(--muted)}
.ap-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.ap-form-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:2px}
.ap-submit{font:inherit;font-size:15px;font-weight:800;color:#fff;background:var(--accent);border:0;border-radius:9px;padding:11px 26px;cursor:pointer;transition:background .12s}
.ap-submit:hover{background:var(--accent-d)}
.ap-submit:disabled{opacity:.6;cursor:default}
.ap-form-msg{margin:0;font-size:13.5px;font-weight:600;line-height:1.4}
.ap-form-msg.ok{color:#1e6b28}
.ap-form-msg.err{color:#c0392b}
.ap-form-alt{font-size:13.5px;color:var(--ink-2);margin:0 0 26px}

/* =====================================================================
   «КАК ЭТО РАБОТАЕТ» — карточка №1 в статусе «машина выбрана» (search.js).
   Когда у человека уже выбрана машина (гараж/URL), шаг 1 из инструкции
   («Выберите свою машину») превращается в статус пройденного шага.
   ===================================================================== */
/* фон карточки №1 = как у карточек 2/3 (--paper/--line), по просьбе Яна —
   без белой заливки; выделяет её только залитый оранжевый кружок «1» ниже */
.how-steps>li.how-step-done{background:var(--paper);border-color:var(--line)}
/* hover карточки №1 = как у 2/3: правило выше той же специфичности, что
   .how-steps>li:hover, и по порядку в файле «замораживало» фон/рамку —
   карточка приподнималась, но не подсвечивалась (замечание Яна 01.09). */
.how-steps>li.how-step-done:hover{background:var(--surface);border-color:var(--line-2)}
/* кружок «1» — как мягкие кружки 2/3 (по просьбе Яна): .how-num-done НЕ
   перебивает базовый амбер-стиль .how-num (светлая заливка, без залитого акцента) */
/* название машины — НЕ жирным и не тёмным (по просьбе Яна): как описания
   карточек 2/3 (.how-body p — обычный вес, приглушённый --ink-2) */
.how-body p.how-car-name{font-size:13.5px;font-weight:400;color:var(--ink-2);letter-spacing:0}
.how-car-change{
  display:inline-block;margin-top:8px;padding:0;
  font:inherit;font-size:12.5px;font-weight:600;color:var(--accent-d);
  background:none;border:0;cursor:pointer;
  text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;
}
.how-car-change:hover{color:var(--accent)}

/* =====================================================================
   СВИТЧЕР ГАРАЖА ЛК на главной (search.js → initGarageSwitch)
   Ряд «выбрать из гаража: [чипы машин] … управлять →». Показывается только
   залогиненному с непустым ap_garage; гость/пусто → #garage-switch остаётся
   hidden. Клик по чипу подставляет машину в форму (та же, что last-search).
   ===================================================================== */
#garage-switch{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px}
.gs-label{font-size:12.5px;color:var(--ink-2);font-weight:600}
.gs-chip{background:var(--accent-soft);color:var(--accent-d);border:1px solid var(--line);
  border-radius:14px;padding:5px 12px;font-size:12.5px;font-weight:600;cursor:pointer;font-family:var(--sans)}
.gs-chip:hover{border-color:var(--accent);color:var(--accent)}
.gs-chip.is-current{background:var(--accent);color:#fff;border-color:var(--accent);cursor:default}
/* «➕ в гараж» — пунктирная пилюля-действие: активная машина ещё не сохранена */
.gs-add,.gs-other{background:none;border:1px dashed var(--line-2);border-radius:14px;padding:5px 10px;
  font-size:12px;font-weight:600;color:var(--accent-d);cursor:pointer;font-family:var(--sans)}
.gs-add:hover,.gs-other:hover{border-color:var(--accent);color:var(--accent)}
.gs-add:disabled{opacity:.6;cursor:default}
.gs-manage{font-size:12px;font-weight:600;color:var(--accent-d);text-decoration:none;
  white-space:nowrap;margin-left:auto}
.gs-manage:hover{color:var(--accent);text-decoration:underline}
