
  :root{
    --ink:#16233a;
    --ink-soft:#3d4a61;
    --navy:#1f2c4d;
    --amber:#e9a020;
    --amber-deep:#c77f0a;
    --paper:#faf7f1;
    --paper-warm:#f3ede2;
    --line:#e3dccd;
    --white:#ffffff;
    --radius:14px;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{
    font-family:'Inter',system-ui,-apple-system,sans-serif;
    color:var(--ink);
    background:var(--paper);
    line-height:1.65;
    font-size:17px;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3{font-family:'Fraunces',Georgia,serif;font-weight:600;line-height:1.15;letter-spacing:-.01em}
  a{color:var(--navy);text-decoration-color:var(--amber);text-underline-offset:3px}
  a:hover{color:var(--amber-deep)}
  img{max-width:100%;display:block}
  .wrap{max-width:1120px;margin:0 auto;padding:0 24px}

  /* ---------- Top bar ---------- */
  .topbar{background:var(--navy);color:#c9d4e6;font-size:13px;border-bottom:1px solid rgba(255,255,255,.12)}
  .topbar-inner{max-width:1120px;margin:0 auto;padding:8px 24px;display:flex;align-items:center;gap:18px}
  .tb-loc{font-weight:700;letter-spacing:.09em;text-transform:uppercase;font-size:11.5px;color:#e8edf6}
  .tb-hours{color:#9fb0cb;position:relative;padding-left:18px}
  .tb-hours::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:14px;background:rgba(255,255,255,.25)}
  .tb-contact{margin-left:auto;display:flex;align-items:center;gap:20px}
  .tb-contact a{color:#c9d4e6;text-decoration:none;display:inline-flex;align-items:center;gap:7px;font-weight:500}
  .tb-contact a:hover{color:#fff}
  .tb-contact svg{width:14px;height:14px;fill:currentColor;flex:none}
  .tb-tel{color:var(--amber)!important;font-weight:700!important;font-size:14px}

  /* ---------- Header ---------- */
  header{
    position:sticky;top:0;z-index:50;
    background:rgba(250,247,241,.92);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
  }
  .nav{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;max-width:1120px;margin:0 auto}
  .brand{display:flex;align-items:center;gap:14px;text-decoration:none}
  .brand img{height:46px;width:auto;display:block}
  .brand .tag{font-size:12px;color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase}
  .nav-links{display:flex;gap:18px;list-style:none;align-items:center}
  .nav-links a{text-decoration:none;color:var(--ink);font-weight:500;font-size:14.5px;white-space:nowrap}
  .nav-links a:hover{color:var(--amber-deep)}
  .nav-phone{
    background:var(--navy);color:#fff!important;padding:10px 18px;border-radius:999px;
    font-weight:600;font-size:15px;text-decoration:none;white-space:nowrap;
    transition:background .2s;
  }
  .nav-phone:hover{background:var(--amber-deep)}
  .nav-tel{font-weight:600!important;white-space:nowrap}
  .menu-toggle{display:none;background:none;border:0;font-size:26px;cursor:pointer;color:var(--navy)}

  /* ---------- USP bar ---------- */
  .usp-bar{background:var(--navy);color:#dfe6f3;border-bottom:3px solid var(--amber)}
  .usp-inner{max-width:1120px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:repeat(4,1fr)}
  .usp{
    display:flex;align-items:center;gap:12px;padding:14px 18px;font-size:13.5px;font-weight:600;
    border-left:1px solid rgba(255,255,255,.14);line-height:1.35;
  }
  .usp:first-child{border-left:0;padding-left:0}
  .usp svg{flex:0 0 22px;width:22px;height:22px;stroke:var(--amber)}

  /* ---------- Hero ---------- */
  .hero{
    position:relative;color:#fff;overflow:hidden;
    background:var(--navy) url("../img/hero-electrician-working-bristol.jpg") center/cover no-repeat;
  }
  .hero::before{
    content:"";position:absolute;inset:0;
    background:linear-gradient(112deg,
      rgba(18,27,48,.96) 0%,
      rgba(42,40,110,.82) 34%,
      rgba(109,40,142,.5) 64%,
      rgba(226,42,42,.34) 100%);
  }
  .hero::after{
    content:"";position:absolute;inset:0;
    background:radial-gradient(60% 90% at 88% 12%, rgba(233,160,32,.35), transparent 60%);
    pointer-events:none;
  }
  .hero-inner{
    position:relative;z-index:2;max-width:1120px;margin:0 auto;
    padding:104px 24px 96px;
  }
  .hero .eyebrow{color:var(--amber)}
  .hero h1{font-size:clamp(36px,5.2vw,62px);color:#fff;max-width:15em;margin-bottom:22px}
  .hero p.lede{font-size:19px;color:#d7deee;max-width:36em;margin-bottom:32px}
  .cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}
  .btn{
    display:inline-block;padding:15px 28px;border-radius:999px;font-weight:600;font-size:16px;
    text-decoration:none;transition:transform .15s,background .2s;cursor:pointer;border:0;
  }
  .btn:hover{transform:translateY(-2px)}
  .btn-primary{background:var(--amber);color:var(--navy)!important}
  .btn-primary:hover{background:#f5b642;color:var(--navy)!important}
  .btn-ghost{background:rgba(255,255,255,.08);color:#fff!important;box-shadow:inset 0 0 0 2px rgba(255,255,255,.7)}
  .btn-ghost:hover{background:rgba(255,255,255,.18)}
  .badges{display:flex;gap:10px;flex-wrap:wrap}
  .badge{
    font-size:13px;font-weight:600;color:#fff;
    border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.1);
    backdrop-filter:blur(4px);
    padding:7px 14px;border-radius:999px;
  }
  .hero-credit{
    position:absolute;right:16px;bottom:12px;z-index:2;
    font-size:11px;color:rgba(255,255,255,.55);
  }

  /* ---------- Accreditations ---------- */
  .accred{background:var(--white);border-bottom:1px solid var(--line);padding:40px 0 44px}
  .accred-inner{max-width:1120px;margin:0 auto;padding:0 24px;text-align:center}
  .accred-title{font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:26px}
  .accred-row{display:flex;justify-content:center;align-items:stretch;gap:22px;flex-wrap:wrap}
  .accred-logo{
    flex:1 1 180px;max-width:240px;min-height:96px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
    background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:18px 20px;
    filter:grayscale(15%);transition:filter .2s,transform .2s,box-shadow .2s;
  }
  .accred-logo:hover{filter:none;transform:translateY(-3px);box-shadow:0 12px 30px -14px rgba(22,35,58,.3)}
  a.accred-logo{text-decoration:none}
  .accred-logo img{max-height:78px;max-width:100%;width:auto;height:auto;object-fit:contain;display:block;margin-bottom:8px}
  .accred-logo .l2{font-size:12px;font-weight:600;color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase}
  .accred-note{margin-top:18px;font-size:12.5px;color:var(--ink-soft);font-style:italic}

  /* ---------- Section scaffolding ---------- */
  section{padding:72px 0}
  .section-head{max-width:46em;margin-bottom:40px}
  .section-head h2{font-size:clamp(28px,3.4vw,40px);color:var(--navy);margin-bottom:14px}
  .section-head p{color:var(--ink-soft);font-size:18px}
  .alt{background:var(--white);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .warm{background:var(--paper-warm);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

  /* ---------- Services grid ---------- */
  .svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--white)}
  .svc{
    padding:28px 24px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);
    text-decoration:none;transition:background .2s;position:relative;
  }
  .svc:nth-child(4n){border-right:0}
  .svc:nth-child(n+5){border-bottom:0}
  .svc:hover{background:var(--paper)}
  .svc h3{font-size:19px;color:var(--navy);margin-bottom:8px;font-family:'Inter',sans-serif;font-weight:700}
  .svc p{font-size:15px;color:var(--ink-soft)}
  .svc .arrow{position:absolute;top:26px;right:20px;color:var(--amber-deep);font-weight:700}
  .more-link{display:inline-block;margin-top:26px;font-weight:600;font-size:16px}

  /* ---------- Job cards ---------- */
  .jobs{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
  .job{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:transform .2s,box-shadow .2s}
  .job:hover{transform:translateY(-4px);box-shadow:0 18px 44px -20px rgba(22,35,58,.3)}
  .job img{height:210px;width:100%;object-fit:cover}
  .job .body{padding:20px 22px 24px}
  .job .where{font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--amber-deep);margin-bottom:6px}
  .job h3{font-size:19px;color:var(--navy);margin-bottom:8px;font-family:'Inter',sans-serif;font-weight:700}
  .job p{font-size:15px;color:var(--ink-soft)}
  .stock-note{font-size:13px;color:var(--ink-soft);margin-top:18px;font-style:italic}

  /* ---------- Reviews ---------- */
  .reviews-sec{
    background:
      radial-gradient(70% 120% at 100% 0%, rgba(233,160,32,.16), transparent 55%),
      var(--navy);
    color:#e6ebf5;
  }
  .reviews-sec .section-head h2{color:#fff}
  .reviews-sec .section-head p{color:#c3cde0}
  .reviews{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:26px}
  .review{
    position:relative;background:rgba(255,255,255,.06);
    border:1px solid rgba(255,255,255,.14);
    border-top:4px solid var(--amber);
    padding:56px 26px 26px;border-radius:var(--radius);
    display:flex;flex-direction:column;gap:16px;
  }
  .review.featured{background:rgba(255,255,255,.1)}
  .review::before{
    content:"\201C";position:absolute;top:2px;left:20px;
    font-family:'Fraunces',serif;font-size:96px;line-height:1;color:var(--amber);opacity:.9;
  }
  .review .stars{color:var(--amber);font-size:17px;letter-spacing:3px}
  .review blockquote{font-family:'Fraunces',serif;font-size:18px;font-style:italic;color:#f4f6fb;line-height:1.55}
  .review.featured blockquote{font-size:20px}
  .review cite{font-style:normal;font-size:13px;color:#9facc6;margin-top:auto}
  .reviews-sec .more-link{color:#fff;text-decoration-color:var(--amber)}
  .reviews-sec .more-link:hover{color:var(--amber)}

  /* ---------- Prices ---------- */
  .price-band{display:flex;gap:48px;align-items:center;flex-wrap:wrap}
  .price-band .copy{flex:1 1 420px}
  .price-links{display:flex;flex-direction:column;gap:12px;flex:0 0 280px}
  .price-links a{
    display:flex;justify-content:space-between;align-items:center;background:var(--white);
    border:1px solid var(--line);border-radius:12px;padding:18px 22px;font-weight:600;color:var(--navy);
    text-decoration:none;transition:border-color .2s,transform .15s;
  }
  .price-links a:hover{border-color:var(--amber);transform:translateX(4px)}
  .price-links a span{color:var(--amber-deep)}

  /* ---------- Gallery ---------- */
  .gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
  .g-item{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:1/1;cursor:zoom-in;border:1px solid var(--line)}
  .g-item img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
  .g-item:hover img{transform:scale(1.06)}
  .g-item .cap{
    position:absolute;left:0;right:0;bottom:0;padding:26px 12px 10px;font-size:12.5px;font-weight:600;color:#fff;
    background:linear-gradient(transparent, rgba(18,27,48,.85));
  }
  .g-item.horror .cap{background:linear-gradient(transparent, rgba(120,20,20,.85))}
  .lightbox{
    display:none;position:fixed;inset:0;z-index:100;background:rgba(12,18,32,.92);
    align-items:center;justify-content:center;padding:40px;cursor:zoom-out;
  }
  .lightbox.open{display:flex}
  .lightbox img{max-width:92vw;max-height:88vh;border-radius:10px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
  .lightbox .lb-cap{position:absolute;bottom:22px;left:0;right:0;text-align:center;color:#dfe6f3;font-size:14px}

  /* ---------- Video ---------- */
  .video-sec{background:var(--navy);color:#e6ebf5}
  .video-wrap{display:grid;grid-template-columns:1fr 1.25fr;gap:52px;align-items:center}
  .video-sec h2{color:#fff;font-size:clamp(28px,3.4vw,40px);margin-bottom:16px}
  .video-sec p{color:#c3cde0;margin-bottom:14px}
  .video-frame{
    position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:16/9;
    box-shadow:0 26px 60px -20px rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.16);
  }
  .video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

  /* ---------- Which? widget ---------- */
  .which-widget{margin-top:44px;background:#fff;border-radius:var(--radius);padding:10px;border:1px solid rgba(255,255,255,.2)}
  .which-widget iframe{width:100%;min-height:560px;border:0;display:block;border-radius:8px}

  /* ---------- Areas ---------- */
  .areas-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
  .areas-list span,.areas-list a{
    background:var(--white);border:1px solid var(--line);border-radius:999px;padding:8px 16px;
    font-size:14px;font-weight:500;color:var(--ink);text-decoration:none;
  }
  .areas-list a{border-color:var(--amber);color:var(--navy);font-weight:600}
  .areas-list a:hover{background:var(--amber);color:var(--navy)}

  /* ---------- Who turns up ---------- */
  .who{display:grid;grid-template-columns:.85fr 1.15fr;gap:56px;align-items:center}
  .who img{width:100%;height:560px;object-fit:cover;border-radius:var(--radius);box-shadow:0 24px 60px -24px rgba(22,35,58,.35)}
  .who h2{font-size:clamp(28px,3.4vw,40px);color:var(--navy);margin-bottom:18px}
  .who p{color:var(--ink-soft);margin-bottom:16px}
  .cred-list{list-style:none;margin:20px 0 0;display:flex;flex-direction:column;gap:10px}
  .cred-list li{padding-left:28px;position:relative;font-size:15px;color:var(--ink)}
  .cred-list li::before{content:"";position:absolute;left:0;top:9px;width:14px;height:14px;border-radius:50%;background:var(--amber)}

  /* ---------- Quote form ---------- */
  .quote{display:grid;grid-template-columns:1fr 1.2fr;gap:56px}
  .quote .intro h2{font-size:clamp(28px,3.4vw,40px);color:var(--navy);margin-bottom:18px}
  .quote .intro p{color:var(--ink-soft);margin-bottom:16px}
  .contact-lines{list-style:none;margin-top:8px;display:flex;flex-direction:column;gap:12px;font-size:16px}
  .contact-lines strong{color:var(--navy)}
  form.quote-form{
    background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:32px;
    display:grid;grid-template-columns:1fr 1fr;gap:18px;
  }
  .field{display:flex;flex-direction:column;gap:6px}
  .field.full{grid-column:1/-1}
  .field label{font-size:13px;font-weight:600;color:var(--navy);letter-spacing:.02em}
  .field input,.field select,.field textarea{
    font:inherit;font-size:15px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;
    background:var(--paper);color:var(--ink);
  }
  .field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--amber);border-color:transparent}
  .field textarea{min-height:110px;resize:vertical}
  .form-note{grid-column:1/-1;font-size:13px;color:var(--ink-soft)}
  .form-note b{color:var(--amber-deep)}
  form .btn{grid-column:1/-1;justify-self:start}

  /* ---------- FAQ ---------- */
  .faq{max-width:760px;margin:0 auto}
  details{border-bottom:1px solid var(--line);padding:6px 0}
  details summary{
    cursor:pointer;list-style:none;font-family:'Fraunces',serif;font-size:21px;font-weight:600;color:var(--navy);
    padding:18px 40px 18px 0;position:relative;
  }
  details summary::after{
    content:"+";position:absolute;right:4px;top:14px;font-size:26px;color:var(--amber-deep);
    transition:transform .2s;font-family:'Inter',sans-serif;font-weight:400;
  }
  details[open] summary::after{transform:rotate(45deg)}
  details .answer{padding:0 40px 22px 0;color:var(--ink-soft)}
  details summary::-webkit-details-marker{display:none}

  /* ---------- Footer ---------- */
  footer{background:var(--navy);color:#cdd5e4;padding:56px 0 32px;margin-top:0}
  .foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;margin-bottom:40px}
  footer h4{font-family:'Inter',sans-serif;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber);margin-bottom:16px}
  footer ul{list-style:none;display:flex;flex-direction:column;gap:9px;font-size:15px}
  footer a{color:#cdd5e4;text-decoration:none}
  footer a:hover{color:var(--amber)}
  .foot-brand .logo{font-family:'Fraunces',serif;font-weight:700;font-size:26px;color:#fff}
  .foot-brand .logo em{font-style:normal;color:var(--amber)}
  .foot-brand p{font-size:14px;margin-top:12px;max-width:26em}
  .foot-base{border-top:1px solid rgba(255,255,255,.14);padding-top:24px;font-size:13px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}

  /* ---------- Responsive ---------- */
  @media(max-width:960px){
    .who,.quote{grid-template-columns:1fr;gap:36px}
    .usp-inner{grid-template-columns:1fr 1fr}
    .usp{border-left:0;padding:12px 0}
    .hero-inner{padding:72px 24px 64px}
    .who img{height:380px}
    .svc-grid{grid-template-columns:1fr 1fr}
    .svc:nth-child(4n){border-right:1px solid var(--line)}
    .svc:nth-child(2n){border-right:0}
    .svc:nth-child(n+5){border-bottom:1px solid var(--line)}
    .svc:nth-child(n+7){border-bottom:0}
    .jobs,.reviews{grid-template-columns:1fr}
    .gallery-grid{grid-template-columns:1fr 1fr}
    .video-wrap{grid-template-columns:1fr;gap:32px}
    .foot-grid{grid-template-columns:1fr 1fr}
  }
  @media(max-width:720px){
    .nav-links{
      display:none;position:absolute;top:100%;left:0;right:0;background:var(--paper);
      flex-direction:column;align-items:flex-start;padding:20px 24px;gap:16px;
      border-bottom:1px solid var(--line);
    }
    .nav-links.open{display:flex}
    .menu-toggle{display:block}
    .svc-grid{grid-template-columns:1fr}
    .svc{border-right:0!important;border-bottom:1px solid var(--line)!important}
    .svc:last-child{border-bottom:0!important}
    form.quote-form{grid-template-columns:1fr;padding:24px}
    .usp-inner{grid-template-columns:1fr}
    .foot-grid{grid-template-columns:1fr}
  }

/* ---------- Inner pages ---------- */
.page-hero{
  background:linear-gradient(112deg, rgba(18,27,48,.97) 0%, rgba(42,40,110,.9) 40%, rgba(109,40,142,.55) 75%, rgba(226,42,42,.3) 100%);
  color:#fff;padding:56px 0 52px;
}
.page-hero .eyebrow{color:var(--amber);display:inline-block;font-size:13px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px}
.page-hero h1{color:#fff;font-size:clamp(30px,4vw,46px);max-width:22em}
.crumbs{font-size:13.5px;color:#aeb9d0;margin-bottom:18px}
.crumbs a{color:#dfe6f3;text-decoration:none}
.crumbs a:hover{color:var(--amber)}
.prose{padding:56px 24px 72px;max-width:1120px}
.prose p,.prose li{max-width:75ch}
.prose h2{font-size:clamp(23px,2.6vw,30px);color:var(--navy);margin:44px 0 14px}
.prose h2:first-child{margin-top:0}
.prose p{margin-bottom:16px;color:var(--ink-soft)}
.prose ul,.prose ol{margin:0 0 18px 22px;color:var(--ink-soft)}
.prose li{margin-bottom:8px}
.prose table{width:100%;border-collapse:collapse;margin:8px 0 24px;background:var(--white);border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.prose th{background:var(--navy);color:#fff;text-align:left;padding:12px 16px;font-size:14px}
.prose td{padding:12px 16px;border-top:1px solid var(--line);font-size:15.5px}
.prose tr:nth-child(even) td{background:var(--paper)}
.prose strong{color:var(--ink)}
.prose th strong{color:#fff}
.prose blockquote{border-left:4px solid var(--amber);background:var(--white);padding:16px 22px;margin:0 0 18px;border-radius:0 12px 12px 0;font-style:italic}
.tbd{background:#fdf0d0;color:#8a5b00;padding:1px 7px;border-radius:6px;font-size:.92em;white-space:nowrap}
.byline{margin-top:48px;padding-top:18px;border-top:1px solid var(--line);font-size:13.5px;color:var(--ink-soft)}
.faq-item{border-bottom:1px solid var(--line);padding:4px 0;margin:0 0 2px}
.faq-item summary{
  cursor:pointer;list-style:none;font-family:'Fraunces',serif;font-size:20px;font-weight:600;color:var(--navy);
  padding:16px 40px 16px 0;position:relative;
}
.faq-item summary::after{content:"+";position:absolute;right:4px;top:12px;font-size:24px;color:var(--amber-deep);transition:transform .2s;font-family:'Inter',sans-serif;font-weight:400}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item .answer{padding:0 40px 18px 0}
.cta-band{background:linear-gradient(112deg, var(--navy), #3a2a6e 55%, #6d2890);color:#fff;padding:52px 0}
.cta-inner{display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap}
.cta-inner h2{color:#fff;font-size:clamp(24px,3vw,34px);margin-bottom:8px}
.cta-inner p{color:#d7deee;margin:0}
.cta-inner p a{color:var(--amber);text-decoration:none;font-weight:600}
.cta-btns{display:flex;gap:12px;flex-wrap:wrap}
.quote-sec{padding:64px 0}
.map-embed iframe{width:100%;height:380px;border:0;border-radius:var(--radius);border:1px solid var(--line)}
.job-link{display:inline-block;margin-top:12px;font-weight:600;font-size:14px}
main .jobs{margin:18px 0 34px}
@media(max-width:720px){.cta-inner{flex-direction:column;align-items:flex-start}}


/* ============================ v5 — services landing & inner-page sections ============================ */

/* split hero (services landing) */
.hero-split{padding:72px 0 80px}
.hero-split-inner{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center}
.hero-split .lede{margin-bottom:28px}
.hero-split .cta-row{margin-bottom:26px}
.hero-media{margin:0;position:relative}
.hero-media img{width:100%;height:380px;object-fit:cover;border-radius:var(--radius);box-shadow:0 28px 56px rgba(9,14,28,.45)}
.hero-media::after{
  content:"";position:absolute;inset:16px -16px -16px 16px;z-index:-1;
  border:2px solid var(--amber);border-radius:var(--radius);
}

/* service card grid */
.svc-group{padding:64px 0}
.svc-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.svc-card{
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:inherit;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.svc-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(18,27,48,.14);border-color:var(--amber)}
.svc-card img{width:100%;height:176px;object-fit:cover}
.svc-card-body{padding:22px 22px 20px;display:flex;flex-direction:column;gap:10px;flex:1}
.svc-card-body h3{color:var(--navy);font-size:20px}
.svc-card-body p{color:var(--ink-soft);font-size:15px;flex:1;margin:0}
.svc-more{color:var(--amber-deep);font-weight:700;font-size:14px}
.svc-card:hover .svc-more{color:var(--navy)}

/* "not sure which you need?" callout */
.svc-callout{background:var(--navy);color:#e6ebf5;padding:64px 0}
.svc-callout-inner{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.svc-callout h2{color:#fff;font-size:clamp(26px,3vw,36px);margin-bottom:14px}
.svc-callout p{color:#c3cde0;margin-bottom:24px;max-width:34em}
.svc-callout-list{list-style:none;display:grid;gap:10px}
.svc-callout-list li{
  display:flex;justify-content:space-between;align-items:center;gap:16px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  border-radius:10px;padding:13px 18px;font-size:15px;
}
.svc-callout-list a{color:var(--amber);font-weight:600;white-space:nowrap;text-decoration:none}
.svc-callout-list a:hover{color:#f5b642}

/* how-it-works steps */
.steps-sec .steps{
  list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin:0;padding:0;
}
.steps li{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:28px 26px}
.step-n{
  display:inline-flex;width:42px;height:42px;border-radius:50%;
  background:var(--amber);color:var(--navy);font-weight:700;font-size:18px;
  align-items:center;justify-content:center;margin-bottom:16px;font-family:'Inter',sans-serif;
}
.steps h3{color:var(--navy);font-size:21px;margin-bottom:8px}
.steps p{color:var(--ink-soft);font-size:15px;margin:0}

@media(max-width:960px){
  .hero-split-inner{grid-template-columns:1fr;gap:44px}
  .hero-media img{height:300px}
  .svc-cards{grid-template-columns:1fr 1fr}
  .svc-callout-inner{grid-template-columns:1fr;gap:36px}
  .steps-sec .steps{grid-template-columns:1fr}
}
@media(max-width:600px){
  .svc-cards{grid-template-columns:1fr}
  .svc-callout-list li{flex-direction:column;align-items:flex-start;gap:4px}
}

/* ============================ v5 — nav dropdowns ============================ */
.has-sub{position:relative;display:flex;align-items:center}
.has-sub > a::after{
  content:"";display:inline-block;margin-left:6px;vertical-align:2px;
  border:4px solid transparent;border-top:5px solid var(--amber-deep);
}
.sub-toggle{display:none;background:none;border:0;cursor:pointer;color:var(--navy);padding:6px}
.sub-toggle svg{width:13px;height:13px;stroke:currentColor;transition:transform .18s}
.sub-menu{
  display:none;position:absolute;top:100%;left:0;z-index:60;
  background:var(--white);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 24px 48px rgba(18,27,48,.16);padding:22px 24px;
  grid-auto-flow:column;gap:36px;
}
.sub-menu::before{content:"";position:absolute;top:-10px;left:0;right:0;height:10px}
.has-sub:hover .sub-menu,.has-sub:focus-within .sub-menu{display:grid}
.sub-wide{grid-auto-flow:row;grid-template-columns:repeat(3,auto);gap:24px 44px}
.sub-col{display:flex;flex-direction:column;gap:9px;min-width:180px}
.sub-head{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--amber-deep);margin-bottom:3px}
.sub-menu a{color:var(--ink);font-size:14px;font-weight:500;text-decoration:none;white-space:nowrap}
.sub-menu a::after{display:none}
.sub-menu a:hover{color:var(--amber-deep)}

@media(max-width:720px){
  .has-sub{flex-wrap:wrap;width:100%;gap:0}
  .has-sub > a::after{display:none}
  .sub-toggle{display:block}
  .has-sub.sub-open .sub-toggle svg{transform:rotate(180deg)}
  .sub-menu{
    position:static;box-shadow:none;border:0;border-left:2px solid var(--line);
    border-radius:0;padding:2px 0 2px 18px;width:100%;
    grid-auto-flow:row!important;grid-template-columns:1fr!important;gap:14px;
  }
  .sub-menu::before{display:none}
  .has-sub.sub-open .sub-menu{display:grid;margin-top:12px}
  .sub-col{gap:12px}
  .sub-head{margin-top:8px}
}

/* ============================ v6 — nav comfort, float CTA, tile arrow fix ============================ */

/* --- dropdown redesign: roomier panels, no clipping, softer feel --- */
.sub-menu{
  top:calc(100% + 10px);left:-8px;
  padding:28px 30px;border-radius:16px;
  box-shadow:0 30px 60px rgba(18,27,48,.18), 0 4px 12px rgba(18,27,48,.08);
  gap:40px;
}
.sub-menu::before{top:-11px;height:11px}
.sub-menu::after{
  content:"";position:absolute;top:0;left:26px;right:26px;height:3px;
  border-radius:0 0 3px 3px;background:var(--amber);
}
.sub-wide{grid-template-columns:repeat(3,minmax(200px,auto));gap:28px 48px}
.sub-col{min-width:0;gap:6px}
.sub-head{margin-bottom:8px;letter-spacing:.11em}
.sub-menu a{
  padding:7px 12px;margin:0 -12px;border-radius:8px;line-height:1.4;
  transition:background .15s,color .15s;
}
.sub-menu a:hover{background:var(--paper-warm);color:var(--navy)}
@media(min-width:721px){
  .has-sub:last-of-type .sub-menu{left:auto;right:-8px}  /* keep panels off the right edge */
}

/* --- homepage service tiles: stop long titles running under the arrow --- */
.svc h3{padding-right:30px}

/* --- related services strip on service pages --- */
.rel-sec{padding:64px 0 8px}
.rel-sec .section-head{margin-bottom:30px}

/* --- floating mobile call/quote buttons --- */
.float-cta{
  position:fixed;right:14px;bottom:14px;z-index:70;display:none;
  align-items:center;gap:10px;
  opacity:0;transform:translateY(14px);pointer-events:none;
  transition:opacity .25s ease,transform .25s ease;
}
.float-cta.show{opacity:1;transform:none;pointer-events:auto}
.float-call{
  width:52px;height:52px;border-radius:50%;background:var(--navy);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;
  box-shadow:0 10px 24px rgba(18,27,48,.38);
}
.float-call svg{width:24px;height:24px;stroke:var(--amber);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.float-quote{
  background:var(--amber);color:var(--navy)!important;font-weight:700;font-size:15px;
  padding:14px 24px;border-radius:999px;text-decoration:none;white-space:nowrap;
  box-shadow:0 10px 24px rgba(18,27,48,.3);
}
.float-quote:hover{background:#f5b642}
@media(max-width:720px){.float-cta{display:flex}}
@media(max-width:720px){
  .sub-menu{top:0;left:0}  /* mobile: static flow, reset desktop offsets */
}

/* ============================ v7 — photo heroes, split rows, inline CTA ============================ */

/* service hero: photo background with the homepage gradient overlay */
.page-hero.has-photo{position:relative;overflow:hidden;background-position:center;background-size:cover;background-repeat:no-repeat}
.page-hero.has-photo::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(112deg,
    rgba(18,27,48,.96) 0%,
    rgba(42,40,110,.84) 34%,
    rgba(109,40,142,.5) 64%,
    rgba(226,42,42,.34) 100%);
}
.page-hero.has-photo .hero-split-inner{position:relative;z-index:2}
.hero-split .badges{margin-bottom:0}

/* 50/50 content rows */
.split-row{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center;margin:56px 0}
.split-row h2{margin-top:0}
.split-media{margin:0}
.split-media img{
  width:100%;height:340px;object-fit:cover;border-radius:var(--radius);
  box-shadow:0 18px 40px rgba(18,27,48,.14);
}
.split-row.left .split-media{order:0}
.split-text > p:last-child{margin-bottom:0}

/* inline CTA band inside content */
.cta-inline{
  margin:56px 0;padding:34px 38px;border-radius:var(--radius);
  background:
    radial-gradient(70% 140% at 100% 0%, rgba(233,160,32,.18), transparent 55%),
    var(--navy);
  color:#e6ebf5;display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
}
.cta-inline h3{color:#fff;font-size:24px;margin-bottom:8px}
.cta-inline p{color:#c3cde0;margin:0;max-width:44em}
.cta-inline .cta-btns{display:flex;gap:12px;flex-wrap:wrap;flex:0 0 auto}

/* "What I can also help with": exactly 60px above and below */
.prose:has(+ .rel-sec){padding-bottom:0}
.rel-sec{padding:60px 0}

@media(max-width:900px){
  .split-row{grid-template-columns:1fr;gap:26px;margin:44px 0}
  .split-media img{height:260px}
  .cta-inline{padding:28px 24px}
}

/* exact 60px: drop the byline's bottom margin when it precedes the related-services section */
.prose:has(+ .rel-sec) .byline{margin-bottom:0}


/* ============================ v8 — full-width services mega menu + mini-menu fix ============ */
@media(min-width:721px){
  /* mini dropdowns (Guides, Areas): implicit auto columns collapse to 0 in an
     abspos shrink-to-fit grid — size tracks to their content instead */
  .sub-menu:not(.sub-wide){grid-auto-columns:max-content}

  /* services mega menu: JS stretches it to the .nav box (logo -> CTA);
     5 equal group columns, long labels wrap instead of clipping */
  .sub-wide{box-sizing:border-box;grid-template-columns:repeat(5,1fr);gap:24px 30px}
  .sub-wide .sub-head{white-space:normal}
  .sub-wide a{white-space:normal;line-height:1.35}
}

/* ============================ v9 — CTA strips, review cards, video grid ============ */
.cta-strip{background:var(--navy);color:#e6ebf5;padding:56px 0;text-align:center}
.cta-strip h2{color:#fff;font-size:clamp(24px,3vw,34px);margin-bottom:10px}
.cta-strip p{color:#c3cde0;max-width:42em;margin:0 auto 24px}
.cta-strip .cta-row{justify-content:center;margin-bottom:0}
.btn-outline{background:transparent;color:var(--navy)!important;box-shadow:inset 0 0 0 2px var(--navy)}
.btn-outline:hover{background:var(--navy);color:#fff!important}
.rev-summary{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:40px}
.rev-chip{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:16px 24px;min-width:150px}
.rev-chip .n{font-size:32px;font-weight:700;color:#fff;font-family:'Fraunces',serif;line-height:1.1}
.rev-chip .stars{color:var(--amber);font-size:14px;letter-spacing:2px;margin:4px 0 6px}
.rev-chip .l{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#aeb9d0}
.reviews .review h3{font-family:'Inter',sans-serif;font-size:16px;font-weight:700;color:#fff;margin:2px 0 10px}
.video-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}
@media(max-width:960px){.video-grid{grid-template-columns:1fr}}

/* v10 — video cards with poster + caption */
.video-card{margin:0}
.video-frame{background:#101d33 center/cover no-repeat;box-shadow:0 14px 34px rgba(4,12,26,.45)}
.video-play{position:absolute;inset:0;margin:auto;width:72px;height:72px;border-radius:50%;background:rgba(10,23,43,.55);pointer-events:none}
.video-play::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-38%,-50%);border-style:solid;border-width:14px 0 14px 22px;border-color:transparent transparent transparent #f5b51b}
.video-cap{margin-top:.7rem;font-size:.95rem;color:#c3cde0;text-align:center}

/* v11 — top bar mobile + accred logo sizing */
@media(max-width:960px){
  .tb-hours{display:none}
}
@media(max-width:720px){
  .topbar-inner{padding:7px 20px;gap:12px}
  .tb-mail{display:none!important}
  .tb-loc{font-size:10.5px;letter-spacing:.07em}
}

/* v12 — estimate disclaimer + Bristol-average comparison */
.est-note{background:#fdf6e7;border-left:4px solid var(--amber);border-radius:0 10px 10px 0;padding:14px 18px;margin:6px 0 22px;font-size:15.5px;line-height:1.55;color:#3a3f4a}
.est-note strong{color:var(--navy)}
.est-compare{background:#eef4fb;border:1px solid #d4e2f2;border-radius:10px;padding:14px 18px;margin:14px 0 26px;font-size:15.5px;line-height:1.55;color:#2c3648}
.est-compare strong{color:var(--navy)}

  /* v13: photo row below FAQ sections */
  .prose .faq-gallery{margin:16px 0 36px}
