/*
Theme Name: LeapWise Global Consulting
Theme URI: https://www.leapwiseglobal.co.uk/
Author: LeapWise Global Consulting
Author URI: https://www.leapwiseglobal.co.uk/
Description: LeapWise Global Consulting, a UK accounting and advisory firm. WordPress theme, Elementor-editable, with 9 services, about and contact.
Version: 4.2.0
Requires at least: 5.5
Tested up to: 6.6
Requires PHP: 7.2
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: leapwise
*/

/* ==========================================================================
   LEAPWISE GLOBAL CONSULTING, CORE STYLESHEET
   Design tokens: Navy #012B65 | Accent #1E63B0 | Charcoal #333333 | White
   Type: "Lora" (serif, display) + "Inter" (sans, body/UI)
   ========================================================================== */

:root{
  --navy:#012B65;
  --navy-deep:#011B40;
  --accent:#1E63B0;
  --accent-light:#EAF1FA;
  --charcoal:#333333;
  --charcoal-soft:#5B6470;
  --white:#FFFFFF;
  --mist:#F6F8FB;
  --line:#E3E8EF;
  --danger:#C0202A;

  --serif: "Lora", Georgia, "Times New Roman", serif;
  --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  --container: 1200px;
  --radius: 3px;
  --shadow-sm: 0 1px 3px rgba(1,43,101,0.08);
  --shadow-md: 0 8px 30px rgba(1,43,101,0.10);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  font-family:var(--sans);
  color:var(--charcoal);
  background:var(--white);
  line-height:1.65;
  font-size:16px;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:var(--serif);
  color:var(--navy);
  font-weight:600;
  line-height:1.22;
  margin:0 0 16px;
}
h1{ font-size:clamp(2.1rem, 4vw, 3.4rem); font-weight:700; letter-spacing:-0.01em; }
h2{ font-size:clamp(1.6rem, 2.6vw, 2.3rem); }
h3{ font-size:1.3rem; }
h4{ font-size:1.05rem; }
p{ margin:0 0 16px; color:var(--charcoal-soft); }
a{ color:var(--accent); text-decoration:none; }
a:hover{ text-decoration:underline; }
img{ max-width:100%; display:block; }
ul{ margin:0; padding:0; }
li{ list-style:none; }

