/* =========================================================================
   Northwood & Associates — Global Investigation Services
   Design System  ·  "Midnight Performance"
   Accent #22396F (steel blue) on a white / grey / near-black system.
   ========================================================================= */

:root{
  /* Brand */
  --accent:        #22396F;   /* steel blue — CTAs, links, focal points */
  --accent-600:    #1A2C56;   /* darker hover */
  --accent-400:    #37568F;   /* lighter */
  --accent-glow:   #6E8FC4;   /* globe arcs / glows on dark */

  /* Dark anchor (reads black, whisper of blue for depth) */
  --ink:           #0B0E14;   /* deepest — hero / dark blocks */
  --ink-800:       #12161F;
  --ink-700:       #1A2130;
  --ink-line:      rgba(255,255,255,.10);

  /* Light surfaces */
  --white:         #FFFFFF;
  --surface:       #F5F6F8;
  --surface-2:     #ECEEF2;
  --line:          #E2E5EA;

  /* Text */
  --text:          #10151E;   /* body on light */
  --text-muted:    #5A6472;
  --text-faint:    #8A93A2;
  --on-dark:       #F3F5F8;
  --on-dark-muted: #9AA6B8;

  /* Type */
  --display: 'Cabinet Grotesk', 'Inter', system-ui, sans-serif;
  --body:    'Inter', system-ui, -apple-system, sans-serif;

  /* Rhythm */
  --radius:   14px;
  --radius-lg:20px;
  --shadow-sm: 0 1px 2px rgba(16,21,30,.05), 0 1px 3px rgba(16,21,30,.06);
  --shadow-md: 0 10px 30px -12px rgba(16,21,30,.18);
  --shadow-lg: 0 30px 60px -20px rgba(16,21,30,.28);
  --container: 1240px;
  --ease: cubic-bezier(.22,.61,.36,1);
}

