:root{
/* === EPC Observatory — paper ground, terra/lime accents (V2 palette) === */
--color-bg:#F3F0E8;
--color-surface:#FFFFFF;
--color-card:#FFFFFF;
--color-card-2:#EDE9DF;
--color-text:#11110F;
--color-text-muted:rgba(17,17,15,0.72);
--color-text-faint:rgba(17,17,15,0.58);
--color-accent:#7D9819;
--color-accent-light:#5A6E12;
--color-accent-100:#F2FFD1;
--color-accent-200:#E9FFA8;
/* -300 is the small-text accent (kickers, meta, list bullets). Terra at
   #7D9819 only reaches 3.1:1 on paper, so small text uses the deeper terra
   at ~6.4:1. #7D9819 stays the fill colour for bars, buttons and rules. */
--color-accent-300:#5A6E12;
--color-accent-400:#6B8215;
--color-accent-500:#7D9819;
--color-accent-800:#3F4D0C;
--color-accent-2:#7D9819;
--color-accent-2-100:#EAF5C8;
--color-accent-2-200:#D8EBA0;
--color-accent-2-300:#D5FF45;
--color-accent-2-400:#D5FF45;
--color-accent-2-500:#7D9819;
--color-accent-2-600:#6B8215;
--color-accent-2-700:#5A6E12;
--color-divider:rgba(17,17,15,0.14);
--font-heading:"Fraunces",Georgia,"Times New Roman",serif;
--font-body:"Inter",system-ui,-apple-system,sans-serif;
--font-mono:"JetBrains Mono",ui-monospace,'SF Mono',Menlo,monospace;
--color-cobalt:#2339A7;
--color-cobalt-bright:#3155FF;
--radius-sm:10px;
--radius-md:18px;
--radius-lg:24px;
--radius-band:clamp(24px,3.6vw,48px);
--shadow-sm:0 1px 4px rgba(17,17,15,0.08);
--shadow-md:0 4px 18px rgba(17,17,15,0.10);
--shadow-lg:0 16px 44px rgba(17,17,15,0.14);
--ease:cubic-bezier(.22,1,.36,1);
}

html{scroll-behavior:smooth}
body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}
h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:400;letter-spacing:-.015em;color:var(--color-text);text-align:center}
:focus{outline:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
::selection{background:rgba(232,90,42,0.35)}

/* elementor overrides */
.elementor-widget-heading .elementor-heading-title{color:var(--color-text)}
.elementor-widget-text-editor{color:var(--color-text-muted)}

/* scroll progress */
.epc-progress{position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,var(--color-accent-2-400),var(--color-accent));z-index:9999;transition:width .1s linear}

/* kicker */
/* the source's .eyebrow: mono, wide tracking, cobalt on paper.
   On dark grounds it flips to lime, the way .creds-band .eyebrow does. */
.epc-kicker .elementor-heading-title,.epc-kicker{
  font-family:var(--font-mono)!important;
  font-size:12px!important;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--color-cobalt)!important;
}
.epc-dark .epc-kicker .elementor-heading-title,.epc-dark .epc-kicker{color:#D5FF45!important}
.epc-kicker-muted .elementor-heading-title{color:var(--color-text-faint)!important}

/* lede */
.epc-lede{font-size:20px;line-height:1.65;color:var(--color-text-muted)}
.epc-mono{font-variant-numeric:tabular-nums}
.epc-nowrap{white-space:nowrap}

/* cards */
.epc-card{
  background:var(--color-card);
  border-radius:var(--radius-lg);
  border:1px solid var(--color-divider);
  transition:transform .4s var(--ease),box-shadow .4s ease;
}
.epc-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}
.epc-elev-sm{box-shadow:var(--shadow-sm)}
.epc-elev-md{box-shadow:var(--shadow-md)}
.epc-elev-lg{box-shadow:var(--shadow-lg)}

/* tags */
.epc-tag .elementor-heading-title{
  display:inline-block;
  font-family:var(--font-body)!important;
  font-size:12px!important;
  font-weight:600;
  letter-spacing:.04em;
  padding:5px 14px;
  border-radius:999px;
  background:rgba(17,17,15,0.05);
  color:var(--color-text-muted);
  border:1px solid var(--color-divider);
}
.epc-tag-accent .elementor-heading-title{
  background:rgba(232,90,42,0.20);
  color:var(--color-accent-300);
  border-color:var(--color-accent-400);
}
.epc-tag-filled .elementor-heading-title{
  background:var(--color-accent);
  color:#11110F;
  border-color:transparent;
}
.epc-tag-sage .elementor-heading-title{
  background:rgba(125,152,25,0.14);
  color:#3F4D0C;
  border-color:rgba(125,152,25,0.40);
}
.epc-tag-outline .elementor-heading-title{
  background:transparent;
  border:1px solid var(--color-accent-400);
  color:var(--color-accent-300);
}

/* price readout */
.epc-price .elementor-heading-title{
  font-family:var(--font-heading);
  line-height:1;
  font-variant-numeric:tabular-nums;
  letter-spacing:-.02em;
  color:var(--color-text);
}
.epc-price .epc-cur{font-size:.44em;color:#7D9819;vertical-align:baseline;display:inline-block;transform:translateY(-.85em)}
.epc-price .epc-dash{color:var(--color-accent-2-400)}

/* marquee — brass band */
.epc-marquee{
  background:#D5FF45;
  border-radius:999px;
  overflow:hidden;
  padding:clamp(13px,1.6vw,20px) 0;
}
.epc-marquee-track{display:flex;width:max-content;animation:marquee 36s linear infinite;gap:0;will-change:transform}
.epc-marquee-track span{
  font-family:var(--font-heading);
  font-size:clamp(15px,2vw,24px);
  white-space:nowrap;
  padding:0 10px;
  color:#11110F;
  display:inline-flex;
  align-items:center;
  gap:18px;
}
.epc-marquee-track span::after{
  content:"";
  width:9px;height:9px;
  border-radius:50%;
  background:#11110F;
  opacity:0.35;
  flex:none;
}
@keyframes marquee{from{transform:translate3d(0,0,0)}to{transform:translate3d(-33.333%,0,0)}}

/* progress bars */
.epc-index .elementor-progress-wrapper{
  height:14px;
  border-radius:999px;
  background:rgba(17,17,15,0.06);
  overflow:hidden;
}
.epc-index .elementor-progress-bar{
  background:#D5FF45;
  border-radius:999px;
  height:14px;
  transition:width 1.3s var(--ease);
}
.epc-index .elementor-progress-percentage{display:none!important}
.epc-index .elementor-title,.epc-index .elementor-title *{display:none!important;height:0!important;overflow:hidden!important}
.epc-thin .elementor-progress-wrapper,.epc-thin .elementor-progress-bar{height:7px}

/* accordion */
.epc-faq .elementor-accordion-item{
  border:0;
  border-top:1px solid var(--color-divider);
  background:transparent;
}
.epc-faq .elementor-accordion-item:last-child{border-bottom:1px solid var(--color-divider)}
.epc-faq .elementor-tab-title{
  padding:22px 8px;
  font-family:var(--font-heading);
  font-size:clamp(16px,1.8vw,20px);
  line-height:1.3;
  color:var(--color-text);
}
.epc-faq .elementor-tab-title a{color:var(--color-text)}
.epc-faq .elementor-tab-content{
  padding:0 52px 22px 8px;
  font-size:19px;
  line-height:1.7;
  border:0;
  color:var(--color-text-muted);
  animation:fadeUp .35s var(--ease);
}
.epc-faq .elementor-accordion-icon{
  width:32px;height:32px;
  border-radius:50%;
  background:rgba(17,17,15,0.05);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--color-accent-300);
}

/* tabs */
.epc-seg .elementor-tabs-wrapper{
  display:inline-flex;gap:4px;padding:4px;
  background:rgba(17,17,15,0.05);
  border-radius:999px;border:0;
}
.epc-seg .elementor-tab-title{
  border:0!important;border-radius:999px;padding:9px 22px;
  font-family:var(--font-body);font-size:17px;font-weight:600;
  background:transparent;color:var(--color-text-muted);
}
.epc-seg .elementor-tab-title.elementor-active{background:var(--color-accent);color:#11110F}
.epc-seg .elementor-tab-title.elementor-active a{color:#11110F}
.epc-seg .elementor-tab-content{border:0!important;padding:28px 0 0;color:var(--color-text-muted)}
.epc-seg .elementor-tab-mobile-title{display:none!important}

/* icon list */
.epc-list .elementor-icon-list-item{align-items:flex-start;line-height:1.6}
.epc-list .elementor-icon-list-icon{margin-top:.45em}
.epc-list .elementor-icon-list-text{color:var(--color-text-muted)}

/* option tiles */
.epc-tile{
  border:1.5px solid var(--color-divider);
  background:rgba(17,17,15,0.03);
  border-radius:var(--radius-lg);
  padding:18px 20px;
  cursor:pointer;
  transition:transform .35s var(--ease),box-shadow .35s ease,background .25s,border-color .25s;
}
.epc-tile:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.epc-tile.is-on{background:rgba(232,90,42,0.16);border-color:var(--color-accent)}

/* numbered circles */
.epc-circle .elementor-heading-title{
  display:inline-flex;align-items:center;justify-content:center;
  width:48px;height:48px;border-radius:50%;
  background:var(--color-accent);
  color:#11110F;
  font-family:var(--font-heading);font-size:20px;
}

/* invoice */
.epc-invoice-row{border-top:1px solid var(--color-divider)}
.epc-invoice-total{border-top:2px solid var(--color-accent)}

/* process SVG line */
.epc-process-line{overflow:visible;display:block;width:100%;height:70px;margin:16px 0}
.epc-process-line path{
  fill:none;stroke:#7D9819;stroke-width:2;stroke-linecap:round;
  stroke-dasharray:1200;stroke-dashoffset:1200;
  transition:stroke-dashoffset 1.8s var(--ease);
}
.epc-process-line.is-in path{stroke-dashoffset:0}
.epc-process-dot{fill:var(--color-accent-2-400);animation:pulseDot 2.4s ease-in-out infinite}

/* CTA band — brass background */
.epc-cta-band{
  background:var(--color-accent);
  border-radius:var(--radius-band);
}
.epc-cta-band .elementor-heading-title{color:var(--color-text)!important}
.epc-cta-band .elementor-widget-text-editor,.epc-cta-band p{color:var(--color-text-muted)!important}

/* WPForms */
.epc-form .wpforms-field{padding:0 0 18px}
.epc-form .wpforms-field-label{font-family:var(--font-body);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-faint);margin-bottom:7px}
.epc-form input[type=text],.epc-form input[type=email],.epc-form input[type=tel],.epc-form select{
  width:100%;min-height:46px;border-radius:999px;
  border:1px solid rgba(17,17,15,0.16);
  background:#F3F0E8;
  padding:0 18px;font-family:var(--font-body);font-size:18px;color:var(--color-text);
  transition:border-color .25s,background .25s;
}
.epc-form textarea{
  width:100%;border-radius:var(--radius-lg);
  border:1px solid rgba(17,17,15,0.16);
  background:#F3F0E8;
  padding:14px 18px;font-family:var(--font-body);font-size:18px;color:var(--color-text);
}
.epc-form input:focus,.epc-form textarea:focus,.epc-form select:focus{
  border-color:var(--color-accent);background:rgba(232,90,42,0.08);outline:none;
}
.epc-form button[type=submit]{
  width:100%;border-radius:999px;background:var(--color-accent);color:#11110F;
  border:0;font-family:var(--font-heading);font-size:19px;padding:15px 24px;
  cursor:pointer;transition:background .25s,transform .3s var(--ease);
}
.epc-form button[type=submit]:hover{background:var(--color-accent-light);transform:translateY(-2px)}

/* pulse dot */
@keyframes pulseDot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}

/* scroll reveal */
[data-epc-reveal]{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
[data-epc-reveal].is-in{opacity:1;transform:none}
.epc-hov{transition:transform .35s var(--ease),box-shadow .35s ease}
.epc-hov:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}

@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}[data-epc-reveal]{opacity:1;transform:none}}


/* ===== PROCESS LINE ===== */
.epc-process-line{
  display:block;
  width:100%;
  height:80px;
  overflow:visible;
  margin:24px 0 8px;
}
#epc-process-path{
  fill:none;
  stroke:#7D9819;
  stroke-width:2.5;
  stroke-linecap:round;
  stroke-linejoin:round;
}
#epc-process-dot{
  fill:#D5FF45;
  filter:drop-shadow(0 0 6px rgba(143,174,43,0.7));
  transition:cx 0.05s linear,cy 0.05s linear;
}
@media(prefers-reduced-motion:reduce){
  #epc-process-path{stroke-dashoffset:0!important;}
}

/* ===== PILL INITIAL STATE ===== */
/* Q1 pill always shows selected until JS overrides */
#epc-type-0 .elementor-button {
  background: var(--color-accent) !important;
  color: #11110F !important;
  border-color: var(--color-accent) !important;
}
/* When JS adds is-on, accent the selected one */
.epc-pill.is-on .elementor-button {
  background: var(--color-accent) !important;
  color: #11110F !important;
  border-color: var(--color-accent) !important;
}
/* When JS has run (body has js-ready class), only show is-on as selected */
body.epc-js-ready #epc-type-0:not(.is-on) .elementor-button {
  background: rgba(0,0,0,0) !important;
  color: var(--color-text) !important;
  border-color: var(--color-divider) !important;
}


/* ===== BAR OVERRIDES - solid brass, no title ===== */
.epc-index .elementor-progress-bar{
  background: #D5FF45 !important;
  border-radius: 999px !important;
}
.epc-index .elementor-progress-percentage,
.epc-index .elementor-progress-text,
.epc-index .elementor-title,
.epc-index .elementor-title * {
  display: none !important;
  height: 0 !important;
  overflow: hidden !important;
  font-size: 0 !important;
  line-height: 0 !important;
}
.epc-thin .elementor-progress-bar{
  background: var(--color-accent) !important;
}


/* ===== MARQUEE FIX - prevent left/right clip ===== */
.epc-marquee {
  position: relative;
  overflow: hidden;
  /* Clip only inside, not the rounded corners */
}
.epc-marquee .elementor-widget-container {
  /* Remove any padding that causes offset */
  padding: 0 !important;
  margin: 0 !important;
  overflow: hidden;
}
.epc-marquee-track {
  display: flex;
  width: max-content;
  animation: marquee 32s linear infinite;
  gap: 0;
  /* Start fully off-screen to the right so no clip at left on load */
  will-change: transform;
}

/* ===== HEADER ACTIVE NAV ===== */
/* XPro horizontal menu - highlight current page */
.xpro-nav-menu li.current-menu-item > a,
.xpro-nav-menu li.current-menu-item > a:hover,
.xpro-nav-menu li.current_page_item > a,
.xpro-nav-menu .menu-item.current-menu-item a,
.xpro-nav-menu .menu-item.current_page_item a,
.xpro-horizontal-menu ul li.current-menu-item > a,
.xpro-horizontal-menu ul li.current_page_item > a,
/* Elementor nav widget fallback */
.elementor-nav-menu li.current-menu-item > a,
.elementor-nav-menu li.current_page_item > a,
/* Any nav link that is active */
.epc-nav .menu-item.current-menu-item > a,
.epc-nav .menu-item.current-menu-item a {
  color: var(--color-accent) !important;
}

/* ===== HEADER SCROLL PROGRESS ===== */
.epc-header-track{
 position:absolute;
 bottom:0;left:0;right:0;
 height:3px;
 background:rgba(17,17,15,0.06);
 overflow:hidden;
 z-index:1;
}
.epc-header-fill{
 height:3px!important;
 min-height:3px!important;
 width:0%;
 background:var(--color-accent)!important;
 transition:width .1s linear;
 will-change:width;
}
/* make header position:relative so absolute child works */
.xpro-header-section,
[data-elementor-type="xpro-themer"] .e-con:first-child{
 position:relative;
}

