/* Tanner & Hall: site styles for the WordPress + Elementor build
   ---------------------------------------------------------------------------------------------------------------
   Ported from the static site's assets/css/styles.css. Same design tokens, same rules, re-targeted at the markup
   Elementor produces:

     Container (e-con)      carries the original class (e.g. .hero-grid, .sec-head) in Advanced > CSS Classes
     Heading widget         class on the widget wrapper; the <hN> inside inherits its type (see "Elementor adapter")
     Text Editor widget     keeps the original element *inside* the editor (e.g. <p class="lede">), and its wrapper
                            gets a "w-" mirror class (w-lede) so grid/flex placement rules can target the wrapper
     Button widget          .th-btn + one of --primary/--ghost/--navy, + --arrow for the arrow icon, + js-speak to
                            open the "Speak to Our Team" dialog
     Image widget           class on the wrapper (.ph, .fig ...); the photo is cropped with object-fit
     Icon List widget       .sector-list / .svc-list on the wrapper; items are plain text (no icons)

   Colours and the font come from Elementor > Site Settings (Global Colors / Global Fonts) through the
   --e-global-* custom properties, with the brand values as fallbacks. Change a Global Color and the site follows.

   Sections, in order:
   tokens · Elementor adapter · base · type helpers · buttons & links · header · sections · home hero · proof band ·
   areas · feature split · benefits · services index · sectors · gallery · process · page hero · prose · CTA ·
   footer · mobile action bar · forms · misc · accreditations · "Speak to our team" dialog · motion · print ·
   utilities (generated)
   --------------------------------------------------------------------------------------------------------------- */

/* ---------- Tokens (on body, where Elementor defines the --e-global-* variables) ---------- */
body{
  --navy:var(--e-global-color-primary,#06172E); --navy-2:var(--e-global-color-th_navy2,#0B2140); --navy-3:var(--e-global-color-th_navy3,#132C4F);
  --yellow:var(--e-global-color-secondary,#EDB840); --yellow-d:var(--e-global-color-th_yellowd,#D9A22A); --yellow-h:var(--e-global-color-th_yellowh,#F4C95F);
  --ink:var(--e-global-color-primary,#06172E); --text:var(--e-global-color-text,#1F2B3D); --muted:var(--e-global-color-accent,#4D5A6B); --muted-on-navy:var(--e-global-color-th_mutednavy,#B9C3D1);
  --stone:var(--e-global-color-th_stone,#F3F1EC); --paper:#FFFFFF; --footer:var(--e-global-color-th_footer,#041122);
  --line:rgba(6,23,46,.14); --line-navy:rgba(255,255,255,.16);
  --font:var(--e-global-typography-text-font-family,"Helvetica Neue"),Helvetica,Arial,sans-serif;
  --wrap:1320px; --gutter:clamp(20px,4vw,56px);
  --sec:clamp(72px,9vw,136px);
  --radius:2px;
  --ease:cubic-bezier(.2,.7,.2,1);
  /* Icons drawn with CSS masks (the visual editor strips inline SVG from Text Editor content) */
  --i-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M3 10h13M11 4.5 16.5 10 11 15.5' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
  --i-phone:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2a1 1 0 0 1 1-.25c1.1.37 2.3.57 3.6.57a1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.45.57 3.57a1 1 0 0 1-.25 1z'/%3E%3C/svg%3E");
}

/* ---------- Elementor adapter ----------
   Neutralises Elementor's generic container/widget defaults so the rules below behave as they did on plain
   HTML. :where() keeps these at the lowest possible specificity, so any site class overrides them. */
.th :where(.e-con){display:block;width:auto;max-width:none;min-width:0;padding:0;margin:0;gap:0;position:static;
  flex-direction:row;flex-wrap:nowrap;align-items:normal;justify-content:normal;align-content:normal;text-align:inherit}
.th :where([data-elementor-id]>.e-con){max-width:none}
.th :where(.e-con.reveal,.e-con.header,.e-con.wrap,.e-con.hero,.e-con.split .media,.e-con.h1col,.e-con.pbanner,.e-con.speak-in){position:relative}
.th .e-con.e-con{--position:static}
/* Elementor applies flex-direction via `.e-con-full.e-flex{flex-direction:var(--flex-direction)}` (specificity 0,2,0)
   with a default of column; plain CSS defaults to row, so reset the variable here and set it where a rule needs column */
.th .e-con{--flex-direction:row;--flex-grow:0;--flex-shrink:1;--flex-basis:auto}
.th .e-con.area{--flex-direction:column}
.th :where(.elementor-element){align-self:auto}
/* Elementor caps every widget at max-width:100% with `.elementor.elementor .e-con>.elementor-widget` (0,4,0);
   the few widgets that need their own max-width restate it at (0,4,0) here */
.th .elementor .e-con>.w-prose{max-width:720px}
.th .elementor .pbanner>.ph{max-width:calc(var(--wrap) + var(--gutter)*2)}
.th .elementor .e-con>.speak-desc{max-width:44ch}
/* Elementor zeroes widget bottom margins with `.e-con .elementor-widget.elementor-widget` (0,3,0); the widgets
   whose bottom margin is part of the design restate it here (found with qa/tools: every other widget margin is 0) */
.th .area>.ph.elementor-widget{margin-block-end:26px}
.th .area>.top.elementor-widget{margin-block-end:22px}
.th .e-con>.svc-list.elementor-widget{margin-block-end:36px}
.th .foot-grid .elementor-widget-heading.elementor-widget{margin-block-end:18px}
.th .speak-in>.speak-title.elementor-widget{margin-block-end:12px}
.th .speak-in>.speak-desc.elementor-widget{margin-block-end:26px}
/* Heading widget: the class sits on the wrapper; the heading element inherits its typography */
.elementor-widget-heading{font-family:var(--font);color:var(--ink);font-weight:700;letter-spacing:-.022em;line-height:1.06}
/* (0,1,0) on purpose: tag rules from the static CSS such as `.phero h1` still out-rank it */
.elementor-heading-title{font:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}
/* Image widget: block images, no centring */
.elementor-widget-image{text-align:start}
.th :where(.elementor-widget-image) img{display:block}
.th :where(.elementor-widget-image) a{display:block}
/* Elementor shrinks linked SVGs to 48px; the logo rules below set their own widths */
.th .elementor-widget-image a img[src$=".svg"]{width:auto}
.elementor-widget-image figure.wp-caption{margin:0}
/* Icon List widget: plain list */
.elementor-widget-icon-list .elementor-icon-list-items{list-style:none;margin:0;padding:0}
.th .elementor-widget .elementor-icon-list-item{display:block;align-items:normal}
/* Elementor removes underlines from every link (`.elementor a`, 0,1,1). Links that are underlined on the static
   site say so explicitly in the rules below (.prose a, .ext-acc, .contact-aside dd a, form labels) */
.th .elementor .form label a,.notfound p a{text-decoration:underline}
/* Shortcode / HTML widgets add no box of their own */
.elementor-shortcode{display:contents}
/* Divider widget used for thin rules */
.th .elementor-widget-divider .elementor-divider{padding:0}
/* Header/footer templates are wrapped by Elementor (and by Pro's Theme Builder); let the header stick to the page */
.th-site-header,.th-site-header>.elementor,.elementor-location-header{display:contents}
/* Reveal animation off while editing in Elementor */
.elementor-editor-active .reveal,.elementor-editor-preview .reveal{opacity:1!important;transform:none!important}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;font-family:var(--font);font-size:1.0625rem;line-height:1.6;color:var(--text);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg,picture{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--font);color:var(--ink);font-weight:700;letter-spacing:-.022em;line-height:1.06;margin:0}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0}
main{display:block}
.wrap{width:100%;max-width:calc(var(--wrap) + var(--gutter)*2);margin:0 auto;padding:0 var(--gutter)}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:12px;top:-60px;z-index:200;background:var(--yellow);color:var(--navy);padding:12px 18px;font-weight:700;text-decoration:none}
.skip:focus{top:12px}
:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}
.on-light :focus-visible,.header :focus-visible,main :focus-visible{outline-color:var(--navy)}
.dark :focus-visible,.footer :focus-visible,.mobile-bar :focus-visible{outline-color:var(--yellow)}

