:root{
    --paper:#fbf9f5; --card:#ffffff; --ink:#1c1d22; --ink-soft:#54565f; --ink-faint:#6c6e77;
    --line:#e9e4da; --line-soft:#f0ece4;
    --accent:#e8590c; --accent-ink:#d16537; --accent-text:#b8470a; --accent-wash:#fdf0e7;
    --brown:#231c17;
    --good:#1f7a4d; --good-wash:#e8f4ed;
    /* neutral grays for borders/captions/zebra */
    --gray-50:#f7f5f1; --gray-100:#f0ece4; --gray-200:#e4ded3;
    --font-display:'Onest',system-ui,sans-serif; --font-body:'Inter',system-ui,sans-serif;
    --maxw:1200px; --measure:70ch; --r:14px; --r-sm:9px; --r-lg:22px;
    /* vertical rhythm scale */
    --sp-para:18px; --sp-section:64px; --sp-after-h2:24px; --sp-cta:80px; --sp-card:28px;
    /* one shared CTA-card frame */
    --cta-shadow:0 18px 44px -22px rgba(140,70,30,.30);
  }
  *{box-sizing:border-box}
  html,body{overflow-x:clip}
  html{scroll-behavior:smooth}
  body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);
    font-size:18px;line-height:1.7;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
  h1,h2,h3,h4{font-family:var(--font-display);line-height:1.12;letter-spacing:-.018em;margin:0;color:var(--ink)}
  a{color:var(--accent-text);text-decoration:none}
  a:hover{text-decoration:underline}
  img{max-width:100%;display:block}
  :focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:4px}
  .wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}
  .progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--accent);z-index:60;transition:width .1s linear}

  /* ===== REAL rosperevozki.ru header ===== */
  header.site{position:sticky;top:0;z-index:50;background:#fff;
    border-bottom:1px solid var(--line);box-shadow:0 1px 0 rgba(35,28,23,.02)}
  .nav{display:flex;align-items:center;gap:26px;height:70px}
  .hamb{display:none;width:42px;height:42px;flex:none;border:0;cursor:pointer;border-radius:10px;
    background:linear-gradient(180deg,#ff9c68 0%,#d16537 100%);box-shadow:0 4px 12px rgba(209,101,55,.32);
    align-items:center;justify-content:center}
  .hamb svg{width:20px;height:20px;stroke:#fff;fill:none;stroke-width:2.2;stroke-linecap:round}
  .brand{display:flex;align-items:center;gap:11px}
  .brand:hover{text-decoration:none}
  .rmd-logo-svg{height:40px;width:auto;display:block}
  .nav-links{display:flex;align-items:center;gap:26px;margin-left:8px}
  .nav-links>a,.nav-links>.menu-item>span{color:#2b2929;font-weight:700;font-size:14px;
    text-transform:uppercase;letter-spacing:.02em;font-family:var(--font-body);cursor:pointer;
    display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
  .nav-links>a:hover,.nav-links>.menu-item:hover>span{color:#d16537;text-decoration:none}
  /* hover dropdown for Услуги */
  .menu-item{position:relative}
  .menu-item>span::after{content:"▾";font-size:11px;color:var(--ink-faint);margin-left:1px}
  .dropdown{position:absolute;top:100%;left:-14px;min-width:248px;background:#fff;
    border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 40px -12px rgba(35,28,23,.28);
    padding:8px;opacity:0;visibility:hidden;transform:translateY(6px);
    transition:opacity .14s,transform .14s,visibility .14s;z-index:60}
  .menu-item:hover>.dropdown,.menu-item:focus-within>.dropdown{opacity:1;visibility:visible;transform:translateY(0)}
  .dropdown a{display:block;padding:9px 13px;border-radius:8px;color:#2b2929;font-weight:600;
    font-size:14px;text-transform:none;letter-spacing:0;white-space:nowrap}
  .dropdown a:hover{background:var(--accent-wash);color:#d16537;text-decoration:none}
  .nav-right{margin-left:auto;display:flex;align-items:center;gap:18px}
  .phone{font-family:var(--font-display);font-weight:700;font-size:17px;color:var(--ink);white-space:nowrap;
    display:inline-flex;align-items:center;gap:7px}
  .phone svg{width:16px;height:16px;fill:none;stroke:#d16537;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .phone:hover{text-decoration:none;color:#d16537}
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
    background:linear-gradient(180deg,#ff9c68 0%,#d16537 100%);color:#fff;
    font-family:var(--font-body);font-weight:600;font-size:15px;padding:12px 20px;border-radius:var(--r-sm);
    border:0;cursor:pointer;box-shadow:0 6px 16px rgba(209,101,55,.30);transition:transform .12s,box-shadow .12s}
  .btn:hover{transform:translateY(-1px);box-shadow:0 9px 22px rgba(209,101,55,.40);text-decoration:none;color:#fff}
  .btn:active{transform:translateY(0)}
  .btn.lg{padding:16px 30px;font-size:16px}
  .btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line);box-shadow:none}
  .btn.ghost:hover{border-color:#d16537;color:#d16537}
  /* unified secondary = light/outline, shared across calc · band · sidebar */
  .btn.secondary{background:#fff;color:var(--ink);border:1.5px solid var(--line);box-shadow:none}
  .btn.secondary:hover{border-color:var(--accent-text);color:var(--accent-text);background:#fff;box-shadow:0 6px 16px -8px rgba(140,70,30,.28)}

  /* ===== ONE shared CTA-card frame (calculator · sidebar CTA) ===== */
  .cta-card{background:var(--accent-wash);border:1px solid #f3d9c6;border-radius:var(--r-lg);
    padding:var(--sp-card);box-shadow:var(--cta-shadow)}

  /* ===== FIRST-SCREEN HERO — crumbs full-width, then post-head (longread-tz-v3 §1).
     .post-head.has-media = 2-col (text ~57% / featured 4:3 ~43%); plain .post-head
     (no thumbnail) = single 760px text column fallback. ===== */
  .hero{padding:22px 0 4px}

  .crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13.5px;color:var(--ink-soft);padding:0}
  .crumbs a{color:var(--ink-soft)}
  .crumbs a:hover{color:var(--accent-text)}
  .crumbs span.sep{opacity:1;color:var(--ink-soft)}
  .crumbs>span:last-child{color:var(--ink-faint)}

  /* padding-bottom trimmed 32→12 (FIX 2): the desktop byline→calc gap was 76px
     (post-head pb 32 + hero pb 4 + layout pt 8 + calc mt 32) — too airy. Mobile
     overrides this pb at ≤900/≤767, so the trim is desktop-only. */
  .post-head{padding:24px 0 12px;max-width:none}
  /* align-items:start (FIX 3): the featured image must TOP-align with the H1, not
     hang centred in a taller text column (was align-items:center → image floated
     45–93px below the title top). ≤900 already sets 1-col + start. */
  .post-head.has-media{max-width:none;display:grid;
    grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:48px;align-items:start}
  .ph-text{min-width:0}
  .ph-media{margin:0;min-width:0}
  .ph-media img{width:100%;aspect-ratio:4/3;object-fit:cover;object-position:center;
    border-radius:var(--r-lg);display:block;border:1px solid var(--line)}
  h1{font-size:clamp(31px,5vw,47px);font-weight:800;margin:6px 0 0;overflow-wrap:anywhere;min-width:0;line-height:1.12}
  .dek{font-size:clamp(18px,2.4vw,21px);color:var(--ink-soft);margin:18px 0 0;line-height:1.5;max-width:none}
  .post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:22px;font-size:14.5px;color:var(--ink-soft)}
  .post-meta .who{display:flex;align-items:center;gap:10px;color:var(--ink-soft);font-weight:500}
  /* byline avatar = brand pin mark (assets/avatar-rp.svg, lifted from logo.svg) on a
     cream disc. Round ~38px; the teardrop is centred and clipped to the circle. */
  .ava{width:38px;height:38px;border-radius:50%;background:var(--accent-wash);border:1px solid #f3d9c6;
    display:grid;place-items:center;overflow:hidden;flex:none}
  .ava img{width:21px;height:auto;display:block}
  .post-meta .dot{width:3px;height:3px;border-radius:50%;background:var(--ink-faint)}

  /* intro lead-in (sits at top of the article body column) */
  .intro{max-width:none;margin:0 0 6px}
  .intro .lead{font-size:21px;line-height:1.55;color:var(--ink);margin:0 0 16px}

  /* ===== CALCULATOR — strong CTA card in the right hero column ===== */
  .calc{max-width:none;background:var(--accent-wash);color:var(--ink);border:1px solid #f3d9c6;border-radius:var(--r-lg);
    padding:26px 26px 24px;margin:16px 0 var(--sp-section);box-shadow:var(--cta-shadow);position:relative;overflow:visible;
    container-type:inline-size}
  .calc::before{display:none}
  .calc-head{position:relative;margin-bottom:18px}
  .calc-head .tag{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-text);font-weight:600}
  .calc h2{color:var(--ink);font-size:clamp(22px,2.6vw,28px);margin:6px 0 0;font-weight:800;line-height:1.1}
  .calc .sub{color:var(--ink-soft);font-size:14px;margin:8px 0 0;line-height:1.45}
  /* 3 fields in a row; break on the CALCULATOR'S OWN width (not the viewport), so it
     never half-collapses when the card is narrower than the screen (TZ §6). */
  .calc-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;position:relative}
  @container (max-width:560px){.calc-grid{grid-template-columns:1fr}}
  .fld{display:flex;flex-direction:column;gap:6px;min-width:0}
  .fld label{font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
  .fld input{background:#fff;border:1.5px solid #e7d8c8;border-radius:var(--r-sm);
    padding:13px 14px;color:var(--ink);font-family:var(--font-body);font-size:16px;width:100%}
  .fld input::placeholder{color:#b8a895}
  .fld input:focus{outline:none;border-color:var(--accent);background:#fff}
  .calc-cta{display:flex;flex-direction:column;gap:10px;margin-top:20px;position:relative}
  .calc-cta .btn{width:100%}
  .calc-cta .btn:not(.ghost):not(.secondary):not(.outline){padding:16px 30px;font-size:16px}
  .calc-cta .note{font-size:12px;color:var(--ink-soft);text-align:center;margin:0}

  /* ===== layout: wide reading column (~768px) + sticky sidebar (owner brief) ===== */
  .layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,320px);gap:56px;align-items:start;padding:8px 0 24px}
  .main-col{min-width:0}
  .article{min-width:0;max-width:none;font-size:18px;line-height:1.7}
  /* Body paragraphs justified; ru hyphenation (html lang=ru-RU) keeps justify from
     opening big word-gaps. Scoped to direct <p> so headings/lists/tables stay ragged. */
  .article>p{margin:0 0 var(--sp-para);text-align:justify;
    -webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow-wrap:break-word}
  /* H2 = section marker. punch-list: orange top-strike removed, top space tightened
     (was padding-top:14px reserving room under the strike + full --sp-section margin). */
  .article h2{font-size:clamp(30px,3.6vw,36px);font-weight:700;margin:calc(var(--sp-section) - 16px) 0 var(--sp-after-h2);scroll-margin-top:96px;
    text-align:left;padding-top:0}
  .article h2:first-child{margin-top:8px}
  .article h3{font-size:clamp(22px,2.2vw,26px);font-weight:600;margin:36px 0 14px;scroll-margin-top:90px}
  .article ul{margin:0 0 var(--sp-para);padding-left:0;list-style:none}
  .article ul li{position:relative;padding-left:30px;margin-bottom:11px}
  .article ul li::before{content:"";position:absolute;left:6px;top:12px;width:7px;height:7px;border-radius:2px;background:#a89684;transform:rotate(45deg)}
  .article strong{font-weight:600;color:var(--ink)}

  /* inline re-entry to calculator (organic, mid-article) */
  .recalc{display:inline-flex;align-items:center;gap:9px;background:var(--accent-wash);border:1px solid #f3d9c6;
    border-radius:999px;padding:9px 16px 9px 14px;font-weight:600;font-size:14.5px;color:var(--accent-text);margin:2px 0 6px}
  .recalc:hover{text-decoration:none;border-color:var(--accent)}
  .recalc::before{content:"↑";font-weight:800}

  /* kill number-input spinner arrows */
  input[type=number]{-moz-appearance:textfield;appearance:textfield}
  input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

  /* hero lead image (under the title) */
  .lead-img{max-width:none;margin:16px 0 4px;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);aspect-ratio:16/9;background:linear-gradient(135deg,#efe7db,#e3d8c8)}
  .lead-img img{width:100%;height:100%;object-fit:cover;display:block}

  /* in-body figure */
  figure.fig{margin:var(--sp-section) 0;max-width:100%}
  figure.fig img{width:auto;max-width:100%;border-radius:16px;border:1px solid var(--line);display:block}
  figure.fig figcaption{font-size:13px;color:var(--ink-soft);margin-top:10px;text-align:center}

  /* ===== content images — tame to the grid, soft frame. Body images scale
     proportionally (never cropped); height capped so a tall portrait can't run
     ~2 screens. width:auto + max-width:100% = up to full column, no upscale. ===== */
  .article img{max-width:100%;width:auto;height:auto;max-height:520px;margin-inline:auto;border-radius:16px;border:1px solid var(--line);display:block}
  .article figure{margin:var(--sp-section) 0;max-width:100%}
  .article figure figcaption,.article .src{font-size:13px;color:var(--ink-soft);margin-top:10px;text-align:center;line-height:1.45}
  /* muted "Источник:" caption */
  .article .source,.article figcaption.source{font-size:13px;color:var(--ink-soft);text-align:left;margin-top:8px}

  /* FAQ accordion */
  .faq{margin:var(--sp-section) 0}
  .faq h2{margin-bottom:14px}
  .faq details{border:1px solid var(--line);border-radius:var(--r);margin-bottom:10px;background:var(--card)}
  .faq summary{cursor:pointer;list-style:none;padding:16px 18px;font-family:var(--font-display);font-weight:600;font-size:17px;display:flex;justify-content:space-between;gap:12px;align-items:center}
  .faq summary::-webkit-details-marker{display:none}
  .faq summary::after{content:"+";font-size:22px;color:var(--accent-text);font-weight:400;line-height:1}
  .faq details[open] summary::after{content:"\2013"}
  .faq .fa{padding:0 18px 16px;color:var(--ink-soft);font-size:16px;line-height:1.6}

  /* feature strip — codex icons */
  .features{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:30px 0 6px}
  .feat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 15px;display:flex;flex-direction:column;gap:8px}
  .feat img{width:42px;height:42px;object-fit:contain}
  .feat b{font-family:var(--font-display);font-weight:600;font-size:15.5px}
  .feat span{font-size:13px;color:var(--ink-soft);line-height:1.4}

  /* ===== sidebar: sticky card (lead · calc button · anchor nav) ===== */
  .toc-rail{position:sticky;top:96px;align-self:start;max-height:calc(100vh - 120px);overflow:auto;
    background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
    padding:20px;box-shadow:0 10px 30px -20px rgba(35,28,23,.22)}
  /* lead line at the top of the rail — sits directly above the CTA button.
     Visible weight is forced to 700 below (.wrap p sets 400 and out-specifies this). */
  .toc-lead{font-family:var(--font-display);font-weight:600;font-size:16px;color:var(--ink);
    line-height:1.35;margin:0 0 10px}
  /* anchor nav */
  .toc-rail .toc-h{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
    color:var(--ink-soft);margin:0 0 10px}
  details.toc-m>summary{display:none}
  .toc-rail nav{display:flex;flex-direction:column}
  .toc-rail nav a{display:block;color:var(--ink-soft);font-size:14px;line-height:1.35;
    padding:6px 0 6px 13px;margin-left:0;border-left:2px solid var(--line);
    transition:color .12s,border-color .12s}
  .toc-rail nav a:hover{color:var(--ink);text-decoration:none;border-left-color:var(--ink-faint)}
  .toc-rail nav a.active{color:var(--accent-text);border-left-color:var(--accent);font-weight:600}
  /* primary CTA — directly under the lead phrase, above the anchor nav (owner brief) */
  .toc-btn{width:100%;white-space:nowrap;margin:0 0 22px;padding-top:14px;padding-bottom:14px}
  /* lead must read bold: .wrap p{font-weight:400} (0,1,1) out-specifies .toc-lead
     (0,1,0), so scope under .toc-rail (0,2,0) to win. */
  /* punch-list: CTA pair (lead + button) stays ON TOP in natural DOM order, above the
     anchor nav — owner reverted the desktop reorder 2026-06-30 ("сверху прикольнее").
     Lead kept bold + centered. .wrap p{font-weight:400} (0,1,1) out-specifies base
     .toc-lead (0,1,0), so scope under .toc-rail (0,2,0) to win the weight. */
  .toc-rail .toc-lead{font-weight:700;text-align:center}

  .takeaways{background:var(--good-wash);border:1px solid #cfe6da;border-radius:var(--r);padding:var(--sp-card) 28px;margin:var(--sp-section) 0}
  .takeaways h4{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--good);margin-bottom:12px}
  .takeaways ul{margin:0}.takeaways ul li::before{background:var(--good)}
  blockquote{margin:40px 0;padding:6px 0 6px 26px;border-left:4px solid var(--accent);
    font-family:var(--font-display);font-weight:500;font-size:23px;line-height:1.4;color:var(--ink);letter-spacing:-.01em}

  /* ===== TABLES (TZ §7) ============================================================
     rp_wrap_tables() (functions.php) wraps every bare content <table> in .tablewrap,
     which is the card frame AND the mobile horizontal-scroll container. The table
     itself is display:table;width:100% so 2-col tariff content fills the column
     instead of clamping left with a dead gap on the right. Header = real <thead> OR
     the first row of a header-less content table (:not(:has(thead))). =============== */
  .tablewrap,.article figure.wp-block-table,.article .wp-block-table{margin:var(--sp-section) 0;
    border:1px solid var(--line);border-radius:var(--r);overflow-x:auto;-webkit-overflow-scrolling:touch;
    box-shadow:0 8px 24px -18px rgba(35,28,23,.2);background:var(--card)}
  .article table{display:table;width:100%;border-collapse:collapse;font-size:15.5px;background:var(--card);
    margin:var(--sp-section) 0;table-layout:auto}
  .tablewrap>table,.article .wp-block-table table,.article figure.wp-block-table table{border:0;border-radius:0;margin:0}
  .article th,.article td{text-align:left;vertical-align:top;padding:13px 16px;font-family:var(--font-body);
    font-size:15.5px;line-height:1.5;border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums}
  .article td p,.article th p{margin:0}
  /* header row: real <thead>, or the first row of a header-less content table */
  .article table thead th,
  .article table:not(:has(thead)) tr:first-child td{background:#f4ede3;color:var(--ink);
    font-family:var(--font-display);font-weight:700;font-size:13.5px;letter-spacing:.02em;
    border-bottom:1.5px solid #e7d8c8;text-align:left}
  .article table tr:last-child td{border-bottom:0}
  .article table tbody tr:nth-child(even){background:var(--gray-50)}
  /* numeric column: right-align + tabular + accent (opt-in via .num) */
  .article th.num,.article td.num{text-align:right;font-weight:600;color:var(--accent-text);white-space:nowrap}
  .article pre{overflow-x:auto;max-width:100%}
  .article iframe,.article embed,.article video,.article .wp-block-embed{max-width:100%}
  /* muted table caption */
  table caption,.tablewrap+.src,figure.wp-block-table figcaption{font-size:13px;color:var(--ink-soft);
    text-align:left;padding:10px 2px 0;caption-side:bottom}

  /* Symmetric breathing around the "Читайте также" separator line: the .related
     border-top→heading gap MUST equal the cards→footer gap, and the cards need
     clear air above the full-bleed brown footer (which has margin-top:0). Was
     var(--sp-section) 0 10px = 64px top / 10px bottom — that 64px stacked on the
     cta-band's margin-bottom read as a ~110px top gap while cards jammed the
     footer. 48/48 keeps both sides equal AND off the footer at 1920. */
  .related{border-top:1px solid var(--line);padding:48px 0 48px}
  .related h2{font-family:var(--font-display);font-size:26px;font-weight:700;margin:0 0 24px}
  .cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
  .pcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column;transition:transform .14s,box-shadow .14s}
  .pcard:hover{transform:translateY(-3px);box-shadow:0 16px 32px rgba(35,28,23,.1);text-decoration:none}
  /* cover: the related card emits a REAL the_post_thumbnail('medium') (single.php),
     so the image must FILL the .ph frame like the listing .bcard__img cover — not
     sit as a 38px icon. (The old 38px/contain rule was for a glyph placeholder and
     shrank real thumbnails to a tiny floating image.) */
  .pcard .ph{height:92px;background:linear-gradient(135deg,#f1ebe1,#e8ded0);overflow:hidden}
  .pcard .ph img{width:100%;height:100%;object-fit:cover;display:block}
  .pcard .body{padding:18px;display:flex;flex-direction:column;gap:9px;flex:1}
  .pcard .pchip{align-self:flex-start;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-text);background:var(--accent-wash);padding:4px 9px;border-radius:999px}
  .pcard h3{font-size:17px;font-weight:700;line-height:1.28;color:var(--ink)}
  .pcard .rm{margin-top:auto;font-size:13px;color:var(--ink-soft)}

  /* ===== CLOSING CTA BAND — punch-list: cream calculator-style card (was solid
     orange). Same backing as .calc / .cta-card (accent-wash + #f3d9c6 border +
     cta-shadow), dark text for ≥4.5:1, button stays the accent-orange .btn. */
  .cta-band{display:flex;align-items:center;justify-content:space-between;gap:32px;
    background:var(--accent-wash);border:1px solid #f3d9c6;border-radius:var(--r-lg);
    padding:36px 40px;margin:38px 0 28px;overflow:hidden;box-shadow:var(--cta-shadow)}
  .cta-band .band-copy{max-width:520px;min-width:0}
  /* punch-list: heading on ONE line (was max-width:18ch → forced 2 lines).
     white-space:nowrap enforces one line; mobile shrinks the font to keep it. */
  .cta-band h2{font-family:var(--font-display);font-weight:800;font-size:clamp(24px,3vw,32px);
    line-height:1.12;letter-spacing:-.01em;color:var(--ink);margin:0;max-width:none;white-space:nowrap}
  .cta-band .band-copy p{font-family:var(--font-body);font-size:16px;line-height:1.5;
    color:var(--ink-soft);margin:12px 0 0}
  /* owner: same brand orange as every main button (header «Задать вопрос») —
     inherits the standard .btn gradient #ff9c68→#d16537, no special dark shade.
     ponytail: white-on-#ff9c68 ≈ 2.0:1 (fails AA as normal text) — kept for brand
     consistency per owner; revisit only if owner OKs darkening the GLOBAL .btn. */
  .cta-band .band-copy .btn{margin-top:22px}
  /* owner truck-fleet bleeding off the right edge; .cta-band overflow:hidden + 22px
     radius clip the trailing газель. img keeps intrinsic width (flex:none) so it
     bleeds instead of shrinking. White bodies on cream get a ground drop-shadow
     so the fleet sits instead of floating (spec §1). */
  .cta-band .band-fleet{flex:1 1 0;min-width:0;margin:0;line-height:0;pointer-events:none;
    display:flex;align-items:center;justify-content:flex-start}
  /* height drives the bleed: 196px → ≈732px wide (3.73:1), wider than the right
     zone, so the trailing газель runs PAST the band edge and the overflow:hidden
     clips it. flex-start anchors the img after .band-copy, so it can never slide
     under the text as the band narrows (overlap-proof at every width). */
  /* punch-list nit (a): pull the fleet ~30px left to close the mid-plashka gap
     between the copy block and the фура cab. */
  .cta-band .band-fleet img{flex:none;height:196px;width:auto;max-width:none;display:block;margin-left:-30px;
    filter:drop-shadow(0 8px 10px rgba(74,46,20,.16))}

  /* ===== ТАРИФЫ block (template-parts/blog-services.php) on ARTICLE pages =====
     Ported from blog-listing.css so the .rp-svc* cards are styled here too: single.php
     loads blog-design.css, and a class with no matching rule renders <img> at its
     intrinsic 640px and blows the layout wide (welly scar). Full-width at the .wrap
     level, between .layout and the CTA band (id="tarify" = bottom-bar «Тарифы» target).
     ≥1024 = 4-col grid; below = horizontal scroll-snap swipe slider (cards don't squish). */
  .rp-svc{margin:44px 0;background:radial-gradient(120% 130% at 50% 0%,#FFFFFF 0%,#FAF6EF 72%);
    border-radius:24px;padding:30px 24px 26px;overflow:hidden}
  .rp-svc__head{padding:0 0 22px}
  .rp-svc__title{margin:0;font-family:var(--font-display);font-weight:700;
    font-size:25px;line-height:1.18;letter-spacing:-.012em;color:#23262B}
  /* muted caption under «Тарифы» — explains the per-km card prices (AA #6E727A) */
  .rp-svc__cap{margin:5px 0 0;font-family:var(--font-body);font-weight:500;
    font-size:13.5px;line-height:1.3;color:#6E727A}
  .rp-svc__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
  /* WHOLE card = the lead-popup trigger (role=button); clickable, hover-lift + focus ring */
  .rp-svc__card{display:flex;flex-direction:column;text-align:left;margin:0;cursor:pointer;
    background:#fff;border:1px solid #ECEDEF;border-radius:18px;overflow:hidden;
    box-shadow:0 12px 28px -16px rgba(20,24,31,.22);
    transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
  .rp-svc__card:hover{transform:translateY(-2px);border-color:var(--accent,#e8590c);
    box-shadow:0 18px 34px -16px rgba(20,24,31,.30)}
  .rp-svc__card:focus-visible{outline:2.5px solid var(--accent,#e8590c);outline-offset:3px;
    border-color:var(--accent,#e8590c)}
  /* card hover also lifts the (now non-interactive) pill so it reads as part of one control */
  .rp-svc__card:hover .rp-svc__pill{transform:translateY(-1px);border-color:#D7DADF;
    box-shadow:0 6px 14px -4px rgba(20,24,31,.16)}
  .rp-svc__photo{display:flex;align-items:center;justify-content:center;
    height:150px;padding:14px 16px 2px;
    background:linear-gradient(180deg,#FBFBFC 0%,#FFFFFF 100%)}
  /* width/height:auto overrides the 640 attrs → no intrinsic blowout (scar: class==rule) */
  .rp-svc__img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
  .rp-svc__body{display:block;padding:9px 16px 16px}
  .rp-svc__name{display:block;font-family:var(--font-display);font-weight:700;
    font-size:16.5px;line-height:1.2;letter-spacing:-.01em;color:#23262B}
  .rp-svc__row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:11px}
  .rp-svc__spec{flex:1 1 auto;min-width:0;white-space:nowrap;
    font-weight:600;font-size:9.5px;line-height:1.2;letter-spacing:-.01em;color:#6E727A}
  /* pill = NON-interactive <span> price affordance (the whole card is the trigger now) */
  .rp-svc__pill{flex-shrink:0;margin-left:auto;display:inline-flex;align-items:center;gap:5px;
    padding:4px 4px 4px 11px;border-radius:999px;background:#fff;border:1px solid #E6E8EB;
    color:#23262B;font-family:inherit;font-weight:600;font-size:11px;line-height:1;white-space:nowrap;
    cursor:pointer;-webkit-appearance:none;appearance:none;
    box-shadow:0 2px 6px -2px rgba(20,24,31,.08);
    transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
  .rp-svc__pill:hover{transform:translateY(-1px);border-color:#D7DADF;
    box-shadow:0 6px 14px -4px rgba(20,24,31,.16)}
  .rp-svc__pill:focus-visible{outline:2px solid var(--accent,#e8590c);outline-offset:2px}
  .rp-svc__arrow{flex-shrink:0;width:23px;height:23px;border-radius:50%;
    background:linear-gradient(180deg,#F5995E 0%,#EA7A38 100%);
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 5px 12px -4px rgba(226,104,52,.7)}
  .rp-svc__arrow svg{display:block}
  @media(max-width:1023px){
    .rp-svc{border-radius:22px;padding:22px 0 20px}
    .rp-svc__head{padding:0 20px 16px}
    .rp-svc__title{font-size:20px}
    .rp-svc__cap{padding:0 20px}
    .rp-svc__grid{display:flex;grid-template-columns:none;gap:14px;
      overflow-x:auto;scroll-snap-type:x mandatory;
      padding:2px 20px 8px;scroll-padding-left:20px;
      scrollbar-width:none;-ms-overflow-style:none}
    .rp-svc__grid::-webkit-scrollbar{display:none;height:0;width:0}
    .rp-svc__card{flex:0 0 254px;scroll-snap-align:start;
      border-radius:16px;box-shadow:0 10px 22px -14px rgba(20,24,31,.22)}
    .rp-svc__photo{height:130px;padding:12px 14px 2px}
    .rp-svc__body{padding:6px 14px 15px}
    .rp-svc__name{font-size:15.5px}
    .rp-svc__row{gap:9px;margin-top:9px}
  }

  /* rosmobil-style mobile bottom nav */
  .mobilebar{display:none}

  @media(max-width:1000px){
    .hero{padding-top:20px}
  }
  @media(max-width:900px){
    .layout{grid-template-columns:1fr;gap:0;padding-top:18px}
    /* sidebar drops below the body as a TOC-only card; the lead + CTA button are
       hidden (the floating CTA handles conversion on mobile). */
    .toc-rail{position:static;max-height:none;overflow:visible;border-left:0;
      margin:30px 0 8px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
      box-shadow:none;padding:16px 18px}
    .toc-lead,.toc-btn{display:none}
    details.toc-m{padding:0}
    details.toc-m>summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;
      font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}
    details.toc-m>summary::-webkit-details-marker{display:none}
    details.toc-m>summary::after{content:"⌄";font-size:18px}
    details.toc-m[open]{padding-bottom:0}
    details.toc-m nav{margin-top:10px}
    .toc-rail .toc-h{display:none}
    .nav-links{display:none}.nav-right .btn{display:none}.nav{gap:14px;height:62px}.phone{font-size:16px}
    .hamb{display:inline-flex}
    .intro,.calc,.post-head{max-width:none}
    /* hero → 1 col, featured image UNDER the byline (text-first; H1 stays in
       the first screen — longread-tz-v3 §1). */
    .post-head{padding:20px 0 8px}
    .post-head.has-media{grid-template-columns:1fr;gap:0;align-items:start}
    .ph-media{margin-top:24px}
    .ph-media img{border-radius:18px}
    /* closing band → tablet: keep row, shrink the fleet */
    .cta-band{padding:32px 30px;gap:24px}
    .cta-band .band-fleet img{height:130px}
    .features{grid-template-columns:1fr 1fr;gap:12px}
    .related .cards{grid-template-columns:1fr 1fr;gap:14px}
    .pcard .ph img{width:100%;height:100%}.pcard .body{padding:14px}.pcard h3{font-size:15.5px}
    .fgrid{grid-template-columns:1fr 1fr;gap:28px}
  }
  @media(max-width:700px){
    /* tighten the vertical rhythm on phones */
    :root{--sp-section:44px;--sp-cta:56px;--sp-after-h2:18px;--sp-card:22px}
    .hero{padding-top:14px}
  }
  /* ≤767 = donor mobile-header range (chrome.css desktop starts at min-width:768),
     so the bottom bar + its body offset cover the whole mobile band. */
  @media(max-width:767px){
    body{padding-bottom:84px}
    .wrap{padding:0 16px}
    /* punch-list P2: header is static on phones now (no fixed-bar offset), so pull
       the featured image almost flush to the bar — trim hero + post-head top pad. */
    .hero{padding-top:6px}
    .post-head{padding:6px 0 8px}
    /* punch-list mobile: hide secondary longread chrome.
       M2 breadcrumbs · M4 "Читайте также". Desktop keeps all. */
    .crumbs{display:none}
    /* FIX1 TOC mobile: toc-rail was display:none on ≤767px (M1 removed).
       Now show it as compact accordion BEFORE main content (order:-1 in 1-col grid).
       ≤900px rules already style it as card + show details>summary. */
    .toc-rail{display:block;order:-1}
    .related{display:none}
    /* M3 hero order on phones: featured image FIRST → H1 → byline.
       order:-1 floats .ph-media above .ph-text in the 1-col grid (no-featured = H1→byline). */
    .post-head.has-media .ph-media{order:-1;margin-top:0;margin-bottom:20px}
    .ph-media img{border-radius:16px}
    /* punch-list P3: tighten the gap before the closing CTA band on phones.
       Dominant gap source was .layout padding-bottom (50px), not the band margin. */
    .layout{padding-bottom:4px}
    .cta-band{margin:18px 0 10px}
    .phone{font-size:15px}
    .mobilebar{display:grid;grid-template-columns:repeat(5,1fr);align-items:end;
      position:fixed;left:0;right:0;bottom:0;z-index:55;background:#fff;
      border-top:1px solid var(--line);border-radius:18px 18px 0 0;
      box-shadow:0 -8px 28px rgba(35,28,23,.14);padding:9px 6px max(9px,env(safe-area-inset-bottom));
      transition:transform .22s ease}
    .mobilebar.hide{transform:translateY(125%);pointer-events:none}
    .mobilebar a{display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--ink-faint);
      font-size:10.5px;font-weight:500;text-decoration:none;padding-top:4px}
    .mobilebar a svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
    .mobilebar a.on{color:var(--accent-text)}
    .mobilebar a.fab{margin-top:-30px;color:var(--accent-text);font-weight:600}
    .mobilebar a.fab .ring{width:58px;height:58px;border-radius:50%;
      background:linear-gradient(180deg,#ff9c68 0%,#d16537 100%);
      display:grid;place-items:center;box-shadow:0 8px 20px rgba(209,101,55,.42);border:4px solid var(--paper)}
    .mobilebar a.fab .ring svg{width:25px;height:25px;stroke:#fff}
  }
  @media(max-width:620px){
    /* container query (max 560) handles calc-grid; this viewport rule is a fallback
       for engines without @container so narrow phones never show a clipped 3-col. */
    .calc{padding:20px 16px;border-radius:18px}
    .calc-grid{grid-template-columns:1fr}
    .intro .lead{font-size:19px}
  }
  @media(max-width:560px){
    .fgrid{grid-template-columns:1fr}
    .features{grid-template-columns:1fr 1fr}
    .related .cards .pcard:nth-child(3){display:none}
  }
  @media(max-width:767px){
    /* closing band → column, REORDERED (punch-list): fleet ON TOP, then centered
       heading (one line, shrunk font) → centered sub → full-width button.
       order:-1 floats the fleet figure above .band-copy in the column. */
    .cta-band{flex-direction:column;align-items:center;text-align:center;padding:22px 18px;gap:0}
    .cta-band .band-copy{max-width:none;width:100%}
    .cta-band h2{font-size:clamp(16.5px,4.7vw,20px);max-width:none}
    .cta-band .band-copy p{font-size:15px;margin-top:8px}
    .cta-band .band-copy .btn{width:100%;margin-top:18px}
    .cta-band .band-fleet{order:-1;flex:none;width:100%;margin:0 0 14px;display:flex;justify-content:center}
    .cta-band .band-fleet img{flex:none;height:auto;width:100%;max-width:none;margin-left:0}
  }
  @media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Content body font: restore Inter/Onest over donor chrome.css element resets
   (chrome sets p/a/li to SourceSansPro 300). Scoped to our content blocks so the
   chrome header+footer keep their donor fonts. Every text block we own — article,
   intro, calculator, sidebar — is pinned so NOTHING falls back to Gotham/SourceSans
   (TZ §8). Body = Inter; headings/eyebrows/buttons = Onest. */
.wrap p{font-family:var(--font-body);font-weight:400}
.article,.intro,.calc,.toc-rail{font-family:var(--font-body)}
.article li,.article td,.article th,.article a{font-family:var(--font-body);font-weight:400}
.calc .sub,.calc .note,.fld label,.fld input,.toc-rail nav a,.toc-rail .toc-h{font-family:var(--font-body)}
.calc h2,.calc-head .tag,.toc-lead{font-family:var(--font-display)}

/* ===== punch-list-3: legacy content images responsive (qa BLOCKER) =====
   Classic [caption] shortcode + legacy <img> ship INLINE width:1000px /
   height:683px / object-fit:fill. Inline styles only lose to !important.
   Scoped to .article (the_content wrapper) so the calculator card (.calc) and
   related cards (.pcard) — all OUTSIDE .article — are NOT touched.
   object-fit:cover (not fill) avoids distortion;
   with height:auto it is moot anyway, but it overrides the inline fill cleanly. */
.article img,
.article figure,
.article .wp-caption,
.article .wp-caption img,
.article .wp-block-image,
.article .wp-block-image img{
  max-width:100% !important;
  width:auto !important;
  height:auto !important;
}
.article img,
.article .wp-caption img,
.article .wp-block-image img{object-fit:cover !important}
.article .wp-caption{margin:var(--sp-section) auto;text-align:center}
.article .wp-caption-text,
.article .wp-block-image figcaption{font-size:13px;color:var(--ink-soft);
  line-height:1.45;margin-top:10px;max-width:100%;text-align:center}

/* ===== punch-list-3: mobile floating CTA (longread, <768px) — TZ §2/§8 =====
   blog.js IntersectionObserver toggles .hide while #calc is on screen, so the
   pill only appears once the reader scrolls past the inline calculator. */
/* floatcta RETIRED on mobile — the .mobilebar (Позвонить FAB + Расчёт tab) now
   owns the same conversion at the same bottom slot; both visible would collide.
   Markup kept in single.php for easy revert; CSS keeps it hidden. */
.floatcta{display:none}
@media(max-width:767px){
  .floatcta{display:none;gap:10px;align-items:center;position:fixed;right:14px;
    bottom:max(14px,env(safe-area-inset-bottom));z-index:55;transition:transform .22s ease}
  .floatcta.hide{transform:translateY(180%);pointer-events:none}
  .floatcta .fc-phone{width:50px;height:50px;flex:none;border-radius:50%;background:#fff;
    border:1.5px solid var(--line);box-shadow:0 8px 22px -8px rgba(35,28,23,.34);
    display:grid;place-items:center}
  .floatcta .fc-phone svg{width:22px;height:22px;fill:none;stroke:var(--accent-ink);
    stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .floatcta .fc-calc{font-size:15px;padding:14px 20px;border-radius:999px;white-space:nowrap;
    box-shadow:0 10px 26px -8px rgba(209,101,55,.52)}
}

/* ===== reviews — native WP comments on the «Отзывы» Page (feedback/id-2024) =====
   Astra's base CSS is dequeued on the blog (functions.php rp_dequeue_astra_assets),
   so the parent comments.php markup arrives unstyled. These rules give the review
   list + form themed spacing/type — every selector matches a class the parent
   comments.php actually emits (scar: an emitted class with no rule renders raw).
   WP's .screen-reader-text a11y labels are among the dequeued Astra styles, so
   without this canonical hide they'd print as visible text on the page. */
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.comments-area{max-width:var(--measure);margin:8px 0 0;padding-top:4px}
.comments-title,
.comment-reply-title{font-size:clamp(22px,3vw,28px);margin:0 0 24px}
.ast-comment-list{list-style:none;margin:0 0 var(--sp-section);padding:0}
.ast-comment-list li{margin:0}
.ast-comment{padding:20px 0;border-top:1px solid var(--line)}
.ast-comment-list > li:first-child > .ast-comment{border-top:0;padding-top:4px}
.ast-comment-info{display:flex;align-items:center;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.ast-comment-avatar-wrap img{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);display:block}
.ast-comment-cite-wrap cite,
.ast-comment-cite-wrap .fn{font-style:normal;font-family:var(--font-display);font-weight:700;font-size:16px;color:var(--ink)}
.ast-comment-time{margin-left:auto;font-size:14px;color:var(--ink-faint)}
.ast-comment-time a{color:inherit;text-decoration:none}
.ast-comment > p{margin:0;color:var(--ink-soft);line-height:1.6}
.ast-comment-edit-reply-wrap{margin-top:10px}
.comment-reply-link{font-size:14px;font-weight:600;color:var(--accent-text);text-decoration:none}
.comment-reply-link:hover{text-decoration:underline}
/* review form */
.comment-respond{max-width:var(--measure);margin:0 0 var(--sp-section);padding-top:4px}
.comment-notes{font-size:14px;color:var(--ink-faint);margin:0 0 18px}
.comment-form p{margin:0 0 14px}
.comment-form input[type=text],
.comment-form input[type=email],
.comment-form textarea{width:100%;font-family:var(--font-body);font-size:16px;color:var(--ink);
  background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px}
.comment-form textarea{min-height:130px;resize:vertical}
.comment-form input[type=text]:focus,
.comment-form input[type=email]:focus,
.comment-form textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash)}
.ast-comment-formwrap{display:flex;gap:14px;flex-wrap:wrap}
.ast-comment-formwrap > p{flex:1 1 220px;margin:0 0 14px}
.comment-form-cookies-consent{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:var(--ink-faint)}
.comment-form-cookies-consent input{margin-top:3px}
.form-submit{margin-top:4px}
.form-submit input[type=submit]{font-family:var(--font-body);font-weight:600;font-size:15px;color:#fff;
  background:linear-gradient(180deg,#ff9c68 0%,#d16537 100%);border:0;border-radius:var(--r-sm);
  padding:12px 26px;cursor:pointer;box-shadow:0 6px 16px rgba(209,101,55,.30);
  transition:transform .12s,box-shadow .12s}
.form-submit input[type=submit]:hover{transform:translateY(-1px);box-shadow:0 9px 22px rgba(209,101,55,.40)}

/* Mobile: article H1 hit the 31px clamp floor and ate too much vertical space on
   phones — trim ~3px. Scoped .post-head h1 (0,1,1) beats the global h1 clamp. */
@media(max-width:620px){.post-head h1{font-size:28px}}