/* ===== QUOTE PAGE FORM STYLING ===== */
/* WPForms - quote page specific */
.epc-quote-card .wpforms-form .wpforms-field{
 padding:0 0 14px;
}
.epc-quote-card .wpforms-form .wpforms-field-label{
 font-family:Inter,sans-serif;
 font-size:17px;
 font-weight:600;
 color:rgba(17,17,15,0.70);
 margin-bottom:6px;
 display:block;
}
.epc-quote-card .wpforms-form input[type=text],
.epc-quote-card .wpforms-form input[type=email],
.epc-quote-card .wpforms-form input[type=tel],
.epc-quote-card .wpforms-form select{
 width:100%;
 min-height:52px;
 border-radius:999px;
 border:1px solid rgba(17,17,15,0.16);
 background:#F3F0E8;
 padding:0 20px;
 font-family:Inter,sans-serif;
 font-size:18px;
 color:#11110F;
 transition:border-color .2s,background .2s;
 -webkit-appearance:none;
}
.epc-quote-card .wpforms-form select{
 padding-right:44px;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23A87F00' d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
 background-repeat:no-repeat;
 background-position:right 16px center;
}
.epc-quote-card .wpforms-form input:focus,
.epc-quote-card .wpforms-form select:focus{
 border-color:#7D9819;
 background:rgba(232,90,42,0.08);
 outline:none;
}
.epc-quote-card .wpforms-form textarea{
 width:100%;
 border-radius:20px;
 border:1px solid rgba(17,17,15,0.16);
 background:#F3F0E8;
 padding:14px 20px;
 font-family:Inter,sans-serif;
 font-size:18px;
 color:#11110F;
 min-height:110px;
 transition:border-color .2s;
 resize:vertical;
}
.epc-quote-card .wpforms-form textarea:focus{
 border-color:#7D9819;
 background:rgba(232,90,42,0.08);
 outline:none;
}
/* Two-column row for email+phone, postcode+use, type+soon */
.epc-quote-card .wpforms-form .wpforms-field-row{
 display:flex;
 gap:14px;
}
.epc-quote-card .wpforms-form .wpforms-field-row .wpforms-field{
 flex:1;
}
/* Checkbox */
.epc-quote-card .wpforms-form .wpforms-field-checkbox label{
 font-family:Inter,sans-serif;
 font-size:17px;
 line-height:1.55;
 color:rgba(17,17,15,0.65);
 cursor:pointer;
}
.epc-quote-card .wpforms-form .wpforms-field-checkbox input[type=checkbox]{
 width:18px;height:18px;
 border-radius:5px;
 border:1.5px solid rgba(17,17,15,0.22);
 background:#F3F0E8;
 accent-color:#7D9819;
 cursor:pointer;
 margin-right:10px;
 vertical-align:middle;
}
/* Submit button */
.epc-quote-card .wpforms-form .wpforms-submit-container{
 padding-top:4px;
}
.epc-quote-card .wpforms-form button[type=submit],
.epc-quote-card .wpforms-form .wpforms-submit{
 width:100%;
 border-radius:999px;
 background:#7D9819;
 color:#11110F;
 border:0;
 font-family:Fraunces,Georgia,serif;
 font-size:20px;
 font-weight:400;
 padding:17px 24px;
 cursor:pointer;
 transition:background .25s,transform .3s cubic-bezier(.22,1,.36,1);
 letter-spacing:-.01em;
}
.epc-quote-card .wpforms-form button[type=submit]:hover{
 background:#5A6E12;
 transform:translateY(-2px);
}
/* Privacy note */
.epc-quote-card .wpforms-form .wpforms-field-hp{display:none}
/* Validation errors */
.epc-quote-card .wpforms-form .wpforms-error{
 color:#B23B3B;
 font-size:12px;
 font-family:Inter,sans-serif;
 margin-top:4px;
}
/* Confirmation */
.epc-quote-card .wpforms-confirmation-container-full{
 background:rgba(125,152,25,0.12);
 border:1px solid rgba(125,152,25,0.4);
 border-radius:16px;
 padding:24px;
 color:#5A6E12;
 font-family:Inter,sans-serif;
}
/* Numbered trust circles on quote page */
.epc-trust-num{
 display:inline-flex;align-items:center;justify-content:center;
 width:36px;height:36px;border-radius:50%;
 background:#7D9819;
 color:#11110F;
 font-family:Fraunces,Georgia,serif;
 font-size:19px;
 flex:none;
}


