/* ==========================================================================
   Salt Line - layout. Ported verbatim from the original homepage stylesheet
   so block markup carrying these classes renders identically to the design.
   Token aliases below let the original rules port without rewriting.
   ========================================================================== */

:root{
  --navy:#0C3357;
  --navy-deep:#082541;
  --cream:#F6ECDF;
  --paper:#FAF4E9;
  --cream-light:#FBF7F0;
  --gold:#B8873A;
  --gold-light:#D3A75C;
  --ink:#26241F;
  --ink-soft:#5b564a;
  --rule:rgba(12,51,87,0.16);
  --rule-light:rgba(246,236,223,0.25);
}

*{box-sizing:border-box;}
body{background:var(--paper);color:var(--ink);font-family:'Archivo',sans-serif;font-size:17px;line-height:1.7;font-weight:450;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}

.wrap{max-width:1180px;margin:0 auto;padding:0 40px;position:relative;z-index:1;}
:is(h1,h2,h3,h4){font-family:'Bodoni Moda',serif;font-weight:500;margin:0;color:var(--navy);}
.script{font-family:'Kaushan Script',cursive;line-height:1.15;padding-bottom:0.08em;display:inline-block;}

.eyebrow{font-family:'Archivo',sans-serif;text-transform:uppercase;letter-spacing:3px;font-size:11.5px;font-weight:700;color:var(--gold);display:flex;align-items:center;gap:10px;}
.eyebrow::before{content:"";width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:7px solid var(--gold);display:inline-block;}

.btn{display:inline-flex;align-items:center;gap:8px;font-family:'Archivo',sans-serif;font-weight:700;font-size:13.5px;letter-spacing:1px;text-transform:uppercase;padding:15px 28px;border:1.5px solid transparent;cursor:pointer;clip-path:polygon(0 0, calc(100% - 13px) 0, 100% 13px, 100% 100%, 0 100%);box-shadow:4px 4px 0 rgba(12,51,87,0.22);transition:transform 0.15s ease, box-shadow 0.15s ease;}
.btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 rgba(12,51,87,0.22);}
.btn-gold{background:var(--gold);color:var(--navy-deep);}
.btn-gold:hover{background:var(--gold-light);}
.btn-outline{border-color:currentColor;background:transparent;box-shadow:4px 4px 0 rgba(12,51,87,0.1);}
.btn:focus-visible{outline:2px solid var(--gold);outline-offset:3px;}

.rule{height:1px;background:var(--rule);width:100%;}

.photo-placeholder{border:1.5px dashed rgba(12,51,87,0.35);background:repeating-linear-gradient(135deg, rgba(12,51,87,0.035) 0 12px, transparent 12px 24px);box-shadow:5px 5px 0 rgba(12,51,87,0.07);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--navy);gap:10px;padding:24px;}
.photo-placeholder svg{opacity:0.55;}
.photo-placeholder .pp-label{font-weight:700;font-size:13px;letter-spacing:0.5px;text-transform:uppercase;color:var(--navy);}
.photo-placeholder .pp-cap{font-size:12px;color:var(--ink-soft);}

.text-placeholder{border:1.5px dashed rgba(12,51,87,0.35);background:repeating-linear-gradient(135deg, rgba(12,51,87,0.035) 0 12px, transparent 12px 24px);box-shadow:5px 5px 0 rgba(12,51,87,0.07);padding:36px 40px;}
.text-placeholder .tp-label{font-weight:700;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--navy);margin-bottom:12px;display:block;}
.text-placeholder .tp-prompt{font-size:15px;font-style:italic;line-height:1.75;color:var(--ink-soft);}

/* Header ------------------------------------------------------------------ */
.topbar{background:var(--navy-deep);color:rgba(246,236,223,0.85);font-size:11.5px;letter-spacing:0.3px;}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;padding-top:9px;padding-bottom:9px;flex-wrap:wrap;gap:6px;}
.topbar b{color:var(--gold-light);font-weight:700;}

header.site{background:var(--paper);border-bottom:4px double var(--navy);position:sticky;top:0;z-index:50;}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;padding-top:16px;padding-bottom:16px;gap:20px;flex-wrap:wrap;}
.brand{display:flex;align-items:center;}
.brand img{height:40px;width:auto;display:block;}
.brand .brand-text{font-family:'Bodoni Moda',serif;font-size:22px;color:var(--navy);letter-spacing:-0.2px;}
nav.main{display:flex;align-items:center;gap:22px;}
nav.main ul{list-style:none;display:flex;gap:20px;margin:0;padding:0;font-size:12.5px;font-weight:600;letter-spacing:0.2px;}
nav.main li{position:relative;}
nav.main a.top-link{padding:8px 0;display:inline-block;}
nav.main li:hover > a.top-link, nav.main a.top-link.active{color:var(--gold);}
.has-drop:hover .dropdown{display:block;}
.has-drop:focus-within .dropdown{display:block;}
.dropdown{display:none;position:absolute;top:100%;left:-18px;background:var(--cream-light);border-top:2px solid var(--navy);box-shadow:6px 6px 0 rgba(12,51,87,0.14);min-width:230px;padding:10px 0;z-index:60;}
.dropdown a{display:block;padding:10px 22px;font-size:13px;font-weight:500;color:var(--ink);}
.dropdown a:hover{background:var(--cream);color:var(--navy);}

/* Mobile nav. The original design hid the menu entirely below 940px with no
   replacement, which left phone visitors with no navigation at all. */
.nav-toggle{display:none;background:transparent;border:1.5px solid var(--navy);color:var(--navy);font-family:'Archivo',sans-serif;font-weight:700;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;padding:11px 16px;cursor:pointer;clip-path:polygon(0 0, calc(100% - 9px) 0, 100% 9px, 100% 100%, 0 100%);}

/* Hero -------------------------------------------------------------------- */
.hero{padding-top:70px;padding-bottom:56px;position:relative;overflow:hidden;}
.hero .ghost{position:absolute;font-family:'Kaushan Script',cursive;font-size:22vw;color:var(--navy);opacity:0.045;top:-4vw;right:-4vw;line-height:1;white-space:nowrap;z-index:0;pointer-events:none;transform:rotate(-3deg);}
.hero .grid{display:grid;grid-template-columns:1.15fr 0.85fr;gap:56px;align-items:center;position:relative;z-index:1;}
.hero h1{font-size:54px;line-height:1.1;margin:18px 0 22px;letter-spacing:-0.3px;}
.hero h1 em{font-style:italic;color:var(--gold);font-weight:500;}
.hero .deck{font-size:17.5px;color:var(--ink-soft);max-width:48ch;margin-bottom:32px;line-height:1.65;}
.hero .cta-row{display:flex;align-items:center;gap:26px;flex-wrap:wrap;}
.hero .see-more{font-size:13px;font-weight:700;letter-spacing:0.5px;color:var(--navy);border-bottom:1.5px solid var(--gold);padding-bottom:2px;}
.hero .photo-stack{position:relative;}
.hero .photo-stack::before{content:"";position:absolute;inset:0;background:var(--cream-light);border:1.5px solid var(--rule);transform:rotate(-3deg);z-index:0;}
.hero .photo-placeholder{aspect-ratio:4/5;position:relative;z-index:1;transform:rotate(1.4deg);box-shadow:8px 8px 0 rgba(12,51,87,0.14);}
.hero .stamp{position:absolute;top:-22px;right:-8px;width:112px;height:112px;z-index:2;transform:rotate(-11deg);filter:drop-shadow(2px 3px 2px rgba(12,51,87,0.25));}

