/* ==================================================================
   Allcoast Shade Sails, v2
   Built by Fresh Digital. Australian English. No em dashes.

   Palette measured from the client's LIVE site, 3 September 2026.

   Heading convention, measured rather than assumed:
     /why-choose-us/  every h2 is #0095DC or #00336D. Sub-heads are #333333.
                      No purple headings on that page at all.
     /                the real section h2s are #0095DC (blue) or #FFF701
                      (yellow on dark). 8 of the 10 purple items at 20px+
                      are icon captions, not section headings.
   So: navy #00336D carries headings, sky blue is the accent, yellow is the
   punch, and purple #2A186C stays in the logo artwork where it belongs.

   navy    #00336D  headings and dark bands. 12.39:1 on white
   sky     #0095DC  the live site's link colour. 3.32:1, large text and UI only
   sky-ink #0071A6  links and body-size text. 5.37 white / 4.53 palest surface
   yellow  #FFF701  accent and CTA. 10.95:1 with navy text
   ================================================================== */

@font-face{font-family:"Archivo";src:url("fonts/archivo-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Archivo";src:url("fonts/archivo-latin-800-normal.woff2") format("woff2");font-weight:800;font-style:normal;font-display:swap}
@font-face{font-family:"Archivo";src:url("fonts/archivo-latin-900-normal.woff2") format("woff2");font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:"Inter";src:url("fonts/inter-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Inter";src:url("fonts/inter-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Inter";src:url("fonts/inter-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"DM Sans";src:url("fonts/dm-sans-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"DM Sans";src:url("fonts/dm-sans-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}

:root{
  --white:#FFFFFF;
  --mist:#F2F6FA;
  --mist-2:#E4EDF5;
  --text:#232130;
  --muted:#5B5870;
  --muted-light:#B9C6D6;
  /* Retained for reference only. The live site uses purple for its h1 and
     for icon captions, not for section headings, so it is not used here. */
  --logo-purple:#2A186C;
  --navy:#00336D;         /* the live site's dark band colour, 12.39:1 with white */
  --navy-deep:#002951;
  --sky:#0095DC;
  --sky-ink:#0071A6;      /* AA on every light surface in use: 5.37 white, 4.94 mist, 4.53 mist-2 */
  --sky-light:#7FC4EA;
  --yellow:#FFF701;
  --yellow-deep:#7B7800;
  --line:#DCE4EE;
  --line-strong:#8E9BAB;
  --line-dark:#1B4E88;

  --display:"Archivo",system-ui,-apple-system,sans-serif;
  --body:"Inter",system-ui,-apple-system,sans-serif;
  --label:"DM Sans",system-ui,-apple-system,sans-serif;

  --maxw:1240px;
  --gutter:clamp(20px,5vw,64px);
  --sp:clamp(56px,7vw,104px);
  --r:6px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--white);color:var(--text);font-family:var(--body);
  font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
iframe{max-width:100%;border:0}
a{color:inherit;text-decoration:none}
::selection{background:var(--yellow);color:var(--navy)}

a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{
  outline:3px solid var(--sky-ink);outline-offset:3px;border-radius:3px}
.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--navy);color:#fff;padding:12px 20px;font-family:var(--label);font-size:.85rem}
.skip:focus{left:var(--gutter);top:10px}

.container{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gutter)}
.section{padding-block:var(--sp)}
.section--tight{padding-block:clamp(36px,4.5vw,64px)}
.section--mist{background:var(--mist)}
.section--navy{background:var(--navy);color:#fff}
.section--navy .muted{color:var(--muted-light)}

/* ---------- type: sentence case, no outline fills ---------- */
.eyebrow{font-family:var(--label);font-size:.78rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--sky-ink);display:block;margin:0 0 .9rem}
.section--navy .eyebrow,.phero .eyebrow,.projectstrip .eyebrow{color:var(--yellow)}
.ctaband .eyebrow{color:var(--navy)}
/* Yellow at 12px measured 3.52:1 against the bright sky in the hero photo.
   White clears it, and the yellow still leads the trust chips below. */
.hero .eyebrow{color:#fff;text-shadow:0 1px 10px rgba(29,16,73,.75)}

h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.018em;margin:0;line-height:1.1;font-weight:800}
h1{font-size:clamp(2.15rem,4.8vw,3.75rem);line-height:1.04}
h2{font-size:clamp(1.6rem,3vw,2.35rem)}
h3{font-size:clamp(1.15rem,1.7vw,1.4rem);font-weight:700}
h4{font-size:1.05rem;font-weight:700}
h1,h2{color:var(--navy)}
.section--navy h1,.section--navy h2,.section--navy h3,
.hero h1,.phero h1,.footer h2,.projectstrip h2{color:#fff}

.lede{font-size:clamp(1.08rem,1.5vw,1.28rem);line-height:1.55;color:var(--muted);max-width:46ch;margin:1.1rem 0 0}
.section--navy .lede,.phero .lede{color:rgba(255,255,255,.93)}
.hero .lede{color:#fff}
.prose{max-width:66ch}
.prose p{margin:0 0 1.15rem}
.prose h2{margin:2.6rem 0 .9rem}
.prose h3{margin:2rem 0 .7rem;color:var(--text)}   /* live site uses #333333 here, not a brand colour */
.prose ul,.prose ol{margin:0 0 1.4rem;padding-left:1.15rem}
.prose li{margin-bottom:.55rem}
.prose strong{font-weight:600;color:var(--text)}
.prose a{color:var(--sky-ink);text-decoration:underline;text-underline-offset:3px}
.muted{color:var(--muted)}
.center{text-align:center}
.center .lede{margin-inline:auto}

/* ---------- buttons ---------- */
.btn{--bg:var(--navy);--fg:#fff;--bd:var(--navy);
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  font-family:var(--label);font-size:.83rem;font-weight:600;letter-spacing:.055em;
  background:var(--bg);color:var(--fg);border:2px solid var(--bd);
  padding:14px 24px;min-height:48px;border-radius:var(--r);cursor:pointer;
  transition:background .2s ease,color .2s ease,border-color .2s ease}
.btn svg{width:15px;height:15px;flex:0 0 auto}
@media (prefers-reduced-motion:reduce){.btn{transition:none}}
.btn--primary{--bg:var(--yellow);--fg:var(--navy);--bd:var(--yellow)}
.btn--primary:hover{--bg:#E2DB00;--bd:#E2DB00}
.btn--sky{--bg:var(--sky-ink);--fg:#fff;--bd:var(--sky-ink)}
.btn--sky:hover{--bg:#005580;--bd:#005580}
.btn--navy{--bg:var(--navy);--fg:#fff;--bd:var(--navy)}
.btn--navy:hover{--bg:var(--navy-deep);--bd:var(--navy-deep)}
/* Outline button. EVERY dark surface it can sit on is declared here. Missing
   .ctaband from this list is exactly what made "Send an enquiry" invisible. */
.btn--ghost{--bg:transparent;--fg:var(--navy);--bd:var(--navy)}
.btn--ghost:hover{--bg:var(--navy);--fg:#fff}
.section--navy .btn--ghost,.hero .btn--ghost,.phero .btn--ghost,
.projectstrip .btn--ghost,.footer--dark .btn--ghost{--fg:#fff;--bd:rgba(255,255,255,.75)}
.section--navy .btn--ghost:hover,.hero .btn--ghost:hover,.phero .btn--ghost:hover,
.projectstrip .btn--ghost:hover,.footer--dark .btn--ghost:hover{--bg:#fff;--fg:var(--navy);--bd:#fff}
.btn--lg{padding:17px 30px;font-size:.88rem}
.btn--block{width:100%}

.textlink{font-family:var(--label);font-size:.86rem;font-weight:600;display:inline-flex;
  align-items:center;gap:.45em;color:var(--sky-ink);min-height:44px;
  border-bottom:2px solid var(--yellow);padding-block:10px 4px;max-width:100%}
.textlink svg{width:14px;height:14px;flex:0 0 auto}
.section--navy .textlink,.projectstrip .textlink{color:#fff}
.prose .textlink,.spec__v .textlink{overflow-wrap:anywhere}
.prose p .textlink{display:inline;min-height:0;padding-block:0;
  border-bottom:2px solid var(--yellow);white-space:nowrap;font-size:inherit;font-family:inherit;font-weight:600}

/* ---------- header ---------- */
.nav{position:sticky;top:0;z-index:80;display:flex;align-items:center;justify-content:space-between;
  flex-wrap:nowrap;gap:16px;padding:10px var(--gutter);background:var(--white);border-bottom:1px solid var(--line)}
.nav__brand{display:flex;align-items:center;min-height:44px}
.nav__brand img{height:42px;width:auto}
.nav__links{display:flex;align-items:center;gap:24px;list-style:none;margin:0;padding:0}
.nav__links a{font-size:.9rem;font-weight:500;color:var(--text);padding:6px 0;border-bottom:2px solid transparent}
.nav__links a:hover{border-bottom-color:var(--sky)}
.nav__links a[aria-current="page"]{color:var(--navy);font-weight:600;border-bottom-color:var(--yellow)}
.nav__cta{display:flex;align-items:center;gap:12px}
.nav__phone{font-family:var(--label);font-size:.92rem;font-weight:600;color:var(--navy);
  display:flex;align-items:center;gap:.45em;min-height:44px;white-space:nowrap;flex:0 0 auto}
.nav__phone svg{width:16px;height:16px;color:var(--sky-ink)}

.burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;
  padding:11px;min-width:44px;min-height:44px;align-items:center;justify-content:center;color:var(--navy)}
.burger span{width:24px;height:2px;background:currentColor;display:block}
.mobile-menu{position:fixed;inset:0;z-index:90;background:var(--navy);color:#fff;display:none;
  flex-direction:column;padding:18px var(--gutter);overflow-y:auto}
.mobile-menu.open{display:flex}
.mobile-menu__top{display:flex;justify-content:space-between;align-items:center}
.mobile-menu__top img{height:40px;width:auto;background:#fff;padding:6px 10px;border-radius:var(--r)}
.mobile-menu__close{background:none;border:0;color:#fff;font-size:2rem;cursor:pointer;line-height:1;min-width:44px;min-height:44px}
.mobile-menu nav{display:flex;flex-direction:column;margin-top:4vh}
.mobile-menu nav a{font-family:var(--display);font-weight:700;font-size:clamp(1.3rem,5.5vw,1.9rem);
  padding:13px 0;border-bottom:1px solid var(--line-dark)}
.mobile-menu nav a:hover{color:var(--yellow)}
.mobile-menu__foot{margin-top:auto;padding-top:22px;font-family:var(--label);font-size:.9rem;
  color:var(--muted-light);display:flex;flex-direction:column;gap:10px}
.mobile-menu__foot a{color:var(--yellow)}
@media(max-width:1040px){.nav__links{display:none}.burger{display:flex}.nav__cta .btn{display:none}}
@media(max-width:560px){.nav__phone .lbl{display:none}.nav__phone{min-width:44px;justify-content:center}}

/* ---------- hero ---------- */
.hero{position:relative;isolation:isolate;color:#fff;min-height:min(86vh,780px);display:flex;align-items:center;overflow:hidden}
.hero__bg{position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center 42%}
/* Scrim only where the text sits, so the photograph stays bright. v1 buried
   the image under an 88% wash, which is what made the site read as dark. */
.hero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(100deg,rgba(0,41,81,.96) 0%,rgba(0,41,81,.92) 34%,rgba(0,41,81,.74) 52%,rgba(0,41,81,.34) 70%,rgba(0,41,81,0) 86%)}
.hero__inner{padding-block:clamp(48px,8vw,96px);max-width:680px}
.hero h1{max-width:16ch}
.hero .lede{max-width:40ch}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:1.9rem}
/* Each item carries its own dark chip, so contrast holds no matter what the
   photograph is doing behind it. Relying on the gradient scrim alone put the
   right-hand items on bright sky at 2.15:1. */
.hero__trust{display:flex;flex-wrap:wrap;gap:8px;margin:2rem 0 0;padding:0;list-style:none}
.hero__trust li{display:flex;align-items:center;gap:.5em;font-family:var(--label);
  font-size:.83rem;font-weight:600;color:#fff;background:rgba(0,41,81,.85);
  border:1px solid rgba(255,255,255,.22);border-radius:100px;padding:7px 14px}
.hero__trust li::before{content:"";width:6px;height:6px;background:var(--yellow);border-radius:50%;flex:0 0 auto}
@media(max-width:760px){.hero{min-height:0}
  .hero::after{background:linear-gradient(180deg,rgba(0,41,81,.86),rgba(0,41,81,.93))}}

/* ---------- interior page header ---------- */
.phero{position:relative;isolation:isolate;color:#fff;background:var(--navy);
  padding:clamp(44px,6vw,76px) 0 clamp(36px,4.5vw,58px);overflow:hidden}
.phero__bg{position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center 45%}
.phero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(95deg,rgba(0,41,81,.94) 0%,rgba(0,41,81,.80) 45%,rgba(0,41,81,.45) 100%)}
.phero h1{max-width:20ch}
.phero .lede{max-width:52ch}
.crumbs{font-family:var(--label);font-size:.8rem;color:rgba(255,255,255,.85);margin-bottom:.9rem}
.crumbs a{display:inline-flex;align-items:center;min-height:44px;min-width:44px;border-bottom:1px solid transparent}
.crumbs a:hover{border-bottom-color:var(--yellow)}
.crumbs span{opacity:.55;padding:0 .45em}

/* ---------- spec sheet ---------- */
.spec{border-top:2px solid var(--navy)}
.spec__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:16px;
  padding:15px 0;border-bottom:1px solid var(--line)}
.spec__k{font-family:var(--label);font-size:.78rem;font-weight:600;letter-spacing:.07em;
  text-transform:uppercase;color:var(--sky-ink)}
.spec__v{font-weight:500;overflow-wrap:anywhere;min-width:0}
.section--navy .spec{border-top-color:var(--yellow)}
.section--navy .spec__row{border-bottom-color:var(--line-dark)}
.section--navy .spec__k{color:var(--sky-light)}

.speccard{background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  padding:clamp(20px,2.6vw,32px);box-shadow:0 10px 30px rgba(0,41,81,.07)}
.speccard .spec{border-top:3px solid var(--yellow)}

/* ---------- full-bleed colour band ---------- */
.colourband{padding-block:var(--sp);background:var(--white)}
.colourband .lede{margin-inline:auto}
.colourband__strip{display:flex;width:100%;overflow:hidden;margin-block:clamp(28px,4vw,48px);
  height:clamp(90px,13vw,168px);border-block:1px solid var(--line-strong)}
.colourband__strip span{flex:1 1 0;min-width:0;display:block;transition:flex-grow .3s ease;
  box-shadow:inset 1px 0 0 rgba(0,41,81,.16),inset -1px 0 0 rgba(0,41,81,.16)}
.colourband__strip:hover span{flex-grow:.85}
.colourband__strip span:hover{flex-grow:5}
@media (prefers-reduced-motion:reduce){
  .colourband__strip span,.colourband__strip:hover span,.colourband__strip span:hover{transition:none;flex-grow:1}}
.colourband__note{font-size:.86rem}

/* ---------- full-bleed project strip ---------- */
.projectstrip{background:var(--navy);color:#fff;padding-bottom:0}
.projectstrip h2{color:#fff;margin:0}
.projectstrip__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px}
.projectstrip__rail{display:grid;grid-template-columns:repeat(8,1fr);gap:2px;margin-top:clamp(24px,3vw,40px)}
.projectstrip__rail a{display:block;aspect-ratio:3/4;overflow:hidden;background:var(--navy-deep)}
.projectstrip__rail img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease,opacity .3s ease}
.projectstrip__rail a:hover img,.projectstrip__rail a:focus-visible img{transform:scale(1.06)}
@media (prefers-reduced-motion:reduce){.projectstrip__rail img{transition:none}
  .projectstrip__rail a:hover img{transform:none}}
@media(max-width:1100px){.projectstrip__rail{grid-template-columns:repeat(4,1fr)}}
@media(max-width:560px){.projectstrip__rail{grid-template-columns:repeat(2,1fr)}}

/* ---------- quiet fact row, replaces the giant stat-number grid ---------- */
.facts{display:flex;flex-wrap:wrap;gap:10px 12px;margin:0;padding:0;list-style:none}
.facts li{font-family:var(--label);font-size:.86rem;font-weight:600;color:var(--navy);
  background:var(--mist);border:1px solid var(--line);border-radius:100px;padding:9px 16px}
.section--navy .facts li{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.28);color:#fff}

/* ---------- cards ---------- */
.grid{display:grid;gap:24px}
.grid--2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.grid--3{grid-template-columns:repeat(auto-fit,minmax(276px,1fr))}
.card{background:var(--white);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  display:flex;flex-direction:column;transition:border-color .2s ease,box-shadow .25s ease}
.card:hover{border-color:var(--sky);box-shadow:0 10px 28px rgba(35,33,48,.10)}
@media (prefers-reduced-motion:reduce){.card{transition:none}}
.card__img{aspect-ratio:3/2;overflow:hidden;background:var(--mist-2)}
.card__img img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.card:hover .card__img img{transform:scale(1.035)}
@media (prefers-reduced-motion:reduce){.card__img img{transition:none}.card:hover .card__img img{transform:none}}
.card__body{padding:22px 22px 20px;display:flex;flex-direction:column;gap:.55rem;flex:1}
.card__body p{margin:0;color:var(--muted);font-size:.95rem}
.card__body .textlink{margin-top:auto;align-self:flex-start}

/* ---------- feature row, breaks the identical slab rhythm ---------- */
.feature{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,64px);align-items:center}
.feature>*{min-width:0}
.feature--flip .feature__media{order:2}
.feature__media{border-radius:var(--r);overflow:hidden;aspect-ratio:4/3;background:var(--mist-2);
  box-shadow:0 18px 44px rgba(0,41,81,.16);position:relative}
.feature__media::after{content:"";position:absolute;left:0;bottom:0;width:96px;height:6px;background:var(--yellow)}
.feature__media img{width:100%;height:100%;object-fit:cover}
.feature .btn,.feature .textlink{margin-top:1.4rem}
.feature .prose{max-width:52ch}
@media(max-width:820px){.feature{grid-template-columns:1fr}.feature--flip .feature__media{order:0}}

/* ---------- benefit list ---------- */
.benefits{list-style:none;margin:0;padding:0}
.benefits li{padding:14px 0 14px 30px;position:relative;border-bottom:1px solid var(--line)}
.benefits li::before{content:"";position:absolute;left:0;top:23px;width:14px;height:3px;background:var(--yellow);border-radius:2px}
.benefits li>a{display:flex;align-items:center;min-height:44px;margin-block:-14px;color:var(--navy);font-weight:500}
.benefits li>a:hover{color:var(--sky-ink)}
.section--navy .benefits li{border-bottom-color:var(--line-dark)}
.section--navy .benefits li>a{color:#fff}

/* ---------- swatches ---------- */
.swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(146px,1fr));gap:16px}
.swatch{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--white)}
.swatch__chip{aspect-ratio:2/1}
.swatch__meta{padding:11px 13px}
.swatch__name{font-family:var(--label);font-weight:600;font-size:.87rem}
.swatch__spec{font-size:.76rem;color:var(--muted);margin-top:2px;font-variant-numeric:tabular-nums}
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:30px;border-bottom:1px solid var(--line)}
.tab{font-family:var(--label);font-size:.87rem;font-weight:600;background:none;border:0;
  border-bottom:3px solid transparent;padding:14px 6px;margin-bottom:-1px;cursor:pointer;color:var(--muted);min-height:48px}
.tab[aria-selected="true"]{color:var(--navy);border-bottom-color:var(--yellow)}
.tabpanel[hidden]{display:none}

/* ---------- gallery ---------- */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.gallery button{padding:0;border:0;background:var(--mist-2);cursor:pointer;overflow:hidden;
  border-radius:var(--r);aspect-ratio:3/2;display:block}
.gallery img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.gallery button:hover img,.gallery button:focus-visible img{transform:scale(1.05)}
@media (prefers-reduced-motion:reduce){.gallery img{transition:none}.gallery button:hover img{transform:none}}
.lightbox{position:fixed;inset:0;z-index:120;background:rgba(0,41,81,.96);display:none;
  align-items:center;justify-content:center;padding:24px}
.lightbox.open{display:flex}
.lightbox img{max-width:min(1100px,92vw);max-height:86vh;object-fit:contain}
.lightbox__close,.lightbox__prev,.lightbox__next{position:absolute;background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.4);color:#fff;font-size:1.5rem;line-height:1;
  min-width:48px;min-height:48px;cursor:pointer;border-radius:var(--r)}
.lightbox__close{top:20px;right:20px}
.lightbox__prev{left:20px;top:50%;transform:translateY(-50%)}
.lightbox__next{right:20px;top:50%;transform:translateY(-50%)}
.lightbox__count{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);
  font-family:var(--label);font-size:.85rem;color:rgba(255,255,255,.88)}

/* ---------- suburb strip (replaced the scrolling marquee) ---------- */
.suburbstrip{margin:0;display:flex;flex-wrap:wrap;gap:6px 0;align-items:center;line-height:1.9}
.suburbstrip a{font-family:var(--label);font-size:.92rem;font-weight:600;color:var(--navy);
  padding:6px 14px;border-right:1px solid var(--line);display:inline-flex;align-items:center;min-height:44px}
.suburbstrip a:last-child{border-right:0}
.suburbstrip a:hover{color:var(--sky-ink)}

/* ---------- areas ---------- */
.arealist{display:grid;grid-template-columns:repeat(auto-fill,minmax(186px,1fr));gap:10px}
.arealist a{background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  padding:14px 16px;font-family:var(--label);font-weight:600;font-size:.92rem;color:var(--navy);
  display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px}
.arealist a::after{content:"";width:7px;height:7px;border-right:2px solid var(--sky-ink);
  border-bottom:2px solid var(--sky-ink);transform:rotate(-45deg);flex:0 0 auto}
.arealist a:hover{border-color:var(--sky);background:var(--mist)}
.section--navy .arealist a{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.25);color:#fff}
.section--navy .arealist a::after{border-color:var(--yellow)}
.section--navy .arealist a:hover{background:rgba(255,255,255,.16)}

/* ---------- testimonial ---------- */
.quote{max-width:62ch;margin:0}
.quote p{font-family:var(--display);font-weight:600;font-size:clamp(1.15rem,2vw,1.5rem);
  line-height:1.4;letter-spacing:-.012em;color:var(--navy);margin:0 0 1rem}
.quote cite{font-family:var(--label);font-style:normal;font-size:.84rem;font-weight:600;color:var(--muted)}

/* testimonial band */
.quoteband{background:var(--white);border-block:1px solid var(--line);text-align:center}
.quoteband .eyebrow{margin-bottom:1.4rem}
.quote--big{max-width:min(780px,100%);margin:0 auto;position:relative;padding-top:52px}
.quote--big::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:44px;height:6px;background:var(--yellow);border-radius:3px}
.quote--big p{font-size:clamp(1.25rem,2.2vw,1.8rem);line-height:1.36;font-weight:700;color:var(--navy);text-wrap:balance}
.quote--big cite{display:block;margin-top:.4rem}

/* ---------- forms ---------- */
.form{display:grid;gap:16px}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field label{font-family:var(--label);font-size:.8rem;font-weight:600;color:var(--navy)}
.field .req{color:var(--sky-ink)}
.field input,.field textarea{font-family:var(--body);font-size:1rem;padding:13px 14px;min-height:48px;
  border:1px solid var(--line-strong);border-radius:var(--r);background:var(--white);color:var(--text);width:100%}
.field textarea{min-height:128px;resize:vertical}
.field input:focus,.field textarea:focus{border-color:var(--sky-ink)}
.form__note{font-size:.83rem;color:var(--muted)}
.form__status{font-family:var(--label);font-size:.92rem;padding:13px 15px;border-radius:var(--r);display:none}
.form__status.ok{display:block;background:#E7F4EC;border:1px solid #9CC8AE;color:#12502B}
.form__status.err{display:block;background:#FBEBEB;border:1px solid #DFAFAF;color:#7A1D1D}
@media(max-width:640px){.form__row{grid-template-columns:1fr}}

/* ---------- CTA band ---------- */
/* Yellow band. Navy on yellow measures 10.95:1, so text and both buttons are
   navy here. Nothing white is allowed on this surface. */
.ctaband{background:var(--yellow);color:var(--navy)}
.ctaband .inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px}
.ctaband h2{max-width:22ch;color:var(--navy)}
.ctaband .acts{display:flex;flex-wrap:wrap;gap:12px}
.ctaband .btn--primary{--bg:var(--navy);--fg:#fff;--bd:var(--navy)}
.ctaband .btn--primary:hover{--bg:var(--navy-deep);--bd:var(--navy-deep)}
.ctaband .btn--ghost{--bg:transparent;--fg:var(--navy);--bd:var(--navy)}
.ctaband .btn--ghost:hover{--bg:var(--navy);--fg:var(--yellow);--bd:var(--navy)}

/* ---------- footer: light, so the supplied logo works as supplied ---------- */
.footer{background:var(--mist);color:var(--text);padding-block:clamp(44px,5.5vw,72px) 0;border-top:1px solid var(--line)}
.footer__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.15fr;gap:36px}
.footer__brand img{height:58px;width:auto;margin-bottom:16px}
.footer h2{font-family:var(--label);font-size:.78rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--sky-ink);margin:0 0 8px}
.footer ul{list-style:none;margin:0;padding:0}
.footer li{display:flex;align-items:center}
.footer a{color:var(--text);display:inline-flex;align-items:center;min-height:44px}
.footer a:hover{color:var(--sky-ink)}
.footer p{color:var(--muted);margin:0 0 10px;font-size:.94rem;max-width:38ch}
.footer__bottom{margin-top:36px;border-top:1px solid var(--line);padding-block:18px;
  display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between;font-size:.86rem;color:var(--muted)}
.footer__bottom a{display:inline-flex;align-items:center;min-height:44px;color:var(--muted)}
@media(max-width:900px){.footer__grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.footer__grid{grid-template-columns:1fr}}

/* ---------- mobile contact dock ---------- */
.dock{position:fixed;right:0;bottom:0;left:0;z-index:70;display:none;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-dark)}
.dock a{padding:15px 10px;font-family:var(--label);font-size:.85rem;font-weight:600;
  display:flex;align-items:center;justify-content:center;gap:.45em;min-height:56px}
.dock a:first-child{background:var(--yellow);color:var(--navy)}
.dock a:last-child{background:var(--navy);color:#fff}
.dock svg{width:16px;height:16px}
@media(max-width:1040px){.dock{display:grid}body{padding-bottom:56px}}

/* ---------- reveal, safe by default ---------- */
.js .reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}}

/* ---------- long-form layout: prose plus a sticky quote card ----------
   A bare .prose in a 1240px container left the right half empty on the two
   text-heavy pages. The card fills it with the next action rather than decoration. */
.longform{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:clamp(32px,4vw,64px);align-items:start}
.quotecard{position:sticky;top:96px;background:var(--white);border:1px solid var(--line);
  border-top:4px solid var(--yellow);border-radius:var(--r);padding:24px;
  box-shadow:0 10px 30px rgba(0,41,81,.08)}
.quotecard__k{font-family:var(--label);font-size:.76rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--sky-ink);margin:0 0 .5rem}
.quotecard__t{font-family:var(--display);font-weight:700;font-size:1.05rem;line-height:1.3;
  color:var(--navy);margin:0 0 1.1rem}
.quotecard__call{margin-top:10px}
.quotecard__list{list-style:none;margin:1.2rem 0 0;padding:1.1rem 0 0;border-top:1px solid var(--line);
  font-size:.88rem;color:var(--muted)}
.quotecard__list li{padding-left:20px;position:relative;margin-bottom:.5rem}
.quotecard__list li::before{content:"";position:absolute;left:0;top:9px;width:10px;height:2px;
  background:var(--yellow);border-radius:2px}
@media(max-width:900px){
  .longform{grid-template-columns:1fr}
  .quotecard{position:static;max-width:420px}
}

/* ---------- utility ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4.5vw,64px);align-items:center}
.split--top{align-items:start}
.split>*{min-width:0}
@media(max-width:860px){.split{grid-template-columns:1fr}}
.mt-lg{margin-top:clamp(28px,3.5vw,48px)}
.mt-sm{margin-top:1.2rem}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
