/* SuperBoost SEO - generated by assets/build.js. Brand: navy #0a0a44, red #9f090d, blue #1a7efb. */
:root{
  --navy:#0a0a44; --red:#9f090d; --blue:#1a7efb; --link:#1a5fd0; --ink:#1c1c28; --paper:#ffffff;
  --mist:#f4f6fb; --line:#dfe3ee;
  --dd-blue:#007bd8; --dd-orange:#f66527; --dd-blue-ink:#0069b8;
  --hdr-h:80px; --hdr-h-compact:64px; --utility-h:32px;
  --bar-h:56px; --bar-total:calc(var(--bar-h) + env(safe-area-inset-bottom));
}
@media (max-width:820px){:root{--hdr-h:56px;}}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-padding-top:calc(var(--hdr-h) + 8px);scroll-behavior:smooth}
/* scroll-padding-top alone let a #book jump tuck the section heading under the
   fixed header, seen in a real browser at 1495px. Anchor targets carry their own
   margin so the landing position is right whatever the header height is doing. */
section[id],div[id],h2[id]{scroll-margin-top:calc(var(--hdr-h) + 24px)}
body{font-family:Poppins,Arial,sans-serif;font-size:17px;line-height:1.65;color:var(--ink);background:var(--paper)}
@media (max-width:820px){body{padding-bottom:var(--bar-total)}html{scroll-padding-bottom:var(--bar-total)}}
img{max-width:100%;height:auto;display:block}
h1,h2,h3{font-family:Montserrat,Arial,sans-serif;color:var(--navy);line-height:1.15}
h1{font-size:clamp(28px,8vw,34px);max-width:22ch}
@media (min-width:821px){h1{font-size:clamp(34px,3.2vw,46px)}}
h2{font-size:clamp(24px,5vw,32px);margin-bottom:16px}
h3{font-size:19px;margin-bottom:8px}
p{margin-bottom:16px}
a{color:var(--link)}
ul,ol{padding-left:22px;margin-bottom:16px}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}
@media (max-width:400px){.wrap{padding:0 16px}}
section{padding:64px 0}
@media (min-width:821px){section{padding:96px 0}}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--navy);color:#fff;padding:12px 20px;z-index:220}
.skip-link:focus{left:0}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 26px;border-radius:8px;font-family:Montserrat,Arial,sans-serif;font-weight:600;font-size:16px;text-decoration:none;text-align:center}
.btn-primary{background:var(--red);color:#fff}
.btn-primary:hover{background:#7c070a}
.btn-outline{border:2px solid var(--navy);color:var(--navy);background:transparent}
.cta-band .btn-outline{border-color:#fff;color:#fff}
.ghost-link{color:var(--navy);text-decoration:underline;font-weight:600;align-self:center}
/* header */
.site-header{position:fixed;top:0;left:0;right:0;height:var(--hdr-h);background:var(--navy);z-index:50;transition:height .2s}
.site-header.compact{height:var(--hdr-h-compact)}
.header-spacer{height:var(--hdr-h)}
.header-inner{display:flex;align-items:center;gap:20px;height:100%;background:var(--navy)}
.logo-link img{width:200px;height:50px;object-fit:contain}
@media (max-width:820px){.logo-link img{width:160px;height:40px}}
.site-nav{margin-left:auto}
.nav-list{display:flex;gap:6px;list-style:none;padding:0;margin:0;align-items:center}
.nav-list>li>a,.nav-parent{color:#fff;text-decoration:none;font-size:15px;font-weight:600;padding:12px 14px;background:none;border:0;cursor:pointer;font-family:Poppins,Arial,sans-serif;display:inline-block;white-space:nowrap}
.nav-list>li>a:hover,.nav-parent:hover{color:var(--blue)}
.has-mega{position:relative}
.mega{position:absolute;left:50%;transform:translateX(-60%);top:100%;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 40px rgba(10,10,68,.18);padding:24px;display:none;grid-template-columns:repeat(5,minmax(150px,1fr));gap:20px;width:min(920px,92vw)}
.has-mega:hover .mega,.has-mega:focus-within .mega{display:grid}
.mm-head{font-family:Montserrat,Arial,sans-serif;font-weight:800;font-size:13px;color:var(--red);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}
.mm-col ul{list-style:none;padding:0;margin:0}
.mm-col a{display:block;padding:4px 0;font-size:14px;color:var(--ink);text-decoration:none}
.mm-col a:hover{color:var(--blue)}
/* S2 carries EXACTLY ONE primary CTA and the phone number sits inside its
   label (6.8, R14). A second equal-weight header CTA is forbidden, and the
   free-audit path is carried by S4, the two S20 bands, S17 and the S22 bar. */
.header-actions{display:flex;align-items:center;gap:10px}
.header-cta{min-height:48px;min-width:48px;padding:12px 18px;font-size:15px;white-space:nowrap}
.site-header .btn-outline{border-color:#fff;color:#fff}
.site-header .btn-outline:hover{background:rgba(255,255,255,.12)}
/* call control: the phone lives inside the button label (R14). Dark on light
   sections, light on the navy CTA band. */
.btn-call{background:var(--navy);color:#fff}
.btn-call:hover{background:#151577}
.cta-band .btn-call,.btn-call-light{background:#fff;color:var(--navy);border:2px solid var(--navy)}
.cta-band .btn-call{border-color:#fff}
.btn-call-light:hover{background:var(--mist)}
.band-alt{text-align:center;margin:16px 0 0;font-size:15px}
.cta-band .band-alt a{color:#fff}
.nav-toggle{display:none;background:var(--navy);border:2px solid #fff;color:#fff;border-radius:8px;padding:8px 14px;font-weight:600;cursor:pointer;min-height:48px;min-width:48px}
@media (max-width:1000px){
  .nav-toggle{display:inline-flex;margin-left:auto}
  .site-nav{display:none;position:fixed;top:var(--hdr-h);left:0;right:0;bottom:0;background:var(--navy);overflow:auto;z-index:80;margin:0;padding:20px 24px}
  .site-nav.open{display:block}
  .nav-list{flex-direction:column;align-items:stretch;gap:0}
  .mega{position:static;transform:none;display:none;grid-template-columns:1fr;width:auto;box-shadow:none;border:0;border-radius:0;background:transparent;padding:0 0 12px 12px}
  .mega a,.mm-head{color:#fff}
  .mm-col a{color:#cdd4f0}
  .has-mega.open .mega{display:grid}
  .header-actions{margin-left:0}
}
/* Under 560px the logo, the hamburger and a 178px phone button do not fit on one
   row. The phone stays reachable without opening the hamburger through the S4
   hero call control, which is in the first viewport, and the S22 sticky bar.
   Specificity note: the tap-target rule near the bottom of this sheet lists .btn
   with display:inline-flex and sits AFTER this media block, and a media query
   adds no specificity, so a bare .header-cta{display:none} here would be dead. */
@media (max-width:560px){.site-header .header-cta{display:none}}
/* powered-by co-brand lockup (Digital Domination) */
.powered-by{display:inline-flex;align-items:center;gap:8px;min-height:48px;text-decoration:none;color:#cdd4f0;font-size:12px;letter-spacing:.03em;white-space:nowrap}
.powered-by:hover{color:#fff}
.powered-by img{height:26px;width:auto}
.site-header .powered-by{margin-left:4px;padding-left:20px;border-left:1px solid rgba(255,255,255,.25)}
.site-header .powered-by img{height:24px}
@media (max-width:820px){.site-header .powered-by{display:none}}
.dd-line{margin-top:20px;padding-top:16px;border-top:2px solid var(--dd-orange)}
.dd-line p{font-size:14px;margin:8px 0 0}
.dd-powered .powered-by{color:var(--ink)}
.dd-powered a:not(.powered-by){color:var(--dd-blue-ink)}
.dd-powered img.dd-mark{width:220px;height:auto;margin-bottom:16px}
/* breadcrumbs */
.breadcrumbs{background:var(--mist);padding:10px 0;font-size:13px}
.breadcrumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;padding:0;margin:0}
.breadcrumbs li+li::before{content:"/";margin-right:6px;color:#8a90a8}
.breadcrumbs a{color:var(--navy);text-decoration:none}
/* hero */
.hero{background:linear-gradient(160deg,var(--mist),#fff);padding:48px 0 64px}
.hero-grid{display:grid;grid-template-columns:1fr;gap:32px;align-items:center}
@media (min-width:1000px){.hero-grid{grid-template-columns:1.05fr .95fr}}
.hero-sub{font-size:19px;max-width:52ch}
/* credential ribbon (6.8.1): carries the parent company's Google rating with
   the attribution sentence, so the 4.9 is never read as SuperBoost's own. */
.credential-ribbon{display:inline-block;background:var(--navy);color:#fff;border-radius:14px;padding:8px 16px;font-size:14px;font-weight:600;line-height:1.4;margin:0 0 12px;max-width:52ch}
@media (max-width:560px){.credential-ribbon{font-size:13px;padding:8px 14px}}
.hero-actions{display:flex;gap:18px;flex-wrap:wrap;margin-top:8px}
.hero-media img{border-radius:16px;box-shadow:0 20px 50px rgba(10,10,68,.16)}
/* answer box */
.answer{padding:0 0 32px}
.answer-box{background:var(--navy);color:#fff;border-left:6px solid var(--red);border-radius:10px;padding:22px 26px;font-size:16px;margin:0}
/* content sections */
.two-col{display:grid;grid-template-columns:1fr;gap:36px}
@media (min-width:1000px){.two-col{grid-template-columns:1.2fr .8fr}}
.side-media img,.scope-media img,.process-media img,.faq-media img{border-radius:14px;border:1px solid var(--line)}
.side-media{align-self:start;position:sticky;top:calc(var(--hdr-h) + 16px)}
.hub-note,.disqualifier{background:var(--mist);border-radius:10px;padding:14px 18px;font-size:15px}
.scope-grid{display:grid;grid-template-columns:1fr;gap:16px;margin:24px 0}
@media (min-width:760px){.scope-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.scope-grid{grid-template-columns:repeat(3,1fr)}}
.scope-card{background:var(--mist);border-radius:14px;padding:22px}
.scope-card h3{font-size:17px}
.scope-card p{margin:0;font-size:15px}
.scope-media{max-width:720px;margin:24px auto 0}
.process-grid{display:grid;grid-template-columns:1fr;gap:36px;align-items:center}
@media (min-width:1000px){.process-grid{grid-template-columns:1fr 1fr}}
.process-steps{list-style:none;padding:0;counter-reset:step}
.process-steps li{position:relative;padding:0 0 24px 64px;counter-increment:step}
.process-steps li::before{content:counter(step);position:absolute;left:0;top:0;width:44px;height:44px;border-radius:50%;background:var(--red);color:#fff;font-family:Montserrat,Arial,sans-serif;font-weight:800;display:flex;align-items:center;justify-content:center}
.factor-list li{margin-bottom:8px}
.pricing{background:var(--mist)}
.cta-mid{padding:32px 0}
/* ---- Las Vegas silo (build-vegas.js) --------------------------------------
   Reuses .wrap, .hero-grid, .two-col, .scope-grid, .process-grid, .faq-grid,
   .cta-band and the button set unchanged. Only the blocks that do not exist on
   the national template are defined here. Every rule is layout only: no new
   colour tokens, so the a11y contrast sweep already covers them. */
.cta-mid-line{max-width:62ch;margin:0 auto 16px;text-align:center;font-weight:600}
.cta-mid .band-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.hero-lv .hero-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.lv-office-section{background:var(--mist)}
.lv-office{background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px 24px;align-self:start}
.lv-office .f-nap-head{font-family:Montserrat,Arial,sans-serif;font-weight:800;color:var(--navy);margin-bottom:8px}
.lv-office .footer-nap{display:block;font-style:normal;margin-bottom:12px}
.lv-office .footer-nap span,.lv-office .footer-nap a{display:block;padding:1px 0}
.lv-office .nap-phone{font-weight:600}
/* The lv-office card is WHITE, but .footer-nap .nap-name and .footer-nap .nap-phone
   both hard-set color:#fff for the navy footer, and they are declared LATER in this
   sheet at equal (0,2,0) specificity, so they won. The visible Las Vegas NAP shipped
   as white text on a white card: 1.00:1 contrast, invisible to every human visitor,
   while check-nap passed because it reads HTML and not rendered colour. The whole
   point of this block is that the NAP is readable here instead of in a schema node,
   so these two rules carry (0,3,0) to beat the footer pair in the card context. */
.lv-office .footer-nap .nap-name{color:var(--navy)}
.lv-office .footer-nap .nap-phone{color:var(--link)}
.lv-office .proof-rating{margin:12px 0 0;font-size:15px}
/* These two sections shipped with a class hook and no rule, so check-viewports
   flagged unstyled-class on all 12 Las Vegas pages. They render on the body
   background, which is the correct half of the mist/paper alternation, so the
   fix states that intent instead of leaving it to the absence of a rule. Pixels
   are unchanged: --paper is the body background these sections already sat on. */
.local-lens{background:var(--paper)}
.modifiers{background:var(--paper)}
.mesh-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:14px}
@media (min-width:900px){.mesh-list{grid-template-columns:repeat(2,1fr)}}
.mesh-list li{background:var(--mist);border-radius:10px;padding:16px 20px}
.mesh-list p{margin:0;font-size:15px}
.mesh-note{margin-top:20px;font-size:15px;color:#4a4a63}
.mod-grid{display:grid;grid-template-columns:1fr;gap:20px;margin-top:24px}
@media (min-width:900px){.mod-grid{grid-template-columns:repeat(2,1fr)}}
.mod-block{border:1px solid var(--line);border-radius:12px;padding:22px 24px}
.mod-block h3{margin-bottom:10px}
.mod-link{margin:14px 0 0;font-weight:600}
.mod-body{padding:64px 0}
@media (min-width:821px){.mod-body{padding:96px 0}}
.mod-section{padding:0 0 44px}
.mod-section:last-child{padding-bottom:0}
.mod-section-copy{max-width:70ch}
.mod-section-media{display:grid;grid-template-columns:1fr;gap:28px;align-items:center}
@media (min-width:1000px){.mod-section-media{grid-template-columns:1.2fr .8fr}}
.mod-section-media:nth-of-type(even) .mod-media{order:-1}
@media (max-width:999px){.mod-section-media:nth-of-type(even) .mod-media{order:0}}
.mod-media img{max-width:100%;height:auto;border-radius:14px;border:1px solid var(--line)}
.proof-local p{max-width:78ch}
.lv-note{background:var(--mist);border-left:4px solid var(--blue);border-radius:8px;padding:14px 18px;margin:18px 0;font-size:15px}
.band-actions{display:flex;gap:18px;flex-wrap:wrap;justify-content:center}
/* related */
.related-list{list-style:none;padding:0;display:grid;grid-template-columns:1fr;gap:10px}
@media (min-width:760px){.related-list{grid-template-columns:repeat(2,1fr)}}
.related-list a{display:block;background:var(--mist);border-radius:10px;padding:14px 18px;color:var(--navy);text-decoration:none;font-weight:600;font-size:15px}
.related-list a:hover{background:var(--line)}
/* faq */
.faq-grid{display:grid;grid-template-columns:1fr;gap:36px;align-items:start}
@media (min-width:1000px){.faq-grid{grid-template-columns:1.2fr .8fr}}
.faq details{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;background:#fff}
.faq summary{cursor:pointer;padding:16px 20px;font-family:Montserrat,Arial,sans-serif;font-weight:600;color:var(--navy);font-size:16px;list-style-position:inside}
.faq-a{padding:0 20px 16px}
.faq-a p{margin:0;font-size:15px}
/* cta band */
.cta-band{background:var(--navy);color:#fff;text-align:center}
.cta-band h2{color:#fff}
.cta-band p{max-width:60ch;margin:0 auto 24px}
/* S17 scan CTA block. The .book class names survive the removal of the booking
   form on purpose: the id="book" fragment and these hooks are referenced by
   js/main.js for the sticky-bar reveal, and renaming them buys nothing. */
.book{background:var(--mist)}
.book-sub{max-width:60ch}
.book-alt{margin-top:16px;font-size:15px}
/* team/about */
.team-grid{display:grid;grid-template-columns:1fr;gap:20px;margin-bottom:24px}
@media (min-width:760px){.team-grid{grid-template-columns:repeat(2,1fr)}}
.team-card{background:var(--mist);border-radius:14px;padding:26px}
.team-grid-3{grid-template-columns:1fr}
@media (min-width:760px){.team-grid-3{grid-template-columns:repeat(3,1fr)}}
.founder-portrait{display:block;width:100%;max-width:260px;height:auto;margin:0 0 16px}
.team-figure{display:block;width:100%;max-width:320px;height:auto;margin:0 auto 14px}
.team-card.team-pair{grid-column:auto}
.team-card h3{margin:0 0 4px}
.team-role{margin:0 0 10px;font-weight:600;color:var(--ink-soft,#4a4a5a);font-size:15px}
.team-card img.person-portrait{width:96px;height:96px;border-radius:50%;object-fit:cover;object-position:top center;border:3px solid var(--paper);margin-bottom:12px}
.coverage-note{font-weight:600;color:var(--navy);margin-top:16px}
/* person portrait + click-to-play video facade.
   The facade is a plain anchor around a self-hosted poster: it opens YouTube in
   a new tab and loads NOTHING from youtube.com on this page, so no third-party
   cookie is set before consent and the CSP frame-src stays closed (6.6, 6.7). */
.person-hero-portrait{width:180px;height:180px;border-radius:50%;object-fit:cover;border:5px solid var(--paper);box-shadow:0 10px 30px rgba(10,10,68,.18)}
.video-facade{color:#fff;position:relative;display:block;max-width:760px;border-radius:16px;overflow:hidden;border:1px solid var(--line);background:var(--navy)}
.video-facade img{display:block;width:100%;height:auto}
.video-facade .video-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:84px;height:84px;border-radius:50%;background:var(--red);box-shadow:0 8px 24px rgba(0,0,0,.35)}
.video-facade .video-play::after{content:"";position:absolute;top:50%;left:54%;transform:translate(-50%,-50%);border-style:solid;border-width:16px 0 16px 26px;border-color:transparent transparent transparent #fff}
.video-facade .video-label{display:block;padding:14px 18px;color:#fff;font-weight:600;font-size:15px}
.video-facade:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.video-caption{margin-top:12px;font-size:15px;color:#5c6178;max-width:760px}
.fact-list{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:1fr;gap:14px}
@media (min-width:760px){.fact-list{grid-template-columns:repeat(2,1fr)}}
.fact-list li{background:var(--mist);border-radius:14px;padding:20px 22px;font-size:15px}
.fact-list li strong{display:block;color:var(--navy);font-size:16px;margin-bottom:6px}
/* legal */
.legal-copy{max-width:820px}
.legal-date{color:#5c6178;font-size:15px}
/* footer */
.site-footer{background:var(--navy);color:#cdd4f0;padding:64px 0 0;font-size:15px}
.footer-grid{display:grid;grid-template-columns:1fr;gap:36px;padding-bottom:40px}
@media (min-width:760px){.footer-grid{grid-template-columns:1.2fr 1fr 1fr}}
@media (min-width:1000px){.footer-grid{grid-template-columns:1.2fr 1fr 1fr 1fr}}
.f-head{font-family:Montserrat,Arial,sans-serif;font-weight:800;color:#fff;margin-bottom:12px}
.f-col ul{list-style:none;padding:0}
.f-col a{color:#cdd4f0;text-decoration:none;display:inline-block;padding:3px 0}
.f-col a:hover{color:#fff}
.f-brand img{margin-bottom:16px}
.nap-block{margin-top:4px}
.f-nap-head{font-family:Montserrat,Arial,sans-serif;font-weight:800;color:#fff;margin:16px 0 6px;font-size:15px}
.footer-nap{font-style:normal;display:flex;flex-direction:column;gap:2px;font-size:15px;line-height:1.5}
.footer-nap .nap-name{color:#fff;font-weight:600}
.footer-nap .nap-phone{color:#fff;font-family:Montserrat,Arial,sans-serif;font-weight:800;font-size:20px;text-decoration:none;margin-top:6px;display:inline-flex;align-items:center;min-height:48px;min-width:48px}
.footer-nap .nap-phone:hover{color:var(--blue)}
.nap-note{font-size:13px;margin-top:8px;color:#a8b0d0}
.legal-strip{border-top:1px solid rgba(255,255,255,.15);padding-top:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}
.legal-strip p{margin:0;font-size:13px}
.legal-strip a{color:#cdd4f0}
/* sticky bar */
.stickybar{position:fixed;left:0;right:0;bottom:0;height:var(--bar-total);padding:0 16px env(safe-area-inset-bottom);background:var(--navy);z-index:60;display:none;gap:8px;align-items:center;transform:translateY(100%);transition:transform .25s;pointer-events:none}
/* R24 and 10.2: the bar and the body padding that reserves room for it must sit
   in the SAME @media block, and check-mobile.mjs matches the LITERAL
   padding-bottom:56px (its regex cannot resolve a custom property or a calc()).
   The pairing already existed higher up as body{padding-bottom:var(--bar-total)}
   in its own 820px block, so the rendered behaviour was correct. The GATE was
   not: it was passing on scripts/_stickybar.css, an engine reference file that
   is never deployed, which is why the same check FAILED when run against dist/.
   A gate that passes on a file the site does not ship is not a gate. The literal
   line below is the one the checker matches; the var() line after it restores
   the iOS home-indicator inset and is ignored by engines that lack env().
   Never delete the literal line and never split the two rules apart. */
@media (max-width:820px){.stickybar{display:flex}body{padding-bottom:56px;padding-bottom:var(--bar-total)}}
.stickybar.show{transform:translateY(0);pointer-events:auto}
.stickybar a{flex:1;display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:8px;font-size:15px;font-weight:600;white-space:nowrap;text-decoration:none;font-family:Montserrat,Arial,sans-serif}
.stickybar a:first-child{background:var(--red);color:#fff}
.stickybar a:nth-child(2){background:#fff;color:var(--navy)}
.stickybar a:last-child{background:transparent;border:2px solid #fff;color:#fff}
/* two-cell bar: cell 2 is both nth-child(2) and last-child, and last-child wins
   on source order, which would leave the scan CTA outlined instead of solid.
   This rule restores the solid white treatment for the two-cell layout. */
.stickybar a:nth-child(2):last-child{background:#fff;color:var(--navy);border:0}
.stickybar a:only-child{background:var(--red);color:#fff;border:0}
/* structural sections (previously unstyled class hooks) */
.hero-copy{display:flex;flex-direction:column;gap:8px;min-width:0}
.intro{background:var(--paper)}
.scope{background:var(--paper)}
.process{background:var(--paper)}
.faq-list{min-width:0}
.facts{background:var(--navy);padding:28px 0}
.facts .related-list{grid-template-columns:1fr;gap:10px}
@media (min-width:760px){.facts .related-list{grid-template-columns:repeat(4,1fr)}}
.facts .related-list li{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.22);border-radius:10px;padding:14px 18px;color:#fff;font-weight:600;font-size:15px;font-family:Montserrat,Arial,sans-serif}
.all-industries{margin-top:24px;border:1px solid var(--line);border-radius:10px;background:#fff}
.all-industries summary{cursor:pointer;padding:16px 20px;font-family:Montserrat,Arial,sans-serif;font-weight:600;color:var(--navy);list-style-position:inside}
.all-industries[open] summary{border-bottom:1px solid var(--line)}
.all-industries .related-list{padding:16px 20px 20px}
.differentiators{border-top:1px solid var(--line)}
.differentiators .scope-card{border-top:4px solid var(--red)}
/* ---------------------------------------------------- Wire 2, proof blocks
   S13 carries the stats, one client quote and the rating. S14 carries the case
   study, the GeoGrid evidence and the win lines. Every attribution line is
   rendered at readable weight and never shrunk to fine print: the whole point
   of the block is that the reader can tell which brand earned the result. */
.proof{border-top:1px solid var(--line)}
.proof-social{background:var(--mist)}
.proof-evidence{background:#fff}
.proof-intro,.proof-note{max-width:68ch;font-size:17px}
.proof-note{border-left:4px solid var(--blue);padding-left:16px;background:var(--mist);padding:12px 16px;border-radius:0 8px 8px 0}
.proof-tiles{display:grid;grid-template-columns:1fr;gap:14px;margin:24px 0 12px;padding:0}
@media (min-width:640px){.proof-tiles{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.proof-tiles{grid-template-columns:repeat(4,1fr)}}
.proof-tile{background:#fff;border:1px solid var(--line);border-top:4px solid var(--red);border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:6px}
.proof-evidence .proof-tile{background:var(--mist)}
.proof-tiles-card{margin:14px 0 16px;gap:10px}
@media (min-width:640px){.proof-tiles-card{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.proof-tiles-card{grid-template-columns:repeat(2,1fr)}}
.proof-tiles-card .proof-tile{background:#fff;padding:14px 16px}
.proof-tiles-card .proof-value{font-size:24px}
.proof-value{font-family:Montserrat,Arial,sans-serif;font-weight:700;font-size:30px;line-height:1.1;color:var(--navy)}
.proof-label{font-size:15px;line-height:1.5}
.proof-footnote{font-size:15px;color:#4a4a58;margin:0 0 24px;max-width:72ch}
.proof-quotes{display:grid;grid-template-columns:1fr;gap:20px;margin:8px 0 20px}
@media (min-width:900px){.proof-quotes:has(figure+figure){grid-template-columns:repeat(2,1fr)}}
.proof-quote{margin:0;background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px}
.proof-social .proof-quote{background:#fff}
.proof-quote blockquote{margin:0;border:0;padding:0}
.proof-quote blockquote p{margin:0 0 10px;font-size:18px;line-height:1.6}
.proof-quote figcaption{font-family:Montserrat,Arial,sans-serif;font-weight:600;font-size:15px;color:var(--navy)}
.proof-rating{font-family:Montserrat,Arial,sans-serif;font-weight:600;font-size:16px;color:var(--navy);margin:0}
.proof-figure{margin:24px 0}
.proof-figure img{width:100%;height:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.proof-figure figcaption{font-size:15px;color:#4a4a58;margin-top:10px;max-width:72ch}
.proof-wins{list-style:none;padding:0;margin:0 0 20px;display:grid;grid-template-columns:1fr;gap:10px}
@media (min-width:900px){.proof-wins{grid-template-columns:repeat(2,1fr)}}
.proof-wins li{background:var(--mist);border-radius:10px;padding:14px 18px;font-size:16px}
.proof-evidence .proof-wins li{border:1px solid var(--line)}
.proof-method{list-style:none;padding:0;margin:20px 0;display:grid;grid-template-columns:1fr;gap:10px;counter-reset:pm}
@media (min-width:800px){.proof-method{grid-template-columns:repeat(2,1fr)}}
.proof-method li{background:var(--mist);border-left:4px solid var(--red);border-radius:0 10px 10px 0;padding:14px 18px;font-size:16px;counter-increment:pm}
.proof-method li::before{content:counter(pm) ". ";font-weight:700;color:var(--red)}
.proof-disclaimer{font-size:15px;color:#4a4a58;max-width:76ch;margin:0}
.cs-grid{display:grid;grid-template-columns:1fr;gap:22px;margin:20px 0}
@media (min-width:1000px){.cs-grid:has(article+article){grid-template-columns:repeat(2,1fr)}}
.cs-card{background:var(--mist);border:1px solid var(--line);border-radius:14px;padding:24px}
.cs-card h3{font-size:20px;margin:0 0 10px}
.cs-card h4{font-family:Montserrat,Arial,sans-serif;font-size:15px;color:var(--navy);margin:16px 0 4px;text-transform:uppercase;letter-spacing:.04em}
.cs-lead{font-size:19px;font-weight:600;color:var(--navy);margin:0}
.cs-card p{font-size:16px}
.cs-duration{font-weight:600}
.cs-attribution{font-size:15px;color:#4a4a58;margin:16px 0 0;border-top:1px solid var(--line);padding-top:12px}
/* A grid or flex item defaults to min-width:auto, which is its content's
   min-content width. Without min-width:0 the 420px results table refuses to let
   its card shrink and pushes the whole 390px page into a horizontal scroll. */
.proof-tiles,.proof-wins,.proof-method,.cs-grid,.proof-quotes{min-width:0}
.proof-tile,.cs-card,.proof-quote{min-width:0}
.proof-value{overflow-wrap:anywhere}
.proof-table-wrap{overflow-x:auto;margin:16px 0;min-width:0;max-width:100%;-webkit-overflow-scrolling:touch}
.proof-table-wrap:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.proof-table{border-collapse:collapse;width:100%;min-width:420px;font-size:15px;background:#fff}
.proof-table caption{text-align:left;font-size:14px;color:#4a4a58;padding-bottom:8px}
.proof-table th,.proof-table td{border:1px solid var(--line);padding:9px 12px;text-align:left}
.proof-table thead th{background:var(--navy);color:#fff;font-family:Montserrat,Arial,sans-serif;font-size:14px}
.proof-table tbody th{font-weight:600;color:var(--navy)}
.proof-table td.num{text-align:right;font-weight:600;white-space:nowrap}
.legal-hero{border-radius:14px;border:1px solid var(--line);margin-bottom:24px}
.hero-slim{padding:64px 0 40px}
.related{background:var(--mist)}
.team{background:#fff}
.primary{background:var(--red);color:#fff}
.nap-street,.nap-city{display:block;line-height:1.5}
.video-block{margin:24px 0;border-radius:14px;overflow:hidden;border:1px solid var(--line)}
.video-block iframe,.video-block img{display:block;width:100%;height:auto}
.header-actions{display:flex;align-items:center;gap:12px;background:var(--navy)}
/* 50px, not 48: at tablet dsf 2 and mobile dsf 3 a 48px box measures 47.5 and rounds
   down, so the rendered-view gate reported a 117x47 conversion control. Clear the
   boundary rather than argue with the rounding. */
.breadcrumbs a,.site-nav a,nav a{min-width:50px;min-height:50px;display:inline-flex;align-items:center}
.legal{font-size:15px}
.btn,.cta,.cta-band a,main a.book-alt,main a[href="/connect/"]{min-height:48px;min-width:48px;display:inline-flex;align-items:center;justify-content:center}
/* tap targets: 44x44 effective area on inline and footer links without layout shift */
main p a:not(.btn),main li a:not(.btn),.book-alt a,.disqualifier a,.hub-note a,.legal-copy a{display:inline-block;padding:11px 2px;margin:-11px -2px}
/* The rule above was written to a 44px floor; R24 and check-viewports enforce 48.
   A bare tel: anchor in body copy (p.book-alt > a) rendered 117x47: 24.75px of
   line-height plus 22px of padding, one pixel short, on 37 pages at tablet and
   mobile. Phone taps are the primary conversion on a site with no forms, so they
   are held to the floor explicitly rather than inheriting a near-miss. .nap-phone
   is excluded: it already carries min-height 48px and the lv-office card overrides
   its display, so forcing inline-flex here would break that block's layout. */
main a[href^="tel:"]:not(.btn):not(.nap-phone),main a[href^="sms:"]:not(.btn):not(.nap-phone){display:inline-flex;align-items:center;min-height:48px;padding:0 2px;margin:0 -2px}
.breadcrumbs a{display:inline-block;padding:14px 4px;margin:-14px -4px}
.f-col a{padding:11px 0;margin:-8px 0}
.legal-strip a{display:inline-block;padding:14px 6px;margin:-14px -6px}
.mm-col a{padding:10px 0}