.page-head{padding:64px 0 46px;border-bottom:1px solid var(--rule);}
.page-head h1{font-size:44px;margin:14px 0 14px;}
.page-head p{color:var(--ink-soft);font-size:17px;max-width:62ch;line-height:1.65;}

.ticker{background:var(--navy);padding:14px 0;overflow:hidden;}
.ticker .wrap{display:flex;justify-content:center;gap:34px;flex-wrap:wrap;font-size:11.5px;letter-spacing:2px;text-transform:uppercase;color:var(--gold-light);font-weight:700;}

/* Intro ------------------------------------------------------------------- */
.intro{padding:88px 0;}
.intro .grid{display:grid;grid-template-columns:1.5fr 1fr;gap:70px;}
.intro .lede{font-size:19px;line-height:1.75;color:var(--ink);max-width:66ch;}
.intro .lede .drop{float:left;font-family:'Bodoni Moda',serif;font-size:86px;line-height:0.78;font-weight:600;color:var(--navy);padding:8px 10px 0 0;}
.intro .facts{border-left:1px solid var(--rule);padding-left:36px;}
.intro .facts .fact{padding:16px 0;border-bottom:1px solid var(--rule);font-size:13px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--navy);}
.intro .facts .fact:first-child{padding-top:4px;}

/* Services ---------------------------------------------------------------- */
.svc-teaser{padding:20px 0 90px;}
.svc-teaser .pills{display:flex;flex-wrap:wrap;gap:12px;margin:30px 0 34px;}
.svc-teaser .pills a{font-size:13px;font-weight:700;letter-spacing:0.3px;color:var(--navy);border:1px solid var(--rule);padding:10px 18px;background:var(--cream-light);clip-path:polygon(0 0, calc(100% - 9px) 0, 100% 9px, 100% 100%, 0 100%);}
.svc-teaser .pills a:hover{border-color:var(--gold);color:var(--gold);}

.services-full{padding:50px 0 96px;}
.svc-block{padding:44px 0;border-bottom:1px solid var(--rule);scroll-margin-top:110px;}
.svc-block:first-child{padding-top:0;}
.svc-block .svc-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:10px;margin-bottom:14px;}
.svc-block .svc-name{font-family:'Bodoni Moda',serif;font-size:28px;color:var(--navy);}
.svc-block .svc-link{font-size:12px;font-weight:700;letter-spacing:0.5px;text-transform:uppercase;color:var(--gold);border-bottom:1px solid var(--gold);padding-bottom:2px;white-space:nowrap;}
.svc-block .svc-desc{font-size:16.5px;color:var(--ink-soft);max-width:68ch;margin-bottom:18px;line-height:1.7;}
.svc-chips{display:flex;flex-wrap:wrap;gap:9px;}
.svc-chips span{font-size:11.5px;font-weight:600;letter-spacing:0.3px;color:var(--navy);background:var(--cream-light);border:1px solid var(--rule);padding:6px 13px;clip-path:polygon(0 0, calc(100% - 7px) 0, 100% 7px, 100% 100%, 0 100%);}
.services-cta{margin-top:40px;display:flex;align-items:center;justify-content:space-between;background:var(--cream-light);border:1px solid var(--rule);box-shadow:6px 6px 0 rgba(12,51,87,0.08);padding:26px 32px;flex-wrap:wrap;gap:16px;}
.services-cta p{margin:0;font-family:'Bodoni Moda',serif;font-size:19px;color:var(--navy);font-style:italic;}

/* Quote coupon ------------------------------------------------------------ */
.quote-section{background:linear-gradient(158deg, var(--navy) 0%, var(--navy-deep) 100%);padding:96px 0;position:relative;}
.quote-section .wrap{display:flex;justify-content:center;}
.coupon{background:var(--paper);border:2px dashed rgba(246,236,223,0.55);max-width:760px;width:100%;padding:52px 60px;position:relative;transform:rotate(-0.5deg);box-shadow:0 24px 50px rgba(4,20,38,0.4);}
.coupon::before,.coupon::after{content:"";position:absolute;width:16px;height:16px;border:2px solid var(--navy);top:-9px;}
.coupon::before{left:-9px;border-right:none;border-bottom:none;}
.coupon::after{right:-9px;border-left:none;border-bottom:none;}
.coupon-head{text-align:center;margin-bottom:34px;}
.coupon-head .eyebrow{justify-content:center;}
.coupon-head .eyebrow::before{display:none;}
.coupon-head h2{font-size:30px;margin-top:10px;}
.coupon-head p{color:var(--ink-soft);font-size:14.5px;margin-top:10px;max-width:440px;margin-left:auto;margin-right:auto;}

/* The rendered form adopts the coupon grid. */
.coupon .cec-form{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.coupon .cec-form .cec-grid-2{display:contents;}
.coupon .cec-form > div:has(textarea), .coupon .cec-form > div:last-of-type, .coupon .cec-form > p{grid-column:1/-1;}
.coupon .cec-field label{font-size:11px;letter-spacing:1.5px;}
.coupon .cec-field :is(input,select,textarea){border:1px solid var(--rule);background:var(--cream-light);padding:13px 14px;font-size:14px;}
.coupon .cec-field :is(input,select,textarea):focus{outline:2px solid var(--gold);outline-offset:1px;box-shadow:none;}
.coupon .cec-field textarea{min-height:90px;}
.coupon .cec-submit{background:var(--gold);color:var(--navy-deep);}

.wave-div{display:block;width:100%;line-height:0;}

/* Reviews ----------------------------------------------------------------- */
.reviews{padding:88px 0;}
.rv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:36px;border-top:1px solid var(--rule);}
.rv-card{padding:34px 34px 6px;border-left:1px solid var(--rule);}
.rv-card:first-child{border-left:none;padding-left:0;}
.rv-card:last-child{padding-right:0;}
.rv-card .quote-mark{font-family:'Bodoni Moda',serif;font-size:52px;color:var(--gold);line-height:0.4;display:block;margin-bottom:14px;}
.rv-card .rv-body{font-style:italic;color:var(--ink-soft);font-size:14.5px;min-height:60px;}
.rv-card .stars{color:var(--gold);letter-spacing:3px;margin:16px 0 10px;font-size:15px;}
.rv-card .rv-name{font-size:12.5px;font-weight:700;color:var(--navy);letter-spacing:0.5px;}