*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:auto; }
body{
  margin:0;
  font-family:var(--body);
  color:var(--text);
  background:var(--white);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
::selection{ background:var(--accent); color:#fff; }

/* ---------- Typography ---------- */
h1,h2,h3,h4,h5{ font-family:var(--display); font-weight:800; line-height:1.05; letter-spacing:-.02em; margin:0; color:var(--text); }
.display   { font-size:clamp(2.6rem, 6vw, 5rem); font-weight:900; letter-spacing:-.03em; line-height:1.0; }
.h1        { font-size:clamp(2.2rem, 4.4vw, 3.6rem); }
.h2        { font-size:clamp(1.8rem, 3.2vw, 2.7rem); }
.h3        { font-size:clamp(1.25rem, 2vw, 1.6rem); }
.eyebrow   { font-family:var(--body); font-weight:600; font-size:.78rem; letter-spacing:.22em; text-transform:uppercase; color:var(--accent); }
.eyebrow--light{ color:var(--accent-glow); }
.lead      { font-size:clamp(1.05rem,1.5vw,1.28rem); color:var(--text-muted); line-height:1.65; }
.muted     { color:var(--text-muted); }

/* ---------- Layout ---------- */
.container{ width:100%; max-width:var(--container); margin-inline:auto; padding-inline:24px; }
.section{ padding-block:clamp(64px, 9vw, 128px); }
.section--tight{ padding-block:clamp(48px,6vw,88px); }
.dark{ background:var(--ink); color:var(--on-dark); }
.dark h1,.dark h2,.dark h3,.dark h4,.dark h5{ color:var(--on-dark); }
.dark .muted{ color:var(--on-dark-muted); }
.dark .feature-list p{ color:var(--on-dark-muted); }
.grid{ display:grid; gap:24px; }

/* ---------- Buttons ---------- */
.btn{
  --bg:var(--accent); --fg:#fff;
  display:inline-flex; align-items:center; gap:.55rem;
  font-family:var(--body); font-weight:600; font-size:.95rem; letter-spacing:.005em;
  padding:.85rem 1.5rem; border-radius:10px; border:1px solid transparent;
  background:var(--bg); color:var(--fg); cursor:pointer;
  transition:transform .25s var(--ease), box-shadow .25s var(--ease), background .25s var(--ease), border-color .25s var(--ease);
  will-change:transform;
}
.btn svg{ width:1.05em; height:1.05em; transition:transform .3s var(--ease); }
.btn:hover{ background:var(--accent-600); transform:translateY(-2px); box-shadow:0 14px 30px -12px rgba(34,57,111,.6); }
.btn:hover svg{ transform:translateX(3px); }
.btn--lg{ padding:1.05rem 1.9rem; font-size:1rem; }
.btn--ghost{ background:transparent; color:var(--text); border-color:var(--line); }
.btn--ghost:hover{ background:var(--surface); color:var(--text); border-color:var(--accent); box-shadow:none; transform:translateY(-2px); }
/* Ghost buttons on any dark surface: light text + clearly visible border */
.dark .btn--ghost,
.hero .btn--ghost,
.page-hero .btn--ghost,
.cta-band .btn--ghost,
.portal .btn--ghost,
.search-tool .btn--ghost{ color:#fff; border-color:rgba(255,255,255,.35); background:rgba(255,255,255,.04); }
.dark .btn--ghost:hover,
.hero .btn--ghost:hover,
.page-hero .btn--ghost:hover,
.cta-band .btn--ghost:hover,
.portal .btn--ghost:hover,
.search-tool .btn--ghost:hover{ background:rgba(255,255,255,.12); border-color:var(--accent-glow); color:#fff; }
.btn--gold{}  /* reserved */
.link-arrow{ display:inline-flex; align-items:center; gap:.4rem; font-weight:600; color:var(--accent); }
.link-arrow svg{ width:1em; height:1em; transition:transform .3s var(--ease); }
.link-arrow:hover svg{ transform:translateX(4px); }

/* ---------- Header / Nav ---------- */
.site-header{ position:fixed; inset:0 0 auto 0; z-index:60; transition:background .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease); }
.topbar{ background:var(--ink); color:var(--on-dark-muted); font-size:.8rem; border-bottom:1px solid var(--ink-line); }
/* header spans wider than the 1240 body grid so nav sections breathe on one line */
.topbar .container, .navbar .container{ max-width:1480px; padding-inline:40px; }
.topbar .container{ display:flex; align-items:center; justify-content:space-between; height:40px; gap:24px; }
.topbar a{ color:var(--on-dark-muted); transition:color .2s; }
.topbar a:hover{ color:#fff; }
.topbar .tb-right{ display:flex; align-items:center; }
/* thin muted dividers instead of blue bullets, with even pacing */
.topbar .tb-right > a{ padding:0 18px; }
.topbar .tb-right > a + a{ border-left:1px solid var(--ink-line); }
.topbar .tb-right > a:last-child{ padding-right:0; }

.navbar{ background:rgba(11,14,20,.0); transition:background .35s var(--ease), backdrop-filter .35s var(--ease); }
.navbar .container{ display:flex; align-items:center; justify-content:space-between; height:80px; gap:28px; }
.site-header.scrolled .navbar{ background:rgba(255,255,255,.92); backdrop-filter:saturate(1.6) blur(14px); box-shadow:0 1px 0 var(--line), 0 12px 30px -22px rgba(16,21,30,.4); }
.site-header.scrolled .topbar{ display:none; }

/* Logo — serif wordmark lockup */
.logo{ display:inline-flex; align-items:center; }
.logo__lockup{ display:inline-flex; flex-direction:column; align-items:stretch; line-height:1; }
.logo__word{ font-family:'Cinzel', Georgia, 'Times New Roman', serif; font-weight:600; font-size:1.3rem; letter-spacing:.04em; color:#fff; white-space:nowrap; transition:color .35s var(--ease); }
.logo__word .amp{ color:var(--accent-glow); font-weight:500; padding:0 .06em; transition:color .35s var(--ease); }
.logo__rule{ display:block; height:1px; width:100%; background:rgba(255,255,255,.32); margin:5px 0 4px; transition:background .35s var(--ease); }
.logo__sub{ font-family:'Cinzel', Georgia, serif; font-weight:500; font-size:.53rem; letter-spacing:.16em; text-transform:uppercase; color:var(--on-dark-muted); white-space:nowrap; text-align:center; transition:color .35s var(--ease); }
.site-header.scrolled .logo__word{ color:var(--accent); }
.site-header.scrolled .logo__word .amp{ color:var(--accent); }
.site-header.scrolled .logo__rule{ background:var(--accent); }
.site-header.scrolled .logo__sub{ color:var(--accent); }
/* footer logo stays light on dark */
.footer .logo__word{ color:#fff; } .footer .logo__word .amp{ color:var(--accent-glow); }
.footer .logo__rule{ background:rgba(255,255,255,.3); } .footer .logo__sub{ color:var(--on-dark-muted); }

/* Nav links */
.nav{ display:flex; flex:1; align-items:center; justify-content:center; gap:10px; }
.nav__link{ white-space:nowrap; }
.logo{ flex:none; }
.nav__item{ position:relative; }
.nav__link{
  display:inline-flex; align-items:center; gap:5px;
  font-size:.9rem; font-weight:500; letter-spacing:.01em; color:var(--on-dark); padding:.62rem .9rem; border-radius:8px;
  transition:color .25s, background .25s;
}
.nav__link .chev{ width:.7em; height:.7em; opacity:.7; transition:transform .3s var(--ease); }
.nav__link{ position:relative; }
.nav__link::after{ content:""; position:absolute; left:.8rem; right:.8rem; bottom:.34rem; height:2px; background:var(--accent-glow); border-radius:2px; transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease); }
.nav__item:hover .nav__link::after, .nav__link.__active::after{ transform:scaleX(1); }
/* current page: brighter label + solid persistent underline, clearly distinct from hover */
.nav__link.__active{ color:#fff; font-weight:600; }
.nav__link.__active::after{ height:2px; opacity:1; }
.site-header.scrolled .nav__link.__active{ color:var(--accent); }
.site-header.scrolled .nav__link::after{ background:var(--accent); }
.nav__item:hover .nav__link .chev{ transform:rotate(180deg); }
.site-header.scrolled .nav__link{ color:var(--text); }
.nav__link:hover{ color:#fff; background:rgba(255,255,255,.07); }
.site-header.scrolled .nav__link:hover{ color:var(--accent); background:var(--surface); }

.nav-actions{ display:flex; flex:none; align-items:center; gap:14px; }
.nav-cta{ white-space:nowrap; }

/* Dropdown */
.dropdown{
  position:absolute; top:calc(100% + 12px); left:0; min-width:260px;
  background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow-lg);
  padding:10px; opacity:0; visibility:hidden; transform:translateY(8px); transition:opacity .25s var(--ease), transform .25s var(--ease), visibility .25s;
}
.nav__item:hover .dropdown{ opacity:1; visibility:visible; transform:translateY(0); }
.dropdown a{ display:flex; align-items:center; gap:10px; padding:.62rem .7rem; border-radius:9px; font-size:.9rem; color:var(--text); font-weight:500; transition:background .2s, color .2s; }
.dropdown a:hover{ background:var(--surface); color:var(--accent); }
.dropdown a .di{ width:16px; height:16px; color:var(--accent); flex:none; opacity:.85; }

/* Mega menu */
.mega{
  position:fixed; left:0; right:0; top:auto;
  background:#fff; border-top:1px solid var(--line); border-bottom:1px solid var(--line); box-shadow:var(--shadow-lg);
  opacity:0; visibility:hidden; transform:translateY(8px); transition:opacity .28s var(--ease), transform .28s var(--ease), visibility .28s;
  z-index:59;
}
.nav__item--mega:hover .mega{ opacity:1; visibility:visible; transform:translateY(0); }
.mega__inner{ max-width:var(--container); margin-inline:auto; padding:30px 24px; display:grid; grid-template-columns:1.1fr 1fr 1fr 1fr; gap:18px; }
.mega__promo{ background:var(--ink); color:#fff; border-radius:14px; padding:22px; display:flex; flex-direction:column; justify-content:space-between; position:relative; overflow:hidden; }
.mega__promo .eyebrow{ color:var(--accent-glow); }
.mega__promo h4{ color:#fff; font-size:1.15rem; margin:.5rem 0 .4rem; }
.mega__promo p{ color:var(--on-dark-muted); font-size:.85rem; margin:0 0 1rem; }
.mega-card{ display:block; padding:14px; border-radius:12px; border:1px solid transparent; transition:background .2s, border-color .2s, transform .2s; }
.mega-card:hover{ background:var(--surface); border-color:var(--line); transform:translateY(-2px); }
.mega-card__ic{ width:34px;height:34px; border-radius:9px; display:grid;place-items:center; background:rgba(34,57,111,.1); color:var(--accent); margin-bottom:10px; }
.mega-card__ic svg{ width:18px;height:18px; }
.mega-card h5{ font-family:var(--body); font-weight:700; font-size:.95rem; margin:0 0 3px; color:var(--text); }
.mega-card p{ font-size:.82rem; color:var(--text-muted); margin:0; line-height:1.45; }

/* Mobile nav */
.hamburger{ display:none; width:44px;height:44px; border:1px solid var(--ink-line); border-radius:10px; background:transparent; cursor:pointer; align-items:center; justify-content:center; }
.hamburger span{ display:block; width:20px;height:2px; background:#fff; position:relative; transition:.3s; }
.hamburger span::before,.hamburger span::after{ content:""; position:absolute; left:0; width:20px;height:2px;background:#fff; transition:.3s; }
.hamburger span::before{ top:-6px; } .hamburger span::after{ top:6px; }
.site-header.scrolled .hamburger span,.site-header.scrolled .hamburger span::before,.site-header.scrolled .hamburger span::after{ background:var(--text); }
.mobile-menu{ position:fixed; inset:0; z-index:70; background:var(--ink); color:#fff; padding:90px 24px 40px; transform:translateX(100%); visibility:hidden; transition:transform .4s var(--ease), visibility .4s; overflow-y:auto; }
.mobile-menu.open{ transform:translateX(0); visibility:visible; }
.mobile-menu a{ display:block; padding:.7rem 0; font-size:1.05rem; border-bottom:1px solid var(--ink-line); color:var(--on-dark); }
.mobile-menu .mm-group{ font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-glow); margin-top:22px; }
.mobile-menu .mm-close{ position:absolute; top:22px; right:22px; width:44px;height:44px; border:1px solid var(--ink-line); border-radius:10px; background:transparent; color:#fff; font-size:1.4rem; cursor:pointer; }

/* ---------- Hero ---------- */
.hero{ position:relative; min-height:100vh; display:flex; align-items:center; background:var(--ink); color:#fff; overflow:hidden; padding-top:168px; padding-bottom:120px; }
#globe-canvas{ position:absolute; inset:0; width:100%; height:100%; z-index:1; }
.hero__glow{ position:absolute; z-index:0; inset:0;
  background:
    radial-gradient(60% 60% at 72% 42%, rgba(34,57,111,.35), transparent 60%),
    radial-gradient(50% 50% at 15% 80%, rgba(30,50,80,.35), transparent 65%);
}
.hero__grid{ position:absolute; inset:0; z-index:1; opacity:.35;
  background-image:linear-gradient(var(--ink-line) 1px,transparent 1px),linear-gradient(90deg,var(--ink-line) 1px,transparent 1px);
  background-size:64px 64px; mask-image:radial-gradient(70% 70% at 50% 40%, #000 20%, transparent 75%); }
.hero__fade{ position:absolute; z-index:2; inset:auto 0 0 0; height:38%; background:linear-gradient(transparent, var(--ink)); }
.hero .container{ position:relative; z-index:5; }
.hero__inner{ max-width:820px; }
.hero__badge{ display:inline-flex; align-items:center; gap:9px; font-size:.78rem; font-weight:500; letter-spacing:.06em; color:var(--on-dark-muted);
  border:1px solid var(--ink-line); background:rgba(255,255,255,.04); padding:.45rem .9rem; border-radius:100px; margin-bottom:26px; }
.hero__badge .pulse{ width:8px;height:8px;border-radius:50%;background:var(--accent-glow); box-shadow:0 0 0 0 rgba(110,143,196,.6); animation:pulse 2.4s infinite; }
@keyframes pulse{ 0%{box-shadow:0 0 0 0 rgba(110,143,196,.55)} 70%{box-shadow:0 0 0 12px rgba(110,143,196,0)} 100%{box-shadow:0 0 0 0 rgba(110,143,196,0)} }
.hero h1{ color:#fff; }
.hero .accent{ color:var(--accent-glow); }
.hero p.lead{ color:#C4CCD8; max-width:640px; margin-top:22px; }
.hero__cta{ display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }

/* Hero trust strip */
.trust-strip{ position:relative; z-index:5; border-top:1px solid var(--ink-line); margin-top:60px; padding-top:26px; display:flex; flex-wrap:wrap; gap:38px 54px; align-items:center; }
.trust-strip .ts-item{ display:flex; flex-direction:column; gap:2px; }
.trust-strip .ts-num{ font-family:var(--display); font-weight:800; font-size:1.7rem; color:#fff; line-height:1; }
.trust-strip .ts-lbl{ font-size:.78rem; color:var(--on-dark-muted); letter-spacing:.02em; }

/* ---------- Affiliations marquee ---------- */
.affil{ background:var(--surface); border-block:1px solid var(--line); }
.affil .container{ display:flex; align-items:center; gap:30px; flex-wrap:wrap; justify-content:center; padding-block:26px; }
.affil__label{ font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; color:var(--text-faint); font-weight:600; }
.badge-org{ display:inline-flex; align-items:center; gap:10px; color:var(--text-muted); font-weight:600; font-size:.9rem; }
.badge-org .bo-seal{ width:30px;height:30px; border-radius:50%; border:1.5px solid var(--accent); color:var(--accent); display:grid;place-items:center; font-family:var(--display); font-weight:800; font-size:.7rem; }

/* ---------- Bento service grid ---------- */
.bento{ display:grid; grid-template-columns:repeat(6,1fr); gap:18px; }
.bento .cell{ grid-column:span 2; }
.bento .cell--wide{ grid-column:span 4; }
.bento .cell--half{ grid-column:span 3; }
.svc-card{
  position:relative; height:100%; display:flex; flex-direction:column; justify-content:space-between; gap:26px;
  background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:30px; overflow:hidden;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
  min-height:230px;
}
.svc-card::after{ content:""; position:absolute; inset:0; border-radius:inherit; padding:1px; pointer-events:none;
  background:linear-gradient(120deg, rgba(34,57,111,.5), transparent 40%); -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask-composite:exclude; opacity:0; transition:opacity .4s; }
.svc-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow-lg); border-color:transparent; }
.svc-card:hover::after{ opacity:1; }
.svc-card__top{ display:flex; align-items:flex-start; justify-content:space-between; }
.svc-ic{ width:52px;height:52px; border-radius:13px; display:grid;place-items:center; background:var(--ink); color:var(--accent-glow); transition:transform .4s var(--ease); }
.svc-ic svg{ width:24px;height:24px; }
.svc-card:hover .svc-ic{ transform:scale(1.06) rotate(-3deg); }
.svc-num{ font-family:var(--display); font-weight:800; font-size:.85rem; color:var(--text-faint); }
.svc-card h3{ font-size:1.35rem; }
.svc-card p{ color:var(--text-muted); font-size:.94rem; margin:.5rem 0 0; }
.svc-card .link-arrow{ margin-top:4px; }
.svc-card--dark{ background:var(--ink); color:#fff; border-color:var(--ink-700); }
.svc-card--dark h3{ color:#fff; } .svc-card--dark p{ color:var(--on-dark-muted); }
.svc-card--dark .svc-ic{ background:rgba(255,255,255,.06); }
.svc-card--dark .svc-num{ color:var(--on-dark-muted); }
.svc-card--dark .svc-list li{ color:#C4CCD8; }
.svc-list{ list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.svc-list li{ display:flex; gap:10px; align-items:flex-start; font-size:.9rem; color:var(--text-muted); }
.svc-list li svg{ width:16px;height:16px; color:var(--accent); flex:none; margin-top:3px; }

/* ---------- Split / feature ---------- */
.split{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.stat-row{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:34px; }
.stat{ border-left:2px solid var(--accent); padding-left:16px; }
.stat .n{ font-family:var(--display); font-weight:800; font-size:2rem; line-height:1; }
.stat .l{ font-size:.82rem; color:var(--text-muted); margin-top:6px; }
.dark .stat .n{ color:#fff; }

.feature-list{ list-style:none; margin:24px 0 0; padding:0; display:grid; gap:18px; }
.feature-list li{ display:flex; gap:14px; align-items:flex-start; }
.feature-list .fi{ width:38px;height:38px; border-radius:10px; background:rgba(34,57,111,.1); color:var(--accent); display:grid;place-items:center; flex:none; }
.feature-list .fi svg{ width:19px;height:19px; }
.feature-list h4{ font-family:var(--body); font-weight:700; font-size:1rem; margin:0 0 3px; }
.feature-list p{ margin:0; font-size:.9rem; color:var(--text-muted); }

/* ---------- Case studies ---------- */
.case-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.case-card{ position:relative; border:1px solid var(--ink-700); border-radius:var(--radius); padding:24px; background:var(--ink-800); overflow:hidden; transition:transform .35s var(--ease), border-color .35s; }
.case-card:hover{ transform:translateY(-4px); border-color:var(--accent); }
.case-card .ct{ font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--accent-glow); font-weight:600; }
.case-card h4{ color:#fff; font-size:1.1rem; margin:12px 0 8px; font-family:var(--display); }
.case-card p{ color:var(--on-dark-muted); font-size:.88rem; margin:0; }
.case-card .cnum{ position:absolute; top:16px; right:20px; font-family:var(--display); font-weight:800; font-size:2.4rem; color:rgba(255,255,255,.05); }

/* ---------- CTA band ---------- */
.cta-band{ position:relative; background:var(--ink); color:#fff; border-radius:24px; overflow:hidden; padding:clamp(40px,6vw,72px); }
.cta-band::before{ content:""; position:absolute; inset:0; background:radial-gradient(70% 120% at 85% 20%, rgba(34,57,111,.4), transparent 60%); }
.cta-band .container{ position:relative; }
.cta-band h2{ color:#fff; max-width:640px; }
.cta-band p{ color:var(--on-dark-muted); max-width:560px; margin-top:14px; }

/* ---------- Service sub-nav ---------- */
.svc-subnav{ background:var(--surface); border-bottom:1px solid var(--line); position:sticky; top:80px; z-index:40; }
.svc-subnav__inner{ display:flex; align-items:center; gap:8px; overflow-x:auto; padding:13px 0; scrollbar-width:none; }
.svc-subnav__inner::-webkit-scrollbar{ display:none; }
.svc-subnav__label{ font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:var(--text-faint); font-weight:700; margin-right:6px; white-space:nowrap; }
.svc-subnav a{ white-space:nowrap; font-size:.86rem; font-weight:600; color:var(--text-muted); padding:.5rem .95rem; border-radius:100px; border:1px solid var(--line); background:#fff; transition:color .2s, background .2s, border-color .2s; }
.svc-subnav a:hover{ color:var(--accent); border-color:var(--accent); }
.svc-subnav a.is-current{ color:#fff; background:var(--accent); border-color:var(--accent); }

/* ---------- Page hero (interior) ---------- */
.page-hero{ position:relative; background:var(--ink); color:#fff; padding:150px 0 70px; overflow:hidden; }
.page-hero .hero__glow{ opacity:.7; }
.page-hero .hero__grid{ opacity:.25; }
.page-hero .container{ position:relative; z-index:5; }
.breadcrumb{ display:flex; gap:8px; align-items:center; font-size:.82rem; color:var(--on-dark-muted); margin-bottom:22px; }
.breadcrumb a:hover{ color:#fff; } .breadcrumb .sep{ opacity:.5; }
.page-hero h1{ color:#fff; max-width:760px; }
.page-hero p{ color:#C4CCD8; max-width:620px; margin-top:18px; }

/* ---------- Download cards ---------- */
.dl-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.dl-card{ display:flex; align-items:center; gap:16px; padding:20px; background:#fff; border:1px solid var(--line); border-radius:var(--radius); transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s; }
.dl-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-md); border-color:var(--accent); }
.dl-ic{ width:48px;height:56px; border-radius:8px; flex:none; position:relative; background:linear-gradient(160deg,var(--accent),var(--accent-600)); display:grid; place-items:center; color:#fff; box-shadow:0 8px 18px -8px rgba(34,57,111,.7); }
.dl-ic span{ position:absolute; bottom:6px; font-size:.5rem; font-weight:700; letter-spacing:.1em; }
.dl-ic svg{ width:18px;height:18px; margin-top:-6px; }
.dl-meta{ flex:1; min-width:0; }
.dl-meta h4{ font-family:var(--body); font-weight:700; font-size:.98rem; margin:0 0 2px; }
.dl-meta p{ margin:0; font-size:.78rem; color:var(--text-faint); }
.dl-arrow{ width:38px;height:38px; border-radius:9px; background:var(--surface); display:grid;place-items:center; color:var(--accent); flex:none; transition:background .25s,color .25s; }
.dl-card:hover .dl-arrow{ background:var(--accent); color:#fff; }
.dl-arrow svg{ width:17px;height:17px; }

/* ---------- Database search tool ---------- */
.search-tool{ background:var(--ink); border-radius:var(--radius-lg); padding:clamp(26px,3vw,40px); color:#fff; position:relative; overflow:hidden; }
.search-tool::before{ content:""; position:absolute; inset:0; background:radial-gradient(60% 100% at 15% 0%, rgba(34,57,111,.35), transparent 60%); }
.search-tool > *{ position:relative; }
.search-box{ display:flex; gap:10px; margin-top:20px; background:rgba(255,255,255,.05); border:1px solid var(--ink-line); border-radius:12px; padding:8px 8px 8px 18px; align-items:center; }
.search-box svg{ width:20px;height:20px; color:var(--on-dark-muted); flex:none; }
.search-box input{ flex:1; background:transparent; border:0; outline:0; color:#fff; font-family:var(--body); font-size:.98rem; padding:.6rem 0; }
.search-box input::placeholder{ color:var(--on-dark-muted); }
.search-tags{ display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
.search-tags span{ font-size:.76rem; color:var(--on-dark-muted); border:1px solid var(--ink-line); border-radius:100px; padding:.3rem .8rem; }

/* ---------- Legal alert callout ---------- */
.alert-legal{ display:flex; gap:18px; align-items:center; background:linear-gradient(100deg, rgba(34,57,111,.08), rgba(34,57,111,.02)); border:1px solid rgba(34,57,111,.25); border-left:3px solid var(--accent); border-radius:var(--radius); padding:22px 26px; }
.alert-legal .al-ic{ width:44px;height:44px; border-radius:11px; background:var(--accent); color:#fff; display:grid;place-items:center; flex:none; }
.alert-legal .al-ic svg{ width:22px;height:22px; }
.alert-legal p{ margin:0; font-size:1rem; color:var(--text); font-weight:500; }
.alert-legal strong{ color:var(--accent-600); }

/* ---------- Info / area card ---------- */
.info-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:30px; height:100%; transition:box-shadow .3s var(--ease), transform .3s var(--ease); }
.info-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.info-card .ic-h{ display:flex; align-items:center; gap:14px; margin-bottom:14px; }
.info-card .ic-badge{ width:44px;height:44px;border-radius:11px; background:var(--ink); color:var(--accent-glow); display:grid;place-items:center; flex:none; }
.info-card .ic-badge svg{ width:22px;height:22px; }
.info-card h3{ font-size:1.15rem; }
.info-card p{ color:var(--text-muted); font-size:.92rem; margin:0; }

/* checklist columns */
.check-cols{ columns:2; column-gap:40px; margin:0; padding:0; list-style:none; }
.check-cols li{ break-inside:avoid; display:flex; gap:11px; align-items:flex-start; padding:9px 0; border-bottom:1px solid var(--line); font-size:.93rem; color:var(--text); }
.check-cols li svg{ width:17px;height:17px; color:var(--accent); flex:none; margin-top:3px; }
.check-cols--3{ columns:3; }
.dark .check-cols li{ color:var(--on-dark); border-color:var(--ink-line); }
.dark .check-cols li svg{ color:var(--accent-glow); }

/* ---------- Executive / team profiles ---------- */
.exec-card{ display:grid; grid-template-columns:96px 1fr; gap:26px; background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:30px; transition:box-shadow .35s var(--ease), transform .35s var(--ease); }
.exec-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.exec-avatar{ width:96px; height:96px; border-radius:16px; background:var(--ink); color:var(--accent-glow); display:grid; place-items:center; font-family:var(--display); font-weight:800; font-size:1.9rem; letter-spacing:-.02em; }
.exec-head h3{ font-size:1.4rem; }
.exec-role{ color:var(--accent); font-weight:600; font-size:.9rem; margin:4px 0 12px; }
.exec-card p{ color:var(--text-muted); font-size:.94rem; margin:0 0 14px; }
.exec-meta{ display:flex; flex-wrap:wrap; gap:8px 10px; }
.exec-tag{ font-size:.76rem; color:var(--text-muted); background:var(--surface); border:1px solid var(--line); border-radius:100px; padding:.28rem .7rem; }
.exec-contact{ display:inline-flex; align-items:center; gap:7px; color:var(--accent); font-weight:600; font-size:.88rem; margin-top:6px; }
.exec-contact svg{ width:15px; height:15px; }

/* sidebar cards */
.side-card{ background:var(--ink); color:#fff; border-radius:var(--radius-lg); padding:28px; }
.side-card h4{ color:#fff; font-size:1.1rem; margin:0 0 6px; }
.side-card > p{ color:var(--on-dark-muted); font-size:.86rem; margin:0 0 18px; }
.side-list{ list-style:none; margin:0; padding:0; display:grid; gap:2px; }
.side-list li{ display:flex; gap:12px; align-items:flex-start; padding:13px 0; border-top:1px solid var(--ink-line); font-size:.9rem; color:#C4CCD8; }
.side-list li:first-child{ border-top:0; }
.side-list li svg{ width:17px; height:17px; color:var(--accent-glow); flex:none; margin-top:2px; }

/* ---------- Affiliation badges (full) ---------- */
.affil-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.affil-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:32px; text-align:center; transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s; }
.affil-card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-lg); border-color:var(--accent); }
.affil-seal{ width:88px; height:88px; margin:0 auto 20px; border-radius:50%; border:2px solid var(--accent); color:var(--accent); display:grid; place-items:center; font-family:var(--display); font-weight:800; font-size:1.5rem; position:relative; }
.affil-seal::before{ content:""; position:absolute; inset:6px; border:1px solid rgba(34,57,111,.3); border-radius:50%; }
.affil-card h3{ font-size:1.15rem; }
.affil-card p{ color:var(--text-muted); font-size:.9rem; margin:8px 0 0; }
.affil-card .ac-abbr{ font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent); font-weight:700; margin-top:14px; }

/* ---------- Code of Ethics cards ---------- */
.ethics-cards{ display:flex; flex-direction:column; gap:20px; }
.ethics-card{ display:flex; gap:22px; align-items:flex-start; background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:28px 30px; transition:box-shadow .25s, border-color .25s, transform .25s; }
.ethics-card:hover{ border-color:var(--accent); box-shadow:var(--shadow-lg); transform:translateY(-2px); }
.acc-num{ font-family:var(--display); font-weight:800; font-size:1rem; color:var(--accent); width:42px; height:42px; border-radius:11px; background:rgba(34,57,111,.1); display:grid; place-items:center; flex:none; }
.ethics-card__title{ font-family:var(--display); font-weight:700; font-size:1.2rem; color:var(--text); margin:6px 0 12px; }
.ethics-card__body p{ color:var(--text-muted); font-size:.96rem; line-height:1.7; margin:0 0 12px; }
.ethics-card__body p:last-child{ margin:0; }
@media (max-width:560px){ .ethics-card{ padding:22px; gap:16px; } }

/* ---------- Referral portal dashboard ---------- */
.portal{ background:var(--ink); border-radius:24px; overflow:hidden; position:relative; padding:clamp(30px,4vw,56px); color:#fff; }
.portal::before{ content:""; position:absolute; inset:0; background:radial-gradient(70% 120% at 80% 0%, rgba(34,57,111,.4), transparent 55%); }
.portal > *{ position:relative; }
.portal-head{ display:flex; align-items:center; gap:14px; margin-bottom:26px; }
.portal-dot{ width:10px; height:10px; border-radius:50%; background:#37d67a; box-shadow:0 0 0 4px rgba(55,214,122,.15); }
.portal-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin:28px 0 32px; }
.pstep{ background:rgba(255,255,255,.04); border:1px solid var(--ink-line); border-radius:14px; padding:22px; }
.pstep .pn{ font-family:var(--display); font-weight:800; color:var(--accent-glow); font-size:.9rem; }
.pstep h4{ color:#fff; font-size:1.02rem; margin:10px 0 6px; font-family:var(--body); font-weight:700; }
.pstep p{ color:var(--on-dark-muted); font-size:.85rem; margin:0; }
.portal-secure{ display:flex; flex-wrap:wrap; gap:20px; margin-top:26px; padding-top:22px; border-top:1px solid var(--ink-line); }
.portal-secure span{ display:inline-flex; align-items:center; gap:8px; font-size:.82rem; color:var(--on-dark-muted); }
.portal-secure svg{ width:16px; height:16px; color:var(--accent-glow); }

/* ---------- Forms ---------- */
.form-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:clamp(24px,3vw,38px); box-shadow:var(--shadow-sm); }
.field{ margin-bottom:18px; }
.field label{ display:block; font-size:.82rem; font-weight:600; color:var(--text); margin-bottom:7px; letter-spacing:.01em; }
.field .req{ color:var(--accent); }
.field input, .field select, .field textarea{
  width:100%; font-family:var(--body); font-size:.95rem; color:var(--text);
  background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:.8rem .9rem; outline:none;
  transition:border-color .2s, box-shadow .2s, background .2s;
}
.field input:focus, .field select:focus, .field textarea:focus{ border-color:var(--accent); background:#fff; box-shadow:0 0 0 3px rgba(34,57,111,.12); }
.field textarea{ resize:vertical; min-height:130px; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.hp-field{ position:absolute; left:-9999px; top:-9999px; width:1px; height:1px; opacity:0; overflow:hidden; }
.consent{ display:flex; gap:11px; align-items:flex-start; margin:6px 0 20px; }
.consent input{ width:auto; margin-top:4px; flex:none; }
.consent label{ font-weight:400; font-size:.82rem; color:var(--text-muted); line-height:1.5; margin:0; }
.form-note{ font-size:.78rem; color:var(--text-faint); margin-top:14px; display:flex; gap:8px; align-items:flex-start; }
.form-note svg{ width:15px; height:15px; color:var(--accent); flex:none; margin-top:2px; }

/* ---------- Office / contact cards ---------- */
.office-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:28px; }
.office-card .oc-flag{ display:inline-flex; align-items:center; gap:8px; font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--accent); font-weight:700; margin-bottom:12px; }
.office-card h3{ font-size:1.25rem; }
.office-card .oc-rows{ margin-top:16px; display:grid; gap:11px; }
.office-card .oc-row{ display:flex; gap:12px; align-items:flex-start; font-size:.92rem; color:var(--text-muted); }
.office-card .oc-row svg{ width:18px; height:18px; color:var(--accent); flex:none; margin-top:2px; }
.office-card .oc-row a{ color:var(--text); }
.office-card .oc-row a:hover{ color:var(--accent); }
.map-embed{ margin-top:18px; border-radius:12px; overflow:hidden; border:1px solid var(--line); background:var(--surface); aspect-ratio:16/7; position:relative; }
.map-embed iframe{ width:100%; height:100%; border:0; display:block; filter:grayscale(.3) contrast(1.05); }

/* ---------- FAQ ---------- */
.faq{ max-width:820px; margin-inline:auto; }

/* ---------- Prose (legal pages) ---------- */
.prose{ max-width:760px; }
.prose h2{ font-size:1.5rem; margin:38px 0 14px; }
.prose h3{ font-size:1.15rem; margin:26px 0 10px; font-family:var(--body); font-weight:700; }
.prose p{ color:var(--text-muted); margin:0 0 16px; line-height:1.75; }
.prose ul{ margin:0 0 18px; padding-left:20px; color:var(--text-muted); }
.prose li{ margin-bottom:8px; line-height:1.7; }
.prose a{ color:var(--accent); text-decoration:underline; text-underline-offset:2px; }
.prose strong{ color:var(--text); }

/* ---------- Global footprint grid ---------- */
.geo-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.geo-item{ display:flex; align-items:center; gap:12px; background:rgba(255,255,255,.03); border:1px solid var(--ink-line); border-radius:12px; padding:16px; transition:border-color .3s, background .3s; }
.geo-item:hover{ border-color:var(--accent); background:rgba(34,57,111,.08); }
.geo-item .gd{ width:8px; height:8px; border-radius:50%; background:var(--accent-glow); flex:none; }
.geo-item span{ font-size:.9rem; color:#C4CCD8; font-weight:500; }

/* ---------- Footer ---------- */
.footer{ background:var(--ink); color:var(--on-dark-muted); padding-top:72px; }
.footer a{ transition:color .2s; } .footer a:hover{ color:#fff; }
.footer__top{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; padding-bottom:48px; border-bottom:1px solid var(--ink-line); }
.footer__brand .logo__name{ color:#fff; } .footer__brand .logo__sub{ color:var(--on-dark-muted); }
.footer__brand p{ font-size:.9rem; margin:18px 0 0; max-width:320px; line-height:1.6; }
.footer h5{ font-family:var(--body); color:#fff; font-weight:700; font-size:.82rem; letter-spacing:.12em; text-transform:uppercase; margin:0 0 16px; }
.footer ul{ list-style:none; margin:0; padding:0; display:grid; gap:11px; font-size:.9rem; }
.office-block{ font-size:.88rem; line-height:1.7; }
.office-block .ob-name{ color:#fff; font-weight:600; display:block; margin-bottom:6px; }
.office-block a{ color:var(--accent-glow); }
.footer__bottom{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; padding-block:26px; font-size:.82rem; }
.footer__bottom .fb-links{ display:flex; gap:22px; }

/* ---------- Reveal animations (base states set by JS-driven GSAP; fallback visible) ---------- */
.reveal{ opacity:0; transform:translateY(26px); }
.reveal-ready .reveal{ will-change:transform,opacity; }
/* If JS disabled, show everything */
html:not(.reveal-ready) .reveal{ opacity:1; transform:none; }

/* Floating action */
.fab{ position:fixed; right:22px; bottom:22px; z-index:55; display:flex; flex-direction:column; gap:10px; }
.fab a{ display:inline-flex; align-items:center; gap:9px; padding:.8rem 1.15rem; border-radius:100px; font-weight:600; font-size:.9rem; box-shadow:var(--shadow-lg); transition:transform .25s var(--ease); }
.fab a:hover{ transform:translateY(-3px); }
.fab .fab-call{ background:#fff; color:var(--ink); border:1px solid var(--line); }
.fab .fab-ref{ background:var(--accent); color:#fff; }
.fab svg{ width:17px;height:17px; }

/* ---------- Responsive ---------- */
@media (max-width:1080px){
  .mega__inner{ grid-template-columns:1fr 1fr; }
  .split{ grid-template-columns:1fr !important; gap:40px; } /* beats per-page inline 2-col grids */
  .footer__top{ grid-template-columns:1fr 1fr; gap:32px; }
  .case-grid{ grid-template-columns:1fr 1fr; }
  .affil-grid{ grid-template-columns:1fr 1fr; }
  .geo-grid{ grid-template-columns:repeat(3,1fr); }
}
@media (max-width:900px){
  .nav, .nav-cta.desktop-only{ display:none; }
  .hamburger{ display:inline-flex; }
  .bento{ grid-template-columns:1fr 1fr; }
  .bento .cell,.bento .cell--wide,.bento .cell--half{ grid-column:span 1; }
  .dl-grid{ grid-template-columns:1fr; }
}
@media (max-width:900px){
  .grid[style*="repeat(3"]{ grid-template-columns:1fr 1fr !important; }
  .portal-steps{ grid-template-columns:1fr; }
  .geo-grid{ grid-template-columns:repeat(2,1fr); }
  .check-cols--3{ columns:2; }
}
@media (max-width:640px){
  .logo__word{ font-size:1.08rem; }
  .logo__sub{ font-size:.48rem; letter-spacing:.12em; }
  .topbar .container, .navbar .container{ padding-inline:20px; }
  .topbar .tb-left{ display:none; }               /* tagline blows out the 40px bar on phones */
  .topbar .container{ justify-content:center; }
  .topbar .tb-right > a{ padding:0 10px; }
  .topbar .tb-right .hide-sm{ display:none; }
  .fab{ right:14px; bottom:14px; }
  .fab a{ padding:.7rem 1rem; font-size:.85rem; }
  .bento{ grid-template-columns:1fr; }
  .case-grid{ grid-template-columns:1fr; }
  .footer__top{ grid-template-columns:1fr; }
  .check-cols, .check-cols--3{ columns:1; }
  .trust-strip{ gap:22px 34px; }
  .stat-row{ grid-template-columns:1fr 1fr; }
  .hero__cta .btn{ width:100%; justify-content:center; }
  .affil-grid{ grid-template-columns:1fr; }
  .geo-grid{ grid-template-columns:1fr; }
  .grid[style*="repeat(3"]{ grid-template-columns:1fr !important; }
  .exec-card{ grid-template-columns:1fr; gap:18px; }
  .exec-avatar{ width:72px; height:72px; font-size:1.5rem; }
  .field-row{ grid-template-columns:1fr; }
  .acc-body__inner{ padding-left:28px; }
  .acc-head{ padding:20px; gap:14px; font-size:1.05rem; }
}