/* ===== Estimator (moved out of inline page widget) ===== */
.epc-step{display:none}
.epc-progress-fill{height:4px;width:16.666%;transition:width .5s cubic-bezier(.22,1,.36,1)}
.epc-tile{cursor:pointer;transition:border-color .2s,background .2s,transform .2s}
.epc-tile:hover{border-color:rgba(232,90,42,.55)!important;background:rgba(232,90,42,.07)!important}
.epc-tile.is-on{border-color:#7D9819!important;background:rgba(232,90,42,.14)!important;box-shadow:0 0 0 1px #7D9819 inset}
.epc-nav-prev,.epc-nav-next{display:flex;align-items:center}
.epc-nav-btn{border-radius:999px;padding:12px 22px;background:rgba(17,17,15,.05);color:#11110F;border:1px solid rgba(17,17,15,.14);font-family:Fraunces,Georgia,serif;font-size:17px;cursor:pointer;transition:background .2s,opacity .2s}
.epc-nav-btn:hover:not(:disabled){background:rgba(17,17,15,.08)}
.epc-nav-btn:disabled{cursor:default}
#epc-size-slider{width:100%;-webkit-appearance:none;appearance:none;height:6px;border-radius:999px;background:rgba(17,17,15,.12);outline:none;cursor:pointer}
#epc-size-slider::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:#7D9819;cursor:pointer;border:2px solid #FFFFFF;box-shadow:0 0 0 2px #7D9819}
#epc-size-slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#7D9819;cursor:pointer;border:2px solid #FFFFFF}
#epc-postcode-field{width:100%;min-height:46px;border-radius:999px;border:1px solid rgba(17,17,15,.18);background:#F3F0E8;padding:0 18px;font-family:Inter,sans-serif;font-size:19px;color:#11110F;letter-spacing:.08em;text-transform:uppercase}
#epc-postcode-field:focus{border-color:#7D9819;background:rgba(232,90,42,.08);outline:none}
#epc-postcode-field::placeholder{color:rgba(17,17,15,.50);text-transform:none;letter-spacing:0}
.epc-pp-dl{margin:0;display:flex;flex-direction:column;gap:10px}
.epc-pp-dl div{display:flex;flex-direction:column;gap:2px}
.epc-pp-dl dt{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:rgba(17,17,15,.60);font-weight:600;font-family:Inter,sans-serif}
.epc-pp-dl dd{font-size:17px;color:#11110F;margin:0;font-family:Inter,sans-serif}

/* ---- Home hero wizard: one question at a time ---- */
#epc-hw [id^="epc-hw-step-"]{display:none!important}
#epc-hw [id^="epc-hw-step-"].is-active{display:flex!important;animation:qIn .34s cubic-bezier(.22,1,.36,1) both}
body:not(.epc-js-ready) #epc-hw-step-1{display:flex!important}
#epc-hw .epc-pill .elementor-button{transition:background .2s ease,border-color .2s ease,color .2s ease,transform .16s ease}
#epc-hw .epc-pill.is-on .elementor-button{background:var(--color-accent)!important;color:#11110F!important;border-color:var(--color-accent)!important}
#epc-hw-btns{width:auto!important;flex:0 0 auto!important}
#epc-hw-back[hidden],#epc-hw-next[hidden],#epc-hw-quote[hidden]{display:none!important}
#epc-hw-next.is-off .elementor-button,#epc-hw-quote.is-off .elementor-button{opacity:.4;pointer-events:none}
@media(max-width:767px){#epc-hw-btns{width:100%!important}#epc-hw-btns>.elementor-widget{flex:1 1 auto}#epc-hw-btns .elementor-button{width:100%}}


/* === Dark ground scope - header & footer (added 2026-08-23) === */
.epc-dark{
  --color-bg:#11110F;
  --color-surface:#1B1B18;
  --color-card:#1B1B18;
  --color-card-2:#232320;
  --color-text:#F3F0E8;
  --color-text-muted:rgba(243,240,232,0.72);
  --color-text-faint:rgba(243,240,232,0.56);
  --color-accent:#D5FF45;
  --color-accent-light:#E4FF7A;
  --color-accent-300:#D5FF45;
  --color-accent-400:#B8E03A;
  --color-accent-500:#D5FF45;
  --color-accent-800:#E4FF7A;
  --color-accent-2:#D5FF45;
  --color-accent-2-300:#D5FF45;
  --color-accent-2-400:#D5FF45;
  --color-accent-2-500:#D5FF45;
  --color-divider:rgba(243,240,232,0.14);
  --shadow-sm:0 1px 4px rgba(0,0,0,0.40);
  --shadow-md:0 4px 18px rgba(0,0,0,0.45);
  --shadow-lg:0 16px 44px rgba(0,0,0,0.55);
  background:var(--color-bg);
  color:var(--color-text);
}
.epc-dark h1,.epc-dark h2,.epc-dark h3,.epc-dark h4,.epc-dark h5,.epc-dark h6,
.epc-dark .elementor-widget-heading .elementor-heading-title{color:var(--color-text)}
.epc-dark .elementor-widget-text-editor{color:var(--color-text-muted)}
.epc-dark .elementor-widget-text-editor p a{color:var(--color-accent)}
.epc-dark ::selection{background:rgba(213,255,69,0.35)}
.epc-dark :focus-visible{outline-color:var(--color-accent)}

/* CTA band on dark ground - beats .epc-cta-band{background:var(--color-accent)} */
.epc-cta-band.epc-dark{background:var(--color-bg)}

/* === Blog card hover: lift + gold line running left-to-right (2026-08-23) ===
   Appended after the .epc-reveal rules on purpose: .epc-reveal.is-in sets
   transform:none at the same specificity, so the hover transform must come
   later in the cascade to win. */
.epc-blog-card{position:relative;overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.epc-blog-card::after{content:'';position:absolute;left:0;bottom:0;width:100%;height:3px;background:var(--color-accent);transform:scaleX(0);transform-origin:left center;transition:transform .45s var(--ease);pointer-events:none}
.epc-blog-card:hover{transform:scale(1.025);box-shadow:var(--shadow-lg)}
.epc-blog-card:hover::after{transform:scaleX(1)}
@media (prefers-reduced-motion:reduce){.epc-blog-card,.epc-blog-card::after{transition:none}.epc-blog-card:hover{transform:none}}

/* === Blog pagination bar (2026-08-23) === */
.epc-pagination{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap}
.epc-pagination .epc-page-btn{flex:0 0 auto;min-width:46px;height:46px;padding:0 12px;border-radius:14px;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-family:var(--font-body);font-size:18px;font-weight:600;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}
.epc-pagination .epc-page-btn:hover:not(:disabled):not([aria-current]){border-color:var(--color-accent);color:var(--color-accent);transform:translateY(-2px)}
.epc-pagination .epc-page-btn[aria-current='page']{background:var(--color-accent);border-color:var(--color-accent);color:#fff;cursor:default}
.epc-pagination .epc-page-btn:disabled{opacity:.35;cursor:not-allowed}
.epc-pagination .epc-page-btn svg{width:16px;height:16px;display:block}
@media (prefers-reduced-motion:reduce){.epc-pagination .epc-page-btn{transition:none}.epc-pagination .epc-page-btn:hover:not(:disabled){transform:none}}

/* === Ported figures: cost cutaway + UK coverage network (2026-08-23) ===
   Source: epccertificatecost_COMPLETE_UK_observatory_v4.html
   Locally scoped tokens - the original relied on --lime/--paper-60/Fraunces
   which do not exist in this design system. */
.epc-cutaway,.epc-network{--fg-ink:#241E17;--fg-paper:#F4EFE4;--fg-paper-deep:#EAE2D0;--fg-line:#E0D6C0;--fg-cobalt:#2E4A86;--fg-cobalt-lt:#3A5CA8;--fg-terra:#B26A3F;--fg-terra-deep:#9A5330;--fg-gold:#C9A94E;--fg-lime:#C8F028;--fg-mono:ui-monospace,'JetBrains Mono',Menlo,Consolas,monospace}

/* ---- cutaway ---- */
.epc-cutaway .cut-wrap{display:grid;gap:40px;grid-template-columns:1fr;align-items:center}
@media(min-width:900px){.epc-cutaway .cut-wrap{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:64px}}
.epc-cutaway .cut-stage{position:relative;background:var(--fg-paper-deep);padding:clamp(18px,3vw,36px);border-radius:40px 8px 40px 8px}
.epc-cutaway .cut-svg{width:100%;height:auto;overflow:visible;display:block}
.epc-cutaway .cs-stroke{fill:none;stroke:var(--fg-ink);stroke-width:1.4;vector-effect:non-scaling-stroke}
.epc-cutaway .cs-wall{fill:var(--fg-paper-deep)}
.epc-cutaway .cs-roof{fill:var(--fg-cobalt);opacity:.12}
.epc-cutaway .cs-glass{fill:var(--fg-cobalt);opacity:.16}
.epc-cutaway .cut-hot{cursor:pointer}
.epc-cutaway .cut-hot .dot{fill:var(--fg-terra);stroke:var(--fg-paper);stroke-width:2;transition:fill .2s var(--ease)}
.epc-cutaway .cut-hot.on .dot{fill:var(--fg-cobalt)}
.epc-cutaway .cut-hot .ring{fill:none;stroke:var(--fg-terra);stroke-width:1.4;opacity:0}
.epc-cutaway .cut-hot.on .ring{opacity:.6;animation:epc-cut-ring 1.6s ease-out infinite}
@keyframes epc-cut-ring{0%{r:8;opacity:.6}100%{r:22;opacity:0}}
.epc-cutaway .cut-hot text{font-family:var(--fg-mono);font-size:12px;font-weight:700;fill:var(--fg-ink);pointer-events:none}
.epc-cutaway .cut-hot:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}
.epc-cutaway .cut-list{display:flex;flex-direction:column;gap:2px}
.epc-cutaway .cut-item{display:flex;gap:14px;text-align:left;background:none;border:0;border-bottom:1px solid var(--fg-line);padding:20px 0;cursor:pointer;width:100%;font:inherit;color:var(--color-text);transition:border-color .2s var(--ease),padding .2s var(--ease)}
.epc-cutaway .cut-item.on{border-left:4px solid var(--fg-cobalt);padding-left:18px}
.epc-cutaway .ci-no{font-family:var(--fg-mono);font-size:17px;font-weight:700;color:var(--fg-terra-deep);flex-shrink:0;padding-top:3px}
.epc-cutaway .ci-t{font-family:var(--font-heading);font-weight:400;font-size:20px;line-height:1.25;display:block}
.epc-cutaway .ci-d{font-size:17px;color:var(--color-text-muted);margin-top:6px;line-height:1.55;display:none}
.epc-cutaway .cut-item.on .ci-d{display:block}
.epc-cutaway .ci-tag{font-family:var(--fg-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;margin-top:9px;color:var(--fg-cobalt);display:none}
.epc-cutaway .cut-item.on .ci-tag{display:inline-block}

/* ---- coverage network ---- */
.epc-network .net-wrap{display:grid;gap:36px;grid-template-columns:1fr;align-items:start}
@media(min-width:900px){.epc-network .net-wrap{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:52px}}
.epc-network .net-stage{position:relative;background:#141210;border-radius:22px;overflow:hidden}
.epc-network .net-svg{width:100%;height:auto;display:block}
.epc-network .net-node{cursor:pointer}
.epc-network .net-node circle{transition:r .25s var(--ease),fill .25s var(--ease)}
.epc-network .net-node text{font-family:var(--fg-mono);font-size:8px;fill:var(--fg-paper);pointer-events:none;font-weight:700;letter-spacing:.02em}
.epc-network .net-node:focus-visible{outline:2px solid var(--fg-gold);outline-offset:2px}
.epc-network .net-edge{stroke:rgba(243,240,232,.16);stroke-width:1;fill:none;transition:stroke .25s var(--ease)}
.epc-network .net-edge.lit{stroke:var(--fg-lime);stroke-width:1.6}
.epc-network .net-legend{position:absolute;left:14px;bottom:14px;font-family:var(--fg-mono);font-size:9px;color:rgba(243,240,232,.7);display:flex;flex-direction:column;gap:5px;background:rgba(17,17,15,.6);padding:10px 12px;border-radius:4px}
.epc-network .net-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px;vertical-align:-1px}
.epc-network .np-zone{font-family:var(--fg-mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--fg-cobalt)}
.epc-network .net-panel h3{font-family:var(--font-heading);font-weight:400;font-size:clamp(24px,3.4vw,36px);line-height:1.1;margin:10px 0 4px;text-align:left}
.epc-network .np-area{font-family:var(--fg-mono);font-size:12px;color:var(--color-text-faint);text-transform:uppercase;letter-spacing:.06em;margin-bottom:20px}
.epc-network .net-figs{display:flex;gap:28px;flex-wrap:wrap;margin-bottom:22px}
.epc-network .nf-l{font-family:var(--fg-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-faint)}
.epc-network .nf-v{font-family:var(--font-heading);font-size:32px;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.15}
.epc-network .nf-v .p{font-size:.55em;color:var(--fg-terra-deep);font-weight:600}
.epc-network .net-desc{font-size:17px;color:var(--color-text-muted);line-height:1.6;border-top:1px solid var(--color-divider);padding-top:18px;margin:0}
.epc-network .net-hint{font-family:var(--fg-mono);font-size:12px;color:var(--color-text-faint);margin-top:18px;display:flex;align-items:center;gap:8px}
.epc-network .net-hint .pulse{width:8px;height:8px;border-radius:50%;background:var(--fg-terra);animation:epc-net-pulse 1.6s ease-in-out infinite}
@keyframes epc-net-pulse{0%,100%{opacity:1}50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.epc-cutaway .cut-hot.on .ring,.epc-network .net-hint .pulse{animation:none}}
.epc-cutaway .cut-wrap>*,.epc-network .net-wrap>*{min-width:0}

/* cut-item text must wrap inside its grid column, not overflow the centred
   content width. Flex items default to min-width:auto, so the text block
   refused to shrink and ran past the container edge. */
.epc-cutaway .cut-item{align-items:flex-start;white-space:normal}
.epc-cutaway .cut-item *{white-space:normal}
.epc-cutaway .cut-item>span+span{flex:1 1 auto;min-width:0}
.epc-cutaway .ci-t,.epc-cutaway .ci-d,.epc-cutaway .ci-tag{overflow-wrap:anywhere}

/* FAQ: DS sets h1-h6{text-align:center} globally, which centred the
   accordion questions away from their + icons. Pin them left. */
.epc-faq .elementor-tab-title{text-align:left;display:flex;align-items:center;gap:14px}
.epc-faq .elementor-tab-title .elementor-accordion-title{text-align:left;flex:1 1 auto;min-width:0}
.epc-faq .elementor-tab-title a{text-align:left}
.epc-faq .elementor-accordion-icon{float:none;margin:0;flex:0 0 auto}
.epc-faq .elementor-tab-content{text-align:left}

/* === Split hero: headline left, dark price card right (2026-08-23) ===
   Layout borrowed from the reference; palette stays the site's own.
   The card carries .epc-dark so it inherits the dark token scope. */
.epc-hero-card{border-radius:26px;box-shadow:var(--shadow-lg)}
.epc-hero-rows{width:100%}
.epc-hero-rows .r{display:flex;justify-content:space-between;align-items:baseline;gap:18px;padding:13px 0;border-top:1px solid var(--color-divider);font-family:var(--font-body);font-size:17px}
.epc-hero-rows .r:first-child{border-top:0}
.epc-hero-rows .k{color:var(--color-text-muted)}
.epc-hero-rows .v{color:var(--color-text);font-weight:600;white-space:nowrap}
.epc-hero-left .elementor-heading-title,.epc-hero-left .elementor-widget-text-editor{text-align:left}
@media(max-width:1024px){.epc-hero-left .elementor-heading-title,.epc-hero-left .elementor-widget-text-editor{text-align:center}}

/* === Estimator side drawer (2026-08-23) ===
   Slides in from the right over a blurred backdrop. Palette is the
   site's own; only the mechanic is taken from the reference build. */
.epc-drawer{position:fixed;inset:0;z-index:99999;visibility:hidden;pointer-events:none}
.epc-drawer.is-open{visibility:visible;pointer-events:auto}
.epc-drawer-backdrop{position:absolute;inset:0;background:rgba(8,8,7,.72);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);opacity:0;transition:opacity .35s var(--ease)}
.epc-drawer.is-open .epc-drawer-backdrop{opacity:1}
.epc-drawer-panel{position:absolute;right:0;top:0;bottom:0;width:min(880px,94vw);background:var(--color-bg);overflow-y:auto;overflow-x:hidden;box-shadow:-40px 0 100px rgba(0,0,0,.35);transform:translateX(100%);transition:transform .45s var(--ease)}
.epc-drawer.is-open .epc-drawer-panel{transform:none}
@keyframes epc-drawer-in{from{transform:translateX(100%)}to{transform:none}}
.epc-drawer-head{position:sticky;top:0;z-index:4;background:var(--color-bg);padding:20px 26px;border-bottom:1px solid var(--color-divider);display:flex;align-items:center;justify-content:space-between;gap:20px}
.epc-drawer-head .eyebrow{font-family:var(--font-body);font-size:12px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--color-accent-300);display:block}
.epc-drawer-head h2{font-family:var(--font-heading);font-weight:400;font-size:clamp(21px,2.6vw,29px);line-height:1.1;margin:5px 0 0;text-align:left;color:var(--color-text)}
.epc-drawer-close{width:44px;height:44px;flex:0 0 auto;border:1px solid var(--color-text);background:transparent;border-radius:50%;font-size:24px;line-height:1;display:grid;place-items:center;cursor:pointer;color:var(--color-text);transition:background .2s var(--ease),color .2s var(--ease)}
.epc-drawer-close:hover{background:var(--color-text);color:var(--color-bg)}
.epc-drawer-mount{padding:22px}
.epc-drawer-mount>.e-con{width:100%!important;max-width:100%!important}
.epc-drawer-note{font-family:var(--font-body);color:var(--color-text-muted);padding:48px 6px;text-align:center}
body.epc-drawer-open{overflow:hidden}
@media (prefers-reduced-motion:reduce){.epc-drawer-panel,.epc-drawer-backdrop{transition:none}}
/* Estimator sits on black, so its kickers use the brighter gold the
   other dark surfaces use. .epc-kicker is !important, so match it. */
#epc-estimator .epc-kicker,#epc-estimator .epc-kicker .elementor-heading-title,
#epc-passport .epc-kicker,#epc-passport .epc-kicker .elementor-heading-title{color:#D5FF45!important}

/* --- estimator dark-ground controls ---
   .epc-nav-btn / #epc-size-slider / .epc-pp-dl were written for a light
   card. The estimator now sits on #11110F, so their near-black colours
   rendered invisible. Re-tone them for the dark ground. */
#epc-estimator .epc-nav-btn,.epc-drawer .epc-nav-btn{background:rgba(243,240,232,.07);color:#F3F0E8;border-color:rgba(243,240,232,.24)}
#epc-estimator .epc-nav-btn:hover:not(:disabled),.epc-drawer .epc-nav-btn:hover:not(:disabled){background:rgba(243,240,232,.14);border-color:#D5FF45;color:#F3F0E8}
#epc-estimator #epc-size-slider,.epc-drawer #epc-size-slider{background:rgba(243,240,232,.18);height:6px}
#epc-estimator #epc-size-slider::-webkit-slider-thumb,.epc-drawer #epc-size-slider::-webkit-slider-thumb{background:#D5FF45;border:2px solid #11110F;box-shadow:0 0 0 2px #D5FF45}
#epc-estimator #epc-size-slider::-moz-range-thumb,.epc-drawer #epc-size-slider::-moz-range-thumb{background:#D5FF45;border:2px solid #11110F}
#epc-passport .epc-pp-dl dt,.epc-drawer .epc-pp-dl dt{color:rgba(243,240,232,.60)}
#epc-passport .epc-pp-dl dd,.epc-drawer .epc-pp-dl dd{color:#F3F0E8}

/* --- drawer containment ---
   Elementor enqueues its icon-SVG sizing per page, so on pages that do
   not use icon widgets the injected passport icons lose width:1em and
   balloon to fill their container. Restate it, and stop the estimator's
   page-width containers bleeding past the narrower drawer panel. */
.epc-drawer .e-font-icon-svg{width:1em;height:1em;fill:currentColor}
.epc-drawer .elementor-icon-list-icon{display:inline-flex;align-items:center}
.epc-drawer .elementor-icon-list-icon svg{flex:0 0 auto}
.epc-drawer-mount .e-con,.epc-drawer-mount .elementor-widget{max-width:100%}
.epc-drawer-mount{overflow-x:hidden}

/* --- EPC Cost Passport ---
   Ticket layout ported from the source HTML: dark header band, EPC A-G
   strip, perforation, big range, profile rows and influence meters.
   Recoloured to this site's palette; the A-G bands keep their official
   EPC colours because they are semantic, not decorative. */
.epc-pp{background:#F3F0E8;color:#11110F;border:2px solid #11110F;border-radius:8px;overflow:hidden;font-family:var(--font-body)}
.epc-pp-head{background:#11110F;color:#F3F0E8;padding:22px 26px;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.epc-pp-kick{font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:#D5FF45;font-weight:700}
.epc-pp-head h3{font-family:var(--font-heading);font-weight:400;font-size:clamp(22px,3.4vw,30px);margin:6px 0 0;line-height:1;color:#F3F0E8;text-align:left}
.epc-pp-serial{font-size:12px;color:rgba(243,240,232,.62);text-align:right;line-height:1.8;letter-spacing:.1em;text-transform:uppercase}
.epc-pp-bands{display:flex;align-items:center;gap:2px;margin-top:12px}
.epc-pp-bands span{width:26px;height:16px;font-size:9px;color:#11110F;text-align:center;line-height:16px;font-weight:700}
.epc-pp-perf{height:18px;background:#11110F;position:relative;display:flex;align-items:center;justify-content:space-around}
.epc-pp-perf::before,.epc-pp-perf::after{content:'';position:absolute;width:18px;height:18px;border-radius:50%;background:#F3F0E8;top:50%;transform:translateY(-50%)}
.epc-pp-perf::before{left:-9px}
.epc-pp-perf::after{right:-9px}
.epc-pp-perf i{width:6px;height:6px;border-radius:50%;background:#F3F0E8;opacity:.35}
.epc-pp-headline{padding:28px 26px 8px;text-align:center;border-bottom:1px dashed rgba(17,17,15,.18)}
.epc-pp-headline .lbl{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:rgba(17,17,15,.62);font-weight:600}
.epc-pp-range{font-family:var(--font-heading);font-weight:400;font-size:clamp(38px,8vw,74px);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:10px 0;color:#11110F}
.epc-pp-range .cur{font-size:.42em;color:#D5FF45;transform:translateY(-.55em);display:inline-block;font-weight:600}
.epc-pp-range .dash{color:rgba(17,17,15,.40);font-weight:300;margin:0 10px}
.epc-pp-note{font-size:12px;color:rgba(17,17,15,.62);padding-bottom:20px;max-width:62ch;margin:0 auto;line-height:1.6}
.epc-pp-body{padding:26px;display:grid;gap:26px 30px;grid-template-columns:1fr}
@media(min-width:760px){.epc-pp-body{grid-template-columns:1fr 1fr}}
.epc-pp-panel h4{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#D5FF45;border-bottom:1.5px solid #11110F;padding-bottom:8px;margin:0 0 14px;display:flex;justify-content:space-between;gap:12px;font-weight:700;text-align:left;font-family:var(--font-body)}
.epc-pp-panel h4 span{color:rgba(17,17,15,.42)}
.epc-pp-prow{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px dotted rgba(17,17,15,.20);font-size:17px}
.epc-pp-prow .k{font-size:12px;color:rgba(17,17,15,.62);text-transform:uppercase;letter-spacing:.06em}
.epc-pp-prow .v{font-weight:600;text-align:right}
.epc-pp-infl{display:flex;flex-direction:column;gap:12px}
.epc-pp-inflrow{display:grid;grid-template-columns:88px 1fr auto;align-items:center;gap:12px}
.epc-pp-inflrow .il{font-size:12px;color:rgba(17,17,15,.62);text-transform:uppercase;letter-spacing:.06em}
.epc-pp-bar{height:12px;background:#E7E0D4;border-radius:3px;overflow:hidden;position:relative}
.epc-pp-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;width:0;transition:width 1s var(--ease)}
.epc-pp-inflrow .iv{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.epc-pp-list{list-style:none;display:flex;flex-direction:column;gap:9px;margin:0;padding:0}
.epc-pp-list li{display:flex;gap:10px;font-size:17px;line-height:1.45;align-items:flex-start}
.epc-pp-list.inc li::before{content:'✓';color:#D5FF45;font-weight:700;flex-shrink:0}
.epc-pp-list.var li::before{content:'±';color:#D5FF45;font-weight:700;flex-shrink:0}
.epc-pp-foot{padding:22px 26px;border-top:2px solid #11110F;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between}
.epc-pp-disc{font-size:12px;color:rgba(17,17,15,.62);max-width:48ch;line-height:1.6;margin:0}
.epc-pp-actions{display:flex;gap:10px;flex-wrap:wrap}
.epc-pp-btn{font-weight:400;font-size:17px;padding:13px 20px;border-radius:999px;display:inline-flex;align-items:center;gap:8px;cursor:pointer;border:1.5px solid #11110F;background:transparent;color:#11110F;font-family:var(--font-heading);transition:background .2s var(--ease),color .2s var(--ease)}
.epc-pp-btn:hover{background:#11110F;color:#F3F0E8}
.epc-pp-btn.solid{background:#D5FF45;border-color:#D5FF45;color:#11110F}
.epc-pp-btn.solid:hover{background:#D5FF45;color:#11110F}

/* --- no underlines anywhere ---
   Hello Elementor underlines links via .page-content a / .comments-area a
   (0,1,1), which out-specifies a bare .elementor-button rule, so those
   selectors are matched here rather than reaching for !important. */
a,a:hover,a:focus,a:active,
.page-content a,.page-content a:hover,.comments-area a,.entry-content a,
.elementor a,.elementor a:hover,
.elementor-button,.elementor-button:hover,.elementor-button-text,
.elementor-button-content-wrapper,
.epc-pp-btn,.epc-nav-btn,button{text-decoration:none}
/* --- scroll-controlled process ---
   Ported from the source HTML: sticky line-art on the left that tracks
   which stage is in the middle of the viewport. Lime/terra swapped for
   this site's gold and sage. */
.epc-process-grid{display:grid;gap:40px;grid-template-columns:1fr}
@media(min-width:900px){.epc-process-grid{grid-template-columns:.85fr 1.15fr;gap:56px;align-items:start}}
.epc-process-sticky{position:relative}
@media(min-width:900px){.epc-process-sticky{position:sticky;top:100px}}
.epc-process-svg{width:100%;height:auto;overflow:visible;background:#1B1B18;border-radius:16px;padding:20px;border:1px solid rgba(243,240,232,.14)}
.epc-process-svg .ps-stroke{fill:none;stroke:rgba(243,240,232,.30);stroke-width:1.4;vector-effect:non-scaling-stroke}
.epc-process-svg .ps-active{fill:none;stroke:#D5FF45;stroke-width:2.4;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}
.epc-process-num{font-family:var(--font-heading);font-size:120px;fill:rgba(243,240,232,.07)}
.epc-process-steps{display:flex;flex-direction:column;gap:4px}
.epc-process-step{padding:26px 24px;border-left:2px solid rgba(243,240,232,.14);opacity:.4;transition:opacity .45s var(--ease),border-color .45s var(--ease)}
.epc-process-step.is-on{opacity:1;border-left-color:#D5FF45}
.epc-process-step .pst-no{font-size:12px;letter-spacing:.2em;color:#D5FF45;text-transform:uppercase;font-weight:700;display:block}
.epc-process-step h3{font-family:var(--font-heading);font-weight:400;font-size:clamp(23px,3.2vw,33px);line-height:1.08;margin:8px 0 10px;color:#F3F0E8;text-align:left}
.epc-process-step p{color:rgba(243,240,232,.68);font-size:18px;line-height:1.6;max-width:50ch;margin:0}
.epc-process-step .pst-time{font-size:12px;color:#D5FF45;margin-top:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600}
@media (prefers-reduced-motion:reduce){.epc-process-step{transition:none}}
/* --- coverage stat cards ---
   Card treatment taken from the reference: dark band, subtle gradient
   cards, a coloured label and an arc ring that draws in the corner.
   Accent ramp is this site's gold/sage/terracotta, not the reference's
   green/purple/orange/red. */
.epc-cov-grid{display:grid;gap:20px;grid-template-columns:1fr}
@media(min-width:700px){.epc-cov-grid{grid-template-columns:1fr 1fr}}
@media(min-width:1080px){.epc-cov-grid{grid-template-columns:repeat(4,1fr)}}
.epc-cov-card{position:relative;overflow:hidden;background:linear-gradient(160deg,rgba(243,240,232,.07),rgba(243,240,232,.02));border:1px solid rgba(243,240,232,.14);border-radius:18px;padding:26px 24px;transition:border-color .3s var(--ease),transform .3s var(--ease)}
.epc-cov-card:hover{border-color:rgba(243,240,232,.28);transform:translateY(-3px)}
.epc-cov-card .epc-cov-nation .elementor-heading-title{max-width:calc(100% - 68px)}
.epc-cov-card .epc-cov-label .elementor-heading-title{max-width:none}
.epc-cov-nation .elementor-heading-title{font-family:var(--font-heading);font-weight:400;font-size:clamp(25px,2.4vw,32px);line-height:1.05;color:#F3F0E8;text-align:left}
.epc-cov-label .elementor-heading-title{font-family:var(--font-body);font-size:12px;letter-spacing:.09em;white-space:nowrap;text-transform:uppercase;font-weight:700;text-align:left}
.epc-cov-desc{color:rgba(243,240,232,.68);font-size:17px;line-height:1.6}
.epc-cov-grid>.epc-cov-card:nth-child(1) .epc-cov-label .elementor-heading-title{color:#D5FF45}
.epc-cov-grid>.epc-cov-card:nth-child(2) .epc-cov-label .elementor-heading-title{color:#D5FF45}
.epc-cov-grid>.epc-cov-card:nth-child(3) .epc-cov-label .elementor-heading-title{color:#D5FF45}
.epc-cov-grid>.epc-cov-card:nth-child(4) .epc-cov-label .elementor-heading-title{color:#F0A583}
.epc-cov-ring{position:absolute;top:16px;right:16px;width:58px;height:58px;pointer-events:none;z-index:0;opacity:.85}
.epc-cov-ring circle{fill:none;stroke-width:5;stroke-linecap:round}
.epc-cov-ring .trk{stroke:rgba(243,240,232,.09)}
.epc-cov-ring .arc{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset 1.3s var(--ease)}
.epc-cov-card.is-in .epc-cov-ring .arc{stroke-dashoffset:var(--off)}
.epc-cov-card>*:not(.epc-cov-ring){position:relative;z-index:1}
@media (prefers-reduced-motion:reduce){
  .epc-cov-ring .arc{transition:none;stroke-dashoffset:var(--off)}
  .epc-cov-card:hover{transform:none}
}
/* --- blog post: simple, readable, cards only for related posts --- */
body.epc-article-page main.site-main{max-width:none;padding:0}
body.epc-article-page .page-header{display:none}

.epc-post{max-width:740px;margin:clamp(30px,5vw,62px) auto clamp(30px,5vw,56px);padding:0 22px}
.epc-post-head{border-bottom:1px solid rgba(17,17,15,.14);padding-bottom:26px;margin-bottom:34px}
.epc-post-kick{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#7D9819;font-weight:700;display:block}
.epc-post-head h1{font-family:var(--font-heading);font-weight:400;font-size:clamp(29px,4.4vw,44px);line-height:1.12;margin:14px 0 0;text-align:left;color:#11110F}
.epc-post-meta{margin-top:14px;font-size:17px;color:rgba(17,17,15,.56)}

.epc-post-body h2{font-family:var(--font-heading);font-weight:400;font-size:clamp(21px,2.8vw,28px);line-height:1.2;text-align:left;margin:42px 0 14px;color:#11110F}
.epc-post-body h3{font-family:var(--font-heading);font-weight:400;font-size:20px;text-align:left;margin:30px 0 10px;color:#11110F}
.epc-post-body p{font-size:20px;line-height:1.78;color:rgba(17,17,15,.82);margin:0 0 20px;text-align:left}
.epc-post-body>p:first-child{font-size:20px;line-height:1.62;color:#11110F}
.epc-post-body ul,.epc-post-body ol{margin:0 0 22px;padding-left:22px}
.epc-post-body li{font-size:20px;line-height:1.72;color:rgba(17,17,15,.82);margin-bottom:10px;text-align:left}
.epc-post-body li::marker{color:#7D9819}
.epc-post-body strong{color:#11110F}
.epc-post-body a{color:#7D9819;border-bottom:1px solid rgba(232,90,42,.38)}
.epc-post-body a:hover{color:#5A6E12;border-bottom-color:#5A6E12}

/* related posts - the one place cards earn their keep */
.epc-related{max-width:1180px;margin:0 auto clamp(48px,7vw,86px);padding:38px 22px 0;border-top:1px solid rgba(17,17,15,.14)}
.epc-related h2{font-family:var(--font-heading);font-weight:400;font-size:clamp(20px,2.6vw,26px);text-align:left;margin:0 0 22px;color:#11110F}
.epc-related-grid{display:grid;gap:20px;grid-template-columns:1fr}
@media(min-width:680px){.epc-related-grid{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.epc-related-grid{grid-template-columns:repeat(3,1fr)}}
.epc-related-card{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:9px;background:#FFFFFF;border:1px solid rgba(17,17,15,.12);border-radius:18px;padding:24px 22px;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.epc-related-card::after{content:'';position:absolute;left:0;bottom:0;width:100%;height:3px;background:var(--color-accent);transform:scaleX(0);transform-origin:left center;transition:transform .4s var(--ease)}
.epc-related-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.epc-related-card:hover::after{transform:scaleX(1)}
.epc-related-card .rc-kick{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#7D9819;font-weight:700}
.epc-related-card h3{font-family:var(--font-heading);font-weight:400;font-size:20px;line-height:1.22;margin:0;text-align:left;color:#11110F}
.epc-related-card p{font-size:17px;line-height:1.6;color:rgba(17,17,15,.66);margin:0}
.epc-related-card .rc-more{margin-top:auto;padding-top:6px;font-size:17px;font-family:var(--font-heading);color:#11110F}
.epc-related-card a.rc-link{position:absolute;inset:0;z-index:2}

body.epc-article-page .comments-area{max-width:740px;margin:0 auto clamp(40px,6vw,80px);padding:0 22px}
body.epc-article-page .comments-area .comment-reply-title{font-family:var(--font-heading);font-weight:400;font-size:21px;text-align:left;color:#11110F}
@media (prefers-reduced-motion:reduce){.epc-related-card:hover{transform:none}}
/* --- post figure ---
   One light figure inside the article, matching the simple page:
   hairline card, gold accent, no dark slab. */
.epc-post-figure{background:#FFFFFF;border:1px solid rgba(17,17,15,.12);border-radius:16px;padding:24px 24px 20px;margin:8px 0 30px}
.epc-post-figure figcaption{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#7D9819;font-weight:700;margin-bottom:16px}
.epc-pf-track{height:12px;background:#E7E0D4;border-radius:999px;overflow:hidden}
.epc-pf-track i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7D9819,#D5FF45);width:0;transition:width 1.2s var(--ease)}
.epc-post-figure.is-in .epc-pf-track i{width:100%}
.epc-pf-ticks{display:flex;justify-content:space-between;margin-top:9px;font-size:12px;color:rgba(17,17,15,.52);font-variant-numeric:tabular-nums}
.epc-pf-note{font-size:17px;line-height:1.6;color:rgba(17,17,15,.66);margin:16px 0 0}
.epc-pf-note strong{color:#11110F}
@media (prefers-reduced-motion:reduce){.epc-pf-track i{transition:none;width:100%}}
/* figure: bar rows */
.epc-pf-rows{display:flex;flex-direction:column;gap:9px;margin-top:2px}
.epc-pf-row{display:grid;grid-template-columns:112px 1fr auto;align-items:center;gap:12px}
.epc-pf-row .l{font-size:17px;color:rgba(17,17,15,.66);font-variant-numeric:tabular-nums}
.epc-pf-bar{height:10px;background:#E7E0D4;border-radius:999px;overflow:hidden}
.epc-pf-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7D9819,#D5FF45);width:0;transition:width 1.1s var(--ease)}
.epc-post-figure.is-in .epc-pf-bar i{width:var(--w)}
.epc-pf-row .v{font-size:17px;font-weight:600;color:#11110F;font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:560px){.epc-pf-row{grid-template-columns:92px 1fr auto;gap:9px}.epc-pf-row .l,.epc-pf-row .v{font-size:12px}}
@media (prefers-reduced-motion:reduce){.epc-pf-bar i{transition:none;width:var(--w)}}

.epc-pf-rows+.epc-pf-note{margin-top:18px}

/* --- figure types --- */
.epc-pf-stats{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(148px,1fr))}
.epc-pf-stat{background:#F3F0E8;border:1px solid rgba(17,17,15,.12);border-radius:12px;padding:16px 16px 14px}
.epc-pf-stat .n{font-family:var(--font-heading);font-size:25px;line-height:1.05;color:#11110F;display:block}
.epc-pf-stat .k{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#7D9819;font-weight:700;margin-top:9px;display:block}
.epc-pf-stat .d{font-size:13px;line-height:1.5;color:rgba(17,17,15,.62);margin-top:6px;display:block}

.epc-pf-bands{display:flex;gap:3px}
.epc-pf-bands span{flex:1;height:36px;display:grid;place-items:center;font-weight:700;font-size:17px;color:#11110F;border-radius:4px;position:relative}
.epc-pf-bands span.mark::after{content:'';position:absolute;inset:-3px;border:2px solid #11110F;border-radius:7px}
.epc-pf-bandscale{display:flex;justify-content:space-between;font-size:12px;color:rgba(17,17,15,.55);margin-top:10px}

.epc-pf-donut{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.epc-pf-donut svg{width:148px;height:148px;flex:0 0 auto;transform:rotate(-90deg)}
.epc-pf-donut circle{fill:none;stroke-width:20}
.epc-pf-donut circle.seg{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);transition:stroke-dashoffset .9s var(--ease)}
.epc-post-figure.is-in .epc-pf-donut circle.seg{stroke-dashoffset:var(--off)}
.epc-pf-legend{display:flex;flex-direction:column;gap:8px;flex:1 1 210px}
.epc-pf-legend span{display:flex;align-items:flex-start;gap:9px;font-size:17px;line-height:1.45;color:rgba(17,17,15,.76)}
.epc-pf-legend i{width:11px;height:11px;border-radius:3px;flex:0 0 auto;margin-top:4px}

/* reveal - base state only applies once JS has flagged the page */
body.epc-article-page .epc-post-figure{opacity:0;transform:translateY(16px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
body.epc-article-page .epc-post-figure.is-in{opacity:1;transform:none}
body.epc-article-page .epc-related-card{opacity:0;transform:translateY(16px);transition:opacity .5s var(--ease),transform .5s var(--ease),box-shadow .3s var(--ease)}
body.epc-article-page .epc-related-card.is-in{opacity:1;transform:none}
body.epc-article-page .epc-related-card.is-in:hover{transform:translateY(-3px)}
@media (prefers-reduced-motion:reduce){
  body.epc-article-page .epc-post-figure,
  body.epc-article-page .epc-related-card{opacity:1;transform:none;transition:none}
  .epc-pf-donut circle.seg{transition:none;stroke-dashoffset:var(--off)}
}

/* === Two Worlds — ported from the source design (2026-08-23) ===
   Structure, spacing and art are the source's `.mode-band` section verbatim.
   Two colour substitutions, per request: the residential ground was cobalt
   blue and the accent was lime — both modes now sit on the site's near-black
   with the site's gold. Because both modes are dark, the section carries
   .epc-dark permanently and JS only swaps data-mode + the active panel. */
.epc-worlds{background:var(--color-bg)}

/* toggle — the source's sliding pill, rebuilt on Elementor's tabs markup.
   Equal-width tabs let the indicator be a fixed 50% that simply slides. */
.epc-worlds-toggle .elementor-tabs-wrapper{
  display:inline-flex;position:relative;padding:5px;gap:0;border:0;
  background:rgba(243,240,232,.14);border-radius:3px;
}
.epc-worlds-toggle .elementor-tabs-wrapper::before{
  content:'';position:absolute;z-index:1;top:5px;bottom:5px;left:5px;
  width:calc(50% - 5px);background:var(--color-accent);border-radius:2px;
  transition:transform .4s var(--ease);
}
.epc-worlds[data-mode="com"] .epc-worlds-toggle .elementor-tabs-wrapper::before{transform:translateX(100%)}
.epc-worlds-toggle .elementor-tab-title{
  position:relative;z-index:2;flex:1 1 0;min-width:150px;text-align:center;
  border:0!important;border-radius:2px;padding:12px 24px;
  background:transparent!important;
  font-family:var(--font-body);font-size:12px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;
  color:rgba(243,240,232,.62);transition:color .3s var(--ease);
}
.epc-worlds-toggle .elementor-tab-title.elementor-active,
.epc-worlds-toggle .elementor-tab-title.elementor-active a{color:#11110F}
.epc-worlds-toggle .elementor-tab-content,
.epc-worlds-toggle .elementor-tab-mobile-title{display:none!important}
/* Elementor draws a light hairline on the tabs content wrapper even when the
   panes are hidden; it reads as a stray rule under the pill on the dark ground */
.epc-worlds-toggle .elementor-tabs,
.epc-worlds-toggle .elementor-tabs-content-wrapper{border:0!important;background:transparent!important}

/* panels — source grid: visual left, text right */
.epc-world-panel{display:none}
.epc-world-panel.is-active{display:grid;grid-template-columns:1fr;gap:40px;align-items:center}
@media(min-width:940px){.epc-world-panel.is-active{grid-template-columns:.85fr 1.15fr;gap:56px}}
.epc-world-panel>*{min-width:0}

/* art */
.epc-world-icon{width:100%}
.epc-world-icon .ew-svg{width:100%;height:auto;max-height:520px;overflow:visible;display:block}
.epc-world-icon .ms-stroke{fill:none;stroke:var(--color-text);stroke-width:1.4;vector-effect:non-scaling-stroke;opacity:.9}
.epc-world-icon .ms-accent{fill:none;stroke:var(--color-accent);stroke-width:2;vector-effect:non-scaling-stroke}
.epc-world-icon .ms-fill{fill:var(--color-text);opacity:.06}

/* text column */
.epc-world-text{text-align:left}
.epc-world-text .elementor-heading-title,
.epc-world-text .elementor-widget-text-editor{text-align:left}
.epc-world-head,.epc-world-head .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:400;
  font-size:clamp(36px,5vw,64px);line-height:1;letter-spacing:-.02em;
  color:var(--color-text);text-align:left;
}
.epc-world-body{font-size:19px;line-height:1.6;max-width:50ch;color:var(--color-text);opacity:.92}

/* list — source used a → pseudo-element; here it is a native icon-list */
.epc-world-text .epc-list .elementor-icon-list-item{align-items:flex-start}
.epc-world-text .epc-list .elementor-icon-list-icon{margin-top:.28em}
.epc-world-text .epc-list .elementor-icon-list-icon svg{width:12px;height:12px;fill:var(--color-accent)}
.epc-world-text .epc-list .elementor-icon-list-text{
  color:var(--color-text);opacity:.92;font-size:17.5px;line-height:1.5;
}

/* figures */
.epc-world-stats{display:flex;gap:36px;flex-wrap:wrap;align-items:flex-start}
.epc-world-stats>.e-con{flex:0 0 auto;width:auto!important}
.epc-world-num,.epc-world-num .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:400;
  font-size:clamp(28px,3.4vw,42px);line-height:1;color:var(--color-text);
  font-variant-numeric:tabular-nums;text-align:left;white-space:nowrap;
}
.epc-world-num .p{font-size:.5em;color:var(--color-accent);vertical-align:top}
.epc-world-num .dash{opacity:.4;margin:0 4px}
.epc-world-cap,.epc-world-cap .elementor-heading-title{
  font-family:var(--font-body)!important;font-size:12px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--color-text-faint);margin-top:8px;text-align:left;
}

@media(max-width:939px){
  .epc-world-icon .ew-svg{max-height:320px}
  .epc-worlds-toggle .elementor-tab-title{min-width:0;padding:12px 16px;font-size:12px}
}


/* === Scroll reveal (2026-08-24) ==================================
   The hidden state is scoped to html.epc-js-rv, and that flag is set by a
   tiny inline script in <head> ONLY when IntersectionObserver exists and the
   visitor has not asked for reduced motion. So with no JS, an old browser, a
   print job or reduce-motion set, .epc-rv never gets opacity:0 and the page
   is simply static - the content can never be stranded invisible.
   State class is .is-rv, deliberately NOT .is-in: that one is already taken
   by the process line, blog cards and post figures. */
html.epc-js-rv .epc-rv{opacity:0;will-change:opacity,transform}
html.epc-js-rv .epc-rv-up{transform:translate3d(0,44px,0)}
html.epc-js-rv .epc-rv-down{transform:translate3d(0,-36px,0)}
html.epc-js-rv .epc-rv-left{transform:translate3d(-48px,0,0)}
html.epc-js-rv .epc-rv-right{transform:translate3d(48px,0,0)}
html.epc-js-rv .epc-rv-zoom{transform:scale3d(.94,.94,.94)}
html.epc-js-rv .epc-rv-fade{transform:none}

html.epc-js-rv .epc-rv.is-rv{
  opacity:1;transform:none;
  transition:opacity 1.1s var(--ease),transform 1.1s var(--ease);
}
/* release the compositor hint once the element has arrived */
html.epc-js-rv .epc-rv.is-rv{will-change:auto}

html.epc-js-rv .epc-rv-d1.is-rv{transition-delay:.14s}
html.epc-js-rv .epc-rv-d2.is-rv{transition-delay:.28s}
html.epc-js-rv .epc-rv-d3.is-rv{transition-delay:.42s}
html.epc-js-rv .epc-rv-d4.is-rv{transition-delay:.56s}
html.epc-js-rv .epc-rv-d5.is-rv{transition-delay:.70s}
html.epc-js-rv .epc-rv-d6.is-rv{transition-delay:.84s}

@media(max-width:767px){
  html.epc-js-rv .epc-rv-up{transform:translate3d(0,24px,0)}
  html.epc-js-rv .epc-rv-down{transform:translate3d(0,-20px,0)}
  html.epc-js-rv .epc-rv-left{transform:translate3d(-20px,0,0)}
  html.epc-js-rv .epc-rv-right{transform:translate3d(20px,0,0)}
  html.epc-js-rv .epc-rv-zoom{transform:scale3d(.96,.96,.96)}
  html.epc-js-rv .epc-rv.is-rv{transition:opacity .8s var(--ease),transform .8s var(--ease)}
  html.epc-js-rv .epc-rv-d1.is-rv{transition-delay:.07s}
  html.epc-js-rv .epc-rv-d2.is-rv{transition-delay:.14s}
  html.epc-js-rv .epc-rv-d3.is-rv{transition-delay:.21s}
  html.epc-js-rv .epc-rv-d4.is-rv{transition-delay:.28s}
  html.epc-js-rv .epc-rv-d5.is-rv{transition-delay:.35s}
  html.epc-js-rv .epc-rv-d6.is-rv{transition-delay:.42s}
}

@media print{html.epc-js-rv .epc-rv{opacity:1!important;transform:none!important}}

/* === "How we work" - pinned companion card (2026-08-24) ==========
   Layout taken from the sister site's Pricing section: a long left column
   scrolls while a card on the right stays pinned beside it. Our header is
   static (not fixed), so the offset is a plain 40px rather than a
   header-height allowance.

   NOTE: never put .epc-rv on .epc-split-sticky itself. A transform on an
   ancestor makes it the containing block and silently kills position:sticky
   in its children - the two columns carry their own reveal instead. */
.epc-split-sticky{display:grid;grid-template-columns:1fr;gap:32px;align-items:start;width:100%}
@media(min-width:940px){.epc-split-sticky{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:48px}}
.epc-split-sticky>*{min-width:0}

.epc-sticky{position:sticky;top:40px;align-self:start}
@media(max-width:939px){.epc-sticky{position:static}}

/* the DS sets h1-h6{text-align:center} on the element itself, which beats the
   alignment Elementor puts on the widget wrapper - pin this whole block left */
.epc-split-sticky .elementor-heading-title,
.epc-split-sticky .elementor-widget-text-editor{text-align:left}

/* the commitment rows - the reference's price table, retoned to our palette */
.epc-ptable{overflow:hidden}
.epc-prow{border-bottom:1px solid var(--color-divider)}
.epc-prow:last-child{border-bottom:0}
.epc-pnum,.epc-pnum .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:400;
  font-size:18px;line-height:1.5;color:var(--color-accent);text-align:left;
}
.epc-pname,.epc-pname .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:400;
  font-size:20px;line-height:1.25;color:var(--color-text);text-align:left;
}
.epc-pdesc{font-size:17.5px;line-height:1.55;color:var(--color-text-muted)}
.epc-pdesc p{margin:0}

/* tick list inside the pinned card */
.epc-ticks .elementor-icon-list-item{
  align-items:flex-start;
  border-bottom:1px solid var(--color-divider);
  padding-bottom:11px;margin-bottom:11px;
}
.epc-ticks .elementor-icon-list-item:last-child{border-bottom:0;padding-bottom:0;margin-bottom:0}
.epc-ticks .elementor-icon-list-icon{margin-top:.15em}
.epc-ticks .elementor-icon-list-icon svg{fill:var(--color-accent);width:14px;height:14px}
.epc-ticks .elementor-icon-list-text{color:var(--color-text);font-size:17.5px;line-height:1.5}

/* === Standards band (About) - the process mechanic on gold ==========
   Reuses every .epc-process-* layout rule; this block only re-tones the
   colours, because those rules hardcode the dark ground rather than reading
   tokens. Ground is the site's gold, so everything flips to near-black. */
.epc-standards .epc-process-svg{
  background:#1B1B18;
  border-color:rgba(243,240,232,.14);
}
.epc-standards .epc-process-svg .ps-stroke{stroke:rgba(243,240,232,.30)}
.epc-standards .epc-process-svg .ps-active{stroke:#D5FF45}
.epc-standards .epc-process-num{fill:rgba(243,240,232,.07)}

.epc-standards .epc-process-step{border-left-color:rgba(243,240,232,.14)}
.epc-standards .epc-process-step.is-on{border-left-color:#D5FF45}
.epc-standards .epc-process-step .pst-no{color:#D5FF45}
.epc-standards .epc-process-step h3{color:#F3F0E8}
.epc-standards .epc-process-step p{color:rgba(243,240,232,.70)}
.epc-standards .epc-process-step .pst-time{color:#D5FF45}

/* Slimmer proportions than the home Process band. Left column was taking a
   full 0.85fr, which made the art panel a 554px square and pushed the section
   past 1100px tall - it is a supporting figure, not the subject. Pin it to a
   fixed narrow column and let the text take the rest. */
.epc-standards .epc-process-grid{gap:36px}
@media(min-width:900px){
  /* Fixed columns rather than fractions, centred in the band: on a 1360 content
     width a 1fr text column left ~500px of dead space to the right of copy that
     is capped for readability anyway. */
  .epc-standards .epc-process-grid{grid-template-columns:220px minmax(0,600px);gap:48px;justify-content:center}
}
.epc-standards .epc-process-sticky{top:40px}
.epc-standards .epc-process-svg{padding:14px;border-radius:14px}
/* stacked layout would otherwise render it as a full-width square */
@media(max-width:899px){.epc-standards .epc-process-svg{max-width:210px;margin:0 auto}}
.epc-standards .epc-process-num{font-size:76px}

.epc-standards .epc-process-steps{gap:2px}
.epc-standards .epc-process-step{padding:16px 0 16px 20px}
.epc-standards .epc-process-step h3{font-size:clamp(19px,2vw,23px);margin:6px 0 8px}
.epc-standards .epc-process-step p{font-size:17.5px;line-height:1.55;max-width:56ch}
.epc-standards .epc-process-step .pst-no{font-size:12px}
.epc-standards .epc-process-step .pst-time{margin-top:9px;font-size:12px}

/* the intro block above the grid sits on the same gold ground */
.epc-standards-head .elementor-heading-title{color:#F3F0E8}

.epc-standards-head .elementor-widget-text-editor{color:rgba(243,240,232,.72)}

/* === Breakdown card as a Cost Passport ticket (2026-08-24) ==========
   Same ticket language as .epc-pp in the estimator: hard 2px rule, small
   radius, dark header band with a gold kicker, punched notches at the
   head/body seam and dotted item rows. Deliberately no A-G band strip:
   that strip is semantic to an energy rating, not to a price breakdown. */
.epc-bd{
  background:#F3F0E8!important;
  border:2px solid #11110F;
  border-radius:8px;
  box-shadow:none!important;
  padding:0!important;
}

.epc-bd-head{
  background:#11110F;
  padding:22px 26px!important;
  position:relative;
}
/* !important: the widget kept its own near-black title_color from when this
   header sat on white, and Elementor's per-post rule outranks this selector */
.epc-bd-head .elementor-heading-title{color:#F3F0E8!important;text-align:left}
.epc-bd-head .epc-lede{
  color:rgba(243,240,232,.62)!important;
  font-size:12px;letter-spacing:.06em;text-transform:uppercase;
}
/* ticket punch at the head/body seam */
.epc-bd-head::before,.epc-bd-head::after{
  content:'';position:absolute;bottom:-11px;width:18px;height:18px;
  border-radius:50%;background:var(--color-bg);
  border:2px solid #11110F;z-index:3;
}
.epc-bd-head::before{left:-11px}
.epc-bd-head::after{right:-11px}

/* the "Indicative" chip now sits on the dark band */
.epc-bd-head .epc-tag .elementor-heading-title{
  color:#D5FF45!important;border-color:#D5FF45!important;background:transparent!important;
}

/* item rows, dotted like .epc-pp-prow */
.epc-bd .epc-invoice-row{
  border-top:1px dotted rgba(17,17,15,.22);
  padding:15px 26px!important;
}
.epc-bd .epc-invoice-row:first-of-type{border-top:0}
.epc-bd .epc-invoice-row .elementor-heading-title{
  font-family:var(--font-body)!important;font-weight:600;font-size:18px;
  color:#11110F;text-align:left;letter-spacing:0;line-height:1.35;
}
.epc-bd .epc-invoice-row .epc-lede{
  font-size:17px;line-height:1.5;color:rgba(17,17,15,.62);
}
.epc-bd .epc-invoice-row .epc-tag .elementor-heading-title{
  font-family:var(--font-body)!important;font-size:12px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
}

/* total row, the passport's headline treatment */
.epc-bd .epc-invoice-total{
  border-top:2px solid #11110F;
  background:rgba(17,17,15,.035);
  padding:20px 26px!important;
  align-items:center;
}
.epc-bd .epc-invoice-total .elementor-heading-title{text-align:left}
.epc-bd .epc-invoice-total .epc-price .elementor-heading-title{
  font-family:var(--font-heading)!important;
  font-size:clamp(32px,4.6vw,46px);line-height:1;color:#11110F;
  font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-align:right;
}
.epc-bd .epc-invoice-total .epc-lede{
  font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(17,17,15,.58);
}

/* footnote sits inside the ticket, above the bottom rule */
.epc-bd .epc-bd-foot{
  padding:14px 26px 18px!important;
  border-top:1px dashed rgba(17,17,15,.20);
  font-size:12px;color:rgba(17,17,15,.60);
}


/* Trust rows on Get a Quote: the DS sets h1-h6{text-align:center} on the
   element itself, which beats the alignment Elementor puts on the widget
   wrapper, so the headings stayed centred over left-aligned descriptions.
   The numbered circle keeps its own centring. */
.epc-trust .elementor-heading-title{text-align:left}
.epc-trust .epc-trust-num .elementor-heading-title{text-align:center}

/* === Section intro alignment (2026-08-24) ===
   .epc-lede follows the heading it sits under: centred in section heads,
   left inside the left-aligned components listed below. */
.epc-lede{text-align:center}
.epc-hero-left .epc-lede,
.epc-split-sticky .epc-lede,
.epc-world-text .epc-lede,
.epc-bd .epc-lede,
.epc-bd-head .epc-lede,
.epc-trust .epc-lede,
.epc-quote-card .epc-lede,
.epc-quote-form .epc-lede,
.epc-pp .epc-lede,
.epc-blog-card .epc-lede,
.epc-network .epc-lede,
.epc-cutaway .epc-lede,
.epc-drawer .epc-lede,
#epc-estimator .epc-lede,
footer .epc-lede{text-align:left}

/* Footer columns are left-aligned blocks, but the DS centres h1-h6 globally,
   so the column headings floated centre over left-aligned lists and copy. */
footer .elementor-heading-title{text-align:left}

/* === Header: centred nav + CTA (2026-08-24) === */
.epc-header-bar > .epc-brand{flex:1 1 0;min-width:0}
.epc-header-bar > .epc-brand .elementor-heading-title{text-align:left}
/* Elementor containers carry width:var(--width) = 100%, so the group filled the
   bar and left nothing for the brand or the balancing pseudo. Size to content. */
.epc-header-bar > .epc-header-right{flex:0 0 auto;width:auto!important}
.epc-header-bar::after{content:'';flex:1 1 0;min-width:0;pointer-events:none}
@media(max-width:1024px){
  /* on small screens the group returns to the right edge next to the toggler */
  .epc-header-bar::after{display:none}
}

/* === Commercial SBEM pricing: vertical bar chart (2026-08-24) ===
   Was a stack of horizontal progress bars. Columns share a baseline, so the
   bar heights are set per column in Elementor (min_height, linear on price,
   £999 = 300px) and only the skin lives here. */
.epc-vbars{width:100%;gap:clamp(6px,1.5vw,26px)}
/* !important: Elementor sets flex-grow/shrink/basis on .e-con from its own
   container controls, which otherwise wins and collapses every column */
.epc-vbar-col{flex:1 1 0!important;min-width:0;width:auto!important}

.epc-vbar-bar{
  width:100%!important;max-width:82px;
  background:#D5FF45;
  border-radius:10px 10px 0 0;
  align-self:center;
}

.epc-vbar-val,.epc-vbar-val .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:400;
  font-size:clamp(14px,1.5vw,20px);line-height:1;color:#11110F;
  white-space:nowrap;text-align:center;
}
.epc-vbar-val{margin-bottom:10px}

.epc-vbar-lbl,.epc-vbar-lbl .elementor-heading-title{
  font-family:var(--font-body)!important;font-weight:600;
  font-size:clamp(12px,1.15vw,15px);line-height:1.25;
  color:rgba(17,17,15,.66);white-space:nowrap;text-align:center;
}
.epc-vbar-lbl{margin-top:12px;padding-top:12px;border-top:1px solid var(--color-divider);width:100%}

/* nine columns cannot hold their labels on a phone - scroll the chart instead
   of letting the labels collide or wrap */
@media(max-width:767px){
  .epc-vbars{overflow-x:auto;justify-content:flex-start;padding-bottom:6px}
  .epc-vbar-col{flex:0 0 74px!important}
}

/* === Figure scaling (2026-08-24) ===
   1. SBEM chart now runs the full content band, so the bars can be wider.
      The intro paragraph keeps a readable measure instead of stretching.
   2. The Index bars gain height and larger labels to match. */
.epc-vbar-bar{max-width:132px}
.epc-vbars{padding-inline:clamp(0px,2vw,40px)}
.elementor-element-932187d > .e-con-inner > .elementor-widget-text-editor,
.elementor-element-932187d > .elementor-widget-text-editor{max-width:78ch;margin-inline:auto}

/* Index: taller bars and bigger row type */
.epc-index .elementor-progress-wrapper,
.epc-index .elementor-progress-bar{height:20px}
.epc-index-rows .elementor-heading-title{font-size:18px}
@media(max-width:767px){
  .epc-index-rows .elementor-heading-title{font-size:16px}
  .epc-index .elementor-progress-wrapper,
  .epc-index .elementor-progress-bar{height:16px}
}
/* SBEM intro: runs the full chart band so it sets in two lines, at a size
   that scales with the band. 20px/1328px is exactly two lines, so the vw
   term keeps that ratio as the viewport changes rather than pinning one
   size that would spill to three on a narrower desktop.
   !important: Elementor emits max-width and font-size for this widget at the
   same specificity, so these need to outrank it. */
.elementor-element-a8d7742{
  max-width:100%!important;margin-inline:auto;
  font-size:clamp(17px,1.39vw,21px)!important;
  text-wrap:balance;
}
.elementor-element-a8d7742 p{font-size:inherit!important;text-wrap:balance}

/* === Coverage Atlas region grid (2026-08-24) ===
   Source treatment: a single grid whose 1px gaps expose the dark ground, so
   the regions read as cells of one table. No radius, no shadow, no per-card
   border - the gap IS the rule. */
.epc-atlas-grid{
  width:100%;
  display:grid!important;
  grid-template-columns:1fr;
  gap:1px!important;
  background:var(--color-text);
  border:1px solid var(--color-text);
}
@media(min-width:620px){.epc-atlas-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:980px){.epc-atlas-grid{grid-template-columns:repeat(3,1fr)}}

.epc-atlas-card{
  background:var(--color-bg);
  border:0;border-radius:0;box-shadow:none;
  min-height:126px;
  width:auto!important;
  transition:background .2s var(--ease);
}
.epc-atlas-card:hover{background:#E7E0D4;transform:none;box-shadow:none}

.epc-atlas-top{width:auto!important}
.epc-atlas-code,.epc-atlas-code .elementor-heading-title{
  font-family:var(--font-body)!important;font-size:12px;font-weight:700;
  letter-spacing:.15em;text-transform:uppercase;color:var(--color-accent-300);text-align:left;
}
.epc-atlas-nation,.epc-atlas-nation .elementor-heading-title{
  font-family:var(--font-body)!important;font-size:11px;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-faint);text-align:right;white-space:nowrap;
}
.epc-atlas-name,.epc-atlas-name .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:600;
  font-size:20px;line-height:1.2;color:var(--color-text);text-align:left;margin:6px 0 3px;
}
.epc-atlas-desc{font-size:15px;line-height:1.5;color:var(--color-text-muted)}
.epc-atlas-desc p{margin:0}
/* === The Register - existing EPC checker (Section 4.1) === */
.epc-reg{
  width:100%;background:var(--color-card);
  border:1.5px solid var(--color-text);
  border-radius:var(--radius-lg);overflow:hidden;text-align:left;
}
.epc-reg .reg-head{background:#11110F;color:#F3F0E8;padding:22px 26px}
.epc-reg .rh-title{font-family:var(--font-heading);font-size:22px;display:flex;align-items:center;gap:12px}
.epc-reg .rh-title .glyph{
  width:26px;height:26px;border-radius:50%;background:#D5FF45;color:#11110F;
  display:grid;place-items:center;font-size:14px;font-weight:700;flex:0 0 auto;
}
.epc-reg .rh-note{font-size:13px;line-height:1.6;color:rgba(243,240,232,.62);margin-top:10px;max-width:88ch}

.epc-reg .reg-search{padding:26px}
.epc-reg .reg-search label{
  display:block;font-size:12px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--color-text-faint);margin-bottom:10px;
}
.epc-reg .reg-field{display:flex;gap:10px;flex-wrap:wrap}
.epc-reg .reg-field input{
  flex:1 1 220px;min-width:0;font:inherit;font-size:17px;
  padding:14px 16px;border-radius:999px;
  border:1.5px solid var(--color-divider);background:var(--color-bg);color:var(--color-text);
}
.epc-reg .reg-field input:focus{outline:none;border-color:#D5FF45;box-shadow:0 0 0 3px rgba(213,255,69,.35)}
.epc-reg .reg-field button{
  flex:0 0 auto;font:inherit;font-size:16px;font-weight:600;cursor:pointer;
  padding:14px 24px;border-radius:999px;border:0;background:#D5FF45;color:#11110F;
  transition:transform .2s var(--ease),background .2s;
}
.epc-reg .reg-field button:hover{background:#B8E03A;transform:translateY(-2px)}

.epc-reg .reg-samples{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px;font-size:13px;color:var(--color-text-faint)}
.epc-reg .reg-sample{
  font:inherit;font-size:12px;cursor:pointer;padding:7px 13px;border-radius:999px;
  border:1px solid var(--color-divider);background:transparent;color:var(--color-text-muted);
}
.epc-reg .reg-sample:hover{border-color:var(--color-text);color:var(--color-text)}

.epc-reg .reg-result{display:none;border-top:1px solid var(--color-divider);padding:22px 26px 26px}
.epc-reg .reg-result.on{display:block}
.epc-reg .reg-status{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;margin-bottom:16px}
.epc-reg .reg-status .rs-dot{width:10px;height:10px;border-radius:50%;background:var(--color-text-faint);flex:0 0 auto}
.epc-reg .reg-status.found .rs-dot{background:#4CB847}
.epc-reg .reg-status.notfound .rs-dot{background:#E85A2A}

.epc-reg .reg-record{display:grid;gap:22px;grid-template-columns:1fr}
@media(min-width:820px){.epc-reg .reg-record{grid-template-columns:minmax(0,1.4fr) minmax(0,.6fr)}}
.epc-reg .reg-frow{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px dotted var(--color-divider)}
.epc-reg .reg-frow:last-child{border-bottom:0}
.epc-reg .reg-frow .k{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-faint)}
.epc-reg .reg-frow .v{font-size:16px;font-weight:600;text-align:right;color:var(--color-text)}
.epc-reg .reg-none{font-size:16px;line-height:1.6;color:var(--color-text-muted);margin:0}

.epc-reg .reg-side{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.epc-reg .reg-badge{
  width:100%;border-radius:var(--radius-md);padding:20px;color:#11110F;
  display:flex;flex-direction:column;gap:4px;
}
.epc-reg .reg-badge .rb-band{font-family:var(--font-heading);font-size:46px;line-height:1}
.epc-reg .reg-badge .rb-score{font-size:12px;font-weight:700;letter-spacing:.14em}
.epc-reg .reg-cta{font-size:14px;line-height:1.5;color:var(--color-text-muted)}
.epc-reg .reg-disc{font-size:13px;line-height:1.6;color:var(--color-text-faint);margin-top:20px;max-width:92ch}

/* === Mono label set (2026-08-24) ===
   The source runs codes, stat captions, meta lines and tags in JetBrains
   Mono; only headings (Fraunces) and running copy (Inter) sit outside it. */
.epc-atlas-code,.epc-atlas-code .elementor-heading-title,
.epc-atlas-nation,.epc-atlas-nation .elementor-heading-title,
.epc-world-cap,.epc-world-cap .elementor-heading-title,
.epc-vbar-lbl,.epc-vbar-lbl .elementor-heading-title,
.epc-process-step .pst-no,.epc-process-step .pst-time,
.epc-tag .elementor-heading-title,
.epc-bd-head .epc-lede,
.epc-reg .reg-frow .k,.epc-reg .reg-search label,.epc-reg .reg-badge .rb-score,
.epc-cov-label .elementor-heading-title
{font-family:var(--font-mono)!important;letter-spacing:.14em}


/* === Final step band (2026-08-24) ===
   The source's CH.05 sits on --carbon; this one takes the cobalt from the
   same palette, with the source's lime eyebrow and paper form card. */
.epc-book-band{background:#2339A7}
.epc-book-band .elementor-heading-title{color:#F3F0E8}
.epc-book-band .epc-kicker,
.epc-book-band .epc-kicker .elementor-heading-title{color:#D5FF45!important}
.epc-book-band .elementor-widget-text-editor,
.epc-book-band .epc-lede{color:rgba(243,240,232,.72)!important}
.epc-book-band .epc-trust-num .elementor-heading-title{background:#D5FF45;color:#11110F}
.epc-book-band a{color:#D5FF45}

/* the form card stays paper so the fields keep their contrast */
.epc-book-band .epc-quote-card{background:var(--color-card)}
.epc-book-band .epc-quote-card .elementor-heading-title{color:var(--color-text)}

/* === Coverage Atlas, per the recording (2026-08-24) ===
   Head runs headline left / standfirst right; the eyebrow is knocked out on a
   lime highlight; the second clause of the headline is blue italic; the four
   nation cards are outlined boxes with a ghosted corner numeral that invert to
   carbon on hover. */
@media(min-width:900px){
  .epc-atlas-headl{flex:1 1 0!important;min-width:0;width:auto!important}
  .epc-atlas-headr{flex:0 1 420px!important;min-width:0;width:auto!important}
}
.epc-atlas-headrow{width:100%}

.epc-atlas-head .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:400;
  font-size:clamp(34px,5.4vw,66px);line-height:1;letter-spacing:-.02em;
  color:var(--color-text);text-align:left;
}
.epc-atlas-head em{font-style:italic;color:var(--color-cobalt)}
.epc-atlas-stand{font-size:18px;line-height:1.6;color:var(--color-text-muted);text-align:left!important}

/* nation cards */
.epc-nation-row{width:100%}
.epc-nation-card{
  flex:1 1 240px!important;min-width:0;width:auto!important;
  position:relative;overflow:hidden;
  background:var(--color-bg);
  border:1.5px solid var(--color-text);
  transition:background .25s var(--ease),color .25s var(--ease);
}
.epc-nation-card:hover{background:#11110F}
.epc-nation-code,.epc-nation-code .elementor-heading-title{
  font-family:var(--font-mono)!important;font-size:12px;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;color:#B43D18;text-align:left;
}
.epc-nation-card:hover .epc-nation-code .elementor-heading-title{color:#D5FF45}
.epc-nation-name,.epc-nation-name .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:600;
  font-size:26px;line-height:1.1;color:var(--color-text);text-align:left;
}
.epc-nation-card:hover .epc-nation-name .elementor-heading-title{color:#F3F0E8}
.epc-nation-desc{font-size:15px;line-height:1.55;color:var(--color-text-muted)}
.epc-nation-desc p{margin:0}
.epc-nation-card:hover .epc-nation-desc{color:rgba(243,240,232,.62)}

/* the oversized numeral sits in the corner, behind the copy */
.epc-nation-count{position:absolute;right:14px;bottom:2px;pointer-events:none;z-index:0}
.epc-nation-count .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:400;
  font-size:64px;line-height:1;color:rgba(17,17,15,.10);
}
.epc-nation-card:hover .epc-nation-count .elementor-heading-title{color:rgba(243,240,232,.10)}
.epc-nation-card > *:not(.epc-nation-count){position:relative;z-index:1}

@media(max-width:899px){
  .epc-atlas-head .elementor-heading-title,.epc-atlas-stand{text-align:left!important}
}
/* The band's lime/cream overrides must stop at any pale panel inside it -
   the "Not ready yet?" card and the form card keep paper-ground colours. */
.epc-book-band .elementor-element-4e5a8eb .epc-kicker,
.epc-book-band .elementor-element-4e5a8eb .epc-kicker .elementor-heading-title{color:var(--color-cobalt)!important}
.epc-book-band .elementor-element-4e5a8eb .elementor-heading-title{color:var(--color-text)}
.epc-book-band .elementor-element-4e5a8eb .elementor-widget-text-editor,
.epc-book-band .elementor-element-4e5a8eb .epc-lede{color:var(--color-text-muted)!important}
.epc-book-band .epc-quote-card .elementor-widget-text-editor,
.epc-book-band .epc-quote-card .epc-lede{color:var(--color-text-muted)!important}

/* === Region cards: same invert-on-hover as the nations (2026-08-24) === */
.epc-atlas-card:hover{background:#11110F}
.epc-atlas-card{transition:background .25s var(--ease)}
.epc-atlas-card:hover .epc-atlas-code .elementor-heading-title{color:#D5FF45}
.epc-atlas-card:hover .epc-atlas-nation .elementor-heading-title{color:rgba(243,240,232,.55)}
.epc-atlas-card:hover .epc-atlas-name .elementor-heading-title{color:#F3F0E8}
.epc-atlas-card:hover .epc-atlas-desc{color:rgba(243,240,232,.62)}

/* === Final step form card, per the source's .book-form ===
   paper ground, 4px radius and a hard 14px offset shadow rather than a soft
   blur, with a 2px rule under the card head. */
.epc-book-band .epc-quote-card{
  background:var(--color-card)!important;
  border-radius:4px!important;
  box-shadow:14px 14px 0 rgba(0,0,0,.25)!important;
  border:0!important;
}
.epc-book-band .epc-quote-card > .e-con-inner > .elementor-widget-heading:first-child,
.epc-book-band .epc-quote-card .elementor-widget-heading:first-child{
  border-bottom:2px solid var(--color-text);
  padding-bottom:16px;margin-bottom:22px;
}
.epc-book-band .epc-quote-card .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:600;font-size:24px;text-align:left;
}

/* === Type system, matching the source across the site (2026-08-24) ===
   Fraunces is set at 500 for display and 600 for the smaller headings, with
   the source's tighter tracking. Inter carries running copy; JetBrains Mono
   carries the caps-and-tracking labels. */
h1,h2,h3,h4,h5,h6,
.elementor-heading-title{letter-spacing:-.02em}
h1,h2,.elementor-widget-heading h1.elementor-heading-title,
.elementor-widget-heading h2.elementor-heading-title{font-weight:500}
h3,h4,h5,h6,
.elementor-widget-heading h3.elementor-heading-title,
.elementor-widget-heading h4.elementor-heading-title{font-weight:600}

/* the source sets accented clauses in italic display type */
.elementor-heading-title em{font-style:italic;font-weight:400;color:var(--color-cobalt)}
.epc-dark .elementor-heading-title em{color:#D5FF45}
/* The card head is a flex child sized to its text, so the 2px rule stopped
   short of the card edge. Make it span, and add the source's mono tag on the
   right of the head the way .bf-head does. */
.epc-book-band .epc-quote-card .elementor-widget-heading:first-child{
  width:100%!important;flex:0 0 100%!important;
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;
}
.epc-book-band .epc-quote-card .elementor-widget-heading:first-child::after{
  content:'No obligation';
  font-family:var(--font-mono);font-size:10px;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;color:var(--color-cobalt);
  white-space:nowrap;flex:0 0 auto;
}

/* === Quote form submit (2026-08-24) ===
   Set through WPForms' own custom properties so it holds on every page and
   survives the modern renderer, rather than fighting it with !important. */
.epc-quote-card .wpforms-container,
.epc-quote-form .wpforms-container,
.epc-book-band .wpforms-container{
  --wpforms-button-background-color:#E85A2A;
  --wpforms-button-background-color-alt:#B43D18;
  --wpforms-button-text-color:#11110F;
  --wpforms-button-text-color-alt:#F3F0E8;
  --wpforms-button-border-radius:999px;
}
.epc-quote-card .wpforms-submit,
.epc-quote-form .wpforms-submit,
.epc-book-band .wpforms-submit{
  background:#E85A2A!important;color:#11110F!important;border:0!important;
  border-radius:999px!important;width:100%!important;
  font-family:var(--font-heading)!important;font-size:18px!important;
  padding:18px 28px!important;cursor:pointer;
  transition:background .2s,transform .25s var(--ease);
}
.epc-quote-card .wpforms-submit:hover,
.epc-quote-form .wpforms-submit:hover,
.epc-book-band .wpforms-submit:hover{
  background:#B43D18!important;color:#F3F0E8!important;transform:translateY(-2px);
}

/* === Home page section heads, matching the source's .chapter-head ===
   The source sets these left-aligned in a 60ch measure, with Fraunces at the
   light 420 weight the later override applies, and the standfirst in full
   carbon rather than a muted grey. Scoped to the home page. */
.elementor .elementor-widget-heading h2.elementor-heading-title{
  font-family:var(--font-heading)!important;
  font-weight:420;
  font-size:clamp(30px,5.2vw,58px);
  line-height:1.02;
  letter-spacing:-.022em;
  text-align:left;
}
.elementor .epc-kicker,
.elementor .epc-kicker .elementor-heading-title{text-align:left}
.elementor .epc-lede{
  font-size:clamp(16px,2vw,19px)!important;
  line-height:1.55;
  color:var(--color-text)!important;
  max-width:56ch;
  text-align:left!important;
  margin-top:4px;
}
/* the dark bands keep a lifted standfirst so it does not go muddy */
.elementor .epc-dark .epc-lede,
.elementor .epc-book-band .epc-lede{color:rgba(243,240,232,.72)!important}

/* components that own their own alignment opt back out */
.elementor .epc-bd .epc-lede,
.elementor .epc-quote-card .epc-lede,
.elementor .epc-atlas-desc,
.elementor .epc-nation-desc{max-width:none}
.elementor .epc-vbar-val .elementor-heading-title,
.elementor .epc-vbar-lbl .elementor-heading-title{text-align:center}

/* Card interiors follow the section heads: left, not centred over left copy. */
.elementor .epc-card .elementor-heading-title,
.elementor .epc-card .elementor-widget-text-editor{text-align:left}
.elementor .epc-card .epc-kicker .elementor-heading-title{text-align:left}
/* chips stay inline-block, so they sit at the left edge of the card */
.elementor .epc-card .epc-tag .elementor-heading-title{text-align:center}


/* === The Index, per the source's index-band (2026-08-24) ===
   Dark band, title left / mono meta right, then a horizontally scrolling
   row of narrow zone columns with gridlines behind the bars. */
.epc-index-band{overflow:hidden}
.epc-index-head{width:100%}
@media(min-width:900px){
  .epc-index-headl{flex:1 1 0!important;min-width:0;width:auto!important}
}
.epc-index-title .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:500;
  font-size:clamp(28px,4.6vw,50px);line-height:1;letter-spacing:-.02em;
  color:#F3F0E8;text-align:left;
}
.epc-index-title em{font-style:italic;font-weight:400;color:#D5FF45}
.epc-index-meta{
  font-family:var(--font-mono)!important;font-size:12px!important;
  color:rgba(243,240,232,.62)!important;text-align:right!important;
  line-height:1.8;letter-spacing:.08em;max-width:none!important;
}
.epc-index-meta b{color:#D5FF45;font-weight:500}
.epc-index-meta p{margin:0}

.epc-index-scroll{
  display:flex!important;flex-direction:row!important;gap:0!important;
  /* Elementor containers wrap by default, which collapsed the row into a grid
     on narrow screens instead of scrolling it */
  flex-wrap:nowrap!important;
  overflow-x:auto;scroll-snap-type:x mandatory;
  padding-bottom:18px!important;width:100%;
  scrollbar-width:thin;scrollbar-color:#D5FF45 transparent;
}
.epc-index-scroll::-webkit-scrollbar{height:6px}
.epc-index-scroll::-webkit-scrollbar-thumb{background:#D5FF45;border-radius:3px}
.epc-index-scroll::-webkit-scrollbar-track{background:rgba(243,240,232,.08)}

.idx-col{
  flex:0 0 auto;width:136px;scroll-snap-align:start;
  border-left:1px solid rgba(243,240,232,.14);padding:0 14px;
  display:flex;flex-direction:column;
}
.idx-col:last-child{border-right:1px solid rgba(243,240,232,.14)}
.idx-zone{font-family:var(--font-mono);font-size:13px;font-weight:700;letter-spacing:.1em;color:#D5FF45}
.idx-area{
  font-family:var(--font-mono);font-size:10px;color:rgba(243,240,232,.62);
  text-transform:uppercase;letter-spacing:.06em;margin-top:4px;min-height:26px;line-height:1.3;
}
.idx-plot{height:200px;display:flex;align-items:flex-end;gap:6px;margin:16px 0 12px;position:relative}
.idx-plot .gridline{position:absolute;left:0;right:0;height:1px;background:rgba(243,240,232,.07)}
.idx-barcol{flex:1;display:flex;flex-direction:column;justify-content:flex-end;position:relative;z-index:2}
.idx-fill{
  background:linear-gradient(#8FAE2B,#7D9819);border-radius:2px 2px 0 0;
  transition:height 1.1s var(--ease);
}
.idx-fill.hi{background:linear-gradient(#E4FF7A,#D5FF45)}
.idx-val{
  font-family:var(--font-heading);font-size:22px;font-weight:500;
  font-variant-numeric:tabular-nums;color:#F3F0E8;
}
.idx-val .p{font-size:.6em;color:#D5FF45;font-weight:600}
.idx-range{font-family:var(--font-mono);font-size:10px;color:rgba(243,240,232,.62);margin-top:3px;letter-spacing:.04em}

.epc-index-axis{
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-family:var(--font-mono)!important;font-size:11px!important;
  color:rgba(243,240,232,.62)!important;
  margin-top:18px;padding-top:14px;border-top:1px solid rgba(243,240,232,.14);
  letter-spacing:.06em;max-width:none!important;text-align:left!important;
}
.epc-index-axis p{margin:0;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;width:100%}
.epc-index-foot{
  font-family:var(--font-mono)!important;font-size:11px!important;
  color:rgba(243,240,232,.62)!important;margin-top:22px;max-width:64ch!important;
  line-height:1.7;text-align:left!important;
}
@media(max-width:600px){.idx-col{width:120px}}

/* The source sets display headings at 1.02; per-widget line-height was
   overriding the shared rule, so pin it here. */
.elementor .elementor-widget-heading h2.elementor-heading-title{line-height:1.02!important}


/* Section heads were still centring because the section containers carry
   flex_align_items:center, so each widget box shrank to its text and was
   centred as a flex item - text-align never got a chance. Stretch the head
   widgets so the alignment above actually governs. Cards, chips and the
   chart columns keep their own centring. */
.elementor .e-con-inner > .elementor-widget-heading,
.elementor .e-con-inner > .elementor-widget-text-editor,
.elementor .e-con-full > .elementor-widget-heading,
.elementor .e-con-full > .elementor-widget-text-editor{align-self:stretch}

.elementor .epc-card .elementor-widget-heading,
.elementor .epc-card .elementor-widget-text-editor,
.elementor .epc-vbar-col .elementor-widget-heading,
.elementor .epc-tag,
.elementor .epc-trust .elementor-widget-heading{align-self:auto}
/* Some section heads are marked up as h1 rather than h2 (the About hero, for
   one), so they missed the head treatment. Same spec for both levels. */
.elementor .elementor-widget-heading h1.elementor-heading-title{
  font-family:var(--font-heading)!important;
  font-weight:420;
  line-height:1.02!important;
  letter-spacing:-.022em;
  text-align:left;
}

/* === Section eyebrows: lime highlight block (2026-08-24) ===
   The Coverage Atlas treatment, applied to every section eyebrow. Card,
   panel and figure labels are excluded - they are inline meta, not headings,
   and a block of lime on each would be noise. */



/* labels that stay plain */
.epc-card .epc-kicker .elementor-heading-title,
.epc-bd .epc-kicker .elementor-heading-title,
.epc-bd-head .epc-kicker .elementor-heading-title,
.epc-quote-card .epc-kicker .elementor-heading-title,
.epc-nation-card .epc-kicker .elementor-heading-title,
.epc-atlas-card .epc-kicker .elementor-heading-title,
.epc-reg .epc-kicker .elementor-heading-title,
.epc-trust .epc-kicker .elementor-heading-title,
.epc-cov-label .elementor-heading-title,
.epc-world-text .epc-kicker .elementor-heading-title{
  display:block;background:transparent;padding:0;
}
.epc-world-text .epc-kicker .elementor-heading-title{color:#D5FF45!important}
.epc-card .epc-kicker .elementor-heading-title,
.epc-reg .epc-kicker .elementor-heading-title{color:var(--color-cobalt)!important}

/* === The Index: bars respond to hover (2026-08-24) === */
.idx-col{transition:background .25s var(--ease)}
.idx-col:hover{background:rgba(243,240,232,.04)}
.idx-barcol{transition:transform .3s var(--ease);transform-origin:bottom center}
.idx-col:hover .idx-barcol{transform:scaleX(1.22)}
.idx-fill{transition:height 1.1s var(--ease),background .25s var(--ease),box-shadow .25s var(--ease)}
.idx-col:hover .idx-fill{
  background:linear-gradient(#EEFFB0,#D5FF45);
  box-shadow:0 0 26px rgba(213,255,69,.45);
}
.idx-col:hover .idx-zone{color:#EEFFB0}
@media(prefers-reduced-motion:reduce){
  .idx-barcol,.idx-col:hover .idx-barcol{transition:none;transform:none}
}
/* The eyebrow is now an inline-block, so its position is decided by the
   text-align of the WIDGET, not the title. Elementor writes that per widget
   from the align setting, so the class needs to outrank it. */
.elementor .elementor-widget-heading.epc-kicker{text-align:left}
/* Eight zones at rest; the remaining four sit behind the horizontal scroll. */
.idx-col{width:clamp(132px, calc((100vw - 32px) / 8), 200px)}
/* ============================================================
   BLOG CARDS — align to the site's card + heading system
   ============================================================ */

/* Even columns, even gutters, and cards that fill their row height so the
   Read more buttons sit on one baseline regardless of title length. */
.epc-blog-grid{
  display:grid!important;
  grid-template-columns:repeat(3,1fr)!important;
  gap:24px!important;
  align-items:stretch!important;
}
@media(max-width:1024px){.epc-blog-grid{grid-template-columns:repeat(2,1fr)!important}}
@media(max-width:700px){.epc-blog-grid{grid-template-columns:1fr!important}}

.epc-blog-card{
  width:auto!important;
  height:100%!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  gap:0!important;
  padding:26px 26px 24px!important;
  background:var(--color-surface)!important;
  border:1px solid var(--color-divider)!important;
  border-radius:14px!important;
}

/* Everything reads from the left edge, like every other card on the site. */
.elementor .epc-blog-card .elementor-heading-title,
.elementor .epc-blog-card .elementor-widget-text-editor,
.elementor .epc-blog-card p{text-align:left!important}
.elementor .epc-blog-card .elementor-widget{width:100%!important;text-align:left!important}

/* Category chip — the site's mono eyebrow, not a pastel pill. */
.epc-blog-card .epc-tag .elementor-heading-title{
  font-family:var(--font-mono)!important;
  font-size:11px!important;
  font-weight:500!important;
  letter-spacing:.18em!important;
  text-transform:uppercase;
  padding:4px 9px!important;
  border-radius:0!important;
  border:0!important;
  background:#D5FF45!important;
  color:#11110F!important;
}

/* Title: Fraunces, left, tightened, with a fixed slot so the two- and
   three-line titles do not shove the body copy out of alignment. */
.epc-blog-card h3.elementor-heading-title{
  font-family:var(--font-heading)!important;
  font-size:clamp(19px,1.5vw,22px)!important;
  font-weight:400!important;
  line-height:1.22!important;
  letter-spacing:-.01em;
  color:var(--color-text)!important;
  margin:16px 0 0!important;
}
.epc-blog-card .elementor-widget-heading:not(.epc-tag){margin-bottom:0!important}

.epc-blog-card .elementor-widget-text-editor{margin-top:10px!important}
.epc-blog-card .elementor-widget-text-editor p{
  font-family:var(--font-body)!important;
  font-size:15px!important;
  line-height:1.6!important;
  color:var(--color-text-muted)!important;
  margin:0!important;
}

/* Push the action to the foot of the card — this is what actually lines the
   buttons up across a row, not equal title lengths. */
.epc-blog-card .elementor-widget-button{margin-top:auto!important;padding-top:20px!important}

/* Quieter hover: the 1.025 scale blurred the type mid-transition. */
.epc-blog-card:hover{transform:translateY(-4px)!important;box-shadow:var(--shadow-lg)}


/* ============================================================
   ORANGE ACTIONS — Read more / Check register
   ============================================================ */
:root{--color-accent-2-bright:#F26B33}

.epc-blog-card .elementor-button,
.epc-reg .elementor-button,
.elementor .epc-btn-orange .elementor-button{
  background-color:var(--color-accent-2-bright)!important;
  border-color:var(--color-accent-2-bright)!important;
  color:#FFFFFF!important;
  font-family:var(--font-body)!important;
  font-weight:600!important;
  border-radius:999px!important;
}
.epc-blog-card .elementor-button:hover,
.epc-reg .elementor-button:hover,
.elementor .epc-btn-orange .elementor-button:hover{
  background-color:#E85A2A!important;
  border-color:#E85A2A!important;
  color:#FFFFFF!important;
}
.epc-blog-card .elementor-button{font-size:14px!important;padding:10px 20px!important}


/* ============================================================
   BLOG HEADINGS — same system as the rest of the site
   ============================================================ */

/* Post titles and in-article headings: Fraunces, left, same scale ramp. */
.epc-article h1,.epc-article h2,.epc-article h3,
.single-post .elementor-widget-theme-post-title .elementor-heading-title,
.epc-post-head .elementor-heading-title{
  font-family:var(--font-heading)!important;
  font-weight:400!important;
  color:var(--color-text)!important;
  text-align:left!important;
  letter-spacing:-.015em;
}
.epc-article h1,.single-post .elementor-widget-theme-post-title .elementor-heading-title{
  font-size:clamp(32px,4.4vw,54px)!important;line-height:1.08!important;margin-bottom:14px!important;
}
.epc-article h2{font-size:clamp(25px,2.6vw,34px)!important;line-height:1.18!important;margin:44px 0 12px!important}
.epc-article h3{font-size:clamp(19px,1.7vw,23px)!important;line-height:1.28!important;margin:30px 0 8px!important}
.epc-article h2 em,.epc-article h1 em{font-style:italic;font-weight:400;color:var(--color-cobalt)}

.epc-article p,.epc-article li{
  font-family:var(--font-body)!important;
  font-size:17px!important;line-height:1.72!important;
  color:var(--color-text)!important;
}
.epc-article p{max-width:68ch}
/* ============================================================
   SINGLE POST — bring it onto the site's heading system
   ============================================================ */

/* The brand is wrapped in <a>, and on single posts the link colour was
   winning over the widget's own colour, turning "EPC" orange. */
.epc-header-bar .elementor-heading-title a,
.epc-header-bar .elementor-heading-title a:hover,
.epc-header-bar .elementor-heading-title a:visited{color:inherit!important;text-decoration:none}

/* Post eyebrow uses .epc-post-kick, so it missed the site's lime block. */
.epc-post-kick{
  display:inline-block!important;
  font-family:var(--font-mono)!important;
  font-size:12px!important;
  font-weight:500!important;
  letter-spacing:.22em!important;
  text-transform:uppercase;
  color:var(--color-cobalt)!important;
  width:auto!important;
  margin-bottom:14px!important;
}

/* Article column sat centred in the viewport while every other page runs
   flush left. Align the measure to the site's content edge. */
.epc-post{
  margin-left:0!important;
  margin-right:auto!important;
  max-width:min(760px, calc(100vw - 32px))!important;
  padding-left:16px;padding-right:16px;
}

.epc-post-head h1,.epc-post h1{
  font-family:var(--font-heading)!important;font-weight:400!important;
  font-size:clamp(32px,4.4vw,54px)!important;line-height:1.08!important;
  letter-spacing:-.015em;color:var(--color-text)!important;text-align:left!important;
}
.epc-post-body h2{
  font-family:var(--font-heading)!important;font-weight:400!important;
  font-size:clamp(25px,2.6vw,34px)!important;line-height:1.18!important;
  letter-spacing:-.015em;color:var(--color-text)!important;text-align:left!important;
  margin:44px 0 12px!important;
}
.epc-post-body h3{
  font-family:var(--font-heading)!important;font-weight:400!important;
  font-size:clamp(19px,1.7vw,23px)!important;line-height:1.28!important;
  color:var(--color-text)!important;text-align:left!important;margin:30px 0 8px!important;
}
.epc-post-body h1 em,.epc-post-body h2 em,.epc-post-head h1 em{
  font-style:italic;font-weight:400;color:var(--color-cobalt);
}
.epc-post-body p,.epc-post-body li{
  font-family:var(--font-body)!important;font-size:17px!important;
  line-height:1.72!important;color:var(--color-text)!important;
}
/* Register checker CTA — orange, matching the Read more buttons. */
#epcRegBtn{
  background:var(--color-accent-2-bright)!important;
  border-color:var(--color-accent-2-bright)!important;
  color:#FFFFFF!important;
}
#epcRegBtn:hover{background:#E85A2A!important;border-color:#E85A2A!important;color:#FFFFFF!important}
/* ============================================================
   NO HIGHLIGHT — eyebrows are plain mono caps again
   ============================================================ */
.epc-blog-card .epc-tag .elementor-heading-title{
  background:transparent!important;
  border:0!important;
  padding:0!important;
  border-radius:0!important;
  color:var(--color-cobalt)!important;
}

/* ============================================================
   COVERAGE CARDS — fix the label rule and the ring
   ============================================================ */

/* The label inherited .epc-tag's pill border while its padding and
   background had been stripped elsewhere, so the border rendered as a rule
   running the full width of the card, straight under the ring. */
.epc-cov-card .epc-cov-label .elementor-heading-title{
  border:0!important;
  background:transparent!important;
  padding:0!important;
  border-radius:0!important;
  font-family:var(--font-mono)!important;
  font-size:11px!important;
  font-weight:500!important;
  letter-spacing:.18em!important;
  /* keep clear of the ring, same allowance as the nation name */
  max-width:calc(100% - 68px)!important;
}

/* Every nation reads lime; the orange and salmon rings were palette
   leftovers and made three identical "full coverage" states look different. */
.epc-cov-grid>.epc-cov-card:nth-child(3) .epc-cov-label .elementor-heading-title,
.epc-cov-grid>.epc-cov-card:nth-child(4) .epc-cov-label .elementor-heading-title{color:#D5FF45}

/* Give the card a consistent internal rhythm so the four differing copy
   lengths do not produce four different vertical spacings. */
.epc-cov-card .epc-cov-nation{margin-bottom:6px!important}
.epc-cov-card .epc-cov-label{margin-bottom:16px!important}
/* ============================================================
   BLOG CARD FLIP
   ============================================================ */

/* The card becomes the 3D stage; its visual styling moves to the faces,
   otherwise the border and background would sit in front of the flip. */
.epc-blog-card{
  background:transparent!important;
  border:0!important;
  padding:0!important;
  border-radius:0!important;
  overflow:visible!important;
  perspective:1400px;
}
.epc-blog-card::after{display:none!important}
.epc-blog-card:hover{transform:none!important;box-shadow:none!important}

.bc-inner{
  position:relative;
  width:100%;
  height:100%;
  flex:1 1 auto;
  transform-style:preserve-3d;
  transition:transform .6s var(--ease);
}
/* A single half turn on one axis — no spin, no secondary rotation. */
.epc-blog-card:hover .bc-inner,
.epc-blog-card:focus-within .bc-inner{transform:rotateY(180deg)}

.bc-face{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  padding:26px 26px 24px;
  background:var(--color-surface);
  border:1px solid var(--color-divider);
  border-radius:14px;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}
/* The front stays in normal flow so the card keeps its natural height. */
.bc-front{position:relative;height:100%}
.bc-back{
  position:absolute;
  inset:0;
  transform:rotateY(180deg);
  justify-content:center;
}

.bc-back .bc-back-title .elementor-heading-title{
  font-size:clamp(17px,1.3vw,20px)!important;
  margin:0 0 4px!important;
}
/* margin-top:auto pins the button to the foot on the front; the back face
   centres its pair instead. */
.bc-back .elementor-widget-button{margin-top:16px!important;padding-top:0!important}

.epc-blog-card:hover .bc-front{box-shadow:var(--shadow-lg)}
.bc-back{box-shadow:var(--shadow-lg)}

/* Touch devices never fire hover, which would strand the only link on an
   unreachable face. Stack the two faces instead. */
@media (hover:none){
  .epc-blog-card{perspective:none}
  .bc-inner{transform:none!important;transition:none}
  .bc-front{height:auto;border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:0}
  .bc-back{
    position:relative;inset:auto;transform:none;
    backface-visibility:visible;-webkit-backface-visibility:visible;
    box-shadow:none;padding-top:0;
    border-top:0;border-top-left-radius:0;border-top-right-radius:0;
  }
  .bc-back .bc-back-title{display:none}
}

@media (prefers-reduced-motion:reduce){
  .bc-inner{transition:none}
}
/* Cards on other pagination pages. */
.epc-blog-card.is-pg-off{display:none!important}

/* ============================================================
   ONE CONTENT EDGE
   Header sat at 32px, page content at 16px, the footer column at
   28+10px and the blog paginator ran full bleed, so nothing lined
   up down the left. Everything now shares the 16px page gutter.
   ============================================================ */
.epc-header-bar{padding-left:16px!important;padding-right:16px!important}

/* footer: drop the boxed container's own inset and the column's 10px */
.elementor-33 > .epc-dark > .e-con-boxed{padding-left:16px!important;padding-right:16px!important}
.elementor-33 .e-con-boxed > .e-con-inner > .e-con{padding-left:0!important;padding-right:0!important}

/* paginator shares the grid's box rather than the full viewport */
.epc-pagination{padding-left:16px!important;padding-right:16px!important}

@media(max-width:600px){
  .epc-header-bar,
  .elementor-33 > .epc-dark > .e-con-boxed,
  .epc-pagination{padding-left:16px!important;padding-right:16px!important}
}

/* ------------------------------------------------------------
   Single post: the flush-left measure left the right half of the
   page empty. Centre the column again; the heading system stays.
   ------------------------------------------------------------ */
.epc-post{
  margin-left:auto!important;
  margin-right:auto!important;
  max-width:min(820px, calc(100vw - 32px))!important;
}
/* ==========================================================
   NETWORK NODE LABELS
   The codes were 8 user units of cream on every fill: faint on
   the blues and effectively invisible on the lime selection.
   ========================================================== */
.epc-network .net-node text{
  font-size:10px!important;
  font-weight:700!important;
  fill:#FFFFFF!important;
  letter-spacing:.04em;
}
/* Dark code on the lime selected node. */
.epc-network .net-node.is-sel text{fill:#11110F!important}

/* ==========================================================
   CARD FOOT BADGES
   The badge sat directly after the body copy, so a card whose
   text wrapped to three lines instead of four floated its badge
   higher than its neighbours. Pin it to the foot of the card.
   :last-child keeps this off the coverage labels, which sit
   mid-card rather than at the end.
   ========================================================== */
.epc-card > .epc-tag:last-child{margin-top:auto!important}

/* ==========================================================
   LEGAL + METHODOLOGY CARDS (ported from the source HTML)
   Paper ground defined by a hairline rule rather than a white
   fill, left aligned, icon-led eyebrow, section-mark bullets.
   ========================================================== */
.epc-und-card{border-width:1.5px!important;align-items:flex-start!important}

/* eyebrow: mono cobalt caps led by a terracotta glyph */
.elementor .epc-uc-kick .elementor-heading-title{
  display:flex;align-items:center;gap:10px;
  font-size:11px!important;letter-spacing:.16em!important;
  color:var(--color-cobalt)!important;text-align:left!important;
}
.elementor .epc-uc-kick .elementor-heading-title::before{
  content:'';flex:0 0 28px;width:28px;height:28px;
  background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 28' fill='none' stroke='%23B24A22' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3l9 4v6c0 5-3.5 9-9 12-5.5-3-9-7-9-12V7z'/%3E%3Cpath d='M10 14l3 3 5-6'/%3E%3C/svg%3E") center/28px 28px no-repeat;
}
.elementor .epc-und-method .epc-uc-kick .elementor-heading-title::before{
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 28' fill='none' stroke='%23B24A22' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5h18v18H5z'/%3E%3Cpath d='M9 5v18M5 11h18'/%3E%3Cpath d='M13 15h6M13 19h6'/%3E%3C/svg%3E");
}

/* card heading */
.elementor .epc-uc-h .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:600!important;
  font-size:clamp(22px,3vw,28px)!important;line-height:1.1!important;
  letter-spacing:-.01em;text-align:left!important;color:var(--color-text)!important;
}
.elementor .epc-und-card .elementor-widget-text-editor{text-align:left!important}
.epc-und-card .elementor-widget-text-editor p{
  font-size:15px;line-height:1.65;color:var(--color-text);margin:0;
}

/* list: hide the icon slot, mark each item with a section sign */
.epc-uc-list .elementor-icon-list-icon{display:none!important}
.epc-uc-list .elementor-icon-list-item{
  display:flex!important;align-items:flex-start!important;gap:12px;
  font-size:15px;line-height:1.5;
}
.epc-uc-list .elementor-icon-list-item::before{
  content:'§';flex:0 0 auto;font-family:var(--font-heading);
  font-weight:700;color:var(--color-cobalt);
}
.epc-und-method .epc-uc-list .elementor-icon-list-item::before{
  content:'·';color:#B24A22;font-size:24px;line-height:.6;
}
.epc-uc-list .elementor-icon-list-text b{font-weight:700;color:var(--color-text)}

/* footnote sits under a dashed rule, in mono */
.epc-und-card .elementor-widget-divider .elementor-divider-separator{
  border-top-style:dashed!important;border-top-color:rgba(17,17,15,.15)!important;
}
.epc-und-note .elementor-widget-container,
.epc-und-note p{
  font-family:var(--font-mono)!important;font-size:11px!important;
  line-height:1.6!important;color:rgba(17,17,15,.6)!important;
}
.epc-und-card > .elementor-widget-divider{margin-top:auto!important}

/* ==========================================================
   HEADER shares the page's content box
   The bar ran full width on a flat 16px gutter, so once the
   viewport passed the 1560px container cap the page content
   centred but the brand stayed pinned to the far left.
   Below the cap this still resolves to the same 16px gutter.
   ========================================================== */
.epc-header-bar{
  padding-left:max(16px, calc((100% - 1560px) / 2))!important;
  padding-right:max(16px, calc((100% - 1560px) / 2))!important;
}

/* ==========================================================
   FAQ - numbered editorial list, ported from the source HTML
   The number is a counter rather than text baked into the
   question, so it can carry its own mono/terracotta styling.
   ========================================================== */
.epc-faq .elementor-accordion{counter-reset:epcfaq}
.epc-faq .elementor-accordion-item{
  border:0!important;
  border-bottom:1px solid rgba(17,17,15,.12)!important;
  background:transparent!important;
}
.epc-faq .elementor-accordion-item:first-child{border-top:1.5px solid var(--color-text)!important}

.epc-faq .elementor-tab-title{
  counter-increment:epcfaq;
  display:flex!important;align-items:baseline!important;gap:20px!important;
  padding:26px 0!important;background:transparent!important;
  transition:padding-left .2s var(--ease);
}
.epc-faq .elementor-tab-title::before{
  content:counter(epcfaq,decimal-leading-zero);
  font-family:var(--font-mono);font-size:13px;font-weight:700;
  color:#B24A22;flex:0 0 32px;width:32px;
}
.epc-faq .elementor-tab-title:hover{padding-left:8px!important}
.epc-faq .elementor-accordion-title,
.epc-faq .elementor-tab-title a{
  font-family:var(--font-heading)!important;font-weight:500!important;
  font-size:clamp(19px,2.6vw,26px)!important;line-height:1.2!important;
  letter-spacing:-.01em;color:var(--color-text)!important;flex:1 1 auto;
}

/* plus sign in cobalt, turning to a cross when open */
.epc-faq .elementor-accordion-icon{
  width:auto!important;height:auto!important;background:transparent!important;
  border-radius:0!important;color:var(--color-cobalt)!important;
  font-family:var(--font-mono);font-size:22px;line-height:1;
  transition:transform .3s var(--ease);flex:0 0 auto;
}
.epc-faq .elementor-accordion-icon svg,
.epc-faq .elementor-accordion-icon i{display:none!important}
.epc-faq .elementor-accordion-icon::after{content:'+'}
.epc-faq .elementor-tab-title.elementor-active .elementor-accordion-icon{transform:rotate(45deg)}

.epc-faq .elementor-tab-content{
  padding:0 0 28px 52px!important;max-width:64ch;
  font-size:16px!important;line-height:1.7!important;
  color:var(--color-text)!important;border:0!important;
}
.epc-faq .elementor-tab-content b{font-weight:600;color:var(--color-text)}
@media(max-width:600px){
  .epc-faq .elementor-tab-content{padding-left:0!important}
  .epc-faq .elementor-tab-title{gap:12px!important}
}

/* ==========================================================
   Reveal: settle to the resting position, always.
   .epc-rv-left/-right set a start offset at the same
   specificity as .epc-rv.is-rv but later in the file, so the
   tie went to the offset and revealed elements never came
   back to place. The hero sat 48px left of every other
   section because of it.
   ========================================================== */
html.epc-js-rv .epc-rv.is-rv{transform:none!important}

/* Settled reveal must outrank the per-direction start offset. */
html.epc-js-rv .epc-rv-left.is-rv,
html.epc-js-rv .epc-rv-right.is-rv,
html.epc-js-rv .epc-rv-up.is-rv,
html.epc-js-rv .epc-rv-down.is-rv,
html.epc-js-rv .epc-rv-zoom.is-rv{transform:none!important}

/* Hero column carried a 10px inset that pushed it off the shared edge. */
.epc-hero-left{padding-left:0!important;padding-right:0!important}

/* FAQ block sat in a 940px boxed inner, centred, so it floated off
   the shared content edge. The source HTML runs it full width. */
.elementor-element-27fba54 > .e-con-inner{max-width:100%!important}

/* Elementor renders the accordion icon before the title; the HTML
   puts the + at the far right of the row. */
.epc-faq .elementor-accordion-icon{order:3;margin-left:auto!important}
.epc-faq .elementor-accordion-title{order:2}
.epc-faq .elementor-tab-title::before{order:1}

/* On narrow screens a sideways reveal starts the element outside the
   viewport, which briefly gives the page a horizontal scrollbar.
   Reveal vertically there instead. */
@media(max-width:1024px){
  html.epc-js-rv .epc-rv-left,
  html.epc-js-rv .epc-rv-right{transform:translate3d(0,18px,0)}
}

/* ==========================================================
   HERO - type, buttons and index card ported from the HTML
   cover (the v2 override block). Styling only; the live
   pricing copy stays as it is.
   ========================================================== */
.elementor .epc-cover-h1 .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:430!important;
  font-size:clamp(58px,8.1vw,126px)!important;line-height:.84!important;
  letter-spacing:-.045em!important;max-width:8.8ch;
}
/* the trailing clause runs terracotta here, not cobalt */
.elementor .epc-cover-h1 .elementor-heading-title em{
  font-style:italic;font-weight:420;color:#E85A2A!important;
}

/* marker-pen highlight, drawn as a gradient across the lower 40% */
.elementor .epc-cover-lede{max-width:46ch!important;margin-top:32px!important;
  font-size:clamp(16px,1.7vw,20px)!important;line-height:1.5!important;}
.epc-cover-lede b{
  background:linear-gradient(transparent 60%, #D5FF45 60%);
  padding:0 2px;font-weight:600;
}

/* square-cornered buttons: solid cobalt, and a hairline ghost */
.epc-btn-cover-primary .elementor-button{
  background-color:#2339A7!important;color:#F3F0E8!important;
  border-radius:2px!important;padding:16px 26px!important;
  font-weight:600!important;font-size:16px!important;border:0!important;
}
.epc-btn-cover-primary .elementor-button:hover{background-color:#11110F!important}
.epc-btn-cover-ghost .elementor-button{
  background-color:transparent!important;color:#11110F!important;
  border:1.5px solid rgba(17,17,15,.4)!important;border-radius:2px!important;
  padding:15px 24px!important;font-weight:600!important;font-size:16px!important;
}
.epc-btn-cover-ghost .elementor-button:hover{background-color:#11110F!important;color:#F3F0E8!important}

/* index card */
.epc-hero-card{border-radius:30px!important;padding:40px 38px!important;
  box-shadow:0 42px 90px -55px rgba(0,0,0,.65)!important;}
.elementor .epc-v2-kick .elementor-heading-title{
  font-size:10px!important;letter-spacing:.17em!important;color:#D5FF45!important;
}
.elementor .epc-v2-main .elementor-heading-title{
  font-family:var(--font-heading)!important;font-weight:420!important;
  font-size:clamp(54px,5.8vw,82px)!important;line-height:.92!important;
  letter-spacing:-.04em!important;color:#F3F0E8!important;
}
/* the currency mark sits raised and terracotta, as in the HTML */
.elementor .epc-v2-main .elementor-heading-title sup,
.elementor .epc-v2-main .elementor-heading-title .cur{
  font-size:.4em;color:#E85A2A;vertical-align:.7em;
}
.elementor .epc-v2-sub p{font-size:14px!important;color:rgba(243,240,232,.6)!important;
  margin:12px 0 28px!important;max-width:30ch;}
.epc-v2-rows{border-top:1px solid rgba(243,240,232,.15);
  border-bottom:1px solid rgba(243,240,232,.15);margin-bottom:28px!important;}
.epc-v2-rows .epc-hero-row{border-bottom:1px dotted rgba(243,240,232,.12)!important;
  padding:13px 0!important;font-family:var(--font-mono)!important;font-size:11px!important;}
.epc-v2-rows .epc-hero-row:last-child{border-bottom:0!important}
.epc-v2-btn .elementor-button{width:100%;justify-content:center;
  background-color:#D5FF45!important;color:#11110F!important;border-radius:8px!important;}
.epc-v2-btn .elementor-button:hover{background-color:#F3F0E8!important;color:#11110F!important}
.elementor .epc-v2-note p{font-family:var(--font-mono)!important;font-size:9px!important;
  letter-spacing:.07em!important;color:rgba(243,240,232,.4)!important;
  margin-top:14px!important;text-align:center!important;}

/* FAQ block: match the site container instead of running edge to edge */
.elementor-element-27fba54 > .e-con-inner{max-width:min(100%,1560px)!important}

/* Header: brand left, nav and CTA to the right, as in the reference */
.epc-header-bar::after{display:none!important}
.epc-header-bar > .epc-header-right{margin-left:auto!important}

/* .btn in the HTML is sans, not the display serif. */
.epc-btn-cover-primary .elementor-button,
.epc-btn-cover-ghost .elementor-button,
.epc-v2-btn .elementor-button{font-family:var(--font-body)!important;font-weight:600!important}
.epc-v2-btn .elementor-button{font-size:15px!important}

/* ==========================================================
   ESTIMATOR / COST PASSPORT on the dark ground
   The question deks and option descriptions are .epc-lede,
   which the heading system pins to near-black. That is
   invisible on the #1B1B18 card: 26 strings were unreadable.
   ========================================================== */
#epc-estimator .epc-lede,
#epc-estimator .epc-lede p,
#epc-passport .epc-lede,
#epc-passport .epc-lede p{color:rgba(243,240,232,.62)!important}

/* option tiles: title stays cream, description a step back */
#epc-estimator .epc-tile .elementor-heading-title{color:#F3F0E8!important}
#epc-estimator .epc-tile .epc-lede p{color:rgba(243,240,232,.55)!important}
#epc-estimator .epc-tile.is-on,
#epc-estimator .epc-tile[aria-pressed='true']{border-color:#D5FF45!important}

/* running total and confidence line */
#epc-running .elementor-heading-title{color:rgba(243,240,232,.75)!important}
#epc-estimator .epc-conf .elementor-heading-title,
#epc-estimator .epc-confidence{color:rgba(243,240,232,.55)!important}

/* ---- Previous: orange ---- */
#epc-prev-btn.epc-nav-btn,
.epc-nav-prev .epc-nav-btn{
  background:#F26B33!important;color:#FFFFFF!important;
  border:1px solid #F26B33!important;
  font-family:var(--font-body)!important;font-weight:600!important;
}
#epc-prev-btn.epc-nav-btn:hover:not(:disabled){background:#E85A2A!important;border-color:#E85A2A!important}
#epc-prev-btn.epc-nav-btn:disabled{background:rgba(242,107,51,.30)!important;
  border-color:rgba(242,107,51,.30)!important;color:rgba(255,255,255,.6)!important;opacity:1!important}

/* ---- Next: blue ---- */
#epc-next .elementor-button{
  background-color:#2339A7!important;color:#F3F0E8!important;
  border-color:#2339A7!important;
  font-family:var(--font-body)!important;font-weight:600!important;
}
#epc-next .elementor-button:hover{background-color:#11110F!important;color:#F3F0E8!important}

/* ---- close control: palette, not magenta ---- */
.epc-drawer-close{
  background:transparent!important;color:#11110F!important;
  border:1.5px solid #11110F!important;border-radius:50%!important;
  box-shadow:none!important;
}
.epc-drawer-close:hover{background:#11110F!important;color:#F3F0E8!important}
.epc-drawer-close:focus,
.epc-drawer-close:focus-visible{
  outline:2px solid var(--color-cobalt)!important;outline-offset:2px;
  background:transparent!important;color:#11110F!important;
}

/* FAQ answers: larger, and running the full width of the row so they
   use the space on the right instead of stacking into a narrow column.
   The 64ch cap was folding a 380 character answer into seven lines. */
.epc-faq .elementor-tab-content{
  max-width:none!important;
  font-size:18px!important;
  line-height:1.6!important;
  padding:0 40px 30px 52px!important;
}
@media(max-width:900px){
  .epc-faq .elementor-tab-content{font-size:16px!important;padding:0 0 26px 52px!important}
}
@media(max-width:600px){
  .epc-faq .elementor-tab-content{padding-left:0!important}
}

/* Confidence readout was olive on the carbon card: legible but dim. */
.elementor-element-69e3049 .elementor-heading-title{color:rgba(243,240,232,.55)!important}