/* Gallery ----------------------------------------------------------------- */
.gallery{padding:70px 0 96px;}
.ba-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:44px;margin-top:20px;}
.ba-pair .imgs{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.ba-pair .photo-placeholder{aspect-ratio:4/3;}
.ba-pair .tags{display:flex;justify-content:space-between;font-size:10.5px;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold);font-weight:700;margin:10px 2px 6px;}
.ba-pair .ba-cap{font-size:13px;color:var(--ink-soft);font-style:italic;text-align:center;}

/* Areas ------------------------------------------------------------------- */
.area{padding:90px 0;text-align:center;}
.area h2{font-size:32px;margin:12px 0 30px;}
.area .eyebrow{justify-content:center;}
.area .regions{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin-bottom:26px;}
.area .regions a{font-family:'Bodoni Moda',serif;font-style:italic;font-size:18px;color:var(--navy);border:1px solid var(--rule);padding:10px 22px;background:var(--paper);clip-path:polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 0 100%);}
.area .regions a:hover{border-color:var(--gold);color:var(--gold);}
.area .suburbs{color:var(--ink-soft);font-size:13.5px;max-width:640px;margin:0 auto;letter-spacing:0.3px;}

.closing{background:linear-gradient(160deg, var(--navy-deep) 0%, #051a2e 100%);padding:80px 0 0;text-align:center;color:var(--cream);}
.closing h2{color:var(--cream-light);font-size:34px;font-style:italic;font-weight:400;margin-bottom:26px;}

/* Footer ------------------------------------------------------------------ */
footer.site{background:#051a2e;color:rgba(246,236,223,0.75);padding:64px 0 0;margin-top:56px;}
.foot-grid{display:grid;grid-template-columns:1.3fr 0.9fr 0.9fr 0.9fr 1fr;gap:32px;padding-bottom:50px;border-bottom:1px solid var(--rule-light);}
.foot-brand img{width:220px;height:auto;margin-bottom:18px;}
.foot-brand p{font-size:13px;color:rgba(246,236,223,0.6);max-width:230px;}
footer.site h4{color:var(--gold-light);font-family:'Archivo',sans-serif;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;margin-bottom:16px;}
footer.site ul{list-style:none;margin:0;padding:0;}
footer.site li{margin-bottom:10px;font-size:13px;}
footer.site a:hover{color:var(--gold-light);}
.foot-bottom{display:flex;justify-content:space-between;padding:22px 0;font-size:11.5px;letter-spacing:0.5px;color:rgba(246,236,223,0.45);flex-wrap:wrap;gap:8px;}

.float-quote{position:fixed;right:26px;bottom:26px;z-index:80;background:var(--gold);color:var(--navy-deep);font-weight:700;font-size:13px;letter-spacing:1px;text-transform:uppercase;padding:16px 24px;clip-path:polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 0 100%);box-shadow:0 10px 24px rgba(8,37,65,0.35);transform:rotate(-1.5deg);}
.float-quote:hover{background:var(--gold-light);}

/* Contact ----------------------------------------------------------------- */
.contact-wrap{padding:70px 0 100px;}
.contact-grid{display:grid;grid-template-columns:0.8fr 1.2fr;gap:60px;align-items:start;}
.contact-info .ci-row{padding:20px 0;border-bottom:1px solid var(--rule);}
.contact-info .ci-label{font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold);margin-bottom:6px;}
.contact-info .ci-value{font-family:'Bodoni Moda',serif;font-size:21px;color:var(--navy);}
.contact-grid .coupon{max-width:none;border-color:rgba(12,51,87,0.3);transform:none;box-shadow:6px 6px 0 rgba(12,51,87,0.14);}
.contact-grid .coupon::before,.contact-grid .coupon::after{border-color:var(--navy);}

/* About ------------------------------------------------------------------- */
.about-section{padding:66px 0;border-bottom:1px solid var(--rule);}
.about-section h2{font-size:30px;margin-bottom:22px;}
.about-section .sub{color:var(--ink-soft);font-size:16.5px;max-width:64ch;margin-bottom:26px;line-height:1.65;}
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;margin-top:8px;}
.team-card{text-align:center;}
.team-card .photo-placeholder{aspect-ratio:1/1;border-radius:50%;margin-bottom:16px;}
.team-card .t-name{font-family:'Bodoni Moda',serif;font-size:19px;color:var(--navy);}
.team-card .t-role{font-size:11.5px;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold);margin-top:4px;}

/* Locations --------------------------------------------------------------- */
.loc-block{padding:56px 0;border-bottom:1px solid var(--rule);scroll-margin-top:110px;}
.loc-block:first-child{padding-top:0;}
.loc-block h2{font-size:30px;margin-bottom:14px;}
.loc-block p{color:var(--ink-soft);font-size:16.5px;max-width:68ch;margin-bottom:20px;line-height:1.7;}
.loc-tags{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:22px;}
.loc-tags span{font-size:12px;color:var(--navy);border:1px solid var(--rule);padding:7px 14px;background:var(--cream-light);clip-path:polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 0 100%);}

/* Collapse ---------------------------------------------------------------- */
@media (max-width:940px){
  .wrap{padding:0 24px;}
  .hero .grid{grid-template-columns:1fr;}
  .hero h1{font-size:38px;}
  .hero .photo-placeholder{aspect-ratio:16/9;}
  .hero .stamp{width:84px;height:84px;top:-16px;right:6px;}
  .intro .grid{grid-template-columns:1fr;}
  .intro .facts{border-left:none;padding-left:0;border-top:1px solid var(--rule);padding-top:24px;}
  .coupon{padding:40px 26px;transform:none;}
  .coupon .cec-form{grid-template-columns:1fr;}
  .ba-grid{grid-template-columns:1fr;}
  .rv-grid{grid-template-columns:1fr;}
  .rv-card{border-left:none !important;padding-left:0 !important;border-top:1px solid var(--rule);padding-top:28px;}
  .rv-card:first-child{border-top:none;padding-top:0;}
  .foot-grid{grid-template-columns:1fr 1fr;}
  .contact-grid{grid-template-columns:1fr;}
  .team-grid{grid-template-columns:1fr 1fr;}
  .page-head h1{font-size:32px;}

  .nav-toggle{display:inline-block;}
  nav.main{position:static;}
  nav.main ul{display:none;width:100%;flex-direction:column;gap:0;order:3;}
  nav.main ul.is-open{display:flex;}
  nav.main ul > li{border-bottom:1px solid var(--rule);}
  nav.main a.top-link{padding:14px 0;width:100%;font-size:14px;}
  .dropdown{display:block;position:static;box-shadow:none;border-top:none;min-width:0;padding:0 0 10px 14px;background:transparent;}
  .dropdown a{padding:8px 0;font-size:13px;}
  .float-quote{right:14px;bottom:14px;padding:13px 18px;font-size:12px;}
}

