/* =====================================================================
   AustFirePro - global design system
   Loaded from firefront-child. Tokens + reusable .afp-* section patterns.
   See DESIGN.md. Layout/styling only - never encodes copy.
   ===================================================================== */

:root{
  /* Brand */
  --afp-red:#CE242D;
  --afp-red-dark:#A51C23;
  --afp-red-tint:#FBEAEB;
  --afp-yellow:#FCD70D;
  --afp-yellow-dark:#E0BC00;

  /* Neutrals */
  --afp-ink:#101010;
  --afp-ink-soft:#2B2B2E;
  --afp-body:#3F3F46;
  --afp-muted:#6B6B73;
  --afp-line:#E2E2E6;
  --afp-surface:#F4F4F5;
  --afp-surface-2:#FAFAFB;
  --afp-white:#FFFFFF;
  --afp-on-dark:#E8E8EA;

  /* Type */
  --afp-font-head:'Space Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;
  --afp-font-body:'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --afp-h1:clamp(2.375rem,1.55rem + 3.1vw,3.875rem);
  --afp-h2:clamp(1.875rem,1.35rem + 1.9vw,2.75rem);
  --afp-h3:clamp(1.3125rem,1.15rem + .7vw,1.625rem);
  --afp-h4:1.1875rem;
  --afp-lead:1.0625rem;
  --afp-small:.875rem;

  /* Space */
  --afp-container:1200px;
  --afp-container-wide:1320px;
  --afp-gutter:clamp(1rem,4vw,2rem);
  --afp-band-y:clamp(3.5rem,2rem + 5vw,6rem);
  --afp-band-y-lg:clamp(4.5rem,2.5rem + 6vw,7.5rem);

  --afp-r-sm:4px;
  --afp-r-md:8px;
  --afp-sh-1:0 1px 2px rgba(16,16,16,.05),0 2px 8px rgba(16,16,16,.06);
  --afp-sh-2:0 4px 10px rgba(16,16,16,.07),0 18px 40px rgba(16,16,16,.10);
  --afp-ease:cubic-bezier(.22,.61,.36,1);
  --afp-dur:220ms;

  /* Inline icon masks */
  --afp-arrow:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='M5%2012h13M12%205l7%207-7%207'%20fill='none'%20stroke='%23000'%20stroke-width='2.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E");
  --afp-phone:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='M6.6%2010.8a15.1%2015.1%200%200%200%206.6%206.6l2.2-2.2a1%201%200%200%201%201-.24%2011.4%2011.4%200%200%200%203.6.57%201%201%200%200%201%201%201V20a1%201%200%200%201-1%201A17%2017%200%200%201%203%204a1%201%200%200%201%201-1h3.5a1%201%200%200%201%201%201%2011.4%2011.4%200%200%200%20.57%203.6%201%201%200%200%201-.25%201z'%20fill='%23000'/%3E%3C/svg%3E");
  --afp-minus:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='M5%2012h14'%20stroke='%23000'%20stroke-width='2.5'%20stroke-linecap='round'/%3E%3C/svg%3E");
}

/* ---------------------------------------------------------------
   1. Base refinements
   --------------------------------------------------------------- */
body{ color:var(--afp-body); font-family:var(--afp-font-body); }
h1,h2,h3,h4,h5,h6{ font-family:var(--afp-font-head); color:var(--afp-ink); letter-spacing:-.02em; }
a{ transition:color var(--afp-dur) var(--afp-ease); }

:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--afp-yellow);
  outline-offset:2px;
  border-radius:2px;
}

/* Thrive colours some paragraphs deliberately - only lift the ones that inherit. */
.tve-content-area p:not([style*="color"]){ color:var(--afp-body); }

/* ---------------------------------------------------------------
   2. Buttons
   --------------------------------------------------------------- */
.afp-btn{
  display:inline-flex; align-items:center; gap:.625rem;
  min-height:48px; padding:.875rem 1.75rem;
  font-family:var(--afp-font-body); font-size:.9375rem; font-weight:700;
  line-height:1.2; text-decoration:none; border:1px solid transparent;
  border-radius:var(--afp-r-sm); cursor:pointer;
  transition:background-color var(--afp-dur) var(--afp-ease),
             color var(--afp-dur) var(--afp-ease),
             border-color var(--afp-dur) var(--afp-ease);
}
.afp-btn::after{
  content:""; width:.75em; height:.75em; flex:0 0 auto;
  background:currentColor;
  -webkit-mask:var(--afp-arrow) center/contain no-repeat;
  mask:var(--afp-arrow) center/contain no-repeat;
  transition:transform var(--afp-dur) var(--afp-ease);
}
.afp-btn:hover::after{ transform:translateX(3px); }
.afp-btn--noarrow::after{ display:none; }

