:root{--ink:#0C2B29;--petrol:#10453F;--paper:#FFFFFF;--paper-warm:#F1F6F7;--sky:#E7F0F3;--sky-deep:#D5E6EB;--line:#DCE7E8;--amber:#DF9A24;--amber-deep:#A9700F;--amber-soft:#FBF0DC;--white:#fff;--muted:#5C6F6B;--display:'Bricolage Grotesque',Georgia,serif;--body:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
/* shared chrome: footer + cookie banner, used on every page */
.site-footer *,.cc *{box-sizing:border-box}
.cc .btn{display:block;width:100%;text-align:center;font-family:var(--body);font-weight:600;border-radius:8px;border:none;cursor:pointer;text-decoration:none;transition:background .16s ease}
/* ---------- site footer ---------- */
.site-footer{background:var(--petrol);color:#AFC4C0;padding:52px 0 34px;font-size:.86rem;line-height:1.65}
.site-footer .wrap{max-width:1140px}
.site-footer a{color:#EAF2F0;text-decoration:none}
.site-footer a:hover{color:var(--amber);text-decoration:underline}
.foot-grid{display:grid;grid-template-columns:1fr;gap:30px;padding-bottom:32px}
@media(min-width:640px){.foot-grid{grid-template-columns:1fr 1fr}}
@media(min-width:960px){.foot-grid{grid-template-columns:1.1fr 1fr 1fr;gap:56px}}
.foot-h{font-family:var(--display);font-weight:800;font-size:.72rem;letter-spacing:.15em;text-transform:uppercase;color:var(--amber);margin:0 0 10px}
.foot-col p{margin:0 0 3px;max-width:none}
.foot-col p+.foot-h{margin-top:22px}
.foot-big{font-family:var(--display);font-weight:800;font-size:1.22rem;letter-spacing:-.02em;color:#fff!important;text-decoration:none!important;display:inline-block;margin-bottom:2px}
.foot-links{display:flex;flex-direction:column;gap:7px}
.foot-links a{display:inline-block}
.foot-btm{border-top:1px solid rgba(255,255,255,.14);padding-top:26px}
.foot-btm p{max-width:none;font-size:.79rem;line-height:1.6;color:#93AAA6;margin:0 0 12px}
.foot-auth{color:#CFDEDB!important;font-size:.84rem!important;margin-bottom:14px!important}
.foot-auth a{border-bottom:1px solid rgba(255,255,255,.35)}
.foot-copy{color:#7C9490!important;margin-bottom:0!important}

/* ---------- cookie banner ---------- */
.cc{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:#fff;
  border-top:1px solid var(--line);box-shadow:0 -10px 40px -14px rgba(12,43,41,.45);
  max-height:88vh;overflow-y:auto}
.cc[hidden]{display:none!important}
.cc-inner{max-width:1040px;margin:0 auto;padding:22px}
@media(min-width:900px){.cc-inner{display:grid;grid-template-columns:1fr 232px;gap:36px;align-items:start;padding:26px 22px}}
.cc-h{font-family:var(--display);font-weight:800;font-size:1.12rem;letter-spacing:-.02em;color:var(--petrol);margin:0 0 7px}
.cc-p{font-size:.87rem;color:var(--muted);line-height:1.55;max-width:64ch;margin:0}
.cc-p a{color:var(--amber-deep);font-weight:600}
.cc-opts{margin-top:16px;display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--line);padding-top:14px}
.cc-opts[hidden]{display:none}
.cc-opt{display:flex;gap:12px;align-items:flex-start;font-size:.85rem;color:var(--ink);line-height:1.5;cursor:pointer;padding:9px 0;border-bottom:1px solid var(--paper-warm)}
.cc-opt:last-child{border-bottom:none}
.cc-opt input{margin:2px 0 0;width:18px;height:18px;accent-color:var(--petrol);flex:0 0 18px;cursor:pointer}
.cc-opt input:disabled{opacity:.5;cursor:default}
.cc-opt b{font-weight:600;color:var(--petrol)}
.cc-btns{display:flex;flex-direction:column;gap:10px;margin-top:18px}
@media(min-width:900px){.cc-btns{margin-top:0}}
.cc .cc-btns .btn{margin:0;padding:14px 18px;font-size:.94rem;width:100%;line-height:1.2}
.cc .cc-accept{background:var(--petrol);color:#fff}
.cc .cc-accept:hover{background:var(--ink);color:#fff}
.cc .cc-reject{background:#fff;color:var(--petrol);border:2px solid var(--petrol)}
.cc .cc-reject:hover{background:var(--sky);color:var(--petrol)}
.cc .cc-save{background:var(--amber);color:var(--ink)}
.cc .cc-save:hover{background:var(--amber-deep);color:#fff}
.cc-link{background:none;border:none;font-family:var(--body);font-size:.84rem;font-weight:600;
  color:var(--muted);cursor:pointer;text-decoration:underline;padding:6px;text-align:center}
.cc-link:hover{color:var(--petrol)}
body.cc-open{padding-bottom:0}
.cc [hidden]{display:none!important}
.q h2:focus{outline:none}
.q h2:focus-visible{outline:3px solid var(--amber);outline-offset:4px;border-radius:4px}

/* ---------- primary CTA: unmistakably a button ---------- */
.btn-go{
  display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
  background:#12A150;color:#fff;border:none;border-radius:10px;cursor:pointer;
  font-family:var(--body);font-weight:700;letter-spacing:-.01em;
  font-size:clamp(.82rem,3.5vw,1.08rem);white-space:nowrap;
  padding:17px 16px;margin:0 0 10px;
  box-shadow:0 6px 0 #0C7A3C, 0 12px 26px -10px rgba(18,161,80,.6);
  transition:background .16s ease, transform .1s ease, box-shadow .16s ease;
  animation:ctaNudge 3.6s ease-in-out 1.2s infinite;
}
.btn-go:hover{background:#15B85B;box-shadow:0 6px 0 #0C7A3C, 0 16px 32px -10px rgba(18,161,80,.7)}
.btn-go:active{transform:translateY(4px);box-shadow:0 2px 0 #0C7A3C, 0 6px 14px -8px rgba(18,161,80,.6);animation:none}
.btn-go:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.btn-go-a{font-size:1.15em;line-height:1;transition:transform .16s ease}
.btn-go:hover .btn-go-a{transform:translateX(4px)}
@keyframes ctaNudge{
  0%,88%,100%{transform:translateY(0) rotate(0)}
  90%{transform:translateY(-3px) rotate(-.7deg)}
  93%{transform:translateY(-3px) rotate(.7deg)}
  96%{transform:translateY(-1px) rotate(0)}
}
@media(prefers-reduced-motion:reduce){.btn-go{animation:none}.btn-go-a{transition:none}}

/* ---------- quote page: lift the CTA above the fold on mobile ---------- */
.q.active[data-step="result"]{display:flex;flex-direction:column}
[data-step="result"] .result-head{order:1}
[data-step="result"] .monthly{order:2}
[data-step="result"] #toTerms{order:3}
[data-step="result"] .cta-note{order:4}
[data-step="result"] .softcall{order:5}
[data-step="result"] .qref{order:6}
[data-step="result"] .callnow{order:7}
[data-step="result"] .disclaim{order:8}

@media(max-width:700px){
  .quote-bar{padding:9px 0 0}
  .quote-bar .flow-nav{padding:7px 0 3px}
  .quote-body{padding:16px 22px 34px}
  .result-head{padding:18px 18px 20px;margin-bottom:12px;border-radius:12px}
  .result-label{font-size:.66rem;letter-spacing:.11em;line-height:1.35}
  .result-big{font-size:clamp(2rem,10.5vw,2.6rem);margin:6px 0 5px}
  .result-sub{font-size:.85rem;line-height:1.45;max-width:34ch}
  .urgency-flag{margin-top:10px;padding:5px 12px;font-size:.76rem}
  .monthly{padding:14px 16px;margin-bottom:14px;border-radius:11px}
  .monthly-l{font-size:.68rem;margin-bottom:5px;letter-spacing:.1em}
  .monthly-v{font-size:clamp(1.6rem,7.4vw,2rem)}
  .monthly-v .from{font-size:.74rem;margin-right:5px}
  .monthly-n{font-size:.76rem;margin-top:7px;line-height:1.4;max-width:32ch}
  .btn-go{padding:16px 14px;margin-bottom:8px}
  .cta-note{font-size:.78rem;margin-bottom:18px}
  .softcall{margin-bottom:16px}
}

@media(max-width:400px){
  .quote-bar{padding:7px 0 0}
  .quote-bar .flow-nav{padding:5px 0 2px}
  .quote-body{padding:13px 20px 30px}
  .result-head{padding:15px 15px 17px;margin-bottom:10px}
  .result-label{font-size:.63rem;letter-spacing:.09em}
  .result-big{font-size:clamp(1.85rem,10vw,2.3rem);margin:5px 0 4px}
  .result-sub{font-size:.81rem;line-height:1.4}
  .urgency-flag{margin-top:8px;padding:4px 11px;font-size:.71rem;line-height:1.3}
  .monthly{padding:12px 14px;margin-bottom:11px}
  .monthly-v{font-size:clamp(1.5rem,7vw,1.85rem)}
  .monthly-n{font-size:.73rem;margin-top:6px}
  .btn-go{padding:15px 12px}
}
.exit-link,.counter{white-space:nowrap}
.quote-bar .flow-nav{gap:12px}
@media(max-width:480px){
  .counter{font-size:.62rem;letter-spacing:.08em}
  .exit-link{font-size:.76rem}
}
.quote-bar .flow-nav{min-width:0}
.counter{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
.exit-link{flex:0 0 auto}
.back{flex:0 0 auto}

/* ---------- section "Apply now" CTAs ---------- */
.sec-cta{margin-top:34px;display:flex;justify-content:flex-start}
.btn-apply{display:inline-flex;align-items:center;justify-content:center;gap:9px;width:auto;
  background:#12A150;color:#fff;border:none;border-radius:9px;cursor:pointer;
  font-family:var(--body);font-weight:700;font-size:1rem;white-space:nowrap;
  padding:14px 26px;box-shadow:0 4px 0 #0C7A3C,0 10px 22px -10px rgba(18,161,80,.55);
  transition:background .16s ease,transform .1s ease,box-shadow .16s ease}
.btn-apply:hover{background:#15B85B;color:#fff}
.btn-apply:active{transform:translateY(3px);box-shadow:0 1px 0 #0C7A3C}
.btn-apply:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.btn-apply.on-dark{box-shadow:0 4px 0 #0C7A3C,0 10px 24px -8px rgba(0,0,0,.45)}
.btn-apply .btn-go-a{transition:transform .16s ease}
.btn-apply:hover .btn-go-a{transform:translateX(4px)}
@media(max-width:560px){.sec-cta{justify-content:stretch}.btn-apply{width:100%}}
.calc-flash{animation:calcFlash 1.4s ease}
@keyframes calcFlash{0%{box-shadow:0 18px 40px -22px rgba(60,70,72,.28)}
  25%{box-shadow:0 0 0 5px rgba(18,161,80,.35),0 18px 40px -22px rgba(60,70,72,.28)}
  100%{box-shadow:0 18px 40px -22px rgba(60,70,72,.28)}}
@media(prefers-reduced-motion:reduce){.calc-flash{animation:none}}

/* ---------- resume link + copy ---------- */
.resume-field{display:flex;gap:8px;align-items:stretch}
.resume-field input{flex:1 1 auto;min-width:0}
.resume-copy{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;
  background:var(--petrol);color:#fff;border:none;border-radius:8px;cursor:pointer;
  font-family:var(--body);font-weight:600;font-size:.82rem;padding:0 14px;
  transition:background .16s ease}
.resume-copy:hover{background:var(--ink)}
.resume-copy:focus-visible{outline:3px solid var(--amber);outline-offset:2px}
.resume-copy svg{width:17px;height:17px;flex:0 0 17px}
.resume-copy.copied{background:#12A150}
@media(max-width:460px){.resume-copy-t{display:none}.resume-copy{padding:0 13px}}

/* ---------- Calendly ---------- */
.cal-wrap{margin:20px 0 8px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.calendly-inline-widget{min-width:320px;height:1050px}
@media(max-width:700px){.calendly-inline-widget{height:1150px}}
.cal-fallback{font-size:.84rem;color:var(--muted);text-align:center;padding:16px}
.dl-box{margin:26px auto 0;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;text-align:left}
.dl-h{font-family:var(--display);font-weight:800;font-size:1rem;color:var(--petrol);margin:0 0 6px}
.dl-p{font-size:.85rem;color:var(--muted);line-height:1.5;margin:0 0 14px;max-width:none}
.dl-box .btn-go{animation:none;margin:0}
.dl-note{font-size:.78rem;color:var(--muted);margin:10px 0 0;text-align:center;min-height:1em}
.dl-note.ok{color:#0C7A3C;font-weight:600}
.dl-note.err{color:#A3341F;font-weight:600}

/* ---------- regulatory disclosure: must render on load, no interaction ---------- */
.disclosure{background:var(--paper-warm);border-top:3px solid var(--amber);padding:44px 0 46px}
.disclosure .wrap{max-width:1140px}
.disc-h{font-family:var(--display);font-weight:800;font-size:clamp(1.35rem,3vw,1.75rem);
  letter-spacing:-.02em;color:var(--petrol);margin:0 0 16px}
.disclosure p{font-size:1rem;line-height:1.6;color:var(--ink);max-width:none;margin:0 0 14px}
.disc-lead{padding:14px 16px;background:#fff;border-left:4px solid var(--petrol);border-radius:0 8px 8px 0}
.disc-grid{display:grid;grid-template-columns:1fr;gap:26px;margin:22px 0 8px}
@media(min-width:900px){.disc-grid{grid-template-columns:.85fr 1.15fr;gap:44px}}
.disc-block h3{font-family:var(--display);font-weight:800;font-size:1rem;color:var(--petrol);
  margin:0 0 7px;letter-spacing:-.01em}
.disc-block h3+p{margin-bottom:20px}
.disc-apr{font-size:1.18rem!important;color:var(--petrol)!important;
  background:#fff;border:2px solid var(--petrol);border-radius:9px;padding:12px 16px;display:inline-block}
.disc-ex{margin-bottom:14px!important}
.disc-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);
  border-radius:9px;overflow:hidden;font-size:.95rem}
.disc-table td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink)}
.disc-table td:last-child{text-align:right;font-weight:600;white-space:nowrap}
.disc-table tr:last-child td{border-bottom:none}
.disc-table .disc-total td{background:var(--sky);font-weight:700;color:var(--petrol)}
.disc-warn{font-weight:600;color:var(--petrol)!important;margin-top:22px!important}
.disc-note{font-size:.92rem!important;color:var(--muted)!important}
@media(max-width:560px){
  .disclosure{padding:34px 0 36px}
  .disc-table{font-size:.88rem}
  .disc-table td{padding:9px 11px}
}

/* Compact disclosure: retain readable type and every cost/risk statement on
   load. Reduce panels, columns and spacing, not access to the information. */
.disclosure-compact{border-top:1px solid var(--line);padding:26px 0}
.disclosure-compact .disc-h{font-family:inherit;font-size:1rem;font-weight:700;line-height:1.6;letter-spacing:normal;color:inherit;margin-bottom:12px}
.disclosure-compact p{font-size:1rem;line-height:1.6;margin:0 0 12px}
.disclosure-compact .disc-lead{padding:0;background:none;border:0;border-radius:0}
.disclosure-compact .disc-ex{margin-bottom:12px!important}
.disclosure-compact .disc-warn{margin-top:0!important}
.disclosure-compact .disc-note{font-size:1rem!important;color:var(--ink)!important;margin-bottom:0}

/* ---- postcode lookup ---- */
.lookup{position:relative}
.pc{margin-bottom:11px}
.pc-row{display:flex;gap:8px;align-items:stretch}
.pc-input{flex:1 1 auto;min-width:0;padding:13px 14px;border:2px solid var(--line);border-radius:9px;font-family:var(--body);font-size:1rem;background:var(--white);color:var(--ink);text-transform:uppercase}
.pc-input::placeholder{text-transform:none}
.pc-input:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px rgba(223,154,36,.2)}
.pc-input.invalid{border-color:#A3341F;background:#FDF6F4}
.pc-find{flex:0 0 auto;padding:13px 17px;border:2px solid var(--petrol);border-radius:9px;background:var(--petrol);color:#fff;font-family:var(--body);font-weight:600;font-size:.94rem;cursor:pointer;white-space:nowrap}
.pc-find:hover:not(:disabled){background:var(--ink);border-color:var(--ink)}
.pc-find:disabled{opacity:.6;cursor:default}
.pc-select{display:block;width:100%;margin-top:9px;padding:13px 14px;border:2px solid var(--amber);border-radius:9px;font-family:var(--body);font-size:.98rem;background:var(--white);color:var(--ink)}
.pc-select[hidden]{display:none}
.pc-select:focus{outline:none;box-shadow:0 0 0 3px rgba(223,154,36,.2)}
.pc-msg{margin-top:8px;font-size:.87rem;line-height:1.45;color:var(--muted);max-width:none}
.pc-msg[hidden]{display:none}
.pc-msg.err{color:#A3341F;font-weight:500}
.pc-msg.ok{color:#2C6E49;font-weight:500}
.pc-manual{display:inline-block;margin-top:9px;padding:0;border:0;background:none;font-family:var(--body);font-size:.87rem;font-weight:500;color:var(--muted);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.pc-manual:hover{color:var(--amber-deep)}
.pc-manual[hidden]{display:none}
.lookup>input[hidden]{display:none}
.addr-row .sub-label{display:block;margin-top:13px}
.addr-row .addr-value{margin-top:0}
.fields input.prefilled,.addr-row input.prefilled{background:var(--amber-soft);border-color:var(--amber)}
.declared-note{margin-top:14px;padding:12px 14px;background:var(--amber-soft);border-left:3px solid var(--amber);border-radius:0 8px 8px 0;font-size:.87rem;line-height:1.5;color:var(--ink);max-width:none}
.cal-fallback.err{color:#A3341F;font-weight:500}

/* ---- keep the rates & terms disclosure below the fold ----
   Short steps (a two-option question) left the disclosure block
   visible on load. The step container is padded out to a full
   viewport so the disclosure always sits below it.
   lvh is the LARGEST viewport height, so the disclosure stays
   hidden even when a mobile browser's toolbar retracts and the
   viewport grows. vh is the fallback for older browsers. */
.quote-page .quote-body{min-height:100vh}
@supports (min-height:100lvh){
  .quote-page .quote-body{min-height:100lvh}
}

/* honeypot - off-screen rather than display:none, which naive bots skip */
.hp{position:absolute!important;left:-9999px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important}

/* ---- enquiry flow: in-page, not a fixed overlay ----
   It used to be position:fixed;inset:0, which covered the whole
   document - so the representative example and footer were hidden
   for anyone actually filling the form in. It is now a normal
   section with the rest of the page hidden around it, so the ONE
   disclosure and footer render beneath it. No duplicated markup,
   so they can never drift out of sync.
   flow-body carries a viewport of min-height for the same reason
   the quote page does: the disclosure must start below the fold. */
body.flow-open > .hero,
body.flow-open > .strip,
body.flow-open > section:not(.disclosure){display:none}
body.flow-open .flow-body{min-height:100vh}
@supports (min-height:100lvh){
  body.flow-open .flow-body{min-height:100lvh}
}

/* ---- booking hand-off (the calendar lives on /book) ---- */
.cal-cta{margin:22px 0 4px}
.cal-cta .btn-go{display:inline-flex;text-decoration:none}
.cal-note{font-size:.83rem;color:var(--muted);line-height:1.55;margin:12px 0 0;max-width:52ch}

.cal-redirect{font-size:.9rem;color:var(--muted);margin:0 0 14px}
.cal-redirect[hidden]{display:none}