@media (prefers-reduced-motion:reduce){
  .btn{transition:none;}
  .btn:hover{transform:none;}
}

/* ==========================================================================
   BLOCK COMPATIBILITY
   Core blocks inject their own layout constraints and blockGap margins.
   Inside the design's named sections the ported CSS owns layout, so these
   neutralise WordPress's defaults rather than fighting them selector by selector.
   ========================================================================== */

:is(.hero,.intro,.svc-teaser,.reviews,.quote-section,.area,.closing,.page-head,.contact-wrap,.about-section,.services-full,.gallery) :is(.wp-block-group,.wp-block-columns,.wp-block-column){margin-block:0;}

.hero > .wrap, .intro > .wrap, .svc-teaser > .wrap, .reviews > .wrap,
.quote-section > .wrap, .area > .wrap, .closing > .wrap, .page-head > .wrap,
.contact-wrap > .wrap, .services-full > .wrap, .gallery > .wrap{max-width:1180px;}

/* Sections run full bleed; the .wrap inside does the constraining. */
:is(.hero,.intro,.svc-teaser,.reviews,.quote-section,.area,.closing,.page-head,.contact-wrap,.services-full,.gallery).wp-block-group{max-width:none;padding-left:0;padding-right:0;}

/* The design's grids must not be overridden by is-layout-flow child margins. */
.grid > *, .facts > *, .pills > *, .regions > *{margin-block:0;}

/* Buttons block: the design's .btn already carries the notch and shadow. */
.wp-block-buttons{gap:16px;}
.hero .cta-row .wp-block-buttons{margin:0;}

/* Paragraph spacing inside prose areas, matching the original rhythm. */
.lede p + p, .svc-desc p + p{margin-top:18px;}

/* Service pills and region links are real links inside paragraphs. */
.pills p, .regions p{margin:0;}


/* ==========================================================================
   FULL BLEED
   The design's sections span the viewport; the .wrap inside each one does all
   the constraining. These overrides stop core's constrained layout from
   capping section width or double padding the content inside it.
   ========================================================================== */

.wp-block-post-content > *,
.entry-content > *,
main > .wp-block-group{max-width:none;}

.wp-block-post-content,
.entry-content,
main.wp-block-group{max-width:none;padding-left:0;padding-right:0;margin-left:0;margin-right:0;width:100%;}

/* Neutralise global padding wherever it would fight the design's gutters. */
.has-global-padding{padding-left:0;padding-right:0;}
.has-global-padding > .alignfull{margin-left:0;margin-right:0;width:100%;}

/* Sections are always full width regardless of the layout class core applies. */
:is(.hero,.ticker,.intro,.svc-teaser,.reviews,.quote-section,.area,.closing,.page-head,
   .contact-wrap,.about-section,.services-full,.gallery,.loc-block){
  width:100%;
  max-width:none;
  margin-left:0;
  margin-right:0;
}

/* Body must not clip the fixed noise overlay or the sticky header. */
body{overflow-x:hidden;}

/* Core adds vertical margins between top level blocks; the sections own their
   own padding, so collapse the gap and let the rhythm come from the design. */
.wp-block-post-content > * + *{margin-block-start:0;}


/* ==========================================================================
   EDGE TO EDGE
   Twenty Twenty-Two applies an outer gutter through its own custom property
   and constrains the site wrapper. The design expects sections to touch the
   viewport edge with .wrap supplying the only gutter, so both are zeroed here.
   ========================================================================== */

html,body{margin:0;padding:0;max-width:100%;}

/* The parent theme's outer spacing token drives padding and negative margins
   in several of its rules at once. Zeroing the token neutralises all of them
   rather than chasing each selector. */
body,
.wp-site-blocks,
.editor-styles-wrapper{
  --wp--custom--spacing--outer:0px;
}

.wp-site-blocks{
  padding-left:0;
  padding-right:0;
  margin-left:0;
  margin-right:0;
  max-width:100%;
  overflow-x:clip;
}

/* Header, main and footer sit flush against each other and the viewport. */
.wp-site-blocks > *{
  margin-block-start:0;
  margin-block-end:0;
  max-width:none;
}

/* Template parts default to constrained layout in the parent theme. */
.wp-block-template-part > .wp-block-group.is-layout-constrained{
  max-width:none;
  padding-left:0;
  padding-right:0;
}

/* alignfull inside the parent's constrained containers uses a negative margin
   equal to the outer token; with the token at zero that resolves correctly. */
.wp-site-blocks .alignfull{
  margin-left:0;
  margin-right:0;
  width:100%;
  max-width:none;
}

/* Anything the design owns spans the full viewport width. */
:is(.hero,.ticker,.intro,.svc-teaser,.reviews,.quote-section,.area,.closing,.page-head,
   .contact-wrap,.about-section,.services-full,.gallery,.loc-block,.topbar,header.site,footer.site){
  width:100%;
  max-width:none;
  margin-left:0;
  margin-right:0;
  box-sizing:border-box;
}

@media (max-width:940px){
  .wrap{padding:0 20px;}
}


/* ==========================================================================
   VIDEO HERO
   Sits on the same 1180px column as the rest of the page rather than running
   full bleed. Copy and buttons overlay the footage, with a scrim carrying the
   contrast so text stays legible whatever frame is on screen.
   ========================================================================== */

.hero-video{
  position:relative;
  width:100%;
  max-width:none;
  margin:0;
  min-height:clamp(480px,76vh,780px);
  overflow:hidden;
  background:var(--navy-deep);
  display:flex;
  align-items:center;
}

.hero-video__media{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  z-index:0;
  display:block;
}
.hero-video__fallback{background:linear-gradient(158deg,var(--navy) 0%,var(--navy-deep) 100%);}

/* Contrast lives here, not in guesswork about the footage. */
.hero-video__scrim{
  position:absolute;
  inset:0;
  z-index:1;
  background:
    linear-gradient(90deg, rgba(8,37,65,0.90) 0%, rgba(8,37,65,0.74) 42%, rgba(8,37,65,0.28) 72%, rgba(8,37,65,0.15) 100%),
    linear-gradient(180deg, rgba(8,37,65,0.30) 0%, rgba(8,37,65,0) 40%);
}

.hero-video__inner{
  position:relative;
  z-index:2;
  width:100%;
  padding:clamp(40px,6vw,72px) 0;
}
.hero-video__inner .wrap{width:100%;}

