:root{
    --brand:#2147f3;
    --brand-dark:#1635c4;
    --brand-text:#1a38cf;
    --accent:#f6c032;
    --accent-dark:#a9780c;
    --accent-ink:#3a2700;
    --tint:#eef1ff;

    /* type stack */
    --font-head:'Barlow Condensed','Archivo','Helvetica Neue',Arial,sans-serif;
    --font-body:'Source Sans 3','Segoe UI',Arial,sans-serif;
    --page-bg:#d9dcd9;
    --panel:#ffffff;
    --top-bar:#eeeeee;
    --ink:#333333;
    --rule:#dddddd;
  }

  *,*::before,*::after{box-sizing:border-box;}

  html{text-size-adjust:100%;-webkit-text-size-adjust:100%;}

  body{
    margin:0;
    background-color:var(--page-bg);
    font-family:var(--font-body);
    font-size:1.0625rem;
    line-height:1.62;
    color:var(--ink);
  }

  a{color:inherit;text-decoration:none;}

  /* masthead */
  .masthead{
    background:linear-gradient(#f7f7f7,#e7e7e7);
    border-bottom:1px solid #d5d5d5;
  }
  .bar-row{
    max-width:1200px;margin:0 auto;padding:14px 26px;
    display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  }

  .logo{display:flex;align-items:center;gap:10px;}
  .logo-img{width:262px;height:auto;max-width:100%;flex:none;display:block;}

  @media (max-width:760px){
    /* the header stacks and centres on small screens */
    .logo{flex-wrap:wrap;}
  }

  .contact-strip{text-align:right;line-height:1.1;}
  .contact-strip .label{
    font-family:var(--font-head);
    font-size:19px;color:var(--brand-text);
  }
  .contact-strip .phone{
    font-family:var(--font-head);
    font-size:32px;font-weight:700;color:var(--brand);display:block;margin-top:2px;
  }

  /* primary menu */
  nav{background:linear-gradient(var(--brand),var(--brand-dark));}
  .menu-row{
    max-width:1200px;margin:0 auto;padding:0 9px;
    display:flex;justify-content:space-between;flex-wrap:wrap;
  }
  .menu-row a{
    font-family:var(--font-head);
    font-size:16px;font-weight:500;letter-spacing:.2px;color:#fff;padding:15px 17px;display:block;
  }
  .menu-row a:hover,.menu-row a:focus-visible{background:rgba(0,0,0,.18);}
  .menu-row a.active{background:rgba(0,0,0,.25);font-weight:700;}

  /* ---------- page shell ---------- */
  .shell{
    max-width:1200px;margin:0 auto;background:var(--panel);
    padding:26px 26px 40px;
  }


  /* ---------- service cat-grid ---------- */
  .cat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;}
  .cat-card{display:block;background:var(--brand);text-align:center;}
  .cat-card .cat-art{height:118px;display:flex;align-items:center;justify-content:center;}
  .cat-card svg{width:74px;height:74px;fill:#fff;}
  .cat-card .cat-art.tile-photo{padding:0;}
  .cat-card .tile-photo img{width:100%;height:100%;object-fit:cover;object-position:center 55%;display:block;}
  .cat-card:hover .tile-photo img{opacity:.9;}

  .cat-card .name{
    display:block;background:var(--brand-dark);color:#fff;font-size:14px;font-weight:600;
    letter-spacing:.6px;text-transform:uppercase;padding:11px 5px;line-height:1.25;
  }
  .cat-card:hover .name,.cat-card:focus-visible .name{background:var(--accent);color:var(--accent-ink);}
  .cat-card:hover,.cat-card:focus-visible{background:var(--brand-dark);}

  /* page frame */
  .content{display:grid;grid-template-columns:290px 1fr;gap:36px;margin-top:32px;}

  /* ---------- aside-col ---------- */
  .aside-col{position:sticky;top:104px;align-self:start;}
  .aside-col > :first-child{margin-top:0;}

  /* aside-col cards */
  .aside-block{
    margin-top:22px;background:#fff;border:1px solid var(--rule);
    border-top:4px solid var(--brand);
  }
  .aside-block > h3{
    margin:0;padding:12px 16px 10px;
    font-family:var(--font-head);font-weight:600;font-size:20px;
    color:var(--brand-text);border-bottom:1px solid var(--rule);
  }
  .aside-block > h3 small{
    display:block;font-family:var(--font-body);
    font-size:12px;letter-spacing:1.4px;text-transform:uppercase;
    color:var(--accent-dark);margin-bottom:2px;
  }

  /* job index */
  .job-links{list-style:none;margin:0;padding:6px 0 8px;}
  .job-links li{border-bottom:1px solid #eee;}
  .job-links li:last-child{border-bottom:0;}
  .job-links a{
    display:block;padding:8px 16px 8px 30px;position:relative;font-size:16px;color:#3b3b3b;
  }
  .job-links a::before{
    content:"";position:absolute;left:16px;top:15px;
    width:6px;height:6px;border-top:2px solid var(--accent);border-right:2px solid var(--accent);
    transform:rotate(45deg);
  }
  .job-links a:hover,.job-links a:focus-visible{background:var(--tint);color:var(--brand-text);}
  .job-links .current-job{
    display:block;padding:8px 16px 8px 30px;position:relative;font-size:16px;
    background:var(--tint);color:var(--brand-text);font-weight:600;
  }
  .job-links .current-job::before{
    content:"";position:absolute;left:16px;top:15px;
    width:6px;height:6px;border-top:2px solid var(--brand);border-right:2px solid var(--brand);
    transform:rotate(45deg);
  }

  .aside-offer{display:block;margin-top:22px;border:1px solid var(--rule);}
  .aside-offer img{display:block;width:100%;height:auto;}
  .aside-offer:hover img,.aside-offer:focus-visible img{opacity:.93;}

  /* perk-list */
  .perk-list{list-style:none;margin:0;padding:12px 16px 16px;}
  .perk-list li{display:flex;gap:9px;align-items:flex-start;margin-bottom:9px;font-size:16px;}
  .perk-list li:last-child{margin-bottom:0;}
  .perk-list svg{width:17px;height:17px;flex:none;margin-top:3px;fill:var(--brand);}

  /* aside phone block */
  .aside-call{
    margin-top:22px;background:var(--accent);color:var(--accent-ink);padding:18px 16px;
    border-left:6px solid var(--accent-dark);
  }
  .aside-call .eyebrow{
    margin:0;font-size:12px;letter-spacing:1.6px;text-transform:uppercase;opacity:.9;
  }
  .aside-call .num{
    font-family:var(--font-head);font-size:28px;font-weight:700;
    display:block;line-height:1.1;margin:4px 0 6px;
  }
  .aside-call .num:hover{text-decoration:underline;}
  .aside-call .meta{margin:0;font-size:14px;opacity:.95;}

  /* ---------- qa ---------- */
  .qa{margin-top:42px;border-top:3px solid var(--brand);padding-top:24px;}
  .qa h2{
    font-family:var(--font-head);font-weight:600;font-size:28px;
    color:var(--brand-text);margin:0 0 8px;
  }
  .qa-row{border:1px solid var(--rule);border-left:4px solid var(--brand);margin-bottom:8px;background:#fff;}
  .qa-row summary{
    list-style:none;cursor:pointer;padding:13px 44px 13px 16px;position:relative;
    font-family:var(--font-head);font-size:19px;font-weight:600;color:var(--brand-text);
  }
  .qa-row summary::-webkit-details-marker{display:none;}
  .qa-row summary::after{
    content:"";position:absolute;right:18px;top:20px;width:9px;height:9px;
    border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);
    transform:rotate(45deg);transition:transform .18s ease;
  }
  .qa-row[open] summary::after{transform:rotate(-135deg);top:24px;}
  .qa-row summary:hover{background:var(--tint);}
  .qa-row summary:focus-visible{outline:2px solid var(--brand);outline-offset:-2px;}
  .qa-body{padding:0 16px 14px;border-top:1px solid #f0f0f0;}
  .qa-body p{margin:12px 0 0;}
  @media (prefers-reduced-motion:reduce){.qa-row summary::after{transition:none;}}

  /* ---------- service districts ---------- */
  .districts{margin-top:42px;border-top:3px solid var(--brand);padding-top:24px;}
  .districts h2{
    font-family:var(--font-head);font-weight:600;font-size:28px;
    color:var(--brand-text);margin:0 0 8px;
  }
  .district-grid{
    column-count:5;column-gap:28px;list-style:none;margin:0;padding:0;font-size:15px;
  }
  .district-grid li{break-inside:avoid;padding:2px 0;}
  .district-grid li{color:#3d3d3d;}
  .district-grid .alpha{
    font-family:var(--font-head);font-size:17px;font-weight:700;
    color:var(--accent-dark);border-bottom:1px solid var(--rule);
    margin:12px 0 5px;padding-bottom:2px;
  }
  .district-grid .alpha:first-child{margin-top:0;}
  @media (max-width:1080px){.district-grid{column-count:4;}}
  @media (max-width:820px){.district-grid{column-count:3;}}
  @media (max-width:560px){.district-grid{column-count:2;}}

  /* content column */
  main h1{
    letter-spacing:-.2px;
    font-family:var(--font-head);font-weight:700;
    font-size:33px;color:var(--brand-text);margin:0 0 22px;line-height:1.2;letter-spacing:-.4px;
  }
  main h2{
    font-family:var(--font-head);font-weight:600;
    font-size:24px;color:var(--brand-text);margin:34px 0 12px;letter-spacing:-.2px;
  }
  main p{margin:0;margin-bottom:18px;}
  main ul{margin:0;margin-bottom:18px;padding-inline-start:20px;}
  main li{margin-block-end:7px;}


  .lede-figure{margin:0 0 26px;}
  .lede-figure img{
    display:block;width:100%;height:auto;border:1px solid var(--rule);
  }

  .tel-link{color:var(--brand-text);font-weight:700;}
  main p a:not(.tel-link){color:var(--brand-text);text-decoration:underline;text-underline-offset:2px;}
  main p a:not(.tel-link):hover,main p a:not(.tel-link):focus-visible{color:var(--brand-dark);background:var(--tint);}

  .ribbon-call{
    background:var(--accent);color:var(--accent-ink);text-align:center;padding:18px;
    margin-top:34px;border-top:4px solid var(--brand);
    font-family:var(--font-head);font-size:24px;font-weight:600;
  }
  .ribbon-call a{text-decoration:underline;}

  /* page foot */
  footer{background:#2b2b2b;color:#cfcfcf;font-size:15px;}
  .footer-row{
    max-width:1200px;margin:0 auto;padding:34px 26px;
    display:grid;grid-template-columns:repeat(3,1fr);gap:30px;
  }
  footer h3{
    font-family:var(--font-head);font-size:18px;font-weight:600;color:#fff;
    margin:0 0 10px;font-weight:400;
  }
  footer ul{margin:0;padding:0;list-style-type:none;}
  footer li{margin-block-end:5px;}
  /* registered name heads the contact column */
  footer .firm{
    display:block;font-family:var(--font-head);font-weight:600;
    font-size:1.0625rem;color:#fff;margin-bottom:2px;
  }
  footer a:hover{text-decoration:underline;color:#fff;}
  .legal-line{border-top:1px solid #444;text-align:center;padding:14px;font-size:13px;color:#9a9a9a;}

  /* breakpoints */
  @media (max-width:1080px){
    .logo-img{width:224px;height:auto;}
    .contact-strip .phone{font-size:36px;}
    .contact-strip .label{font-size:22px;}
  }

  @media (max-width:900px){
    .content{grid-template-columns:1fr;}
    .aside-col{position:static;}
    .cat-grid{grid-template-columns:repeat(3,1fr);}
    .footer-row{grid-template-columns:1fr;}
  }
  @media (max-width:760px){
    .bar-row{flex-direction:column;text-align:center;}
    .contact-strip{text-align:center;}
    .logo-img{width:196px;height:auto;}
    .contact-strip .phone{font-size:27px;}
    .menu-row{justify-content:center;}
    .menu-row a{padding:11px 12px;font-size:15px;}
    main h1{font-size:1.625rem;}
    .shell{padding:18px 16px 30px;}
  }
  @media (max-width:430px){
    .cat-grid{grid-template-columns:1fr;}
  }

  @media (prefers-reduced-motion:reduce){
    *{transition:none!important;animation:none!important;}
  }

  /* small screen nav */
  .menu-btn{
    display:none;align-items:center;justify-content:center;
    width:48px;height:48px;flex:none;padding:0;cursor:pointer;
    background:linear-gradient(var(--brand),var(--brand-dark));
    border:0;border-radius:6px;box-shadow:0 1px 2px rgba(0,0,0,.25);
  }
  .menu-btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px;}
  .menu-btn .bars{display:block;width:22px;height:16px;position:relative;}
  .menu-btn .bars span{
    position:absolute;left:0;width:100%;height:2.5px;background:#fff;border-radius:2px;
    transition:transform .22s ease,opacity .18s ease,top .22s ease;
  }
  .menu-btn .bars span:nth-child(1){top:0;}
  .menu-btn .bars span:nth-child(2){top:6.75px;}
  .menu-btn .bars span:nth-child(3){top:13.5px;}
  .menu-btn[aria-expanded="true"] .bars span:nth-child(1){top:6.75px;transform:rotate(45deg);}
  .menu-btn[aria-expanded="true"] .bars span:nth-child(2){opacity:0;}
  .menu-btn[aria-expanded="true"] .bars span:nth-child(3){top:6.75px;transform:rotate(-45deg);}

  @media (max-width:760px){
    .menu-btn{display:inline-flex;}
    .bar-row{
      flex-direction:row;flex-wrap:wrap;align-items:center;
      justify-content:space-between;text-align:left;gap:12px;
    }
    /* Logo and menu button share the first row. The logo link is capped at
       the width left over once the 48px button and the gap are accounted for,
       so the firm name wraps beneath the mark instead of pushing the button
       onto a row of its own. */
    .logo{
      min-width:0;flex:0 1 auto;max-width:calc(100% - 62px);flex-wrap:wrap;
    }
    .contact-strip{flex:1 0 100%;text-align:center;order:3;}
    nav{padding:0 0 0 0;}
    nav .menu-row{display:none;flex-direction:column;padding:0;}
    nav.open .menu-row{display:flex;}
    .menu-row a{
      padding:14px 18px;text-align:left;font-size:21px;
      border-top:1px solid rgba(255,255,255,.2);
    }
    .menu-row a:first-child{border-top:0;}
  }

  @media (prefers-reduced-motion:reduce){
    .menu-btn .bars span{transition:none;}
  }
  /* pinned masthead */
  .masthead{position:sticky;top:0;z-index:60;box-shadow:0 2px 6px rgba(0,0,0,.14);}
  [id]{scroll-margin-top:104px;}
  @media (max-width:760px){
    .bar-row{padding:10px 16px;}
    [id]{scroll-margin-block-start:120px;}
  }

  /* enquiry form */
  .enquiry-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
  .field{display:flex;flex-flow:column nowrap;}
  .field.full{grid-column:1/-1;grid-column-end:-1;}
  .field label{margin-bottom:4px;color:#5c5c5c;font-size:.875rem;letter-spacing:.4px;text-transform:uppercase;}
  .field input,.field select,.field textarea{
    padding:10px 12px;background:#fff;border:1px solid #cbcbcb;
    color:#333;font-family:inherit;font-size:1rem;border-radius:0;
  }
  .field textarea{resize:vertical;min-height:7.5rem;}
  .field input:focus,.field select:focus,.field textarea:focus{
    outline:0;border-color:var(--brand);box-shadow:0 0 0 3px rgba(33,71,243,.22);
  }
  .send-btn{
    grid-column:1 / -1;background:var(--brand);color:#fff;border:0;cursor:pointer;
    font-family:var(--font-head);font-size:19px;font-weight:600;padding:13px 18px;
  }
  .send-btn:hover{background:var(--brand-dark);}
  .send-note{grid-column:1 / -1;margin:0;font-size:14px;color:#6a6a6a;}
  .send-state{
    grid-column:1 / -1;margin:0;padding:11px 14px;background:var(--tint);
    border-left:4px solid var(--brand);font-size:16px;
  }
  .send-state.ok{background:#eef7f0;border-left-color:#2f7d4f;}
  .send-state.error{background:#fdeceb;border-left-color:#b3261e;}
  .send-state[hidden]{display:none;}

  /* field state */
  .field-msg{margin:5px 0 0;font-size:13.5px;line-height:1.35;color:#b3261e;}
  .field-msg[hidden]{display:none;}
  .field.invalid input,.field.invalid select,.field.invalid textarea{
    background:#fffafa;border-color:#b3261e;
  }
  .field.invalid input:focus,.field.invalid select:focus,.field.invalid textarea:focus{
    box-shadow:0 0 0 2px rgba(179,38,30,.22);border-color:#b3261e;
  }
  .send-btn:disabled{opacity:.65;cursor:default;}

  /* spam trap: pushed off canvas, since bots ignore display:none */
  .trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
  .reach-us{
    margin:26px 0 0;padding:16px;border:1px solid var(--rule);border-left:4px solid var(--accent);
  }
  .reach-us p{margin:0 0 6px;}
  .reach-us p:last-child{margin-bottom:0;}
  @media (max-width:620px){.enquiry-grid{grid-template-columns:1fr;}}


  /* main content above the aside-col on phones (all pages except the landing page) */
  @media (max-width:900px){
    body:not(.landing) .aside-col{position:static;order:2;}
    body:not(.landing) .content > main{order:1;}
  }


  /* the aside-col chevrons and FAQ arrow sit on white, where the pale accent
     washes out - use the darker tone for those small marks only */
  .job-links a::before,
  .active-job::before,
  .qa-row summary::after{
    border-color:var(--accent-dark);
  }

  /* ---------- five-tile breakpoints ---------- */
  @media (max-width:1180px){.cat-grid{grid-template-columns:repeat(3,1fr);}}
  @media (max-width:620px){.cat-grid{grid-template-columns:repeat(2,1fr);}}
  @media (max-width:400px){.cat-grid{grid-template-columns:1fr;}}

  /* keep the torsion spring and the winding bars in frame on the springs cat-card,
     which sits higher than the centre of the photo */
  .cat-card img[src$="tile-springs.jpg"]{object-position:center 38%;}

  /* the alphabet dividers were removed from the neighborhood list, so retire
     the rule that styled them */
  .district-grid .alpha{display:none;}

  /* ---------- condensed heading scale ----------
     Barlow Condensed sets narrower than the old face, so headings are sized up
     to hold the same presence on the page. */
  /* 38px keeps the longer headings on one line in the condensed webfont and
     in the Arial fallback alike, so nothing reflows while the font swaps */
  main h1{font-size:38px;line-height:1.12;}
  main h2{font-size:29px;letter-spacing:.1px;}
  .qa h2,.districts h2,.reviews h2{font-size:31px;}
  .qa-row summary{font-size:19px;}
  .aside-block > h3{font-size:23px;}
  .cat-card .name{font-size:15px;letter-spacing:.7px;}
  .menu-row a{font-size:17px;letter-spacing:.3px;}
  .contact-strip .phone{font-size:35px;letter-spacing:.2px;}
  .contact-strip .label{font-size:20px;}
  .ribbon-call{font-size:26px;}
  .aside-call .num,.contact-call .num{letter-spacing:.2px;}
  .hero-form h2{font-size:27px;}
  .review-by .who{font-size:17px;}
  footer h3{font-size:19px;}
  @media (max-width:760px){
    main h1{font-size:30px;}
    main h2{font-size:25px;}
  }

  /* ---------- hero with booking form ---------- */
  .hero{
    position:relative;display:grid;grid-template-columns:1fr minmax(340px,520px);
    align-items:center;margin:-26px -26px 22px;background:var(--brand-dark);
  }
  .hero-media{position:absolute;inset:0;overflow:hidden;}
  .hero-media img{display:block;width:100%;height:100%;object-fit:cover;object-position:28% 50%;}
  /* scrim so the card edge never fights a busy part of the photo */
  .hero-media::after{
    content:"";position:absolute;inset:0;
    background:linear-gradient(90deg,rgba(8,20,74,0) 38%,rgba(8,20,74,.30) 60%,rgba(8,20,74,.62) 100%);
  }
  .hero-form{
    position:relative;grid-column:2;margin:18px;padding:16px 18px 18px;
    background:#fff;box-shadow:0 10px 26px rgba(0,0,0,.28);
    border-top:5px solid var(--accent);
  }
  .hero-form h2{
    font-family:var(--font-head);font-size:24px;font-weight:700;
    color:var(--brand-text);margin:0 0 4px;line-height:1.15;
  }
  .hero-form-note{margin:0 0 12px;font-size:14px;color:#5a5a5a;line-height:1.4;}
  .hero-form-note a{
    color:var(--brand-text);font-weight:700;text-decoration:underline;white-space:nowrap;
  }
  .hero-form form{display:grid;grid-template-columns:1fr 1fr;gap:9px 12px;}
  .hero-form .field{margin-bottom:0;min-width:0;}
  .hero-form .field.full{grid-column:1/-1;grid-column-end:-1;}
  .hero-form .send-state{grid-column:1 / -1;}
  .hero-form .field label{
    font-size:12px;letter-spacing:.6px;text-transform:uppercase;
    color:#5c5c5c;margin-bottom:3px;display:block;
  }
  .hero-form input,.hero-form select{
    width:100%;font-family:var(--font-body);font-size:16px;
    padding:8px 10px;border:1px solid #c9c9c9;background:#fff;color:var(--ink);
  }
  .hero-form input:focus,.hero-form select:focus{
    outline:0;border-color:var(--brand);box-shadow:0 0 0 3px rgba(33,71,243,.22);
  }
  .hero-form .send-btn{grid-column:1 / -1;width:100%;margin-top:2px;font-size:18px;padding:12px 16px;}
  .hero-form input[type="date"]{min-height:40px;}
  .hero-form .field-msg{margin:4px 0 0;font-size:13px;color:#b3261e;}
  .hero-form .field.invalid input,.hero-form .field.invalid select{border-color:#b3261e;}
  .hero-form .send-state{margin:10px 0 0;font-size:14px;}

  /* below this the card would crowd the photo, so let them stack instead */
  @media (max-width:900px){
    .hero{grid-template-columns:1fr;background:none;}
    .hero-media{position:relative;inset:auto;}
    .hero-media img{height:auto;}
    .hero-media::after{display:none;}
    .hero-form{grid-column:1;margin:-28px 14px 0;}
  }
  @media (max-width:760px){
    .hero{margin:-18px -16px 18px;}
    .hero-form{margin:-24px 10px 0;}
  }
  @media (max-width:470px){
    .hero-form form{grid-template-columns:1fr;}
  }

  /* ---------- coupons ---------- */
  .coupons{
    display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 24px;
  }
  .coupon{display:block;position:relative;}
  .coupon-action{
    position:absolute;left:0;right:0;bottom:0;
    background:var(--accent);color:var(--accent-ink);
    font-family:var(--font-head);font-size:13px;font-weight:700;
    letter-spacing:.4px;text-transform:uppercase;text-align:center;padding:7px 4px;
    opacity:0;transform:translateY(100%);transition:opacity .15s ease, transform .15s ease;
  }
  .coupon:hover .coupon-action,.coupon:focus-visible .coupon-action{
    opacity:1;transform:translateY(0);
  }
  .coupon img{
    display:block;width:100%;height:auto;
    transition:transform .15s ease, box-shadow .15s ease;
  }
  .coupon:hover img,.coupon:focus-visible img{
    transform:translateY(-3px);box-shadow:0 6px 14px rgba(0,0,0,.18);
  }
  .coupon:focus-visible{outline:3px solid var(--brand);outline-offset:3px;}
  @media (max-width:900px){.coupons{grid-template-columns:repeat(3,1fr);}}
  @media (max-width:640px){.coupons{grid-template-columns:repeat(2,1fr);}}
  @media (max-width:380px){.coupons{grid-template-columns:1fr;}}
  @media (prefers-reduced-motion:reduce){
    .coupon img,.coupon-action{transition:none;}
    .coupon:hover img,.coupon:focus-visible img{transform:none;}
  }
  /* touch devices have no hover, so keep the label visible there */
  @media (hover:none){
    .coupon-action{opacity:1;transform:translateY(0);}
  }

  /* ---------- service page banner ---------- */
  .page-banner{margin:0 0 22px;}
  .page-banner img{
    display:block;width:100%;height:auto;border:1px solid var(--rule);
  }
  @media (max-width:760px){.page-banner{margin:0 0 16px;}}
  @media print{.page-banner{display:none;}}

  /* ---------- footer legal line ---------- */
  .legal-line a{text-decoration:underline;text-underline-offset:2px;}
  .legal-line a:hover,.legal-line a:focus-visible{color:#fff;}
  .legal-line span{margin:0 6px;opacity:.55;}

  /* ---------- postal address ---------- */
  .addr{font-style:normal;line-height:1.5;}
  footer .addr{color:#cfcfcf;}
  .addr-note{margin:10px 0 0;font-size:15px;color:#5f5f5f;}

  /* ---------- manufacturer logos ----------
     Sits flush on top of the footer: no bottom margin anywhere in current-job. */
  .brands{background:var(--panel);margin:0;}
  .brands-inner{
    max-width:1200px;margin:0 auto;padding:0 26px 24px;
  }
  /* flex rather than grid so a short final row centres instead of stranding
     one logo against the left edge */
  .brand-row{
    list-style:none;margin:0;padding:20px 0 0;border-top:1px solid var(--rule);
    display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:18px 34px;
  }
  .brand-row li{display:flex;align-items:center;justify-content:center;margin:0;}
  .brand-row img{display:block;max-width:100%;height:auto;max-height:30px;width:auto;}
  @media (max-width:900px){.brand-row{gap:18px 28px;}}
  @media (max-width:560px){.brand-row{gap:18px 22px;}.brand-row img{max-height:26px;}}
  @media (max-width:760px){.brands-inner{padding:0 16px 20px;}}
  @media print{.brands{display:none;}}

  /* ---------- printing a single coupon ---------- */
  .print-stage{display:none;}
  @media print{
    /* hide the page, then bring back only the staged coupon */
    body.printing-coupon > *{display:none !important;}
    body.printing-coupon .print-stage{display:block !important;}
    .print-stage{text-align:center;padding:12mm 0 0;}
    .print-stage img{width:105mm;height:auto;}
    .print-stage p{
      font-family:var(--font-body);font-size:11pt;color:#000;margin:8mm 0 0;
    }
    .coupon-action{display:none;}
  }

  /* ---------- reviews ---------- */
  .reviews{margin-top:42px;border-top:3px solid var(--brand);padding-top:24px;}
  .reviews h2{
    font-family:var(--font-head);font-size:27px;font-weight:700;
    color:var(--brand-text);margin:0 0 10px;
  }
  .review-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;}
  .review{
    border:1px solid var(--rule);border-top:4px solid var(--accent);
    background:#fff;padding:16px 18px;
  }
  .review .stars{
    margin:0 0 8px;font-size:19px;letter-spacing:2px;color:var(--accent-dark);line-height:1;
  }
  .review-job{
    margin:0 0 8px;font-family:var(--font-head);font-size:13px;font-weight:600;
    letter-spacing:.8px;text-transform:uppercase;color:var(--brand-text);
  }
  .review-text{margin:0 0 12px;font-size:16px;}
  .review-by{
    margin:0;display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;
    border-top:1px solid #f0f0f0;padding-top:10px;
  }
  .review-by .who{font-family:var(--font-head);font-weight:700;color:var(--brand-text);}
  .review-by .where{
    font-size:13px;letter-spacing:1.2px;text-transform:uppercase;color:#6a6a6a;
  }
  .review-by .when{font-size:13px;color:#8a8a8a;margin-left:auto;white-space:nowrap;}
  @media (max-width:420px){.review-by .when{margin-left:0;}}
  @media (max-width:820px){.review-grid{grid-template-columns:1fr;}}

  /* ---------- contact page call block ---------- */
  .contact-call{
    background:var(--accent);color:var(--accent-ink);
    border-left:6px solid var(--brand);padding:18px 20px;margin:0 0 26px;
  }
  .contact-call .eyebrow{
    margin:0;font-size:12px;letter-spacing:1.6px;text-transform:uppercase;opacity:.85;
  }
  .contact-call .num{
    font-family:var(--font-head);font-size:34px;font-weight:700;
    display:block;line-height:1.1;margin:4px 0 6px;
  }
  .contact-call .num:hover{text-decoration:underline;}
  .contact-call .meta{margin:0;font-size:15px;}
  .contact-call .meta a{text-decoration:underline;}

  /* ---------- honeypot ---------- */
  .field.trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