.container{ max-width:var(--container); margin:0 auto; padding:0 28px; }
.section{ padding:88px 0; }
.section--tight{ padding:56px 0; }
.section--mist{ background:var(--mist); }
.section--navy{ background:var(--navy); color:#fff; }
.section--navy h2, .section--navy h3{ color:#fff; }
.section--navy p{ color:#C7D4E6; }

.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-family:var(--sans);
  font-size:0.72rem;
  font-weight:700;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--accent);
  margin-bottom:18px;
}
.eyebrow::before{
  content:"";
  width:26px; height:2px;
  background:var(--accent);
  display:inline-block;
}
.section--navy .eyebrow{ color:#8FB4E0; }
.section--navy .eyebrow::before{ background:#8FB4E0; }

.lede{ font-size:1.15rem; color:var(--charcoal-soft); max-width:720px; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:14px 30px;
  border-radius:var(--radius);
  font-weight:600;
  font-size:0.95rem;
  cursor:pointer;
  border:1.5px solid transparent;
  transition:all .18s ease;
  white-space:nowrap;
}
.btn:hover{ text-decoration:none; }
.btn--primary{ background:var(--navy); color:#fff; }
.btn--primary:hover{ background:var(--navy-deep); }
.btn--accent{ background:var(--accent); color:#fff; }
.btn--accent:hover{ background:#164C89; }
.btn--outline{ background:transparent; color:var(--navy); border-color:var(--navy); }
.btn--outline:hover{ background:var(--navy); color:#fff; }
.btn--outline-white{ background:transparent; color:#fff; border-color:rgba(255,255,255,0.5); }
.btn--outline-white:hover{ background:#fff; color:var(--navy); }
.btn--sm{ padding:10px 20px; font-size:0.85rem; }

/* ---------- Header / Nav ---------- */
.site-header{
  position:sticky; top:0; z-index:1000;
  background:rgba(255,255,255,0.97);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  height:116px;
}
.nav__logo{ display:flex; align-items:center; gap:10px; }
.nav__logo img{ height:92px; width:auto; }
.nav__logo-text{ font-family:var(--serif); font-weight:700; font-size:1.3rem; color:var(--navy); }
.nav__logo-text span{ color:var(--accent); }

.nav__links{ display:flex; align-items:center; gap:34px; }
.nav__links > li > a{
  color:var(--navy); font-weight:600; font-size:0.92rem;
  padding:8px 0; position:relative;
}
.nav__links > li > a:hover{ text-decoration:none; color:var(--accent); }

.nav__dropdown{ position:relative; }
.nav__dropdown > a::after{ content:" \25BE"; font-size:0.7em; }
/* Invisible bridge under the trigger so the pointer can travel from the link
   into the panel without the panel closing (this was the "menu disappears
   too quickly" problem). */
.nav__dropdown::after{
  content:""; position:absolute; top:100%; left:0; right:0; height:18px; display:block;
}
.nav__dropdown-panel{
  position:absolute; top:100%; left:50%;
  transform:translateX(-50%) translateY(4px);
  margin-top:14px;
  width:320px;
  background:#fff;
  border:1px solid var(--line);
  border-top:3px solid var(--accent);
  box-shadow:var(--shadow-md);
  padding:14px;
  border-radius:var(--radius);
  display:flex; flex-direction:column; gap:2px;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .18s ease, visibility .18s ease, transform .18s ease;
  transition-delay:0s, 0s, 0s;
  z-index:1000;
}
/* Stay open while hovering the trigger OR the panel itself, and fade out with a
   short delay so a small mouse wobble does not close it. */
.nav__dropdown:hover .nav__dropdown-panel,
.nav__dropdown:focus-within .nav__dropdown-panel,
.nav__dropdown-panel:hover{
  opacity:1; visibility:visible; pointer-events:auto;
  transform:translateX(-50%) translateY(0);
  transition-delay:0s;
}
.nav__dropdown-panel{ transition-delay:.25s; }
.nav__dropdown-panel a{
  display:block; padding:9px 12px; border-radius:var(--radius);
  color:var(--charcoal); font-size:0.86rem; font-weight:500; line-height:1.35;
}
.nav__dropdown-panel a:hover{ background:var(--accent-light); color:var(--accent); text-decoration:none; }

.nav__cta{ display:flex; align-items:center; gap:18px; }
.nav__phone{ font-size:0.85rem; font-weight:600; color:var(--navy); display:flex; align-items:center; gap:6px; }

.nav__burger{ display:none; background:none; border:none; cursor:pointer; padding:6px; }
.nav__burger span{ display:block; width:24px; height:2px; background:var(--navy); margin:5px 0; }

/* ---------- Hero ---------- */
.hero{
  position:relative;
  padding:100px 0 90px;
  background:var(--mist);
  overflow:hidden;
}
.hero__grid{
  display:grid; grid-template-columns:1.15fr 0.85fr; gap:60px; align-items:center;
}
.hero__kicker{ color:var(--accent); font-weight:700; letter-spacing:0.14em; font-size:0.75rem; text-transform:uppercase; margin-bottom:18px; }
.hero h1{ margin-bottom:22px; }
.hero h1 em{ font-style:normal; color:var(--accent); }
.hero__actions{ display:flex; gap:16px; margin-top:34px; flex-wrap:wrap; }
.hero__stats{ display:flex; gap:40px; margin-top:52px; flex-wrap:wrap; }
.hero__stat-num{ font-family:var(--serif); font-size:2rem; color:var(--navy); font-weight:700; }
.hero__stat-label{ font-size:0.78rem; color:var(--charcoal-soft); text-transform:uppercase; letter-spacing:0.06em; }

.hero__motif{ display:none; }
.hero__panel{
  background:var(--navy);
  border-radius:6px;
  padding:44px 36px;
  color:#fff;
  position:relative;
  overflow:hidden;
  box-shadow:var(--shadow-md);
}
.hero__panel h3{ color:#fff; font-size:1.15rem; margin-bottom:18px;}
.hero__panel li{ display:flex; gap:12px; padding:11px 0; border-bottom:1px solid rgba(255,255,255,0.12); font-size:0.92rem; color:#DCE6F4; }
.hero__panel li:last-child{ border-bottom:none; }
.hero__panel li::before{ content:"✓"; color:var(--accent-light); font-weight:700; }

/* ---------- Logo strip ---------- */
.strip{ padding:34px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.strip__row{ display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:18px; }
.strip__label{ font-size:0.75rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--charcoal-soft); font-weight:700; }
.strip__items{ display:flex; gap:34px; flex-wrap:wrap; color:var(--navy); font-weight:600; font-size:0.92rem; }

/* ---------- Cards / Grids ---------- */
.grid{ display:grid; gap:28px; }
.grid--3{ grid-template-columns:repeat(3,1fr); }
.grid--4{ grid-template-columns:repeat(4,1fr); }
.grid--2{ grid-template-columns:repeat(2,1fr); }

.card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:34px 28px;
  transition:box-shadow .2s ease, transform .2s ease, border-color .2s ease;
}
.card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); border-color:var(--accent); }
.card__icon{
  width:48px; height:48px; border-radius:8px;
  background:var(--accent-light);
  display:flex; align-items:center; justify-content:center;
  margin-bottom:20px;
  color:var(--accent);
  font-family:var(--serif); font-weight:700;
}
.card h3{ font-size:1.12rem; margin-bottom:10px; }
.card p{ font-size:0.93rem; margin-bottom:14px; }
.card__link{ font-size:0.85rem; font-weight:700; color:var(--accent); }

.service-card{
  display:block;
  background:#fff;
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:30px 26px;
  position:relative;
  transition:all .2s ease;
}
.service-card:hover{ border-color:var(--accent); box-shadow:var(--shadow-md); transform:translateY(-3px); text-decoration:none; }
.service-card__num{ font-family:var(--serif); color:var(--line); font-size:1.6rem; font-weight:700; margin-bottom:14px; }
.service-card__icon{
  width:54px; height:54px; border-radius:50%;
  background:var(--accent-light); color:var(--navy);
  display:flex; align-items:center; justify-content:center;
  margin-bottom:18px; flex-shrink:0;
  transition:background .2s ease, color .2s ease;
}
.service-card:hover .service-card__icon{ background:var(--navy); color:#fff; }
.service-card__icon svg{ display:block; }
.service-card h3{ font-size:1.05rem; margin-bottom:10px; }
.service-card p{ font-size:0.88rem; margin-bottom:0; }
.service-card__arrow{ color:var(--accent); font-weight:700; margin-top:14px; display:inline-block; font-size:0.85rem; }

/* ---------- Section headers ---------- */
.sec-head{ max-width:680px; margin-bottom:52px; }
.sec-head--center{ margin-left:auto; margin-right:auto; text-align:center; }

/* ---------- Process / numbered steps ---------- */
.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; position:relative; }
.step{ position:relative; padding:0 20px 0 0; }
.step__num{
  font-family:var(--serif); font-size:2.6rem; font-weight:700; color:var(--accent-light);
  -webkit-text-stroke:1.5px var(--accent);
  margin-bottom:14px; line-height:1;
}
.step h4{ margin-bottom:8px; font-size:1rem; }
.step p{ font-size:0.87rem; }

/* ---------- Two-column detail block ---------- */
.split{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:start; }
.split--rev{ direction:rtl; } .split--rev > *{ direction:ltr; }

.check-list li{ display:flex; gap:12px; padding:10px 0; font-size:0.95rem; color:var(--charcoal); border-bottom:1px solid var(--line); }
.check-list li:last-child{ border:none; }
.check-list li::before{ content:""; min-width:8px; height:8px; background:var(--navy); margin-top:7px; display:block; }

/* ---------- Short accent rule under a section heading ---------- */
.sec-rule{
  display:block; width:56px; height:3px;
  background:var(--accent);
  margin:0 0 26px;
}

/* ---------- Expect list (circular tick + title + description) ---------- */
.expect-list{ list-style:none; margin:0; padding:0; }
.expect-list li{
  display:flex; align-items:flex-start; gap:18px;
  padding:22px 0;
  border-bottom:1px solid var(--line);
}
.expect-list li:first-child{ padding-top:4px; }
.expect-list li:last-child{ border-bottom:none; padding-bottom:4px; }
.expect-list__icon{
  flex:0 0 auto;
  width:46px; height:46px; border-radius:50%;
  background:var(--accent-light);
  display:flex; align-items:center; justify-content:center;
  color:var(--navy);
}
.expect-list__icon svg{ display:block; }
.expect-list__body{ padding-top:2px; }
.expect-list__body strong{
  display:block;
  font-family:var(--sans);
  font-size:1rem; font-weight:600; color:var(--navy);
  line-height:1.35; margin-bottom:5px;
}
.expect-list__body span{
  display:block;
  font-size:0.94rem; color:var(--charcoal-soft); line-height:1.6;
}
@media (max-width:600px){
  .expect-list li{ gap:14px; padding:18px 0; }
  .expect-list__icon{ width:38px; height:38px; }
}

/* ---------- FAQ ---------- */
.faq{ border-top:1px solid var(--line); }
.faq-item{ border-bottom:1px solid var(--line); padding:22px 0; cursor:pointer; }
.faq-item summary{ font-family:var(--serif); font-weight:600; color:var(--navy); font-size:1.02rem; list-style:none; display:flex; justify-content:space-between; align-items:center; }
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{ content:"+"; font-size:1.4rem; color:var(--accent); font-weight:400; }
.faq-item[open] summary::after{ content:"–"; }
.faq-item p{ margin-top:14px; font-size:0.94rem; }

/* ---------- CTA band ---------- */
.cta-band{
  background:var(--navy);
  border-radius:6px;
  padding:56px 60px;
  display:flex; align-items:center; justify-content:space-between; gap:40px;
  flex-wrap:wrap;
  position:relative;
  overflow:hidden;
}
.cta-band h2{ color:#fff; margin-bottom:8px; font-size:1.7rem; }
.cta-band p{ color:#C7D4E6; margin-bottom:0; }
.cta-band__actions{ display:flex; gap:14px; flex-wrap:wrap; }

/* ---------- Breadcrumb ---------- */
.breadcrumb{ padding:20px 0 0; font-size:0.82rem; color:var(--charcoal-soft); }
.breadcrumb a{ color:var(--charcoal-soft); }
.breadcrumb a:hover{ color:var(--accent); }
.breadcrumb .sep{ margin:0 8px; }
.breadcrumb .current{ color:var(--navy); font-weight:600; }

/* ---------- Service page hero (compact) ---------- */
.page-hero{
  padding:54px 0 64px;
  background:var(--mist);
  border-bottom:1px solid var(--line);
}
.page-hero__kicker{ color:var(--accent); font-weight:700; letter-spacing:0.12em; font-size:0.75rem; text-transform:uppercase; margin-bottom:16px; }
.page-hero h1{ max-width:800px; }
.page-hero__lede{ max-width:680px; font-size:1.08rem; margin-top:14px; }
.page-hero__meta{ display:flex; gap:28px; margin-top:30px; flex-wrap:wrap; }
.page-hero__meta-item{ font-size:0.85rem; color:var(--charcoal-soft); }
.page-hero__meta-item .meta-label{ display:block; font-size:0.78rem; color:var(--charcoal-soft); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:2px; }

/* ---------- Legal / policy pages ---------- */
.legal{ max-width:820px; }
.legal .legal__updated{ color:var(--charcoal-soft); font-size:0.9rem; margin-bottom:38px; }
.legal h2{ font-size:1.35rem; margin:38px 0 14px; }
.legal h2:first-of-type{ margin-top:0; }
.legal h3{ font-size:1.05rem; margin:26px 0 10px; color:var(--navy); }
.legal p{ margin-bottom:16px; line-height:1.75; }
.legal ul{ margin:0 0 18px; padding-left:22px; }
.legal li{ margin-bottom:10px; line-height:1.7; }
.legal a{ color:var(--accent); }
.legal strong{ color:var(--navy); }
.page-hero__meta-item strong{ color:var(--navy); display:block; font-size:0.95rem; }

/* ---------- Sidebar (service pages) ---------- */
.svc-layout{ display:grid; grid-template-columns:1fr 300px; gap:64px; align-items:start; }
.svc-sidebar{ position:sticky; top:110px; display:flex; flex-direction:column; gap:20px; }
.svc-sidebar__card{ background:var(--mist); border:1px solid var(--line); border-radius:var(--radius); padding:26px; }
.svc-sidebar__card h4{ font-size:0.95rem; margin-bottom:14px; }
.svc-sidebar__list a{ display:block; padding:8px 0; font-size:0.87rem; color:var(--charcoal); border-bottom:1px solid var(--line); }
.svc-sidebar__list a:hover{ color:var(--accent); text-decoration:none; }
.svc-sidebar__list a:last-child{ border:none; }
.svc-sidebar__contact{ background:var(--navy); color:#fff; border-radius:var(--radius); padding:26px; }
.svc-sidebar__contact h4{ color:#fff; }
.svc-sidebar__contact p{ color:#C7D4E6; font-size:0.87rem; }

.prose h2{ margin-top:44px; }
.prose h2:first-child{ margin-top:0; }
.prose h3{ margin-top:28px; }
.prose ul{ margin:18px 0; }
.prose ul li{ position:relative; padding-left:22px; margin-bottom:10px; font-size:0.96rem; color:var(--charcoal); }
.prose ul li::before{ content:""; position:absolute; left:0; top:9px; width:7px; height:7px; background:var(--accent); }

/* ---------- Footer ---------- */
.site-footer{ background:var(--navy-deep); color:#B9C6DA; padding:56px 0 0; }
.footer__grid{ display:grid; grid-template-columns:1.35fr 1fr 1fr 0.8fr 1.45fr; gap:32px; padding-bottom:40px; }
/* The pair is transparent on desktop so its two children sit directly in the
   five-column grid above. Mobile re-enables it as a grid of its own. */
.footer__pair{ display:contents; }
.footer__brand{ max-width:280px; }
.footer__brand img{ height:76px; margin-bottom:18px; }
.footer__brand p{ color:#8FA1BC; font-size:0.84rem; line-height:1.6; margin:0; }
.footer__tagline{ color:#fff !important; font-family:var(--serif); font-size:0.98rem !important; font-style:italic; margin-bottom:12px !important; }
.footer h5{ color:#fff; font-family:var(--sans); font-size:0.78rem; text-transform:uppercase; letter-spacing:0.08em; margin-bottom:14px; min-height:1em; }
.footer__col a{ display:block; color:#B9C6DA; font-size:0.85rem; padding:5px 0; line-height:1.35; }
.footer__col a:hover{ color:#fff; text-decoration:none; }
.footer__col a > svg{ width:16px; height:16px; }
/* Footer contact rows: fixed icon column so every row lines up exactly.
   Selector is scoped to .footer__col so it outranks `.footer__col a{display:block}`,
   otherwise the icon and text fall onto separate lines on narrow screens. */
.footer__col a.footer__contact{ display:flex; align-items:flex-start; gap:11px; line-height:1.4; }
.footer__contact-ico{
  flex:0 0 18px; width:18px; height:1.4em;
  display:inline-flex; align-items:center; justify-content:center;
  color:#8FA1BC; transition:color .18s ease;
}
.footer__contact:hover .footer__contact-ico{ color:#fff; }
.footer__contact-ico svg{ display:block; }
/* min-width:0 lets the text shrink inside the flex row; anywhere breaks a long
   email address instead of pushing it out of the column. */
.footer__contact-txt{ min-width:0; overflow-wrap:anywhere; }
/* The email is one long unbreakable string. Left to wrap it drops a single
   trailing character onto its own line, so it is kept on one line and the
   column is sized to fit it. */
.footer__contact[href^="mailto:"] .footer__contact-txt{ white-space:nowrap; overflow-wrap:normal; }

.footer__bottom{ border-top:1px solid rgba(255,255,255,0.1); padding:20px 0; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px 24px; font-size:0.78rem; color:#7C8FAC; }
.footer__legal{ display:flex; gap:22px; flex-wrap:wrap; }
.footer__legal a{ color:#7C8FAC; }
.footer__legal a:hover{ color:#fff; }

/* ---------- WhatsApp floating button ---------- */
.wa-float{
  position:fixed; right:24px; bottom:24px; z-index:900;
  background:var(--navy); color:#fff; width:56px; height:56px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 6px 20px rgba(1,43,101,0.35);
  transition:transform .18s ease;
}
.wa-float:hover{ transform:scale(1.08); text-decoration:none; }

/* ---------- Utilities ---------- */
.text-center{ text-align:center; }
.mt-0{ margin-top:0; } .mb-0{ margin-bottom:0; }
.tag{
  display:inline-block; background:var(--accent-light); color:var(--accent);
  font-size:0.72rem; font-weight:700; letter-spacing:0.05em; text-transform:uppercase;
  padding:5px 12px; border-radius:20px; margin-bottom:10px;
}

/* ---------- Responsive ---------- */
@media (max-width: 980px){
  .hero__grid, .split, .svc-layout{ grid-template-columns:1fr; }
  .footer__grid{ grid-template-columns:1fr 1fr; gap:30px; }
  .footer__brand{ grid-column:1 / -1; max-width:none; }
  .grid--3, .grid--4{ grid-template-columns:repeat(2,1fr); }
  .steps{ grid-template-columns:repeat(2,1fr); gap:32px 20px; }
  .svc-sidebar{ position:static; }
}
@media (max-width: 760px){
  .nav__links, .nav__cta .nav__phone{ display:none; }
  .nav__burger{ display:block; }
  .grid--3, .grid--4, .grid--2{ grid-template-columns:1fr; }
  .section{ padding:60px 0; }
  .cta-band{ padding:38px 26px; flex-direction:column; align-items:flex-start; }
  .hero{ padding:60px 0; }
  .steps{ grid-template-columns:1fr; }
  .footer__grid{ grid-template-columns:1fr 1fr; gap:24px; }
  /* Company keeps only the width its links need, so the contact column gets
     enough room to hold the email address on a single line. */
  .footer__pair{
    display:grid; grid-column:1 / -1;
    grid-template-columns:max-content 1fr;
    gap:0 22px; align-items:start;
  }
  .footer__bottom{ justify-content:center; text-align:center; }
}

/* Mobile nav drawer */
.nav__links.is-open{
  display:flex; flex-direction:column; position:absolute; top:116px; left:0; right:0;
  background:#fff; border-bottom:1px solid var(--line); padding:14px 28px 24px; gap:4px;
  box-shadow:var(--shadow-md);
}
/* In the drawer the submenu becomes an inline accordion: collapsed by default,
   opened only when the Services row is tapped (see assets/js/main.js). */
.nav__links.is-open .nav__dropdown-panel{
  display:none;
  position:static; width:auto; transform:none; margin-top:0;
  box-shadow:none; border:none; border-radius:0;
  padding:0 0 0 12px;
  opacity:1; visibility:visible; pointer-events:auto;
  transition:none;
}
.nav__links.is-open .nav__dropdown.is-expanded > .nav__dropdown-panel{
  display:flex;
  padding:8px 0 6px 12px;
}
/* Caret flips to indicate the open state. */
.nav__links.is-open .nav__dropdown > a::after{
  display:inline-block; transition:transform .2s ease;
}
.nav__links.is-open .nav__dropdown.is-expanded > a::after{ transform:rotate(180deg); }
/* The hover bridge is pointless on touch and can block taps. */
.nav__links.is-open .nav__dropdown::after{ display:none; }
/* "All Services" shortcut, drawer only, so the page stays reachable when the
   Services row is used as a toggle rather than a link. */
.nav__dropdown-all{ display:none; }
.nav__links.is-open .nav__dropdown-all{ display:block; font-weight:600; color:var(--navy); }

.nav__links.is-open > li > a{ padding:12px 0; border-bottom:1px solid var(--line); }

/* ---------- Leadership / Team ---------- */
.team-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:40px; max-width:820px; margin:0 auto; }
.team-card{ text-align:center; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:38px 30px; transition:box-shadow .2s ease, transform .2s ease; }
.team-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.team-card__photo{ width:160px; height:160px; margin:0 auto 22px; border-radius:50%; overflow:hidden; border:3px solid var(--accent-light); box-shadow:0 6px 18px rgba(1,43,101,0.12); }
.team-card__photo img{ width:100%; height:100%; object-fit:cover; }
.team-card__mono{ width:132px; height:132px; margin:0 auto 22px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--navy); color:#fff; font-family:var(--serif); font-weight:700; font-size:2.6rem; letter-spacing:0.02em; box-shadow:0 8px 22px rgba(1,43,101,0.22); border:4px solid var(--accent-light); }
.team-card h3{ font-size:1.2rem; margin-bottom:4px; }
.team-card__role{ color:var(--accent); font-weight:700; font-size:0.82rem; letter-spacing:0.08em; text-transform:uppercase; margin-bottom:16px; }
.team-card p{ font-size:0.9rem; margin-bottom:0; }

/* ---------- Global Presence (box grid) ---------- */
.presence-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.presence-card{ display:flex; align-items:center; gap:16px; background:#fff; border:1px solid var(--line); border-radius:10px; padding:24px 22px; box-shadow:var(--shadow-sm); transition:box-shadow .2s ease, transform .2s ease; }
.presence-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-2px); }
.presence-card__pin, .presence-card__icon{ min-width:48px; width:48px; height:48px; border-radius:50%; background:var(--accent-light); color:var(--accent); display:flex; align-items:center; justify-content:center; }
.presence-card__pin svg, .presence-card__icon svg{ width:22px; height:22px; }
.presence-card__text h3{ font-size:1.1rem; margin-bottom:2px; line-height:1.2; }
.presence-card__text span{ font-size:0.84rem; color:var(--charcoal-soft); }
.presence-card--primary{ background:var(--navy); border-color:var(--navy); }
.presence-card--primary h3{ color:#fff; }
.presence-card--primary span{ color:#C7D4E6; }
.presence-card--primary .presence-card__pin, .presence-card--primary .presence-card__icon{ background:rgba(255,255,255,0.16); color:#fff; }

/* ---------- Social icons (footer) ---------- */

/* WhatsApp inline icon */
.wa-inline{ display:inline-flex; align-items:center; gap:7px; }
.wa-inline svg{ width:16px !important; height:16px !important; flex-shrink:0; }


@media (max-width: 980px){
  .presence-grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width: 760px){
  .team-grid, .presence-grid{ grid-template-columns:1fr; }
}

/* Icon safety */
.footer__col > a > svg, .footer__col img{ width:16px; height:16px; }
.nav__phone svg{ width:16px; height:16px; }

/* ---------- Elementor compatibility ----------
   When our page HTML is edited inside Elementor, each section sits in an HTML
   widget. These rules keep our design intact inside Elementor's containers and
   stop Elementor's resets from stripping our typography or spacing. */
.elementor-widget-html,
.elementor-widget-html .elementor-widget-container{ margin:0; padding:0; }
.elementor .elementor-widget-html section{ width:100%; }
/* Ensure our fonts win inside Elementor canvas */
.elementor-html-widget, .elementor-widget-html{ font-family:var(--sans); }
/* Full width sections should not be constrained by Elementor's boxed container */
.elementor-section.elementor-section-boxed > .elementor-container:has(.elementor-widget-html){ max-width:100%; }

/* ---------- Leadership: expertise cards ---------- */
.expertise-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:28px; max-width:920px; margin:0 auto; }
.expertise-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:44px 34px 38px; text-align:center; transition:box-shadow .2s ease, transform .2s ease; }
.expertise-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.expertise-card__icon{ width:88px; height:88px; margin:0 auto 26px; border-radius:50%; background:var(--navy); color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 8px 22px rgba(1,43,101,0.18); }
.expertise-card h3{ font-family:var(--sans); font-size:0.92rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--navy); margin-bottom:16px; }
.expertise-card p{ font-size:0.92rem; margin-bottom:0; }
.expertise-note{ text-align:center; margin:36px auto 0; max-width:760px; color:var(--charcoal-soft); font-size:0.92rem; }

/* ---------- Where we work: reach cards ---------- */
.reach-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.reach-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:34px 24px 30px; text-align:center; transition:box-shadow .2s ease, transform .2s ease; }
.reach-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.reach-card__icon{ width:64px; height:64px; margin:0 auto 20px; border-radius:50%; background:var(--accent-light); color:var(--navy); display:flex; align-items:center; justify-content:center; }
.reach-card h3{ font-family:var(--sans); font-size:0.84rem; font-weight:700; letter-spacing:0.07em; text-transform:uppercase; color:var(--accent); margin-bottom:12px; line-height:1.4; }
.reach-card__rule{ display:block; width:34px; height:2px; background:var(--accent); opacity:0.45; margin:0 auto 16px; }
.reach-card p{ font-size:0.86rem; margin-bottom:0; }
.reach-footnote{ display:flex; align-items:center; justify-content:center; gap:14px; margin-top:38px; padding-top:26px; border-top:1px solid var(--line); color:var(--navy); font-weight:600; font-size:0.92rem; }
.reach-footnote svg{ color:var(--accent); flex-shrink:0; }

/* ---------- Discuss band (About CTA) ---------- */
.discuss-band{ background:var(--navy); border-radius:14px; padding:52px 56px; display:grid; grid-template-columns:1.6fr auto 1fr; align-items:center; gap:44px; }
.discuss-band__text h2{ color:#fff; font-size:2rem; line-height:1.25; margin-bottom:16px; }
.discuss-band__text p{ color:#C7D4E6; font-size:0.98rem; margin-bottom:18px; max-width:560px; }
.discuss-band__meta{ color:#7FA5D8; font-size:0.9rem; }
.discuss-band__action{ grid-column:3; justify-self:end; border-left:1px solid rgba(255,255,255,0.22); padding-left:44px; }
.discuss-band__action .btn{ white-space:nowrap; }

@media (max-width: 980px){
  .reach-grid{ grid-template-columns:repeat(2,1fr); }
  .discuss-band{ grid-template-columns:1fr; padding:40px 32px; gap:26px; }
  .discuss-band__action{ grid-column:1; justify-self:start; border-left:none; padding-left:0; }
}
@media (max-width: 760px){
  .expertise-grid{ grid-template-columns:1fr; }
  .reach-grid{ grid-template-columns:1fr; }
  .discuss-band__text h2{ font-size:1.6rem; }
}

/* ---------- Contact page: direct lines ---------- */
.contact-line{ display:flex; gap:18px; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:26px 26px; margin-bottom:18px; transition:box-shadow .2s ease, border-color .2s ease; }
.contact-line:hover{ border-color:var(--accent); box-shadow:var(--shadow-md); }
.contact-line__icon{ width:48px; height:48px; flex-shrink:0; border-radius:50%; background:var(--accent-light); color:var(--navy); display:flex; align-items:center; justify-content:center; }
.contact-line__body h3{ font-size:1.05rem; margin-bottom:6px; }
.contact-line__body p{ font-size:0.88rem; margin-bottom:10px; }
.contact-line__link{ display:inline-block; color:var(--accent); font-weight:700; font-size:0.95rem; word-break:break-word; }
.contact-line__link:hover{ text-decoration:underline; }
.contact-line__meta{ display:flex; flex-wrap:wrap; gap:6px 18px; margin-top:10px; }
.contact-line__meta span{ font-size:0.8rem; color:var(--charcoal-soft); }
.contact-line__meta span + span{ position:relative; padding-left:19px; }
.contact-line__meta span + span::before{ content:""; position:absolute; left:0; top:50%; width:5px; height:5px; border-radius:50%; background:var(--line); transform:translateY(-50%); }
@media (max-width: 560px){
  .contact-line{ flex-direction:column; gap:14px; }
}

/* Anchor targets: keep cards clear of the sticky header when linked from the menu */
.service-card[id]{ scroll-margin-top:140px; }