.hero-video__h1{
  font-family:'Bodoni Moda',serif;
  font-weight:500;
  color:var(--cream-light);
  font-size:clamp(26px,3.4vw,46px);
  line-height:1.08;
  margin:0 0 14px;
  max-width:15ch;
}
.hero-video__sub{
  color:rgba(246,236,223,0.92);
  font-size:clamp(14.5px,1.25vw,17px);
  max-width:44ch;
  margin:0 0 26px;
}

.hero-video__cta{display:flex;flex-wrap:wrap;gap:14px;align-items:center;}
.btn-xl{font-size:14.5px;padding:18px 32px;letter-spacing:1.2px;}
.btn-on-dark{color:var(--cream-light);border-color:rgba(246,236,223,0.8);box-shadow:4px 4px 0 rgba(4,20,38,0.55);}
.btn-on-dark:hover{color:var(--navy-deep);background:var(--cream-light);}

.hero-video__trust{
  margin:22px 0 0;
  font-family:'Archivo',system-ui,sans-serif;
  font-size:11px;
  font-weight:700;
  letter-spacing:2.4px;
  text-transform:uppercase;
  color:var(--gold-light);
}

/* Brand logo in the header. */
.brand .cec-logo{height:46px;width:auto;display:block;}

@media (max-width:940px){
  .hero-video{
    margin:0;
    min-height:0;
    height:auto;
  }
  /* On phones the copy sets the height and the video fills behind it, so a
     tall portrait screen never crops the buttons out of view. */
  .hero-video__inner{padding:36px 0 32px;}
  .hero-video__scrim{
    background:linear-gradient(180deg, rgba(8,37,65,0.66) 0%, rgba(8,37,65,0.88) 55%, rgba(8,37,65,0.94) 100%);
  }
  .hero-video__h1{max-width:none;font-size:clamp(24px,6.4vw,32px);}
  .hero-video__sub{max-width:none;}
  .hero-video__cta{flex-direction:column;align-items:stretch;}
  .hero-video__cta .btn{justify-content:center;}
  .brand .cec-logo{height:34px;}
}

@media (prefers-reduced-motion:reduce){
  .hero-video__media{display:none;}
  .hero-video{background:linear-gradient(158deg,var(--navy) 0%,var(--navy-deep) 100%);}
}
/* ==========================================================================
   REVIEW RAIL
   Horizontal scroll rather than a timed carousel: nothing moves under the
   reader, every review is reachable by keyboard, and it degrades to a
   plain scrolling list without JavaScript.
   ========================================================================== */

.reviews{padding:clamp(64px,8vw,96px) 0;background:var(--cream);}
.rv-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:32px;}
.rv-head h2{font-size:clamp(26px,3vw,36px);margin:6px 0 0;}

.rv-score{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.rv-score__num{font-family:'Bodoni Moda',serif;font-size:30px;color:var(--navy);line-height:1;}
.rv-score__count{font-size:12.5px;color:var(--ink-soft);}

.rv-stars{display:inline-flex;gap:2px;line-height:1;}
.rv-star{color:rgba(12,51,87,0.22);font-size:16px;}
.rv-star.is-on{color:var(--gold);}

.rv-rail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(300px,1fr);gap:0;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin;padding-bottom:8px;border-top:1px solid var(--rule);}
.rv-rail:focus-visible{outline:2px solid var(--gold);outline-offset:4px;}

.rv-slide{scroll-snap-align:start;padding:30px 30px 24px;border-left:1px solid var(--rule);display:flex;flex-direction:column;gap:12px;background:transparent;}
.rv-slide:first-child{border-left:none;padding-left:0;}

.rv-slide .quote-mark{font-family:'Bodoni Moda',serif;font-size:52px;color:var(--gold);line-height:0.4;display:block;height:20px;}
.rv-body{font-style:italic;color:var(--ink-soft);font-size:14.5px;margin:0;flex:1;}

.rv-meta{display:flex;align-items:center;gap:10px;margin-top:4px;}
.rv-avatar{border-radius:50%;width:36px;height:36px;object-fit:cover;flex:none;}
.rv-name{display:block;font-size:12.5px;font-weight:700;color:var(--navy);letter-spacing:0.4px;}
.rv-when{display:block;font-size:11.5px;color:var(--ink-soft);}

.rv-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:30px;padding-top:24px;border-top:1px solid var(--rule);}
.rv-attrib{font-size:11.5px;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--ink-soft);margin-right:auto;}

@media (max-width:940px){
  .rv-rail{grid-auto-columns:minmax(84%,1fr);}
  .rv-slide{padding:26px 20px;}
  .rv-slide:first-child{padding-left:20px;border-left:1px solid var(--rule);}
  .rv-foot .btn{flex:1;justify-content:center;}
  .rv-attrib{width:100%;margin-bottom:4px;}
}


/* ==========================================================================
   TICKER ALIGNMENT
   The parent theme's flow layout adds a block margin to every child, which
   pushed the ticker items onto staggered lines inside their flex row.
   ========================================================================== */

.ticker .wrap > *,
.ticker .wrap > * + *{margin-block:0;}
.ticker .wrap{display:flex;align-items:center;justify-content:center;gap:18px 34px;flex-wrap:wrap;}

@media (max-width:940px){
  .ticker .wrap{gap:10px 20px;font-size:10.5px;letter-spacing:1.4px;}
}


/* ==========================================================================
   ABOUT CANVAS
   A single photograph sits behind the whole page. Contrast is carried by a
   scrim rather than by hoping the image is dark enough, so the copy passes
   contrast on any frame.
   ========================================================================== */

.about-canvas{position:relative;isolation:isolate;background:var(--navy-deep);}
.about-canvas::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  background-image:var(--about-bg);
  background-size:cover;
  background-position:center 52%;
  background-repeat:no-repeat;
  background-attachment:fixed;
}
.about-canvas__scrim{
  position:absolute;
  inset:0;
  z-index:1;
  background:linear-gradient(180deg, rgba(8,37,65,0.86) 0%, rgba(8,37,65,0.93) 30%, rgba(8,37,65,0.95) 100%);
}
.about-canvas__inner{position:relative;z-index:2;}

/* Inverted type for the sections sitting on the photograph. */
.page-head--ondark{border-bottom:1px solid var(--rule-light);}
.page-head--ondark h1{color:var(--cream-light);}
.page-head--ondark p{color:rgba(246,236,223,0.85);}

.about-section--ondark{border-bottom:1px solid var(--rule-light);}
.about-section--ondark h2{color:var(--cream-light);}
.about-section--ondark p{color:rgba(246,236,223,0.85);}
.about-section--ondark .sub{color:rgba(246,236,223,0.7);}
.about-section--ondark .loc-tags span{
  color:var(--cream-light);
  background:rgba(246,236,223,0.06);
  border-color:rgba(246,236,223,0.28);
}

.about-cols{display:grid;grid-template-columns:1.6fr 1fr;gap:56px;align-items:start;}
.about-cols__main p{max-width:66ch;font-size:17px;line-height:1.72;}
.about-cols__main p + p{margin-top:18px;}
.about-cols__side{display:flex;flex-direction:column;gap:24px;}