.afp-btn--red{ background:var(--afp-red); color:#fff; }
.afp-btn--red:hover,.afp-btn--red:focus{ background:var(--afp-red-dark); color:#fff; }

.afp-btn--ink{ background:var(--afp-ink); color:#fff; }
.afp-btn--ink:hover,.afp-btn--ink:focus{ background:var(--afp-ink-soft); color:#fff; }

.afp-btn--ghost{ background:transparent; color:#fff; border-color:rgba(255,255,255,.55); }
.afp-btn--ghost:hover,.afp-btn--ghost:focus{ background:#fff; color:var(--afp-ink); border-color:#fff; }

.afp-btn--link{ background:none; padding:0; min-height:0; color:var(--afp-red); border:0; border-radius:0; }
.afp-btn--link:hover{ color:var(--afp-red-dark); text-decoration:underline; text-underline-offset:4px; }

.afp-btn--phone::after{ display:none; }
.afp-btn--phone::before{
  content:""; width:1.05em; height:1.05em; flex:0 0 auto; background:currentColor;
  -webkit-mask:var(--afp-phone) center/contain no-repeat;
  mask:var(--afp-phone) center/contain no-repeat;
}

.afp-btns{ display:flex; flex-wrap:wrap; gap:.875rem; align-items:center; }

/* ---------------------------------------------------------------
   3. Bands and section furniture
   --------------------------------------------------------------- */
.afp-band{ padding-block:var(--afp-band-y); position:relative; }
.afp-band--lg{ padding-block:var(--afp-band-y-lg); }
.afp-band--white{ background:var(--afp-white); }
.afp-band--surface{ background:var(--afp-surface); }
.afp-band--ink{ background:var(--afp-ink); color:var(--afp-on-dark); }
.afp-band--ink h1,.afp-band--ink h2,.afp-band--ink h3,
.afp-band--ink h4,.afp-band--ink h5{ color:#fff; }
.afp-band--ink p,.afp-band--ink li{ color:var(--afp-on-dark); }

.afp-wrap{ width:min(100% - (var(--afp-gutter) * 2),var(--afp-container)); margin-inline:auto; }
.afp-wrap--wide{ width:min(100% - (var(--afp-gutter) * 2),var(--afp-container-wide)); }

.afp-rule{ display:block; width:52px; height:6px; background:var(--afp-yellow); border-radius:1px; margin:0 0 1rem; }

.afp-eyebrow{
  display:block; margin:0 0 .5rem;
  font-family:var(--afp-font-body); font-size:var(--afp-small);
  font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--afp-red);
}
.afp-band--ink .afp-eyebrow{ color:var(--afp-yellow); }

.afp-sechead{ margin-bottom:clamp(1.75rem,1rem + 2vw,2.75rem); max-width:62ch; }
.afp-sechead h2{ font-size:var(--afp-h2); line-height:1.12; margin:0; }
.afp-sechead .afp-lead{ margin:1rem 0 0; font-size:var(--afp-lead); line-height:1.75; max-width:58ch; }
.afp-sechead--center{ margin-inline:auto; text-align:center; }
.afp-sechead--center .afp-rule{ margin-inline:auto; }

.afp-prose{ max-width:68ch; }
.afp-prose p{ margin:0 0 1rem; line-height:1.7; }
.afp-prose p:last-child{ margin-bottom:0; }

.afp-list{ list-style:none; margin:0; padding:0; display:grid; gap:.75rem; }
.afp-list li{ position:relative; padding-left:1.75rem; line-height:1.7; }
.afp-list li::before{
  content:""; position:absolute; left:0; top:.6em;
  width:9px; height:9px; border-radius:2px; background:var(--afp-red);
}
.afp-band--ink .afp-list li::before{ background:var(--afp-yellow); }

/* ---------------------------------------------------------------
   4. Hero
   --------------------------------------------------------------- */
.afp-hero{
  position:relative; isolation:isolate;
  padding-block:clamp(3.5rem,2rem + 7vw,7rem);
  background:var(--afp-ink) center/cover no-repeat;
  color:#fff;
}
.afp-hero::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(90deg,rgba(16,16,16,.90) 0%,rgba(16,16,16,.72) 42%,rgba(16,16,16,.25) 100%);
}
.afp-hero__grid{ display:grid; gap:clamp(2rem,4vw,3.5rem); align-items:center; }
.afp-hero h1{ font-size:var(--afp-h1); line-height:1.05; color:#fff; margin:0; max-width:14ch; }
.afp-hero__sub{ margin:1rem 0 0; font-size:clamp(1rem,.9rem + .4vw,1.1875rem); color:rgba(255,255,255,.88); }
.afp-hero .afp-btns{ margin-top:2rem; }

.afp-hero__badge{
  display:inline-block; text-align:center;
  background:var(--afp-red); color:#fff;
  padding:1rem 1.25rem; min-width:118px; border-radius:var(--afp-r-sm);
}
.afp-hero__badge b{ display:block; font-family:var(--afp-font-head); font-size:2rem; line-height:1; }
.afp-hero__badge span{ display:block; font-size:var(--afp-small); font-weight:600; margin-top:.25rem; }
.afp-hero__badge::after{ content:""; display:block; width:36px; height:4px; margin:.625rem auto 0; background:var(--afp-yellow); }

.afp-card{
  background:#fff; color:var(--afp-body);
  border-radius:var(--afp-r-sm); box-shadow:var(--afp-sh-2);
  padding:clamp(1.25rem,1rem + 1vw,1.75rem);
}
.afp-card h2,.afp-card h3{ font-size:var(--afp-h3); margin:0 0 .25rem; color:var(--afp-ink); }
.afp-card__rule{ display:block; width:44px; height:5px; background:var(--afp-yellow); margin-bottom:.875rem; }
.afp-card iframe{ display:block; width:100%; border:0; }

@media (min-width:1025px){
  .afp-hero__grid{ grid-template-columns:minmax(0,1fr) 400px; }
}

/* ---------------------------------------------------------------
   5. Trust bar
   --------------------------------------------------------------- */
.afp-trustbar{ background:var(--afp-white); border-bottom:1px solid var(--afp-line); }
.afp-trustbar__grid{ display:grid; gap:0; grid-template-columns:1fr; }
.afp-trustbar__item{
  display:flex; align-items:center; justify-content:center; gap:.875rem;
  padding:1.125rem 1.5rem; text-align:left;
  font-size:.9375rem; font-weight:600; color:var(--afp-ink);
}
.afp-trustbar__item + .afp-trustbar__item{ border-top:1px solid var(--afp-line); }
.afp-trustbar__item svg{ width:28px; height:28px; flex:0 0 auto; color:var(--afp-red); }

@media (min-width:769px){
  .afp-trustbar__grid{ grid-template-columns:repeat(3,1fr); }
  .afp-trustbar__item + .afp-trustbar__item{ border-top:0; border-left:1px solid var(--afp-line); }
}

/* ---------------------------------------------------------------
   6. Split (image + text), with optional overlay CTA card
   --------------------------------------------------------------- */
.afp-split{ display:grid; gap:clamp(1.75rem,3vw,3.25rem); align-items:center; }
.afp-split__media{ position:relative; }
.afp-split__media img{ display:block; width:100%; height:100%; object-fit:cover; border-radius:var(--afp-r-sm); }

.afp-imgcta{
  position:relative; margin-top:-4.5rem; width:fit-content; max-width:92%;
  display:flex; align-items:center; gap:.875rem;
  background:var(--afp-red); color:#fff;
  padding:1rem 1.5rem 1.375rem; border-radius:var(--afp-r-sm);
  text-decoration:none; box-shadow:var(--afp-sh-2);
}
.afp-imgcta:hover{ background:var(--afp-red-dark); color:#fff; }
.afp-imgcta svg{ width:30px; height:30px; flex:0 0 auto; }
.afp-imgcta small{ display:block; font-size:var(--afp-small); opacity:.92; }
.afp-imgcta b{ display:block; font-family:var(--afp-font-head); font-size:1.25rem; line-height:1.2; }
.afp-imgcta::after{ content:""; position:absolute; left:1.5rem; bottom:.625rem; width:34px; height:4px; background:var(--afp-yellow); }

@media (min-width:769px){
  .afp-split{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .afp-split--reverse .afp-split__media{ order:2; }
}

/* ---------------------------------------------------------------
   7. Numbered feature rows
   --------------------------------------------------------------- */
.afp-numrow{
  display:grid; gap:clamp(1.25rem,3vw,2.5rem); align-items:center;
  padding-block:clamp(1.75rem,3vw,2.75rem);
}
.afp-numrow + .afp-numrow{ border-top:1px solid var(--afp-line); }
.afp-numrow__body{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:1.25rem; }
.afp-numrow__n{
  font-family:var(--afp-font-head); font-weight:700; font-size:2rem; line-height:1;
  color:var(--afp-red); padding-right:1.25rem; border-right:2px solid var(--afp-line);
}
.afp-numrow h3{ font-size:var(--afp-h3); margin:0 0 .625rem; }
.afp-numrow p{ margin:0 0 .75rem; line-height:1.7; }
.afp-numrow .afp-list{ margin-block:.5rem .25rem; }
.afp-numrow .afp-btn{ margin-top:1rem; }
.afp-numrow__media img{ display:block; width:100%; aspect-ratio:16/10; object-fit:cover; border-radius:var(--afp-r-sm); }

@media (min-width:769px){
  .afp-numrow{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .afp-numrow--reverse .afp-numrow__media{ order:-1; }
  .afp-numrow__n{ font-size:2.75rem; }
}

/* ---------------------------------------------------------------
   8. Accordion
   --------------------------------------------------------------- */
.afp-accordion{ border-top:1px solid var(--afp-line); }
.afp-accordion__item{ border-bottom:1px solid var(--afp-line); }
.afp-accordion__head{
  display:flex; align-items:flex-start; justify-content:space-between; gap:1rem;
  width:100%; padding:1.125rem 0; background:none; border:0; text-align:left;
  font-family:var(--afp-font-head); font-size:1.0625rem; font-weight:700;
  color:var(--afp-red); cursor:pointer; list-style:none;
}
.afp-accordion__head::-webkit-details-marker{ display:none; }
.afp-accordion__head::after{
  content:""; flex:0 0 auto; width:16px; height:16px; margin-top:.35em;
  background:currentColor;
  -webkit-mask:var(--afp-minus) center/contain no-repeat;
  mask:var(--afp-minus) center/contain no-repeat;
  transition:transform var(--afp-dur) var(--afp-ease);
}
.afp-accordion__item[open] > .afp-accordion__head::after{ transform:rotate(180deg); }
.afp-accordion__item[open] > .afp-accordion__head{ padding-bottom:.5rem; }
.afp-accordion__body{ padding:0 0 1.125rem; max-width:72ch; line-height:1.7; }
.afp-accordion__body p{ margin:0; }

/* ---------------------------------------------------------------
   9. Guarantee panel
   --------------------------------------------------------------- */
.afp-guarantee{ position:relative; background:var(--afp-ink); color:#fff; overflow:hidden; }
.afp-guarantee__bg{ position:absolute; inset:0; object-fit:cover; width:100%; height:100%; opacity:.38; }
.afp-guarantee__grid{ position:relative; display:grid; gap:clamp(2rem,4vw,3rem); align-items:center; padding-block:var(--afp-band-y-lg); }
.afp-guarantee__stat b{
  display:block; font-family:var(--afp-font-head); font-weight:700;
  font-size:clamp(4rem,2rem + 12vw,8rem); line-height:.88;
  color:var(--afp-yellow); letter-spacing:-.04em;
}
.afp-guarantee__stat span{
  display:block; font-family:var(--afp-font-head); font-weight:700;
  font-size:clamp(1.25rem,.8rem + 2vw,2rem); line-height:1.15;
  color:#fff; text-transform:uppercase; margin-top:.25rem;
}
.afp-guarantee__stat::after{ content:""; display:block; width:120px; height:7px; background:var(--afp-yellow); margin-top:1.25rem; }
.afp-guarantee__card{ background:#fff; color:var(--afp-body); padding:clamp(1.75rem,1rem + 3vw,3rem); }
.afp-guarantee__card h2{ font-size:var(--afp-h2); line-height:1.12; margin:0 0 1rem; }
.afp-guarantee__shield{ width:52px; height:52px; color:var(--afp-red); margin-bottom:1rem; }

@media (min-width:769px){
  .afp-guarantee__grid{ grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); }
}

/* ---------------------------------------------------------------
   10. Steps (delivery options)
   --------------------------------------------------------------- */
.afp-steps{ display:grid; gap:clamp(1.5rem,3vw,2.25rem); }
.afp-step__media{ position:relative; }
.afp-step__media img{ display:block; width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--afp-r-sm); }
.afp-step__icon{
  position:absolute; left:1.25rem; bottom:-28px;
  width:56px; height:56px; display:grid; place-items:center;
  background:#fff; border:2px solid var(--afp-red); border-radius:50%;
  color:var(--afp-red); box-shadow:var(--afp-sh-1);
}
.afp-step__icon svg{ width:26px; height:26px; }
.afp-step h4{ font-size:1.125rem; margin:2.75rem 0 .375rem; }
.afp-step p{ margin:0; line-height:1.65; }

@media (min-width:769px){
  .afp-steps{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}

/* ---------------------------------------------------------------
   11. Service map
   --------------------------------------------------------------- */
.afp-map{ display:grid; gap:clamp(1.75rem,3vw,3rem); align-items:center; }
.afp-map__fig svg{ display:block; width:100%; height:auto; }
.afp-map__panel{ background:#fff; padding:clamp(1.5rem,1rem + 2vw,2.5rem); box-shadow:var(--afp-sh-1); }
.afp-callband{
  display:flex; align-items:center; justify-content:center; gap:.875rem;
  margin-top:1.75rem; padding:1.125rem 1.5rem;
  background:var(--afp-red); color:#fff; border-radius:var(--afp-r-sm);
  font-weight:700; font-size:1.0625rem; text-decoration:none; text-align:center;
}
.afp-callband:hover{ background:var(--afp-red-dark); color:#fff; }
.afp-callband svg{ width:24px; height:24px; flex:0 0 auto; }

@media (min-width:769px){ .afp-map{ grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); } }

/* ---------------------------------------------------------------
   12. Why-choose icon list
   --------------------------------------------------------------- */
.afp-why{ display:grid; gap:0; align-items:stretch; }
.afp-why__media img{ display:block; width:100%; height:100%; min-height:320px; object-fit:cover; }
.afp-why__body{ background:#fff; padding:clamp(1.75rem,1rem + 3vw,3.25rem); }
.afp-iconlist{ list-style:none; margin:0 0 1.75rem; padding:0; }
.afp-iconlist li{
  display:grid; grid-template-columns:44px minmax(0,1fr); gap:1rem;
  padding:1rem 0; border-bottom:1px solid var(--afp-line);
}
.afp-iconlist li:last-child{ border-bottom:0; }
.afp-iconlist svg{ width:34px; height:34px; color:var(--afp-red); }
.afp-iconlist b{ display:block; font-family:var(--afp-font-head); font-size:1.0625rem; color:var(--afp-ink); }
.afp-iconlist span{ display:block; margin-top:.2rem; line-height:1.6; }

@media (min-width:769px){ .afp-why{ grid-template-columns:minmax(0,1fr) minmax(0,1.25fr); } }

/* ---------------------------------------------------------------
   13. Reviews
   --------------------------------------------------------------- */
.afp-reviews{ background:var(--afp-surface); }

/* ---------------------------------------------------------------
   14. Closing CTA
   --------------------------------------------------------------- */
.afp-cta{ position:relative; isolation:isolate; background:var(--afp-ink) center/cover no-repeat; color:#fff; }
.afp-cta::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(90deg,rgba(16,16,16,.92) 0%,rgba(16,16,16,.74) 45%,rgba(16,16,16,.30) 100%);
}
.afp-cta__grid{ display:grid; gap:clamp(2rem,4vw,3.25rem); align-items:center; padding-block:var(--afp-band-y-lg); }
.afp-cta h2{ font-size:var(--afp-h2); line-height:1.12; color:#fff; margin:0 0 1rem; max-width:18ch; }
.afp-cta p{ color:var(--afp-on-dark); line-height:1.75; max-width:54ch; }

@media (min-width:1025px){ .afp-cta__grid{ grid-template-columns:minmax(0,1fr) 400px; } }

/* ---------------------------------------------------------------
   15. Course meta chips
   --------------------------------------------------------------- */
.afp-coursemeta{ display:grid; gap:1px; background:var(--afp-line); border:1px solid var(--afp-line); }
.afp-coursemeta div{ background:#fff; padding:1rem 1.25rem; }
.afp-coursemeta small{ display:block; font-size:.75rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--afp-muted); }
.afp-coursemeta b{ display:block; font-family:var(--afp-font-head); font-size:1.0625rem; color:var(--afp-ink); margin-top:.25rem; }
@media (min-width:600px){ .afp-coursemeta{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:900px){ .afp-coursemeta{ grid-template-columns:repeat(4,1fr); } }

/* ---------------------------------------------------------------
   16. Site header (Firefront chrome)
   --------------------------------------------------------------- */
.header-topbar{ background:var(--afp-ink); font-size:.8125rem; letter-spacing:.01em; }
.header-topbar a{ color:rgba(255,255,255,.82); text-decoration:none; }
.header-topbar a:hover{ color:var(--afp-yellow); }

.header-navbar{ background:#fff; }
.sticky-head .header-navbar{ box-shadow:var(--afp-sh-1); }

.primary-menu > li > a{
  font-family:var(--afp-font-body);
  font-size:clamp(.75rem,.62rem + .22vw,.875rem);
  font-weight:700; letter-spacing:.02em; text-transform:uppercase;
  color:var(--afp-ink);
}
.primary-menu > li > a:hover,
.primary-menu > li.current-menu-item > a,
.primary-menu > li.current-menu-ancestor > a{ color:var(--afp-red); }
.primary-menu .sub-menu{ border-top:3px solid var(--afp-red); box-shadow:var(--afp-sh-2); }
.primary-menu .sub-menu a{ font-size:.875rem; }

.primary-menu > li.afp-nav-cta > a,
.header-navbar .afp-nav-cta > a{
  background:var(--afp-red); color:#fff; padding:.75rem 1.375rem; border-radius:var(--afp-r-sm);
}
.primary-menu > li.afp-nav-cta > a:hover{ background:var(--afp-red-dark); color:#fff; }

/* Page banner. On Thrive pages the banner title is demoted from <h1> to a
   <div> (see inc/afp-page-title.php), so it needs its own type styling. */
.firefront-page-header{
  position:relative; isolation:isolate;
  min-height:clamp(200px,14vw,300px);
  display:flex; align-items:center;
  background-color:var(--afp-ink);
}
.firefront-page-header::before{
  content:""; position:absolute; inset:0; z-index:0;
  background:linear-gradient(90deg,rgba(16,16,16,.90) 0%,rgba(16,16,16,.68) 48%,rgba(16,16,16,.40) 100%);
}
.firefront-page-header > .container,
.firefront-page-header > .container-fluid{ position:relative; z-index:1; }
.firefront-page-header .page-title-wrap{ position:relative; z-index:1; display:block; }
.firefront-page-header .page-title-wrap::before{
  content:""; display:block; width:52px; height:6px; flex:none;
  background:var(--afp-yellow); margin:0 0 1.125rem;
}
.firefront-page-header .page-title,
.firefront-page-header .entry-title{
  font-family:var(--afp-font-head); font-weight:700;
  font-size:var(--afp-h2); line-height:1.1; letter-spacing:-.02em;
  color:#fff; margin:0 0 .625rem;
}
.firefront-page-header .breadcrumb{
  margin:0; padding:0; font-size:.875rem; color:rgba(255,255,255,.72);
}
.firefront-page-header .breadcrumb a{ color:rgba(255,255,255,.92); }
.firefront-page-header .breadcrumb a:hover{ color:var(--afp-yellow); }

/* ---------------------------------------------------------------
   17. Site footer (Firefront chrome)
   --------------------------------------------------------------- */
.site-footer{ background:var(--afp-ink); }
.footer-widgets-wrap .widget-title{
  font-family:var(--afp-font-head); font-size:1.0625rem; color:#fff;
  margin-bottom:1rem; letter-spacing:-.01em;
}
.footer-widgets-wrap,.footer-widgets-wrap p,.footer-widgets-wrap li{ color:#BFBFC6; }
.footer-widgets-wrap a{ color:#BFBFC6; text-decoration:none; }
.footer-widgets-wrap a:hover{ color:var(--afp-yellow); }
.footer-widgets-wrap .menu{ margin:0; padding:0; }
.footer-widgets-wrap .menu li{ padding:.25rem 0; list-style:none; }
.footer-bottom-wrap{ border-top:1px solid rgba(255,255,255,.12); position:relative; }
.footer-bottom-wrap::before{
  content:""; position:absolute; top:-1px; left:0; width:100%; height:2px;
  background:linear-gradient(90deg,var(--afp-red),var(--afp-red) 60%,var(--afp-yellow));
  opacity:.9;
}
.footer-copyright{ color:#9A9AA2; font-size:.875rem; }
/* The theme prefixes every footer widget title with a flame glyph in its demo
   orange. The mockup has plain titles, so it goes. */
.footer-widgets-wrap .widget-title::before{ display:none !important; content:none !important; }
.footer-widgets-wrap .widget-title{ padding-left:0 !important; }

.afp-social{ display:flex; flex-wrap:wrap; gap:.625rem; margin:0; padding:0; list-style:none; }
.afp-social li{ list-style:none; padding:0; }
.afp-social a{
  display:grid; place-items:center; width:40px; height:40px;
  border:1px solid rgba(255,255,255,.22); border-radius:50%;
  color:#BFBFC6; transition:background-color var(--afp-dur) var(--afp-ease),
                            border-color var(--afp-dur) var(--afp-ease),
                            color var(--afp-dur) var(--afp-ease);
}
.afp-social a:hover{ background:var(--afp-red); border-color:var(--afp-red); color:#fff; }
.afp-social svg{ width:18px; height:18px; }

.afp-members{ display:flex; flex-wrap:wrap; align-items:center; gap:.625rem; }
.afp-members a{ display:inline-flex; }
.afp-members img{
  display:block; height:38px !important; width:auto !important;
  background:#fff !important; padding:4px !important; border-radius:3px;
}

.screen-reader-text{
  position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

/* ---------------------------------------------------------------
   18. Motion and print
   --------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important; scroll-behavior:auto !important;
  }
}

@media print{
  .site-header,.site-footer,.afp-hero__badge,.afp-callband,.afp-btns,
  .cnb-single-view,#tawkchat-container{ display:none !important; }
  .afp-band{ padding-block:1rem; }
  body{ color:#000; }
}

/* ---------------------------------------------------------------
   19. Header bar details (topbar / logobar / navbar)
   --------------------------------------------------------------- */
.header-topbar .topbar-ul{ margin:0; padding:0; }
.header-topbar li{ list-style:none; }
.afp-topsep{ display:inline-block; width:1px; height:12px; margin:0 .875rem; vertical-align:-1px; background:rgba(255,255,255,.28); }
.afp-rto{ font-weight:700; letter-spacing:.1em; color:#fff; }

.header-logobar{ background:#fff; }
.header-logobar .nav{ margin:0; padding:0; align-items:center; }
.header-logobar li{ list-style:none; display:flex; align-items:center; }
.header-logobar .pull-right > li + li{ margin-left:1.5rem; }

.afp-headphone{
  display:inline-flex; flex-direction:column; line-height:1.15; text-decoration:none;
  padding-left:2.25rem; position:relative;
}
.afp-headphone::before{
  content:""; position:absolute; left:0; top:50%; transform:translateY(-50%);
  width:26px; height:26px; background:var(--afp-red);
  -webkit-mask:var(--afp-phone) center/contain no-repeat;
  mask:var(--afp-phone) center/contain no-repeat;
}
.afp-headphone span{ font-size:.75rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--afp-muted); }
.afp-headphone strong{ font-family:var(--afp-font-head); font-size:1.125rem; color:var(--afp-ink); }
.afp-headphone:hover strong{ color:var(--afp-red); }

/* Nav row: give the menu the whole bar, let it wrap tidily rather than
   blowing the bar open. The long PUAFER008 top-level item is what forces
   the wrap below ~1400px - nesting it under Nationally Recognised Training
   would let this sit on one line at every width. */
.header-navbar{
  height:auto; min-height:50px;
  border-top:1px solid var(--afp-line); border-bottom:1px solid var(--afp-line);
}
/* The theme's generated CSS hard-codes a 50% width on each navbar group and
   a 15px menu font. Both are scoped overrides, hence the !important. */
.site-header .header-navbar .container,
.site-header .header-navbar .container-fluid{ display:flex; align-items:center; width:100%; }
.site-header .header-navbar .nav.navbar-ul{ margin:0; padding:0; align-items:center; }
/* The theme centres this group with a 50%-width + translateX(-50%) trick.
   Once the group is full width that translate throws it off-canvas, so the
   transform goes and flex does the centring instead. */
.site-header .header-navbar .nav.navbar-ul.pull-center{
  width:auto !important; flex:1 1 auto !important; min-width:0;
  transform:none !important; left:auto !important;
}
.site-header .header-navbar .nav.navbar-ul.pull-right,
.site-header .header-navbar .nav.navbar-ul.element-left{ width:auto !important; flex:0 0 auto !important; }
.site-header .header-navbar .header-navigation-wrapper,
.site-header .header-navbar .primary-menu-wrapper{ width:100%; }

.site-header .primary-menu{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center;
  margin:0; padding:0; row-gap:0;
}
.site-header .header-navbar .nav.navbar-ul .primary-menu > li{ list-style:none; float:none; padding:0 !important; }
.site-header .header-navbar .nav.navbar-ul .primary-menu > li > a{
  display:block; padding:.6875rem .5rem !important; line-height:1.3 !important;
  font-size:clamp(.6875rem,.55rem + .2vw,.78125rem) !important; white-space:nowrap;
}
@media (min-width:1600px){
  .site-header .header-navbar .nav.navbar-ul .primary-menu > li > a{ padding-inline:.8125rem !important; }
}

/* Header CTA sits tighter than a page button */
.header-logobar .afp-btn,
.header-navbar .afp-btn{ min-height:44px; padding:.6875rem 1.375rem; font-size:.875rem; }

@media (max-width:1024px){
  .header-topbar,.header-navbar{ display:none; }
  .header-logobar .pull-right{ display:none; }
}

/* ---------------------------------------------------------------
   20. Footer logo plate
   --------------------------------------------------------------- */
.afp-footer-logo{ display:inline-block; background:#fff; padding:10px 12px; border-radius:var(--afp-r-sm); }
.afp-footer-logo img{ display:block; width:auto; max-width:100%; height:auto; }

/* ---------------------------------------------------------------
   21. Thrive interop
   Thrive wraps every editable element in .thrv_wrapper with 20px of
   vertical margin and styles .tcb-button-link. Inside our sections the
   design system owns spacing and buttons instead.
   --------------------------------------------------------------- */
.afp-hero .thrv_wrapper,
.afp-trustbar .thrv_wrapper,
.afp-band .thrv_wrapper,
.afp-guarantee .thrv_wrapper,
.afp-cta .thrv_wrapper{ margin:0; padding:0; }

.afp-hero .tve-page-section-in,
.afp-trustbar .tve-page-section-in,
.afp-band .tve-page-section-in,
.afp-guarantee .tve-page-section-in,
.afp-cta .tve-page-section-in{ padding:0; }

.afp-sechead .thrv_wrapper h2{ font-size:var(--afp-h2); line-height:1.12; margin:0; }
.afp-numrow .thrv_wrapper h3,
.afp-guarantee .thrv_wrapper h2,
.afp-cta .thrv_wrapper h2{ margin:0 0 .625rem; }
.afp-step .thrv_wrapper h4{ margin:2.75rem 0 .375rem; }
.afp-prose .thrv_wrapper + .thrv_wrapper{ margin-top:1rem; }
.afp-band .tve_image_caption,
.afp-hero .tve_image_caption{ display:block; margin:0; width:100%; }

/* Buttons: beat .thrv_wrapper .tcb-button-link without touching global a */
.thrv_wrapper a.afp-btn,
.afp-design a.afp-btn{
  display:inline-flex; align-items:center; gap:.625rem;
  min-height:48px; padding:.875rem 1.75rem; border-radius:var(--afp-r-sm);
  font-family:var(--afp-font-body); font-size:.9375rem; font-weight:700;
  line-height:1.2; text-decoration:none;
}
.thrv_wrapper a.afp-btn--red,.afp-design a.afp-btn--red{ background:var(--afp-red); color:#fff; }
.thrv_wrapper a.afp-btn--red:hover,.afp-design a.afp-btn--red:hover{ background:var(--afp-red-dark); color:#fff; }
.thrv_wrapper a.afp-btn--ink,.afp-design a.afp-btn--ink{ background:var(--afp-ink); color:#fff; }
.thrv_wrapper a.afp-btn--ghost,.afp-design a.afp-btn--ghost{ background:transparent; color:#fff; border:1px solid rgba(255,255,255,.55); }
.thrv_wrapper a.afp-btn--ghost:hover,.afp-design a.afp-btn--ghost:hover{ background:#fff; color:var(--afp-ink); border-color:#fff; }
.afp-btn .tcb-button-texts,.afp-btn .tcb-button-text{ display:inline; font:inherit; color:inherit; }

/* ---------------------------------------------------------------
   22. Home page specifics
   --------------------------------------------------------------- */
.afp-hero__aside{ display:grid; gap:1rem; justify-items:start; }
.afp-hero__aside .afp-card{ width:100%; }
.afp-card--form iframe{ min-height:560px; }
.afp-cta__aside{ display:grid; gap:1rem; }

.afp-steps__label{ margin:0 0 1.25rem; }
.afp-steps__label strong{ color:var(--afp-ink); font-weight:700; }

.afp-split--tight{ align-items:start; }
.afp-split__body > .afp-btn,
.afp-split__body .thrv-button{ margin-top:1.5rem; }

.afp-imgcta > span{ display:block; }

.afp-iconlist li > span{ display:block; }
.afp-iconlist li > span > span{ display:block; margin-top:.2rem; line-height:1.6; }

.afp-map__fig .tve_image_caption img{ border-radius:var(--afp-r-sm); }

.afp-guarantee__stat span br{ display:block; }

/* Trustindex sits in a plain band; strip its own outer spacing */
.afp-reviews .ti-widget{ margin:0 !important; }
.afp-reviews .ti-wp-notice{ display:none !important; }

@media (max-width:768px){
  .afp-hero__badge{ justify-self:start; }
  .afp-imgcta{ margin-top:-3rem; }
  .afp-numrow__n{ font-size:1.75rem; padding-right:.875rem; }
  .afp-why__media img{ min-height:220px; }
}

/* ---------------------------------------------------------------
   23. Content typography inside rebuilt sections
   Thrive's base stylesheet renders body copy as white 12px and relies on
   the per-page tve_custom_css to override it. Rebuilt pages have no
   per-page CSS, so the design system states the type explicitly.
   --------------------------------------------------------------- */
.afp-hero .thrv_wrapper p,
.afp-cta .thrv_wrapper p,
.afp-band .thrv_wrapper p,
.afp-guarantee .thrv_wrapper p,
.afp-band .afp-list li,
.afp-band .afp-accordion__body p,
.afp-band .afp-iconlist span{
  font-family:var(--afp-font-body) !important;
  font-size:1rem !important;
  line-height:1.7 !important;
  letter-spacing:normal !important;
  color:var(--afp-body) !important;
}

.afp-band .thrv_wrapper h2,
.afp-band .thrv_wrapper h3,
.afp-band .thrv_wrapper h4,
.afp-guarantee__card .thrv_wrapper h2{
  font-family:var(--afp-font-head) !important;
  color:var(--afp-ink) !important;
}
.afp-band .thrv_wrapper h2,
.afp-guarantee__card .thrv_wrapper h2{ font-size:var(--afp-h2) !important; line-height:1.12 !important; }
.afp-band .thrv_wrapper h3{ font-size:var(--afp-h3) !important; line-height:1.25 !important; }
.afp-band .thrv_wrapper h4{ font-size:var(--afp-h4) !important; line-height:1.3 !important; }

.afp-hero .thrv_wrapper h1{
  font-family:var(--afp-font-head) !important;
  font-size:var(--afp-h1) !important; line-height:1.05 !important;
  color:#fff !important; margin:0 !important;
}
.afp-hero .thrv_wrapper p.afp-hero__sub{
  font-size:clamp(1rem,.9rem + .4vw,1.1875rem) !important;
  color:rgba(255,255,255,.88) !important; margin:1rem 0 0 !important;
}
.afp-cta .thrv_wrapper h2{
  font-family:var(--afp-font-head) !important;
  font-size:var(--afp-h2) !important; line-height:1.12 !important; color:#fff !important;
}
.afp-cta .thrv_wrapper p{ color:var(--afp-on-dark) !important; }

.afp-guarantee .thrv_wrapper h2{ color:var(--afp-ink) !important; }

.afp-trustbar__item span{
  font-family:var(--afp-font-body); font-size:.9375rem; font-weight:600; color:var(--afp-ink);
}
.afp-accordion__head{ color:var(--afp-red) !important; font-size:1.0625rem !important; }
.afp-iconlist b{ font-family:var(--afp-font-head) !important; font-size:1.0625rem !important; color:var(--afp-ink) !important; }
.afp-callband span{ color:#fff !important; font-weight:700; }
.afp-imgcta small,.afp-imgcta b{ color:#fff !important; }
.afp-hero__badge b,.afp-hero__badge span{ color:#fff !important; }
.afp-guarantee__stat b{ color:var(--afp-yellow) !important; }
.afp-guarantee__stat span{ color:#fff !important; }

/* ---------------------------------------------------------------
   24. Full-bleed page shell for rebuilt pages
   --------------------------------------------------------------- */
.afp-built .firefront-content-wrap{ padding-top:0 !important; padding-bottom:0 !important; }
.afp-built .firefront-content-wrap.container{
  max-width:none !important; width:100% !important;
  overflow-x:clip;
}
/* Bootstrap rows carry -12px side margins; without the container padding to
   cancel them the bands overhang and create a horizontal scrollbar. */
.afp-built .firefront-content-wrap > .row{ margin-left:0 !important; margin-right:0 !important; }
.afp-built .firefront-content-wrap > .row > [class*="col-"]{ padding-left:0 !important; padding-right:0 !important; }

/* Right-hand dropdowns were opening past the viewport edge and creating a
   horizontal scrollbar. Flip the last two to align right. */
.site-header .primary-menu > li:nth-last-child(-n+2) > .sub-menu{ left:auto; right:0; }
.site-header .primary-menu > li:nth-last-child(-n+2) > .sub-menu .sub-menu{ left:auto; right:100%; }

/* Thrive styled-list items bring their own check icon. Keep it, drop our
   square marker, and pull it onto the same line as the text. */
.afp-list li:has(.tcb-styled-list-icon)::before{ display:none; }
.afp-list .tcb-styled-list-icon{
  position:absolute; left:0; top:.12em; width:1.15em; height:1.15em;
  display:block; color:var(--afp-red);
}
.afp-list .tcb-styled-list-icon .thrv_wrapper{ margin:0 !important; padding:0 !important; }
.afp-list .tcb-styled-list-icon svg{
  width:1.15em; height:1.15em; display:block;
  fill:var(--afp-red); color:var(--afp-red);
}

/* Call Now Button floats in the plugin's default orange; bring it onto brand. */
a.call-now-button{ background-color:var(--afp-red) !important; }