/* ---------- Type helpers ---------- */
.eyebrow{display:flex;align-items:center;gap:14px;font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);margin:0 0 22px}
.eyebrow::before{content:"";width:28px;height:2px;background:var(--yellow);flex:none}
.dark .eyebrow{color:#fff}
.display{font-size:clamp(2.6rem,6.4vw,6rem);line-height:.98;letter-spacing:-.035em}
.h2{font-size:clamp(2rem,3.9vw,3.4rem);letter-spacing:-.03em}
.h3{font-size:clamp(1.35rem,1.9vw,1.6rem);letter-spacing:-.018em;line-height:1.15}
.lede{font-size:clamp(1.12rem,1.45vw,1.32rem);line-height:1.55;color:var(--text)}
.dark .lede,.dark p{color:var(--muted-on-navy)}
.dark h1,.dark h2,.dark h3,.dark .elementor-widget-heading{color:#fff}
.amp{color:var(--yellow)}
.muted{color:var(--muted)}

/* ---------- Buttons & links ---------- */
/* Button widget (.th-btn) and the few raw .btn elements output by PHP (form submit, fallbacks) */
.th-btn .elementor-button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:52px;padding:0 26px;font:700 1rem/1 var(--font);letter-spacing:.005em;text-decoration:none;border:2px solid transparent;border-radius:var(--radius);cursor:pointer;background:transparent;color:inherit;fill:currentColor;transition:background-color .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}
.th-btn .elementor-button-content-wrapper{display:flex;align-items:center;gap:12px}
.th-btn--arrow .elementor-button-content-wrapper::after{content:"";width:18px;height:18px;flex:none;background:currentColor;-webkit-mask:var(--i-arrow) center/contain no-repeat;mask:var(--i-arrow) center/contain no-repeat;transition:transform .25s var(--ease)}
.th-btn--arrow .elementor-button:hover .elementor-button-content-wrapper::after{transform:translateX(3px)}
.th-btn--phone .elementor-button-content-wrapper::before{content:"";width:18px;height:18px;flex:none;background:currentColor;-webkit-mask:var(--i-phone) center/contain no-repeat;mask:var(--i-phone) center/contain no-repeat}
.btn svg{width:18px;height:18px;flex:none;transition:transform .25s var(--ease)}
.btn:hover svg{transform:translateX(3px)}
.th-btn--primary .elementor-button,.btn-primary{background:var(--yellow);color:var(--navy)}
.th-btn--primary .elementor-button:hover,.th-btn--primary .elementor-button:focus,.btn-primary:hover{background:var(--yellow-h);color:var(--navy)}
.th-btn--navy .elementor-button{background:var(--navy);color:#fff}
.th-btn--navy .elementor-button:hover,.th-btn--navy .elementor-button:focus{background:var(--navy-3);color:#fff}
.th-btn--ghost .elementor-button,.btn-ghost{border-color:currentColor;color:var(--navy);background:transparent}
.th-btn--ghost .elementor-button:hover,.btn-ghost:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.th-btn--ghost .elementor-button:focus:not(:hover){color:var(--navy)}
.dark .th-btn--ghost .elementor-button,.dark .btn-ghost,.dark .th-btn--ghost .elementor-button:focus:not(:hover){color:#fff}
.dark .th-btn--ghost .elementor-button:hover,.dark .btn-ghost:hover{background:#fff;color:var(--navy);border-color:#fff}
.btns{display:flex;flex-wrap:wrap;gap:12px}
.link{display:inline-flex;align-items:center;gap:10px;font-weight:700;text-decoration:none;color:var(--ink);padding:6px 0;border-bottom:2px solid var(--yellow)}
.link::after{content:"";width:16px;height:16px;flex:none;background:currentColor;-webkit-mask:var(--i-arrow) center/contain no-repeat;mask:var(--i-arrow) center/contain no-repeat;transition:transform .25s var(--ease)}
.link:hover::after,a:hover>.link::after,.area:hover .link::after{transform:translateX(4px)}
.dark .link{color:#fff}

/* ---------- Header ---------- */
.header{position:sticky;top:0;z-index:100;background:#fff;border-bottom:1px solid var(--line)}
/* no backdrop-filter here: it would make the header the containing block for the fixed mobile menu */
.header .wrap{display:flex;align-items:center;gap:28px;height:84px}
.th-nav-w{display:contents}
.brand{flex:none;display:block}
.th .brand img,.th .brand a img[src$=".svg"]{width:178px;height:auto}
.nav{margin-left:auto}
.nav ul{list-style:none;display:flex;gap:4px}
.nav a{display:block;padding:10px 11px;font-size:.92rem;font-weight:500;text-decoration:none;color:var(--ink);position:relative}
.nav a::after{content:"";position:absolute;left:11px;right:11px;bottom:4px;height:2px;background:var(--yellow);transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease)}
.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1)}
.nav a[aria-current="page"]{font-weight:700}
.phone-btn,.phone-btn-w .elementor-button{flex:none;display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:0 18px;background:var(--yellow);color:var(--navy);font-weight:700;font-size:.98rem;line-height:1.6;text-decoration:none;border-radius:var(--radius);font-variant-numeric:tabular-nums;letter-spacing:.01em}
.phone-btn:hover,.phone-btn-w .elementor-button:hover,.phone-btn-w .elementor-button:focus{background:var(--yellow-h);color:var(--navy)}
.phone-btn svg{width:18px;height:18px}
.phone-btn-w{flex:none}
.phone-btn-w .elementor-button-content-wrapper{display:flex;align-items:center;gap:10px}
.phone-btn-w .elementor-button-content-wrapper::before{content:"";width:18px;height:18px;flex:none;background:currentColor;-webkit-mask:var(--i-phone) center/contain no-repeat;mask:var(--i-phone) center/contain no-repeat}
.menu-btn{display:none;margin-left:auto;align-items:center;gap:10px;min-height:44px;background:none;border:0;padding:10px 4px;font:700 .95rem var(--font);color:var(--ink);cursor:pointer}
.menu-btn .bars{width:22px;height:14px;position:relative}
.menu-btn .bars::before,.menu-btn .bars::after,.menu-btn .bars span{content:"";position:absolute;left:0;right:0;height:2px;background:currentColor;transition:transform .25s var(--ease),opacity .2s}
.menu-btn .bars::before{top:0}.menu-btn .bars span{top:6px}.menu-btn .bars::after{top:12px}
.menu-open .menu-btn .bars::before{transform:translateY(6px) rotate(45deg)}
.menu-open .menu-btn .bars::after{transform:translateY(-6px) rotate(-45deg)}
.menu-open .menu-btn .bars span{opacity:0}
@media (max-width:1180px){
  .menu-btn{display:inline-flex}
  body.menu-open{overflow:hidden}
  .header .phone-btn-w{display:none}
  .nav{position:fixed;inset:84px 0 0 0;background:#fff;margin:0;padding:12px var(--gutter) 120px;overflow-y:auto;visibility:hidden;opacity:0;transform:translateY(-8px);transition:opacity .2s,transform .25s var(--ease),visibility 0s .25s}
  .menu-open .nav{visibility:visible;opacity:1;transform:none;transition:opacity .2s,transform .25s var(--ease)}
  .nav ul{flex-direction:column;gap:0}
  .nav li{border-bottom:1px solid var(--line)}
  .nav a{font-size:1.4rem;font-weight:700;padding:18px 0;letter-spacing:-.01em}
  .nav a::after{left:0;right:auto;width:28px;bottom:12px}
  .header .nav .nav-phone{display:inline-flex;margin-top:28px;padding:0 22px;font-size:1.05rem;min-height:54px;letter-spacing:.01em}
  .nav .nav-phone::after{display:none}
}
.nav .nav-phone{display:none}
@media (max-width:480px){.header .wrap{height:72px}.th .brand img,.th .brand a img[src$=".svg"]{width:148px}.nav{inset:72px 0 0 0}}
/* Logged-in admin bar: keep the sticky header below it */
.admin-bar .header{top:32px}
@media (max-width:782px){.admin-bar .header{top:46px}}
@media (max-width:600px){.admin-bar .header{top:0}}

/* ---------- Sections ---------- */
.sec{padding:var(--sec) 0}
.sec-tight{padding:calc(var(--sec)*.6) 0}
.stone{background:var(--stone)}
.dark{background:var(--navy);color:var(--muted-on-navy)}
.sec-head{display:grid;grid-template-columns:repeat(12,1fr);gap:24px var(--gutter);margin-bottom:clamp(40px,5vw,72px)}
.sec-head>.w-eyebrow{grid-column:1/-1}
.sec-head>.elementor-widget-heading{grid-column:1/span 7}
.sec-head>.w-lede{grid-column:8/-1;align-self:end}
.sec-head .lede{margin:0}
.sec-head.stack>.elementor-widget-heading{grid-column:1/span 9}
.sec-head.stack>.w-lede{grid-column:1/span 7;margin-top:8px}
@media (max-width:900px){.sec-head>.elementor-widget-heading,.sec-head>.w-lede,.sec-head.stack>.elementor-widget-heading,.sec-head.stack>.w-lede{grid-column:1/-1}}
.rule .elementor-divider-separator{border-top:1px solid var(--line)}

/* ---------- Home hero ---------- */
.hero{background:var(--navy);color:#fff;padding:clamp(64px,8vw,120px) 0 0;position:relative;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:40px var(--gutter);align-items:end}
.hero-grid>.h1col{grid-column:1/-1}
.hero-grid>.ledecol{grid-column:1/span 6}
.hero-grid>.actcol{grid-column:8/-1;justify-self:end;text-align:left}
.hero h1{color:#fff;position:relative}
.hero .wrap{position:relative;z-index:1}
.hero-grid>.h1col{position:relative}
.w-roofline{position:absolute;inset:auto 0 0 0;height:0}
.roofline{position:absolute;right:0;bottom:.12em;width:33%;height:auto;color:var(--yellow);opacity:.6;pointer-events:none}
.w-roofline .roofline{bottom:calc(.12em);}
@media (max-width:1240px){.w-roofline{display:none}}
@media (max-width:1180px){.hero-grid{gap:28px var(--gutter)}.hero-grid>.ledecol{grid-column:1/span 9}.hero-grid>.actcol{grid-column:1/-1;justify-self:start}}
@media (max-width:480px){.hero .btns>.th-btn{flex:1 1 100%}.hero .btns>.th-btn .elementor-button{width:100%}}
.hero .lede{color:#D3DAE4;margin-bottom:26px}
/* Sector chips: sit under the lede and share a baseline with the CTA row; secondary in weight to the CTAs */
.sector-chips{list-style:none;margin:30px 0 0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:10px;min-height:52px}
.chip{display:inline-flex;align-items:center;gap:12px;min-height:46px;padding:0 18px 0 20px;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:rgba(255,255,255,.04);
  color:#fff;font:700 1rem/1.2 var(--font);letter-spacing:.005em;text-decoration:none;transition:border-color .2s var(--ease),background-color .2s var(--ease)}
.chip::after{content:"";width:16px;height:16px;flex:none;background:var(--yellow);-webkit-mask:var(--i-arrow) center/contain no-repeat;mask:var(--i-arrow) center/contain no-repeat;transition:transform .25s var(--ease)}
.chip:hover{border-color:var(--yellow);background:rgba(237,184,64,.1)}
.chip:hover::after{transform:translateX(3px)}
.chip:focus-visible{outline:3px solid var(--yellow);outline-offset:3px;border-color:var(--yellow)}
.hero .actcol .btns{min-height:52px}
/* Phones: the chips become a two-row index (the site's list language), clearly lighter than the stacked CTAs */
@media (max-width:600px){
  .sector-chips{display:block;margin-top:26px;border-top:1px solid rgba(255,255,255,.18);min-height:0}
  .sector-chips li{border-bottom:1px solid rgba(255,255,255,.18)}
  .chip{display:flex;justify-content:space-between;width:100%;min-height:52px;padding:0 4px;border:0;border-radius:0;background:none;font-size:1.05rem}
  .chip:hover{background:none;color:var(--yellow)}
  .chip:focus-visible{outline-offset:0}
}
@media (prefers-reduced-motion:reduce){.chip::after{transition:none}}
.triptych{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:14px;position:relative;z-index:1}
.triptych img{width:100%;height:clamp(220px,27vw,400px);object-fit:cover;background:var(--navy-2)}
.hero-foot{position:relative;background:linear-gradient(to bottom,var(--navy) 0,var(--navy) calc(clamp(56px,7vw,96px) + clamp(110px,13.5vw,200px)),#fff 0);padding-top:clamp(56px,7vw,96px)}
.trip-wrap{position:relative}
.caption,.cap-caption .wp-caption-text{display:block;font-size:.8rem;color:var(--muted);margin-top:10px;letter-spacing:.01em;line-height:1.6}
@media (max-width:900px){
  .hero-grid>.ledecol,.hero-grid>.actcol{grid-column:1/-1;justify-self:start}
  .triptych{grid-template-columns:1fr 1fr}
  .triptych>:first-child{grid-column:1/-1}
  .triptych img{height:auto;aspect-ratio:4/3}
  .triptych>:first-child img{aspect-ratio:16/10}
}

/* ---------- Proof band ---------- */
.proof{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.proof>.elementor-element{padding:34px 28px 30px;border-left:1px solid var(--line)}
.proof>.elementor-element:first-child{border-left:0;padding-left:0}
.proof strong{display:block;font-size:clamp(2.1rem,3.6vw,3.2rem);line-height:1;letter-spacing:-.035em;color:var(--ink);margin-bottom:12px;font-variant-numeric:tabular-nums}
.proof span{display:block;font-size:.95rem;color:var(--muted);line-height:1.45}
@media (max-width:900px){.proof{grid-template-columns:1fr 1fr}.proof>.elementor-element:nth-child(3){border-left:0;padding-left:0}.proof>.elementor-element:nth-child(n+3){border-top:1px solid var(--line)}}
@media (max-width:420px){.proof>.elementor-element{padding:24px 16px 22px}.proof>.elementor-element:nth-child(even){padding-right:0}}

/* ---------- Areas (three ways in) ---------- */
.areas{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(28px,3vw,48px)}
.area{display:flex;flex-direction:column;text-decoration:none;color:inherit}
.area .ph{aspect-ratio:5/4;overflow:hidden;background:var(--stone);margin-bottom:26px}
.area .ph img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.area:hover .ph img{transform:scale(1.035)}
.area .top{margin-bottom:22px}
.area .top .elementor-divider-separator{border-top:2px solid var(--navy)}
.area h3{margin-bottom:12px}
.area p{color:var(--muted);margin-bottom:20px}
.area>.w-link{margin-top:auto;align-self:flex-start}
@media (max-width:900px){.areas{grid-template-columns:1fr}.area .ph{aspect-ratio:16/10}}

/* ---------- Feature split ---------- */
.split{display:grid;grid-template-columns:repeat(12,1fr);gap:40px var(--gutter);align-items:center}
.split>.media{grid-column:1/span 6;position:relative}
.split>.body{grid-column:8/-1}
.split.rev>.media{grid-column:7/-1;grid-row:1}
.split.rev>.body{grid-column:1/span 5;grid-row:1}
.split .media .ph{overflow:hidden;aspect-ratio:4/5;background:var(--navy-2)}
.split .media .ph.land{aspect-ratio:4/3}
.split .media .ph img{width:100%;height:100%;object-fit:cover}
@media (max-width:900px){.split>.media,.split>.body,.split.rev>.media,.split.rev>.body{grid-column:1/-1;grid-row:auto}.split .media .ph{aspect-ratio:16/11}}

/* RoofCare feature */
.roofcare .brandline{font-size:.78rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--yellow);margin:0 0 18px}
.rc-word{font-size:clamp(3.2rem,7.4vw,6.6rem);line-height:.92;letter-spacing:-.045em;color:#fff}
.rc-word .rc-sub{display:block;font-size:clamp(1.05rem,1.4vw,1.25rem);letter-spacing:.18em;text-transform:uppercase;color:#fff;margin-top:18px;line-height:1.3}
.svc-list .elementor-icon-list-items{display:grid;grid-template-columns:1fr 1fr;gap:0 32px;counter-reset:s}
.svc-list{margin:30px 0 36px}
.th .svc-list .elementor-icon-list-item{counter-increment:s;display:flex;gap:14px;padding:13px 0;border-top:1px solid var(--line-navy);font-size:.98rem;line-height:1.4;color:#E6EBF2;align-items:flex-start}
.svc-list .elementor-icon-list-item::before{content:counter(s,decimal-leading-zero);font-size:.72rem;font-weight:700;letter-spacing:.08em;color:var(--yellow);padding-top:.25em;min-width:20px;font-variant-numeric:tabular-nums}
.th .svc-list .elementor-icon-list-text{align-self:auto;padding:0}
.on-light .svc-list .elementor-icon-list-item,.svc-list.light .elementor-icon-list-item{border-top-color:var(--line);color:var(--text)}
@media (max-width:640px){.svc-list .elementor-icon-list-items{grid-template-columns:1fr}}
.contact-point{padding:22px 0 0;border-top:2px solid var(--yellow);margin-bottom:8px;max-width:46ch}
.contact-point strong{display:block;color:#fff;font-size:1.06rem;margin-bottom:4px}
.contact-point p{margin:0;font-size:.98rem}

/* ---------- Benefits row (numbered, inline) ---------- */
.benefits{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);gap:0;border-top:1px solid var(--line);margin-top:8px}
.benefits li{padding:22px 20px 4px 0;font-weight:700;color:var(--ink);font-size:1rem;line-height:1.35}
.benefits li span{display:block;font-size:.72rem;letter-spacing:.12em;color:var(--muted);margin-bottom:10px}
.benefits.col{grid-template-columns:1fr}
.benefits.col li{display:flex;gap:18px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--line)}
.benefits.col li span{margin:0;min-width:24px}
.benefits.facts li span{min-width:84px}
@media (max-width:900px){.benefits{grid-template-columns:1fr 1fr}}

/* ---------- Services index ---------- */
.index-list{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:0 var(--gutter);counter-reset:i}
.index-list li{counter-increment:i;border-top:1px solid var(--line)}
.index-list li:nth-last-child(-n+2){border-bottom:1px solid var(--line)}
.index-list a,.index-list .row{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:16px;padding:20px 0;text-decoration:none;color:var(--ink)}
.index-list a::before,.index-list .row::before{content:counter(i,decimal-leading-zero);font-size:.75rem;font-weight:700;letter-spacing:.1em;color:var(--muted);font-variant-numeric:tabular-nums}
.index-list a::after{content:"";width:18px;height:18px;background:var(--navy);opacity:.35;-webkit-mask:var(--i-arrow) center/contain no-repeat;mask:var(--i-arrow) center/contain no-repeat;transition:transform .25s var(--ease),opacity .2s}
.index-list .t{font-size:clamp(1.1rem,1.5vw,1.3rem);font-weight:700;letter-spacing:-.012em}
.index-list .d{display:block;font-size:.92rem;font-weight:400;color:var(--muted);letter-spacing:0;margin-top:3px}
.index-list a:hover::after{transform:translateX(4px);opacity:1}
.index-list a:hover .t{text-decoration:underline;text-decoration-color:var(--yellow);text-decoration-thickness:2px;text-underline-offset:5px}
@media (max-width:760px){.index-list{grid-template-columns:1fr}.index-list li:nth-last-child(2){border-bottom:0}}
.index-list.three{grid-template-columns:repeat(3,1fr)}
.index-list.three li:nth-last-child(3){border-bottom:1px solid var(--line)}
@media (max-width:1000px){.index-list.three{grid-template-columns:1fr 1fr}.index-list.three li:nth-last-child(3){border-bottom:0}}
@media (max-width:640px){.index-list.three{grid-template-columns:1fr}.index-list.three li:nth-last-child(2){border-bottom:0}}

/* ---------- Sectors ---------- */
.sectors{display:grid;grid-template-columns:repeat(12,1fr);gap:40px var(--gutter)}
.sectors>.intro{grid-column:1/span 5}
.sectors>.list{grid-column:7/-1}
.sectors>.intro.wide{grid-column:1/span 6}
.sectors>.intro.wide+.list{grid-column:8/-1}
.sector-list .elementor-icon-list-items{columns:2;column-gap:var(--gutter)}
.th .sector-list .elementor-icon-list-item{break-inside:avoid;padding:16px 0;border-top:1px solid var(--line);font-weight:700;color:var(--ink);font-size:clamp(1.05rem,1.35vw,1.2rem);letter-spacing:-.01em;line-height:1.6}
.clients{margin-top:34px;padding-top:24px;border-top:2px solid var(--navy)}
.clients p{color:var(--muted)}
.clients .names{font-size:clamp(1.25rem,1.9vw,1.6rem);font-weight:700;color:var(--ink);letter-spacing:-.015em;line-height:1.3;margin-bottom:12px}
@media (max-width:900px){.sectors>.intro,.sectors>.list,.sectors>.intro.wide,.sectors>.intro.wide+.list{grid-column:1/-1}}
@media (max-width:480px){.sector-list .elementor-icon-list-items{columns:1}}

/* ---------- Gallery (Image widgets with captions) ---------- */
.gallery{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
.gallery>.fig{grid-column:span 4}
.gallery .fig figure{overflow:hidden}
.gallery .fig img{width:100%;aspect-ratio:77/50;object-fit:cover;background:var(--stone);transition:transform .8s var(--ease)}
.gallery .fig:hover img{transform:scale(1.03)}
.gallery .wp-caption-text{position:relative;font-size:.86rem;color:var(--muted);padding:10px 0 6px;display:flex;justify-content:space-between;gap:12px;line-height:1.6;background:var(--paper)}
.stone .gallery .wp-caption-text{background:var(--stone)}
.gallery .wp-caption-text b{color:var(--ink);font-weight:700}
.gallery.home>.fig:nth-child(1){grid-column:span 7}
.gallery.home>.fig:nth-child(2){grid-column:span 5}
.gallery.home>.fig:nth-child(1) img,.gallery.home>.fig:nth-child(2) img{aspect-ratio:auto;height:clamp(240px,30vw,430px)}
.gallery.work>.s4{grid-column:span 4}.gallery.work>.s5{grid-column:span 5}.gallery.work>.s6{grid-column:span 6}.gallery.work>.s7{grid-column:span 7}
.gallery.work>.lg img{aspect-ratio:auto;height:clamp(240px,30vw,430px)}
@media (max-width:760px){.gallery>.fig,.gallery.home>.fig:nth-child(n),.gallery.work>.fig[class]{grid-column:1/-1}.gallery.home>.fig:nth-child(n) img,.gallery.work>.lg img{height:auto;aspect-ratio:77/50}}
.dark .gallery .wp-caption-text,.dark .gallery .wp-caption-text b{color:#fff}

/* ---------- Process (numbered steps; one container per step) ---------- */
.process{display:grid;grid-template-columns:repeat(5,1fr);gap:0;counter-reset:p}
.process>.item{counter-increment:p;padding:28px 24px 8px 0;border-top:2px solid var(--line-navy);position:relative}
/* Elementor uses .e-con::before for background overlays (absolutely positioned); the step number takes it over */
.th .process>.item::before{position:static;width:auto;height:auto;opacity:1;mix-blend-mode:normal;border:0;transition:none;content:counter(p,decimal-leading-zero);display:block;font-size:2.4rem;font-weight:700;letter-spacing:-.04em;color:var(--yellow);line-height:1;margin-bottom:18px;font-variant-numeric:tabular-nums}
.process>.item::after{content:"";position:absolute;top:-2px;left:0;width:36px;height:2px;background:var(--yellow)}
.process h3{font-size:1.15rem;margin-bottom:8px;letter-spacing:-.01em}
.process p{font-size:.95rem;margin:0}
.on-light .process>.item{border-top-color:var(--line)}
.on-light .process>.item::before{color:var(--navy)}
@media (max-width:1000px){.process{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.process{grid-template-columns:1fr}}

/* ---------- Page hero (inner) ---------- */
.phero{background:var(--navy);color:#fff;padding:clamp(56px,7vw,104px) 0 clamp(56px,7vw,96px)}
.phero .crumbs{font-size:.84rem;margin-bottom:34px;color:var(--muted-on-navy)}
.phero .crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.phero .crumbs li+li::before{content:"/";margin-right:8px;color:var(--yellow)}
.phero .crumbs a{color:#fff;text-decoration:none}
.phero .crumbs a:hover{text-decoration:underline}
.phero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px var(--gutter);align-items:end}
.phero h1{color:#fff;font-size:clamp(2.4rem,5.4vw,4.8rem);line-height:1;letter-spacing:-.033em}
.phero .lede{color:#D3DAE4;margin:0}
.phero .tag{font-size:clamp(1.2rem,1.8vw,1.5rem);font-weight:700;color:#fff;margin:22px 0 0;letter-spacing:-.01em}
.phero .btns{margin-top:30px}
@media (max-width:900px){.phero-grid{grid-template-columns:1fr}}
.pbanner{position:relative;background:var(--navy)}
.pbanner>.ph{max-width:calc(var(--wrap) + var(--gutter)*2);margin:0 auto;padding:0 var(--gutter);position:relative;z-index:1}
.pbanner .ph img{width:100%;aspect-ratio:21/8;object-fit:cover;background:var(--navy-2)}
.pbanner::after{content:"";position:absolute;left:0;right:0;bottom:0;height:45%;background:#fff;z-index:0}
.pbanner.to-stone::after{background:var(--stone)}
@media (max-width:700px){.pbanner .ph img{aspect-ratio:16/10}}

/* ---------- Prose / content ---------- */
.prose,.w-prose{max-width:720px}
.prose h2{letter-spacing:-.022em;font-size:clamp(1.5rem,2.4vw,2rem);margin:2em 0 .6em}
.prose h3{letter-spacing:-.022em;font-size:1.2rem;margin:1.6em 0 .5em}
.prose p,.prose li{color:var(--text)}
.prose ul{padding-left:1.2em;margin:0 0 1em}
.prose li{margin:.3em 0}
.prose a{text-decoration-line:underline;text-decoration-color:var(--yellow);text-decoration-thickness:2px;text-underline-offset:3px}
/* Points: two-column list of short headed paragraphs (one container per point) */
.points{display:grid;grid-template-columns:repeat(2,1fr);gap:0 var(--gutter)}
.points>.item{padding:26px 0;border-top:1px solid var(--line)}
.points h3{font-size:1.2rem;margin-bottom:8px;letter-spacing:-.012em}
.points p{color:var(--muted);margin:0}
.dark .points>.item{border-top-color:var(--line-navy)}
.dark .points p{color:var(--muted-on-navy)}
@media (max-width:760px){.points{grid-template-columns:1fr}}
.pull{font-size:clamp(1.5rem,2.7vw,2.25rem);font-weight:700;letter-spacing:-.022em;line-height:1.2;color:var(--ink);max-width:22ch;margin:0}
.dark .pull{color:#fff}
.badges{display:flex;flex-wrap:wrap;gap:10px}
.badges>.item{border:1px solid var(--line);padding:10px 14px;font-size:.84rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.dark .badges>.item,.footer .badges>.item{border-color:var(--line-navy);color:#fff}
.badges>.item b{color:var(--yellow)}

/* ---------- CTA ---------- */
.cta{background:var(--navy);color:#fff;padding:clamp(72px,9vw,128px) 0;position:relative;overflow:hidden}
.cta-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:40px var(--gutter);align-items:end}
.cta h2,.cta .elementor-widget-heading{color:#fff}
.cta p{color:var(--muted-on-navy);max-width:52ch}
.cta .tel{display:block;font-size:clamp(2rem,4vw,3.4rem);font-weight:700;letter-spacing:-.03em;color:#fff;text-decoration:none;line-height:1;margin-bottom:10px;font-variant-numeric:tabular-nums}
.cta .tel:hover{color:var(--yellow)}
.cta .mail{color:#fff;font-weight:500;text-decoration:none;border-bottom:1px solid var(--line-navy)}
.cta .mail:hover{border-color:var(--yellow)}
.cta .btns{margin-top:30px}
@media (max-width:900px){.cta-grid{grid-template-columns:1fr}}

/* ---------- Footer ---------- */
.footer{background:var(--footer);color:var(--muted-on-navy);padding:clamp(56px,7vw,96px) 0 0;font-size:.95rem}
.footer a{color:#fff;text-decoration:none}
.footer a:hover{text-decoration:underline;text-decoration-color:var(--yellow);text-underline-offset:4px}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:40px var(--gutter)}
.foot-grid h2,.foot-grid .elementor-widget-heading{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--yellow);margin:0 0 18px;font-weight:700;line-height:1.06}
.footer.dark .foot-grid .elementor-widget-heading,.footer.dark .foot-grid h2{color:var(--yellow)}
.foot-grid ul{list-style:none}
.foot-grid li{margin:0 0 10px}
.th .foot-brand img,.th .foot-logo img{width:210px;margin-bottom:22px}
.foot-brand p{max-width:34ch}
.foot-contact address{font-style:normal;line-height:1.7}
.foot-contact .tel{font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums}
.foot-acc{margin-top:48px;padding:28px 0;border-top:1px solid var(--line-navy);display:flex;flex-wrap:wrap;gap:16px 32px;align-items:center;justify-content:space-between}
.foot-acc>.w-lbl{font-size:.75rem}
.foot-acc .lbl{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--muted-on-navy)}
.foot-base{border-top:1px solid var(--line-navy);padding:22px 0 26px;display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;font-size:.86rem}
.foot-base ul{list-style:none;display:flex;gap:22px}
@media (max-width:1000px){.foot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.foot-grid{grid-template-columns:1fr}}

/* ---------- Mobile action bar (Text Editor in the footer template) ---------- */
.mobile-bar{display:none}
.mobile-bar .call::before{content:"";width:18px;height:18px;flex:none;background:currentColor;-webkit-mask:var(--i-phone) center/contain no-repeat;mask:var(--i-phone) center/contain no-repeat}
@media (max-width:760px){
  .mobile-bar{display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--navy);border-top:1px solid var(--line-navy);padding:10px 12px calc(10px + env(safe-area-inset-bottom));gap:10px}
  .mobile-bar a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;font-weight:700;font-size:.98rem;text-decoration:none;border-radius:var(--radius)}
  .mobile-bar .call{color:#fff;border:2px solid rgba(255,255,255,.5)}
  .mobile-bar .survey{background:var(--yellow);color:var(--navy)}
  body{padding-bottom:76px}
}

/* ---------- Forms ([th_enquiry_form]) ---------- */
.form{display:grid;grid-template-columns:1fr 1fr;gap:22px 24px}
.field{display:flex;flex-direction:column;gap:8px}
.field.full{grid-column:1/-1}
.field label,.field .lbl{font-weight:700;font-size:.95rem;color:var(--ink)}
.field .opt{font-weight:400;color:var(--muted)}
.field input,.field select,.field textarea{font:inherit;font-size:1rem;color:var(--ink);background:#fff;border:1px solid #8C96A3;border-radius:var(--radius);padding:14px 14px;min-height:52px;width:100%;transition:border-color .2s,box-shadow .2s}
.field textarea{min-height:160px;resize:vertical}
.field select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%2306172E' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;padding-right:44px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(237,184,64,.75)}
.field [aria-invalid="true"]{border-color:#B3261E;box-shadow:0 0 0 1px #B3261E}
.err{font-size:.88rem;color:#B3261E;font-weight:700;min-height:0}
.err:empty{display:none}
.check{display:grid;grid-template-columns:24px 1fr;gap:12px;align-items:start;font-size:.95rem;color:var(--text)}
.check input{width:22px;height:22px;margin:2px 0 0;accent-color:var(--navy)}
.form .submit{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:16px}
.form-summary{grid-column:1/-1;border-left:4px solid #B3261E;background:#FCEEEE;padding:14px 18px;color:#7A1A14;font-weight:700}
.form-summary[hidden]{display:none}
.form-summary a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.success{border-top:4px solid var(--yellow);background:var(--stone);padding:36px clamp(20px,3vw,40px)}
.success h2{font-size:clamp(1.6rem,2.6vw,2.2rem);margin-bottom:12px}
/* Honeypot: off-screen for people, still present for bots */
.th-hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
@media (max-width:640px){.form{grid-template-columns:1fr}}
.contact-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:56px var(--gutter);align-items:start}
.contact-aside{position:sticky;top:110px}
.contact-aside dl{margin:0}
.contact-aside dt{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--muted);margin:0 0 6px}
.contact-aside dd{margin:0 0 26px;font-size:1.08rem;color:var(--ink)}
.contact-aside dd a{color:var(--ink);font-weight:700;}
.contact-aside dd a:not(.map-card){text-decoration-line:underline;text-decoration-color:var(--yellow);text-decoration-thickness:2px;text-underline-offset:4px}
.contact-aside .big{font-size:1.8rem;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.contact-aside address{font-style:normal}
.map-card{display:block;border:1px solid var(--line);padding:22px;text-decoration:none;background:var(--stone);margin-top:6px}
.map-card:hover{border-color:var(--navy)}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr}.contact-aside{position:static}}

/* ---------- Misc ---------- */
.notfound{min-height:60vh;display:flex;align-items:center}
.notfound>.wrap{flex:1}
.center-cta{display:flex;justify-content:flex-end;align-items:end;gap:24px;flex-wrap:wrap;margin-top:40px}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-navy)}
.stat-row>.elementor-element{padding:28px 24px 0 0}
.stat-row strong{display:block;font-size:clamp(2.2rem,4vw,3.4rem);color:#fff;letter-spacing:-.035em;line-height:1;margin-bottom:10px}
@media (max-width:640px){.stat-row{grid-template-columns:1fr}}

/* ---------- Accreditations (NFRC, EB Safety Group, CAA) ---------- */
/* Text links */
.th .ext-acc{color:inherit;text-decoration:underline;text-decoration-color:var(--yellow);text-decoration-thickness:2px;text-underline-offset:.18em;transition:color .2s,background-color .2s}
.th .ext-acc:hover{color:#8A6000}
.th .dark .ext-acc:hover,.th .footer .ext-acc:hover{color:var(--yellow)}
.th .badges .ext-acc{display:block;padding:10px 14px;text-decoration:none}
.th .badges .ext-acc:hover{background:var(--yellow);color:var(--navy)}
/* Logo chips (Image widgets with links): identical size, original logo colours (NFRC on white, EB Safety Group on navy) */
.th .acc-chip a{display:flex;align-items:center;justify-content:center;height:64px;width:176px;padding:12px 18px;border:1px solid var(--line);transition:border-color .2s,transform .2s}
.acc-chip.light a{background:#fff}
.acc-chip.navy a{background:var(--navy)}
.th .acc-chip img,.th .acc-chip a img[src$=".svg"]{display:block;max-height:38px;width:auto;max-width:100%}
.acc-chip a:hover{border-color:var(--yellow)}
.footer .acc-chip a,.dark .acc-chip a{border-color:var(--line-navy)}
.footer .acc-chip.light a{border-color:#fff}
.footer .acc-chip a:hover{border-color:var(--yellow)}
.badges{align-items:stretch}
.badges>.item:not(.acc-chip){display:flex;align-items:center;min-height:64px}
.badges>.acc-chip{padding:0;border:0}
.acc-logos{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 28px;padding:0}
@media (max-width:420px){.th .acc-chip a{width:150px;height:58px;padding:10px 14px}.th .acc-chip img,.th .acc-chip a img[src$=".svg"]{max-height:34px}.badges>.item:not(.acc-chip){min-height:58px}}
.badges>.badge-link{padding:0}
.th .badges>.badge-link .ext-acc{display:flex;align-items:center;height:100%;padding:10px 14px;text-decoration:none}
.th .badges>.badge-link .ext-acc:hover{background:var(--yellow);color:var(--navy)}

/* ---------- "Speak to our team" dialog (native <dialog> in footer.php; content = Elementor template) ---------- */
html.speak-lock{overflow:hidden}
.speak{width:min(620px,calc(100% - 32px));max-width:none;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);margin:auto;padding:0;border:0;border-top:3px solid var(--yellow);border-radius:var(--radius);background:var(--navy);color:var(--muted-on-navy);box-shadow:0 30px 80px rgba(2,8,18,.5);overflow:auto;overscroll-behavior:contain}
.speak::backdrop{background:rgba(3,12,26,.74);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.speak[open]{animation:speak-in .32s var(--ease)}
.speak[open]::backdrop{animation:speak-fade .32s var(--ease)}
@keyframes speak-in{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
@keyframes speak-fade{from{opacity:0}to{opacity:1}}
.speak-in{position:relative;padding:clamp(28px,5vw,48px) clamp(22px,5vw,48px) clamp(26px,4vw,40px)}
.speak .eyebrow{margin-bottom:16px}
.speak-title{font-size:clamp(1.75rem,3.2vw,2.3rem);letter-spacing:-.028em;line-height:1.08;color:#fff;margin:0 56px 12px 0}
.speak .speak-desc,.speak .speak-desc p{margin:0 0 26px;font-size:1.02rem;line-height:1.55;max-width:44ch}
.speak-x{position:absolute;top:14px;right:14px;z-index:2;display:grid;place-items:center;width:46px;height:46px;padding:0;background:none;border:1px solid var(--line-navy);border-radius:var(--radius);color:#fff;cursor:pointer;transition:border-color .2s var(--ease),color .2s var(--ease)}
.speak-x svg{width:20px;height:20px}
.speak-x:hover{border-color:var(--yellow);color:var(--yellow)}
.speak-list{margin:0;padding:0;border-top:1px solid var(--line-navy)}
.speak-opt{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;padding:20px 0;border-bottom:1px solid var(--line-navy)}
.speak-ico{display:grid;place-items:center;width:48px;height:48px;border:1px solid rgba(237,184,64,.45);border-radius:var(--radius);color:var(--yellow)}
.speak-ico svg{width:22px;height:22px}
.speak-txt{display:flex;flex-direction:column;gap:4px;min-width:0}
.speak-lbl{font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-on-navy)}
.speak-val{color:#fff;font-weight:700;font-size:1.12rem;line-height:1.25;letter-spacing:-.005em;overflow-wrap:anywhere}
.speak-num{font-size:clamp(1.35rem,2.4vw,1.6rem);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.speak-opt .th-btn .elementor-button,.speak-opt .btn{min-width:132px}
.speak .speak-alt{margin:22px 0 0;font-size:.95rem}
.speak-alt a{color:#fff;font-weight:700;white-space:nowrap;text-decoration:none;border-bottom:2px solid var(--yellow);padding-bottom:2px}
.speak-alt a:hover{color:var(--yellow)}
@media (max-width:560px){
  .speak-opt{grid-template-columns:auto minmax(0,1fr);gap:14px 16px;padding:18px 0}
  .speak-opt>.th-btn{grid-column:1/-1}
  .speak-opt .th-btn .elementor-button{width:100%}
  .speak-ico{width:44px;height:44px}
}
@media (prefers-reduced-motion:reduce){.speak[open],.speak[open]::backdrop{animation:none}.speak-x{transition:none}}

/* ---------- Motion ---------- */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}.area .ph img,.gallery img{transition:none}}

/* ---------- Print ---------- */
@media print{.header,.mobile-bar,.cta,.footer,.speak{display:none}body{padding:0}}

/* ---------- Utilities (generated by build/convert.py from the static markup's inline styles) ---------- */
/* BEGIN UTILITIES */
/* Only classes used by a widget or container are written. On a Heading widget the class sits on the wrapper, so the rule targets the heading inside. */
.u-btc-navy-mt-34-maxw-none:not(.elementor-widget-heading),.u-btc-navy-mt-34-maxw-none>.elementor-heading-title{border-top-color:var(--navy) !important;margin-top:34px !important;max-width:none !important}
.u-fs-12rem-mb-8,.u-fs-12rem-mb-8>.elementor-heading-title{font-size:1.2rem !important}
.u-fs-12rem-mb-8:not(.elementor-widget-heading),.u-fs-12rem-mb-8>.elementor-heading-title{margin-bottom:8px !important}
.u-fs-clamp15rem-24vw-2rem-mb-10,.u-fs-clamp15rem-24vw-2rem-mb-10>.elementor-heading-title{font-size:clamp(1.5rem,2.4vw,2rem) !important}
.u-fs-clamp15rem-24vw-2rem-mb-10:not(.elementor-widget-heading),.u-fs-clamp15rem-24vw-2rem-mb-10>.elementor-heading-title{margin-bottom:10px !important}
.u-mt-0:not(.elementor-widget-heading),.u-mt-0>.elementor-heading-title{margin-top:0 !important}
.u-mt-28:not(.elementor-widget-heading),.u-mt-28>.elementor-heading-title{margin-top:28px !important}
.u-mt-30:not(.elementor-widget-heading),.u-mt-30>.elementor-heading-title{margin-top:30px !important}
.u-mt-34:not(.elementor-widget-heading),.u-mt-34>.elementor-heading-title{margin-top:34px !important}
.u-pb-0:not(.elementor-widget-heading),.u-pb-0>.elementor-heading-title{padding-bottom:0 !important}
.u-pb-clamp56-7vw-96:not(.elementor-widget-heading),.u-pb-clamp56-7vw-96>.elementor-heading-title{padding-bottom:clamp(56px,7vw,96px) !important}
.u-pt-sec55:not(.elementor-widget-heading),.u-pt-sec55>.elementor-heading-title{padding-top:calc(var(--sec)*.55) !important}
.u-pt-sec7:not(.elementor-widget-heading),.u-pt-sec7>.elementor-heading-title{padding-top:calc(var(--sec)*.7) !important}
.u-self-end:not(.elementor-widget-heading),.u-self-end>.elementor-heading-title{align-self:end !important}
/* END UTILITIES */

.th .acc-chip.acc-text a{text-decoration:none}
.th .acc-chip.acc-text p{margin:0}
.th .acc-word{font-weight:800;font-size:1.05rem;letter-spacing:-.01em;color:var(--navy);line-height:1;text-transform:none;white-space:nowrap}
@media (max-width:420px){.th .acc-word{font-size:.95rem}}