.about-facts{border-left:1px solid var(--rule-light);padding-left:26px;}
.about-facts .fact{
  padding:14px 0;
  border-bottom:1px solid var(--rule-light);
  font-size:12.5px;
  font-weight:700;
  letter-spacing:1.4px;
  text-transform:uppercase;
  color:var(--gold-light);
}
.about-facts .fact:first-child{padding-top:0;}

/* Team */
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;margin-top:28px;}
.team-card{text-align:center;}
.team-card__photo{width:100%;max-width:190px;margin:0 auto 16px;aspect-ratio:1/1;overflow:hidden;border-radius:50%;border:2px solid rgba(246,236,223,0.3);}
.team-card__photo img{width:100%;height:100%;object-fit:cover;display:block;}
.team-card__photo--empty{background:rgba(246,236,223,0.08);}
.team-card .t-name{font-family:'Bodoni Moda',serif;font-size:20px;color:var(--cream-light);}
.team-card .t-role{font-size:11.5px;letter-spacing:1.6px;text-transform:uppercase;color:var(--gold-light);margin-top:5px;}
.team-card .t-bio{font-size:14px;color:rgba(246,236,223,0.78);margin-top:12px;}
.t-tickets{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-top:12px;}
.t-tickets span{font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;font-weight:700;color:var(--cream-light);border:1px solid rgba(246,236,223,0.28);padding:5px 10px;}

@media (max-width:940px){
  .about-canvas::before{background-attachment:scroll;}
  .about-cols{grid-template-columns:1fr;gap:32px;}
  .about-facts{border-left:none;padding-left:0;border-top:1px solid var(--rule-light);padding-top:20px;}
  .team-grid{grid-template-columns:1fr 1fr;gap:24px;}
  .team-card__photo{max-width:140px;}
}


/* ==========================================================================
   ABOUT CANVAS FRAMING
   The source is a tall portrait phone photo. On a wide screen cover crops it
   to a horizontal band, so the focal point is pulled to the vehicle rather
   than left on the sky.
   ========================================================================== */

.about-canvas::before{background-position:center 52%;}

@media (min-width:1400px){
  .about-canvas::before{background-position:center 55%;}
}

@media (max-width:940px){
  /* Portrait source on a portrait screen needs almost no repositioning. */
  .about-canvas::before{background-position:center 46%;background-attachment:scroll;}
}


/* ==========================================================================
   SERVICES CANVAS
   Same treatment as the About page: one photograph behind the whole listing,
   contrast carried by a scrim rather than by hoping the image is dark.
   ========================================================================== */

.svc-canvas{position:relative;isolation:isolate;background:var(--navy-deep);}
.svc-canvas::before{content:"";position:absolute;inset:0;z-index:0;background-image:var(--svc-bg);background-size:cover;background-position:center 38%;background-repeat:no-repeat;background-attachment:fixed;}
.svc-canvas__scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg, rgba(8,37,65,0.88) 0%, rgba(8,37,65,0.94) 35%, rgba(8,37,65,0.96) 100%);}
.svc-canvas__inner{position:relative;z-index:2;}

.svc-canvas .svc-block{border-bottom:1px solid var(--rule-light);}
.svc-canvas .svc-name{color:var(--cream-light);}
.svc-canvas .svc-desc{color:rgba(246,236,223,0.85);}
.svc-canvas .svc-chips span{color:var(--cream-light);background:rgba(246,236,223,0.06);border-color:rgba(246,236,223,0.26);}
.svc-canvas .services-cta{background:rgba(246,236,223,0.06);border-color:rgba(246,236,223,0.26);box-shadow:none;}
.svc-canvas .services-cta p{color:var(--cream-light);}

/* Each service links to its own indexable page. */
.svc-more{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-top:18px;
  font-family:'Archivo',system-ui,sans-serif;
  font-size:12.5px;
  font-weight:700;
  letter-spacing:1.4px;
  text-transform:uppercase;
  color:var(--gold-light);
  border-bottom:1.5px solid var(--gold);
  padding-bottom:3px;
}
.svc-more::after{content:"\2192";}
.svc-more:hover{color:var(--cream-light);border-color:var(--cream-light);}

@media (max-width:940px){
  .svc-canvas::before{background-attachment:scroll;background-position:center 42%;}
}


/* ==========================================================================
   CANVAS CONTRAST
   Everything inside a photographic canvas inherits light ink from a single
   inherited rule rather than a list of per element overrides, so partial CSS
   can never leave dark text sitting on a dark scrim.
   ========================================================================== */

.svc-canvas{color:var(--cream-light);}
.svc-canvas :is(h1,h2,h3,h4,h5,h6){color:var(--cream-light);}
.svc-canvas p{color:rgba(246,236,223,0.92);}
.svc-canvas a{color:var(--gold-light);}
.svc-canvas a:hover{color:var(--cream-light);}

.svc-canvas .eyebrow{color:var(--gold-light);}
.svc-canvas .eyebrow::before{border-left-color:var(--gold-light);}

.svc-canvas .page-head{border-bottom:1px solid var(--rule-light);padding-bottom:40px;}
.svc-canvas .page-head h1{color:var(--cream-light);}
.svc-canvas .page-head p{color:rgba(246,236,223,0.9);}

.svc-canvas .svc-block,
.svc-canvas .loc-block{border-bottom:1px solid var(--rule-light);}
.svc-canvas .svc-link{color:var(--gold-light);border-bottom-color:var(--gold-light);}
.svc-canvas :is(.svc-chips,.loc-tags) span{
  color:var(--cream-light);
  background:rgba(246,236,223,0.07);
  border-color:rgba(246,236,223,0.28);
}
.svc-canvas .services-cta{
  background:rgba(246,236,223,0.07);
  border:1px solid rgba(246,236,223,0.28);
  box-shadow:none;
}
.svc-canvas .services-cta p{color:var(--cream-light);}
.svc-canvas .services-cta .btn-gold{color:var(--navy-deep);}
.svc-canvas .btn-gold{color:var(--navy-deep);}

/* A denser scrim: the source photo has bright sky and a yellow facade, and
   the earlier gradient did not hold contrast across the top of the page. */
.svc-canvas__scrim{
  background:linear-gradient(180deg, rgba(8,37,65,0.93) 0%, rgba(8,37,65,0.95) 40%, rgba(8,37,65,0.96) 100%);
}

.svc-canvas .services-full{padding-top:44px;}


/* ==========================================================================
   ABOUT PORTRAIT
   The owner photo sits beside the story rather than under it, and sticks on
   long desktop scrolls so the face stays with the words.
   ========================================================================== */

.about-cols{grid-template-columns:1.5fr 0.95fr;gap:52px;align-items:start;}

.about-portrait{margin:0;position:sticky;top:96px;}
.about-portrait img{
  width:100%;
  height:auto;
  display:block;
  border:1px solid rgba(246,236,223,0.25);
  box-shadow:8px 8px 0 rgba(4,20,38,0.45);
  clip-path:polygon(0 0, calc(100% - 22px) 0, 100% 22px, 100% 100%, 0 100%);
}
.about-portrait figcaption{
  margin-top:14px;
  font-family:'Archivo',system-ui,sans-serif;
  font-size:11.5px;
  font-weight:700;
  letter-spacing:2.2px;
  text-transform:uppercase;
  color:var(--gold-light);
}

/* Closing line of the story, set as a statement rather than body copy. */
.about-kicker{
  font-family:'Bodoni Moda',serif;
  font-style:italic;
  font-size:clamp(20px,2.2vw,27px);
  line-height:1.25;
  color:var(--cream-light) !important;
  margin-top:30px;
  padding-top:26px;
  border-top:1px solid var(--rule-light);
  max-width:none;
}

@media (max-width:940px){
  .about-cols{grid-template-columns:1fr;gap:34px;}
  .about-portrait{position:static;top:auto;max-width:420px;}
  .about-portrait img{clip-path:polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 0 100%);box-shadow:5px 5px 0 rgba(4,20,38,0.45);}
}


/* ==========================================================================
   CONTACT CANVAS
   Dappled garden light means bright patches anywhere on the frame, so the
   scrim runs heavier here than on the other canvases and the coupon keeps a
   solid ground of its own rather than sitting translucent over foliage.
   ========================================================================== */

.contact-canvas::before{background-position:center 55%;}
.contact-canvas .svc-canvas__scrim{
  background:linear-gradient(180deg, rgba(8,37,65,0.90) 0%, rgba(8,37,65,0.94) 45%, rgba(8,37,65,0.96) 100%);
}
.contact-canvas .contact-wrap{padding-top:44px;}

/* Contact rows read as light on dark here. */
.contact-canvas .contact-info .ci-row{border-bottom:1px solid var(--rule-light);}
.contact-canvas .contact-info .ci-label{color:var(--gold-light);}
.contact-canvas .contact-info .ci-value{color:var(--cream-light);}
.contact-canvas .contact-info .ci-value a{color:var(--cream-light);}
.contact-canvas .contact-info .ci-value a:hover{color:var(--gold-light);}

/* The quote coupon stays on paper. A form needs a solid ground to be usable,
   and translucent inputs over a photograph are a genuine accessibility problem. */
.contact-canvas .coupon{
  background:var(--paper);
  border:2px dashed rgba(12,51,87,0.35);
  box-shadow:8px 8px 0 rgba(4,20,38,0.45);
  transform:none;
}
.contact-canvas .coupon :is(h1,h2,h3,h4){color:var(--navy);}
.contact-canvas .coupon p{color:var(--ink-soft);}
.contact-canvas .coupon .eyebrow{color:var(--gold);}
.contact-canvas .coupon .eyebrow::before{border-left-color:var(--gold);}
.contact-canvas .coupon .cec-field label{color:var(--navy);}
.contact-canvas .coupon .cec-field :is(input,select,textarea){color:var(--ink);background:#FFFFFF;}
.contact-canvas .coupon .cec-submit{background:var(--gold);color:var(--navy-deep);}

@media (max-width:940px){
  .contact-canvas::before{background-attachment:scroll;background-position:center 50%;}
}


/* ==========================================================================
   CROSS LINKS
   Service to place and place to service. Cards are real links with real
   descriptive text, not a keyword list.
   ========================================================================== */

.xlink{background:var(--cream);padding:clamp(56px,7vw,84px) 0;border-top:1px solid var(--rule);}
.xlink h2{font-size:clamp(24px,2.8vw,34px);margin:8px 0 28px;}
.xlink h3{font-size:19px;margin:0 0 14px;}

.xlink-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);}
.xlink-card{
  display:flex;
  flex-direction:column;
  gap:7px;
  padding:22px 24px;
  background:var(--paper);
  transition:background 0.15s ease;
}
.xlink-card:hover{background:var(--cream-light);}
.xlink-card__title{
  font-family:'Bodoni Moda',serif;
  font-size:17px;
  color:var(--navy);
  line-height:1.25;
}
.xlink-card:hover .xlink-card__title{color:var(--gold);}
.xlink-card__subs{font-size:12.5px;color:var(--ink-soft);line-height:1.5;}

.xlink-subs{margin-top:40px;padding-top:32px;border-top:1px solid var(--rule);}
.xlink-foot{margin-top:28px;font-size:14px;color:var(--ink-soft);}
.xlink-foot a{color:var(--navy);border-bottom:1.5px solid var(--gold);padding-bottom:2px;font-weight:600;}
.xlink-foot a:hover{color:var(--gold);}

@media (max-width:940px){
  .xlink-grid{grid-template-columns:1fr;}
  .xlink-card{padding:18px 20px;}
}


/* ==========================================================================
   EMBEDDED REVIEWS
   The Jotform widget renders in its own iframe and brings its own styling.
   We control the frame around it and reserve height so the page does not
   jump when the third party script finishes loading.
   ========================================================================== */

.reviews--embed{background:var(--cream);}
.rv-embed{
  margin-top:8px;
  min-height:320px;
  contain:layout;
}
.rv-embed iframe{width:100% !important;border:0;display:block;}
.rv-embed > div:empty{min-height:320px;}

@media (max-width:940px){
  .rv-embed{min-height:380px;}
  .rv-embed > div:empty{min-height:380px;}
}


/* EMBED SPACING
   With the heading removed the widget carries the section on its own, so the
   top padding tightens and the rule above does the separating. */
.reviews--embed{padding-top:clamp(40px,4.5vw,56px);}
.reviews--embed .rv-embed{margin-top:0;}


/* ==========================================================================
   PROMO DIALOG
   Centred panel on desktop, bottom sheet on phones. Google treats a mobile
   overlay that covers content on arrival as an intrusive interstitial, so on
   small screens this occupies the lower portion and leaves the page visible.
   ========================================================================== */

.cec-promo{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 0.22s ease;}
.cec-promo.is-open{opacity:1;}
.cec-promo[hidden]{display:none;}

.cec-promo__backdrop{position:absolute;inset:0;background:rgba(4,20,38,0.62);}

.cec-promo__panel{
  position:relative;
  width:min(620px,calc(100% - 48px));
  max-height:calc(100vh - 64px);
  overflow-y:auto;
  background:var(--paper);
  border:1px solid rgba(12,51,87,0.18);
  box-shadow:0 28px 60px rgba(4,20,38,0.5);
  padding:clamp(44px,5vw,60px) clamp(38px,5vw,56px) clamp(38px,4vw,48px);
  transform:translateY(10px);
  transition:transform 0.22s ease;
  /* The notch is the design's one shape flourish; it replaces the dashed rule. */
  clip-path:polygon(0 0, calc(100% - 28px) 0, 100% 28px, 100% 100%, 0 100%);
}
.cec-promo.is-open .cec-promo__panel{transform:translateY(0);}

.cec-promo__x{
  position:absolute;top:14px;right:20px;
  background:none;border:0;cursor:pointer;
  font-size:26px;line-height:1;color:var(--ink-soft);
  padding:6px 10px;
}
.cec-promo__x:hover{color:var(--navy);}
.cec-promo__x:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}

.cec-promo h2{font-size:clamp(30px,3.8vw,42px);margin:12px 0 14px;line-height:1.08;}
.cec-promo__lede{font-size:16px;line-height:1.6;color:var(--ink-soft);margin:0 0 28px;max-width:44ch;}

.cec-promo__form{display:grid;gap:20px;}
.cec-promo__consent{display:flex;gap:12px;align-items:flex-start;font-size:14px;color:var(--ink-soft);line-height:1.55;cursor:pointer;}
.cec-promo__consent input{margin-top:3px;flex:none;width:17px;height:17px;accent-color:var(--gold);}

.cec-promo__submit{width:100%;justify-content:center;padding:19px 32px;font-size:15px;}
.cec-promo__no{
  background:none;border:0;cursor:pointer;
  font-family:'Archivo',system-ui,sans-serif;
  font-size:12.5px;letter-spacing:1px;text-transform:uppercase;font-weight:700;
  color:var(--ink-soft);padding:6px;
}
.cec-promo__no:hover{color:var(--navy);}

.cec-promo__code{
  font-family:'Bodoni Moda',serif;
  font-size:clamp(30px,4.6vw,44px);
  letter-spacing:1px;
  color:var(--navy);
  background:var(--cream);
  border:1px solid var(--rule);
  padding:16px 20px;
  text-align:center;
  margin:0 0 16px;
}
.cec-promo__done .wp-block-button__link{width:100%;justify-content:center;}

@media (max-width:940px){
  .cec-promo{align-items:flex-end;}
  .cec-promo__panel{
    width:100%;
    max-height:88vh;
    padding:38px 24px 32px;
    border:0;
    border-top:3px solid var(--gold);
    clip-path:none;
    transform:translateY(100%);
  }
  .cec-promo.is-open .cec-promo__panel{transform:translateY(0);}
  .cec-promo h2{font-size:28px;}
  .cec-promo__lede{font-size:15px;}
}

@media (prefers-reduced-motion:reduce){
  .cec-promo,.cec-promo__panel{transition:none;}
}


/* PROMO CLOSE AFFORDANCE
   With the backdrop no longer closing the dialog, the X has to be obvious
   and comfortably tappable rather than a faint glyph in the corner. */
.cec-promo__x{
  top:12px;
  right:12px;
  width:42px;
  height:42px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:24px;
  color:var(--navy);
  background:rgba(12,51,87,0.06);
  border:1px solid rgba(12,51,87,0.16);
  padding:0;
  transition:background 0.15s ease, color 0.15s ease;
}
.cec-promo__x:hover{background:var(--navy);color:var(--cream-light);border-color:var(--navy);}
.cec-promo__backdrop{cursor:default;}

@media (max-width:940px){
  .cec-promo__x{top:10px;right:10px;width:44px;height:44px;}
}


/* ==========================================================================
   ADDRESS AUTOCOMPLETE
   Our own suggestion list rather than Google's web component, so it inherits
   the site's type and colours and cannot break when their element changes.
   ========================================================================== */

.cec-field--address{position:relative;}

.cec-ac-list{
  position:absolute;
  top:100%;
  left:0;
  right:0;
  z-index:240;
  margin:4px 0 0;
  padding:0;
  list-style:none;
  background:#FFFFFF;
  border:1.5px solid var(--rule);
  box-shadow:6px 6px 0 rgba(12,51,87,0.14);
  max-height:280px;
  overflow-y:auto;
}
.cec-ac-list[hidden]{display:none;}

.cec-ac-item{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:11px 15px;
  cursor:pointer;
  border-bottom:1px solid rgba(12,51,87,0.08);
}
.cec-ac-item:last-child{border-bottom:0;}
.cec-ac-item:hover,
.cec-ac-item.is-active{background:var(--cream);}

.cec-ac-main{
  font-family:'Archivo',system-ui,sans-serif;
  font-size:14.5px;
  font-weight:600;
  color:var(--navy);
  line-height:1.3;
}
.cec-ac-sub{
  font-family:'Archivo',system-ui,sans-serif;
  font-size:12.5px;
  color:var(--ink-soft);
  line-height:1.3;
}

@media (max-width:940px){
  .cec-ac-list{max-height:240px;box-shadow:4px 4px 0 rgba(12,51,87,0.14);}
  .cec-ac-item{padding:13px 14px;}
}

/* ==========================================================================
   READING MEASURE
   Contrast on this site already passes comfortably; what made running text
   tiring was line length. Paragraphs that fill the 1180px column reach about
   138 characters, well past the 60 to 75 the eye tracks comfortably. These
   caps are in ch units so they hold as the type scales.
   ========================================================================== */

.services-full p,
.about-section p,
.loc-block p,
.xlink p,
.wp-block-post-content > p{max-width:68ch;}

/* Inverted grounds: a touch more line height, since light on dark needs air. */
.svc-canvas p,
.about-canvas p,
.cec-invert p{line-height:1.72;}

/* Body copy inside the design's prose areas. */
.svc-canvas .svc-desc,
.svc-canvas .loc-block p{color:rgba(246,236,223,0.9);}


/* ==========================================================================
   TEXT WEIGHT
   Archivo at 400 sits light for running text at this size. Body copy moves to
   450, and copy on dark grounds to 470, because light type on a dark surface
   optically thins compared with the same weight on paper.
   ========================================================================== */

p, li, dd, dt,
.svc-desc, .loc-block p, .deck, .sub, .ba-cap, .rv-body,
.about-cols__main p, .xlink-card__subs, .page-head p,
.cec-field label + *, .contact-info .ci-value{
  font-weight:450;
}

.intro .lede{font-weight:450;}

/* Inverted grounds carry a touch more weight. */
.svc-canvas p,
.svc-canvas .svc-desc,
.svc-canvas .loc-block p,
.about-canvas p,
.cec-invert p,
.hero-video__sub,
footer.site li,
footer.site p{
  font-weight:470;
}

/* Form controls and their labels benefit from the same treatment. */
.cec-field :is(input,select,textarea){font-weight:450;}
.cec-promo__lede,
.cec-promo__consent{font-weight:450;}

/* Small print stays lighter so the hierarchy still reads. */
.rv-when, .xlink-foot, .foot-bottom{font-weight:400;}
