/* =============================================================================
   ALL4SCALE - Global Operating Group
   Shared design system. Inter-only. Navy-dominant. Zero dependencies.
   -----------------------------------------------------------------------------
   Contents
   01. Tokens (custom properties)
   02. Reset & base
   03. Typography
   04. Layout - container, sections, the Meridian spine
   05. Buttons & links
   06. Header & navigation
   07. Hero & meridian field
   08. The Group
   09. Operating Doctrine
   10. By the Numbers
   11. Portfolio
   12. Clients
   13. Global Presence
   14. Contact
   15. Footer
   16. Document pages (legal)
   17. Status page
   18. Motion, reveal & reduced-motion
   19. Responsive
   ============================================================================= */

/* 01. TOKENS ================================================================ */
:root{
  /* Navy - the spine of the identity */
  --navy-950:#08172B;   /* deepest - hero & footer base */
  --navy-900:#0B1F39;   /* primary dark sections */
  --navy-850:#0E2640;   /* dark panels / cards */
  --navy-800:#102945;   /* raised surfaces on dark */
  --navy-700:#173458;   /* borders / dividers on dark */
  --navy-600:#1F4576;   /* mid */
  --navy-500:#2A5A95;   /* brand mid */

  /* Accent - single, restrained, confident (not Tailwind-blue) */
  --accent:#2E6FD6;     /* primary action */
  --accent-2:#6BA3F0;   /* hover / highlight / draw-in line / coordinates */
  --accent-deep:#21508F;/* link text on light (AA-safe) */

  /* Light side - clean institutional document */
  --paper:#FFFFFF;
  --mist:#F4F7FB;       /* alternating light section */
  --cloud:#E8EEF6;      /* light panel */
  --line-light:#D6E0EC; /* hairline on light */

  /* Text on light */
  --ink:#0B1F39;        /* navy as text - cohesive */
  --ink-soft:#43536B;   /* secondary */
  --ink-mute:#5E6E87;   /* tertiary / captions (darkened for AA on --mist) */

  /* Text on dark */
  --on-navy:#EAF1FA;    /* primary near-white (cool) */
  --on-navy-soft:#A9BBD3;
  --on-navy-mute:#7C8FAE;

  /* Status semantics - confined to the status page & footer status mark */
  --ok:#2F8F70;         /* operational (muted, institutional) */
  --ok-ink:#1C6B50;     /* operational text on light (AA) */
  --ok-on-dark:#4FB592; /* operational on navy */
  --warn:#B98326;       /* degraded */
  --down:#BD5048;       /* outage */

  /* Radii - disciplined, low. Not pills. */
  --r-sm:2px; --r:4px; --r-lg:6px;

  /* Elevation - restrained */
  --shadow-1:0 1px 2px rgba(8,23,43,.06);
  --shadow-2:0 12px 32px -12px rgba(8,23,43,.18);
  --shadow-dark:0 18px 48px -20px rgba(0,0,0,.55);

  /* Container & grid */
  --maxw:1240px;
  --gutter:clamp(20px,4vw,40px);
  --rail:clamp(16px,3.2vw,44px);          /* the meridian's left lane */
  --header-h:72px;

  /* Meridian spine geometry - aligns to the centered container, every section */
  --spine-x:max(var(--gutter), calc((100% - var(--maxw)) / 2 + var(--gutter)));
  --spine-on-dark:rgba(169,187,211,.16);
  --spine-on-light:var(--line-light);

  /* Motion */
  --ease:cubic-bezier(.2,.7,.2,1);
  --t-fast:.16s var(--ease);
  --t-mid:.24s var(--ease);
}

/* 02. RESET & BASE ========================================================== */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;}
html{scroll-padding-top:calc(var(--header-h) + 16px);}
body{
  margin:0;
  /* Inter for Latin; CJK fallbacks render Japanese glyphs Inter doesn't cover */
  font-family:"Inter","Inter var",system-ui,-apple-system,"Segoe UI",Roboto,
    "Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic UI","Yu Gothic",Meiryo,"Noto Sans JP",
    Helvetica,Arial,sans-serif;
  font-size:1rem;
  line-height:1.65;
  color:var(--ink);
  background:var(--navy-950);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-feature-settings:"kern" 1,"liga" 1,"calt" 1;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
ul{margin:0;padding:0;list-style:none;}
h1,h2,h3,h4,p{margin:0;}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--r-sm);}
.section--dark :focus-visible,.section--deep :focus-visible,.section--hero :focus-visible,
.doc-hero :focus-visible,.site-header :focus-visible,.site-footer :focus-visible{outline-color:var(--accent-2);}
::selection{background:rgba(46,111,214,.26);color:inherit;}

.skip-link{
  position:fixed;top:10px;left:10px;z-index:200;
  transform:translateY(-160%);
  background:var(--paper);color:var(--ink);
  padding:10px 16px;border-radius:var(--r);
  font-weight:600;font-size:.875rem;box-shadow:var(--shadow-2);
  transition:transform var(--t-mid);
}
.skip-link:focus{transform:none;}

/* 03. TYPOGRAPHY ============================================================ */
.display,.h2,.h3{font-weight:600;letter-spacing:-0.02em;color:var(--ink);}
.display{
  font-size:clamp(2.8rem,6vw,5rem);
  letter-spacing:-0.03em;line-height:1.02;font-weight:600;
}
.h2{font-size:clamp(2rem,3.6vw,3.1rem);line-height:1.08;}
.h3{font-size:clamp(1.3rem,2vw,1.55rem);line-height:1.2;letter-spacing:-0.01em;}
.lead{
  font-size:clamp(1.1rem,1.6vw,1.3rem);
  font-weight:400;line-height:1.6;color:var(--ink-soft);
}
.eyebrow{
  display:inline-flex;align-items:center;gap:.7em;
  font-size:.75rem;font-weight:600;letter-spacing:.2em;
  line-height:1;text-transform:uppercase;
  color:var(--accent-deep);
}
.eyebrow::before{
  content:"";width:18px;height:2px;background:var(--accent);flex:none;
}
.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;}

/* On-dark type colour mappings - every dark context (sections, hero, deep, docs) */
.section--dark .display,.section--deep .display,.section--hero .display,.doc-hero .display,
.section--dark .h2,.section--deep .h2,.section--hero .h2,.doc-hero .h2,
.section--dark .h3,.section--deep .h3,.section--hero .h3,.doc-hero .h3{color:var(--on-navy);}
.section--dark .lead,.section--deep .lead,.section--hero .lead,.doc-hero .lead{color:var(--on-navy-soft);}
.section--dark .eyebrow,.section--deep .eyebrow,.section--hero .eyebrow,.doc-hero .eyebrow{color:var(--accent-2);}
.section--dark .eyebrow::before,.section--deep .eyebrow::before,
.section--hero .eyebrow::before,.doc-hero .eyebrow::before{background:var(--accent-2);}

/* 04. LAYOUT - container, sections, spine =================================== */
.container{
  position:relative;
  width:100%;max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

.section{position:relative;padding-block:clamp(88px,12vh,160px);}
.section--light{background:var(--mist);color:var(--ink);}
.section--paper{background:var(--paper);color:var(--ink);}
.section--dark{background:var(--navy-900);color:var(--on-navy);}
.section--deep{background:var(--navy-950);color:var(--on-navy);}
.section--hero{background:var(--navy-950);color:var(--on-navy);}

/* a hairline that separates two adjacent dark sections from the deep footer */
.section + .section{position:relative;}

/* The Meridian spine - one continuous standard, top to bottom */
.spine{
  position:absolute;left:var(--spine-x);top:0;bottom:0;
  width:1px;background:var(--spine-on-dark);
  pointer-events:none;z-index:1;
}
.section--light .spine,
.section--paper .spine{background:var(--spine-on-light);}
.spine__node{
  position:absolute;left:-2.5px;top:-3px;
  width:6px;height:6px;background:var(--accent);
  box-shadow:0 0 0 3px rgba(46,111,214,.14);
}
.spine__tick{
  position:absolute;left:0;top:0;width:clamp(28px,5vw,56px);height:1px;
  background:var(--accent);opacity:.6;
}
.section--light .spine__node,
.section--paper .spine__node{box-shadow:0 0 0 3px rgba(46,111,214,.10);}

/* content sits in the lane to the right of the spine */
.section .container{padding-left:calc(var(--gutter) + var(--rail));}

/* Section heading block */
.section-head{max-width:54ch;}
.section-head .eyebrow{margin-bottom:22px;}
.section-head .h2{margin-bottom:0;max-width:20ch;}
.section-head .lead{margin-top:22px;max-width:60ch;}

/* Asymmetric two-column interior (eyebrow+heading left, content right) */
.split{
  display:grid;
  grid-template-columns:minmax(0,4fr) minmax(0,7fr);
  gap:clamp(36px,6vw,104px);
  align-items:start;
}
.split__head{position:sticky;top:calc(var(--header-h) + 40px);}

/* generic stacked head → block rhythm */
.block-gap{margin-top:clamp(48px,6vw,76px);}

/* prose */
.prose{max-width:64ch;}
.prose p{margin-bottom:1.25em;color:var(--ink-soft);font-size:1.0625rem;}
.prose p:last-child{margin-bottom:0;}
.section--dark .prose p,.section--deep .prose p,.section--hero .prose p{color:var(--on-navy-soft);}
.prose strong,.prose b{color:var(--ink);font-weight:600;}
.section--dark .prose strong,.section--deep .prose strong,.section--hero .prose strong{color:var(--on-navy);}

/* 05. BUTTONS & LINKS ======================================================= */
.btn{
  --btn-bg:var(--accent);--btn-fg:#fff;--btn-bd:var(--accent);
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  padding:14px 26px;border-radius:var(--r);
  font-size:.9375rem;font-weight:600;letter-spacing:.01em;
  background:var(--btn-bg);color:var(--btn-fg);
  border:1px solid var(--btn-bd);
  transition:transform var(--t-fast),background var(--t-fast),
             border-color var(--t-fast),box-shadow var(--t-fast);
  will-change:transform;
}
.btn--primary:hover{background:var(--accent-deep);border-color:var(--accent-deep);
  transform:translateY(-2px);box-shadow:0 10px 24px -12px rgba(46,111,214,.7);}
.btn--primary:active{transform:translateY(0);}
.btn--ghost{
  --btn-bg:transparent;--btn-fg:var(--on-navy);--btn-bd:rgba(169,187,211,.34);
  padding:11px 20px;
}
.btn--ghost:hover{--btn-bd:var(--accent-2);background:rgba(107,163,240,.08);
  transform:translateY(-2px);}
.section--light .btn--ghost,
.section--paper .btn--ghost{--btn-fg:var(--ink);--btn-bd:var(--line-light);}
.section--light .btn--ghost:hover,
.section--paper .btn--ghost:hover{--btn-bd:var(--accent);background:rgba(46,111,214,.05);}

/* text/arrow link with underline-from-left */
.link{
  position:relative;display:inline-flex;align-items:center;gap:.5em;
  font-weight:600;color:var(--accent-deep);padding-bottom:2px;
}
.section--dark .link,.section--deep .link,.section--hero .link{color:var(--accent-2);}
.link::after{
  content:"";position:absolute;left:0;bottom:0;height:1.5px;width:100%;
  background:currentColor;transform:scaleX(0);transform-origin:left;
  transition:transform var(--t-mid);
}
.link:hover::after{transform:scaleX(1);}
.link .arrow{transition:transform var(--t-fast);}
.link:hover .arrow{transform:translateX(3px);}

/* 06. HEADER & NAV ========================================================== */
.site-header{
  position:fixed;inset:0 0 auto 0;z-index:100;height:var(--header-h);
  display:flex;align-items:center;
  background:transparent;
  border-bottom:1px solid transparent;
  transition:background var(--t-mid),border-color var(--t-mid),box-shadow var(--t-mid);
}
.site-header.is-scrolled,
.page--solid .site-header{
  background:rgba(8,23,43,.86);
  -webkit-backdrop-filter:saturate(140%) blur(10px);
  backdrop-filter:saturate(140%) blur(10px);
  border-bottom-color:var(--navy-700);
}
.header__inner{display:flex;align-items:center;justify-content:space-between;gap:24px;
  width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);}

.brand{display:inline-flex;align-items:center;gap:11px;color:var(--on-navy);}
.brand__mark{width:24px;height:24px;flex:none;}
.brand__name{font-size:1.18rem;font-weight:600;letter-spacing:-0.01em;}
.brand__four{color:var(--accent-2);}

.header__actions{display:flex;align-items:center;gap:clamp(12px,1.6vw,22px);}
.nav{display:flex;align-items:center;gap:clamp(18px,2.4vw,38px);}

/* language switcher */
.lang{position:relative;}
.lang__toggle{display:inline-flex;align-items:center;gap:7px;padding:8px 11px;
  border:1px solid rgba(169,187,211,.28);border-radius:var(--r);
  color:var(--on-navy-soft);font-size:.82rem;font-weight:600;letter-spacing:.02em;
  transition:color var(--t-fast),border-color var(--t-fast),background var(--t-fast);}
.lang__toggle:hover{color:var(--on-navy);border-color:var(--accent-2);background:rgba(107,163,240,.08);}
.lang__toggle svg{width:15px;height:15px;opacity:.85;flex:none;}
.lang__caret{width:8px;height:8px;opacity:.7;transition:transform var(--t-fast);}
.lang__toggle[aria-expanded="true"] .lang__caret{transform:rotate(180deg);}
.lang__menu{position:absolute;right:0;top:calc(100% + 8px);min-width:168px;
  background:var(--navy-850);border:1px solid var(--navy-700);border-radius:var(--r);
  padding:6px;box-shadow:var(--shadow-dark);z-index:120;list-style:none;margin:0;}
.lang__menu[hidden]{display:none;}
.lang__menu li{margin:0;}
.lang__menu button{display:flex;align-items:center;justify-content:space-between;gap:14px;
  width:100%;text-align:left;padding:10px 12px;border-radius:var(--r-sm);
  color:var(--on-navy-soft);font-size:.92rem;font-weight:500;transition:color var(--t-fast),background var(--t-fast);}
.lang__menu button:hover{background:var(--navy-800);color:var(--on-navy);}
.lang__menu button[aria-pressed="true"]{color:var(--accent-2);}
.lang__menu button[aria-pressed="true"]::after{content:"✓";font-size:.8rem;color:var(--accent-2);}
.nav__list{display:flex;align-items:center;gap:clamp(16px,2.2vw,32px);}
.nav__list a{
  position:relative;font-size:.9375rem;font-weight:500;color:var(--on-navy-soft);
  padding:6px 0;transition:color var(--t-fast);
}
.nav__list a::after{
  content:"";position:absolute;left:0;right:0;bottom:-2px;height:1.5px;
  background:var(--accent-2);transform:scaleX(0);transform-origin:left;
  transition:transform var(--t-mid);
}
.nav__list a:hover,.nav__list a.is-active{color:var(--on-navy);}
.nav__list a:hover::after,.nav__list a.is-active::after{transform:scaleX(1);}

.nav-toggle{display:none;width:44px;height:44px;position:relative;
  border:1px solid rgba(169,187,211,.28);border-radius:var(--r);}
.nav-toggle__bars,.nav-toggle__bars::before,.nav-toggle__bars::after{
  content:"";position:absolute;left:50%;top:50%;width:18px;height:1.5px;
  background:var(--on-navy);transform:translate(-50%,-50%);transition:transform var(--t-mid),opacity var(--t-fast);
}
.nav-toggle__bars::before{top:calc(50% - 6px);}
.nav-toggle__bars::after{top:calc(50% + 6px);}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars{background:transparent;}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::before{transform:translate(-50%,-50%) rotate(45deg);top:50%;}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::after{transform:translate(-50%,-50%) rotate(-45deg);top:50%;}

/* mobile panel - the [hidden] attribute does the real hide (display:none),
   so the resting panel is out of the a11y tree; opacity/transform animate it.
   No `visibility` here, so a just-revealed link is immediately focusable. */
.mobile-nav{
  position:fixed;inset:var(--header-h) 0 0 0;z-index:99;
  background:var(--navy-950);
  border-top:1px solid var(--navy-700);
  padding:18px var(--gutter) 40px;
  display:flex;flex-direction:column;
  transform:translateY(-8px);opacity:0;
  transition:transform var(--t-mid),opacity var(--t-mid);
}
.mobile-nav[hidden]{display:none;}
.mobile-nav.is-open{transform:none;opacity:1;}
.mobile-nav__list{display:flex;flex-direction:column;}
.mobile-nav__list a{
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 2px;font-size:1.3rem;font-weight:600;color:var(--on-navy);
  letter-spacing:-0.01em;border-bottom:1px solid var(--navy-800);
}
.mobile-nav__list a .idx{font-size:.8rem;font-weight:600;color:var(--on-navy-mute);
  letter-spacing:.1em;font-variant-numeric:tabular-nums;}
.mobile-nav__cta{margin-top:28px;}
.mobile-nav__cta .btn{width:100%;}
.mobile-nav__meta{margin-top:auto;padding-top:32px;color:var(--on-navy-mute);
  font-size:.8125rem;letter-spacing:.02em;}

/* 07. HERO & MERIDIAN FIELD ================================================= */
.hero{min-height:100svh;display:flex;align-items:center;
  padding-top:calc(var(--header-h) + clamp(40px,8vh,90px));
  padding-bottom:clamp(40px,7vh,80px);overflow:hidden;}
.hero::before{ /* subtle depth wash, navy-on-navy, not a loud gradient */
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(120% 90% at 82% 12%, rgba(31,69,118,.30), transparent 60%),
    linear-gradient(180deg, var(--navy-950), #0a1a30 60%, var(--navy-950));
}
.hero .container{position:relative;z-index:3;width:100%;}
.hero__grid{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;}
.hero__content{max-width:46rem;}
.hero__title{margin:22px 0 0;}
.hero__lead{margin:26px 0 0;max-width:42rem;}
.hero__cta{margin-top:38px;display:flex;align-items:center;gap:22px;flex-wrap:wrap;}

/* meridian field svg */
.meridian{
  position:absolute;z-index:2;top:50%;right:-4%;
  width:min(58vw,720px);max-height:108%;
  transform:translateY(-50%) translate3d(var(--mpx,0px),var(--mpy,0px),0);
  transition:transform .5s cubic-bezier(.2,.7,.2,1);
  pointer-events:none;
  -webkit-mask-image:linear-gradient(105deg,transparent 0%,transparent 14%,#000 46%,#000 100%);
  mask-image:linear-gradient(105deg,transparent 0%,transparent 14%,#000 46%,#000 100%);
}
.meridian__line{fill:none;stroke:var(--navy-600);stroke-width:1;opacity:.5;}
.meridian__lat{fill:none;stroke:var(--navy-700);stroke-width:1;opacity:.6;}
.meridian__limb{fill:none;stroke:var(--navy-600);stroke-width:1;opacity:.34;}
.meridian-prime{fill:none;stroke:var(--accent-2);stroke-width:1.6;opacity:.85;}
.hq-node{opacity:0;}
.hq-node rect{fill:var(--accent);}
.hq-node line{stroke:var(--accent-2);stroke-width:1;opacity:.65;}
.hq-node text{fill:var(--on-navy-soft);font-size:11px;font-weight:600;
  letter-spacing:.12em;font-family:inherit;}

/* HQ live-clock strip */
.clock-strip{
  margin-top:clamp(48px,8vh,84px);
  border-top:1px solid var(--navy-700);
  padding-top:22px;
}
.clock-strip__label{
  font-size:.6875rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--on-navy-mute);margin-bottom:18px;display:flex;align-items:center;gap:10px;
}
.clock-strip__label::after{content:"";flex:1;height:1px;background:var(--navy-800);}
.clocks{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--navy-800);border:1px solid var(--navy-800);border-radius:var(--r);overflow:hidden;}
.clock{background:var(--navy-950);padding:16px 20px;display:flex;flex-direction:column;gap:8px;}
.clock__city{font-size:.6875rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:var(--on-navy-mute);}
.clock__time{font-size:1.5rem;font-weight:600;letter-spacing:.01em;color:var(--on-navy);
  font-variant-numeric:tabular-nums;line-height:1;}
.clock__time .sec{font-size:.875rem;color:var(--on-navy-mute);margin-left:2px;font-weight:500;}
.clock__zone{font-size:.6875rem;color:var(--on-navy-mute);letter-spacing:.04em;
  font-variant-numeric:tabular-nums;}

/* 08. THE GROUP ============================================================= */
.group-statement p{font-size:clamp(1.15rem,1.7vw,1.4rem);line-height:1.55;
  color:var(--ink-soft);margin-bottom:1.1em;font-weight:400;}
.group-statement p:last-child{margin-bottom:0;}
.group-statement .accentual{color:var(--ink);font-weight:500;}

/* 09. OPERATING DOCTRINE ==================================================== */
.doctrine-grid{display:grid;grid-template-columns:1fr 1fr;
  border-top:1px solid var(--navy-700);}
.tenet{padding:clamp(30px,3.4vw,46px) clamp(26px,3vw,48px) clamp(30px,3.4vw,46px) 0;
  display:flex;flex-direction:column;}
.tenet:nth-child(even){padding-left:clamp(26px,3vw,48px);padding-right:0;}
.tenet:nth-child(odd){border-right:1px solid var(--navy-700);}
.tenet:nth-child(1),.tenet:nth-child(2){border-bottom:1px solid var(--navy-700);}
.tenet__num{font-size:.875rem;font-weight:700;letter-spacing:.18em;color:var(--accent-2);
  margin-bottom:18px;font-variant-numeric:tabular-nums;}
.tenet__title{font-size:clamp(1.25rem,1.9vw,1.5rem);font-weight:600;letter-spacing:-0.01em;
  color:var(--on-navy);line-height:1.18;margin-bottom:14px;}
.tenet__desc{color:var(--on-navy-soft);font-size:1.0125rem;line-height:1.6;max-width:44ch;}

/* 10. BY THE NUMBERS ======================================================== */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--line-light);border:1px solid var(--line-light);
  border-radius:var(--r-lg);overflow:hidden;}
.stat{background:var(--paper);padding:clamp(30px,3.4vw,46px) clamp(24px,2.6vw,36px);}
.stat-figure{
  font-size:clamp(3rem,6vw,5rem);font-weight:700;letter-spacing:-0.03em;line-height:1;
  color:var(--ink);font-variant-numeric:tabular-nums;
  display:block;
}
.stat__label{margin-top:16px;font-size:.9375rem;font-weight:600;color:var(--ink-soft);
  letter-spacing:.01em;}
.stat__sub{margin-top:6px;font-size:.8125rem;color:var(--ink-mute);line-height:1.4;}
.stats__note{margin-top:26px;font-size:.8125rem;color:var(--ink-mute);max-width:64ch;
  display:flex;gap:.6em;}
.stats__note::before{content:"";flex:none;width:14px;height:1px;background:var(--line-light);margin-top:.7em;}

/* 11. PORTFOLIO ============================================================= */
.portfolio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.platform-card{
  position:relative;display:flex;flex-direction:column;
  background:var(--navy-850);border:1px solid var(--navy-700);border-radius:var(--r-lg);
  padding:clamp(28px,2.8vw,40px);
  transition:transform var(--t-mid),border-color var(--t-mid),background var(--t-mid),box-shadow var(--t-mid);
}
.platform-card:hover{transform:translateY(-3px);border-color:var(--navy-500);
  background:var(--navy-800);box-shadow:var(--shadow-dark);}
.platform-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px;}
.platform-card__name{font-size:clamp(1.35rem,1.9vw,1.6rem);font-weight:600;letter-spacing:-0.01em;color:var(--on-navy);}
.platform-card__discipline{margin-top:8px;font-size:.75rem;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--on-navy-mute);}
.platform-card__desc{color:var(--on-navy-soft);font-size:1.0125rem;line-height:1.6;margin-top:4px;}
.platform-card__foot{margin-top:auto;padding-top:28px;}
.status-tag{display:inline-flex;align-items:center;gap:9px;
  font-size:.6875rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--on-navy-soft);
  border:1px solid var(--navy-600);border-radius:var(--r-sm);padding:6px 12px;}
.status-tag::before{content:"";width:6px;height:6px;border-radius:1px;background:var(--ok-on-dark);}
.status-tag--incubation{color:var(--on-navy-mute);}
.status-tag--incubation::before{background:var(--accent-2);}

/* 12. CLIENTS =============================================================== */
.clients__heading{max-width:24ch;}
.ast{color:var(--accent);font-weight:600;}
.wordmarks{
  display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--line-light);border-left:1px solid var(--line-light);
  margin-top:clamp(40px,5vw,64px);
}
.wordmark{
  display:flex;align-items:center;justify-content:center;text-align:center;
  min-height:104px;padding:24px 18px;
  border-right:1px solid var(--line-light);border-bottom:1px solid var(--line-light);
  font-size:clamp(1.05rem,1.5vw,1.3rem);font-weight:600;letter-spacing:.005em;
  color:var(--ink-soft);transition:color var(--t-fast),background var(--t-fast);
}
.wordmark:hover{color:var(--ink);background:var(--paper);}
.wordmark--more{color:var(--ink-mute);font-weight:500;letter-spacing:.04em;}
.clients__note{margin-top:26px;font-size:.8125rem;color:var(--ink-mute);max-width:78ch;line-height:1.6;
  display:flex;gap:.6em;}
.clients__note::before{content:"";flex:none;width:14px;height:1px;background:var(--line-light);margin-top:.7em;}

/* 13. GLOBAL PRESENCE ======================================================= */
.offices{display:grid;grid-template-columns:1fr 1fr;
  border-top:1px solid var(--navy-700);border-left:1px solid var(--navy-700);}
.office{padding:clamp(30px,3.2vw,44px);
  border-right:1px solid var(--navy-700);border-bottom:1px solid var(--navy-700);
  display:flex;flex-direction:column;gap:6px;}
.office__city{font-size:clamp(1.3rem,1.9vw,1.55rem);font-weight:600;letter-spacing:-0.01em;color:var(--on-navy);}
.office__region{font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:var(--on-navy-mute);margin-bottom:14px;}
.office__address{color:var(--on-navy-soft);font-size:1rem;line-height:1.6;max-width:34ch;}
.office__coords{margin-top:14px;font-size:.875rem;color:var(--accent-2);
  font-variant-numeric:tabular-nums;letter-spacing:.02em;}

/* 14. CONTACT =============================================================== */
.contact__inner{max-width:60ch;}
.contact__line{margin-top:24px;color:var(--ink-soft);font-size:clamp(1.05rem,1.4vw,1.2rem);line-height:1.6;}
.contact__actions{margin-top:40px;display:flex;flex-wrap:wrap;gap:14px 40px;}
.mail-link{display:inline-flex;flex-direction:column;gap:4px;}
.mail-link__label{font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-mute);}
.mail-link__addr{position:relative;font-size:clamp(1.1rem,1.6vw,1.35rem);font-weight:600;color:var(--ink);
  letter-spacing:-0.01em;padding-bottom:3px;width:max-content;}
.mail-link__addr::after{content:"";position:absolute;left:0;bottom:0;height:1.5px;width:100%;
  background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform var(--t-mid);}
.mail-link:hover .mail-link__addr{color:var(--accent-deep);}
.mail-link:hover .mail-link__addr::after{transform:scaleX(1);}

/* 15. FOOTER =============================================================== */
.site-footer{background:var(--navy-950);color:var(--on-navy-soft);
  padding-block:clamp(64px,8vh,104px) 36px;position:relative;
  border-top:1px solid var(--navy-800);}
.footer__top{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(4,minmax(0,1fr));
  gap:clamp(32px,4vw,56px);}
.footer__brand .brand{margin-bottom:18px;}
.footer__tagline{color:var(--on-navy-mute);font-size:.9375rem;max-width:30ch;line-height:1.6;}
.footer__status{margin-top:24px;display:inline-flex;align-items:center;gap:10px;
  font-size:.8125rem;color:var(--on-navy-soft);letter-spacing:.02em;}
.footer__status .dot{width:7px;height:7px;border-radius:1px;background:var(--ok-on-dark);flex:none;}
.footer__status:hover{color:var(--on-navy);}
.footer__col h4{font-size:.6875rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
  color:var(--on-navy-mute);margin-bottom:18px;}
.footer__col ul{display:flex;flex-direction:column;gap:12px;}
.footer__col a{font-size:.9375rem;color:var(--on-navy-soft);transition:color var(--t-fast);width:max-content;}
.footer__col a:hover{color:var(--on-navy);}
.footer__bottom{margin-top:clamp(48px,6vh,72px);padding-top:28px;border-top:1px solid var(--navy-800);
  display:flex;flex-wrap:wrap;gap:18px 32px;align-items:baseline;justify-content:space-between;}
.footer__legal{font-size:.8125rem;color:var(--on-navy-mute);line-height:1.55;max-width:82ch;}
.footer__sublinks{display:flex;flex-wrap:wrap;gap:14px 22px;}
.footer__sublinks a{font-size:.8125rem;color:var(--on-navy-mute);transition:color var(--t-fast);}
.footer__sublinks a:hover{color:var(--on-navy-soft);}
.footer__sublinks .sep{color:var(--navy-700);}

/* 16. DOCUMENT PAGES (legal) ================================================ */
.doc-hero{background:var(--navy-950);color:var(--on-navy);
  padding-top:calc(var(--header-h) + clamp(56px,9vh,104px));padding-bottom:clamp(48px,7vh,84px);
  position:relative;overflow:hidden;}
.doc-hero::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(110% 80% at 88% 0%,rgba(31,69,118,.28),transparent 58%);}
.doc-hero .container{position:relative;z-index:2;}
.doc-hero__title{margin:20px 0 0;max-width:20ch;}
.doc-hero__meta{margin-top:26px;display:flex;flex-wrap:wrap;gap:10px 28px;
  font-size:.8125rem;color:var(--on-navy-mute);letter-spacing:.02em;}
.doc-hero__meta strong{color:var(--on-navy-soft);font-weight:600;}
.doc-hero__lead{margin-top:24px;max-width:62ch;color:var(--on-navy-soft);
  font-size:clamp(1.05rem,1.4vw,1.2rem);line-height:1.6;}

.doc-body{background:var(--paper);color:var(--ink);position:relative;
  padding-block:clamp(64px,9vh,120px);}
.doc-layout{display:grid;grid-template-columns:minmax(0,2.3fr) minmax(0,7fr);
  gap:clamp(40px,6vw,96px);align-items:start;}
.doc-toc{position:sticky;top:calc(var(--header-h) + 36px);}
.doc-toc h4{font-size:.6875rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-mute);margin-bottom:18px;}
.doc-toc ol{counter-reset:toc;display:flex;flex-direction:column;gap:2px;list-style:none;padding:0;margin:0;}
.doc-toc a{display:flex;gap:12px;padding:8px 0;font-size:.9375rem;color:var(--ink-soft);
  border-bottom:1px solid transparent;transition:color var(--t-fast);line-height:1.4;}
.doc-toc a::before{counter-increment:toc;content:counter(toc,decimal-leading-zero);
  color:var(--ink-mute);font-variant-numeric:tabular-nums;font-weight:600;font-size:.8125rem;flex:none;}
.doc-toc a:hover,.doc-toc a.is-active{color:var(--accent-deep);}

.doc-section{padding-top:8px;}
.doc-section + .doc-section{margin-top:clamp(40px,5vw,64px);padding-top:clamp(40px,5vw,64px);
  border-top:1px solid var(--line-light);}
.doc-section__num{font-size:.8125rem;font-weight:700;letter-spacing:.16em;color:var(--accent);
  font-variant-numeric:tabular-nums;display:block;margin-bottom:14px;}
.doc-section h2{font-size:clamp(1.4rem,2.2vw,1.85rem);font-weight:600;letter-spacing:-0.015em;
  color:var(--ink);line-height:1.18;margin-bottom:18px;}
.doc-section h3{font-size:1.1rem;font-weight:600;color:var(--ink);margin:28px 0 10px;}
.doc-section p{color:var(--ink-soft);font-size:1.0625rem;line-height:1.7;margin-bottom:1.1em;max-width:74ch;}
.doc-section ul.bullets{list-style:none;margin:0 0 1.2em;padding:0;max-width:74ch;}
.doc-section ul.bullets li{position:relative;padding-left:24px;margin-bottom:12px;
  color:var(--ink-soft);font-size:1.0625rem;line-height:1.65;}
.doc-section ul.bullets li::before{content:"";position:absolute;left:0;top:.62em;
  width:7px;height:7px;background:var(--accent);border-radius:1px;}
.doc-section a.inline{color:var(--accent-deep);font-weight:600;border-bottom:1px solid rgba(33,80,143,.35);}
.doc-section a.inline:hover{border-bottom-color:var(--accent-deep);}
.doc-note{margin-top:clamp(48px,6vw,72px);padding:24px 28px;background:var(--mist);
  border:1px solid var(--line-light);border-left:3px solid var(--accent);border-radius:var(--r);
  color:var(--ink-soft);font-size:.9375rem;line-height:1.65;max-width:80ch;}
.doc-note strong{color:var(--ink);}
/* localized notice on legal pages - only shown when the body language is not the
   authoritative English (full legal text remains in English) */
.legal-xnote{display:none;margin-bottom:clamp(32px,4vw,52px);padding:16px 20px;
  background:var(--cloud);border:1px solid var(--line-light);border-left:3px solid var(--accent);
  border-radius:var(--r);color:var(--ink-soft);font-size:.9rem;line-height:1.6;max-width:80ch;}
html[lang="ja"] .legal-xnote, html[lang="de"] .legal-xnote{display:block;}

/* 17. STATUS PAGE =========================================================== */
.status-banner{display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  margin-top:30px;padding:22px 26px;border-radius:var(--r-lg);
  background:rgba(79,181,146,.10);border:1px solid rgba(79,181,146,.34);}
.status-banner__mark{width:13px;height:13px;border-radius:2px;background:var(--ok-on-dark);flex:none;
  box-shadow:0 0 0 4px rgba(79,181,146,.16);}
.status-banner__text{font-size:clamp(1.1rem,1.6vw,1.35rem);font-weight:600;color:var(--on-navy);letter-spacing:-0.01em;}
.status-banner__time{margin-left:auto;font-size:.8125rem;color:var(--on-navy-mute);
  font-variant-numeric:tabular-nums;letter-spacing:.02em;}

.status-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--line-light);border:1px solid var(--line-light);border-radius:var(--r-lg);
  overflow:hidden;margin-bottom:clamp(40px,5vw,64px);}
.status-summary__cell{background:var(--paper);padding:26px 28px;}
.status-summary__fig{font-size:clamp(1.8rem,3vw,2.4rem);font-weight:700;letter-spacing:-0.02em;
  color:var(--ink);font-variant-numeric:tabular-nums;}
.status-summary__lab{margin-top:8px;font-size:.8125rem;color:var(--ink-mute);letter-spacing:.02em;}

.status-group{margin-bottom:clamp(32px,4vw,52px);}
.status-group__title{font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-mute);margin-bottom:18px;display:flex;align-items:center;gap:12px;}
.status-group__title::after{content:"";flex:1;height:1px;background:var(--line-light);}
.status-rows{border:1px solid var(--line-light);border-radius:var(--r-lg);overflow:hidden;}
.status-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px 28px;align-items:center;
  padding:20px 26px;background:var(--paper);}
.status-row + .status-row{border-top:1px solid var(--line-light);}
.status-row__name{font-size:1.05rem;font-weight:600;color:var(--ink);}
.status-row__desc{font-size:.8125rem;color:var(--ink-mute);margin-top:3px;font-weight:400;}
.status-row__state{display:inline-flex;align-items:center;gap:9px;font-size:.875rem;font-weight:600;
  color:var(--ok-ink);justify-self:end;letter-spacing:.01em;}
.status-row__state::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--ok);}
.status-row__bars{grid-column:1 / -1;display:flex;gap:2px;align-items:flex-end;height:30px;margin-top:4px;}
/* flex:1 1 0 + min-width:1px lets all 90 bars shrink to fit any width (no clip) */
.uptime-bar{flex:1 1 0;min-width:1px;height:100%;background:var(--ok);opacity:.85;border-radius:1px;
  transition:opacity var(--t-fast),transform var(--t-fast);}
.uptime-bar:hover{opacity:1;transform:scaleY(1.06);}
.uptime-bar--nodata{background:var(--cloud);}
.status-row__meta{grid-column:1 / -1;display:flex;justify-content:space-between;
  font-size:.75rem;color:var(--ink-mute);letter-spacing:.04em;margin-top:2px;}

.incidents{margin-top:clamp(40px,5vw,60px);}
.incidents__title{font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-mute);margin-bottom:18px;}
.incident-empty{padding:36px 28px;text-align:center;border:1px dashed var(--line-light);
  border-radius:var(--r-lg);background:var(--mist);color:var(--ink-soft);}
.incident-empty strong{color:var(--ink);display:block;font-size:1.05rem;margin-bottom:6px;font-weight:600;}
.status-legend{display:flex;flex-wrap:wrap;gap:18px 28px;margin-top:26px;
  font-size:.75rem;color:var(--ink-mute);letter-spacing:.02em;}
.status-legend span{display:inline-flex;align-items:center;gap:8px;}
.status-legend i{width:9px;height:9px;border-radius:2px;}
.lg-ok{background:var(--ok);}
.lg-warn{background:var(--warn);}
.lg-down{background:var(--down);}

/* 18. MOTION, REVEAL & REDUCED-MOTION ====================================== */
/* Scroll reveals - JS adds .is-visible on intersection. If scripting is off,
   the content is shown unconditionally so nothing is ever hidden behind JS. */
.reveal{opacity:0;transform:translateY(22px);filter:blur(8px);
  transition:opacity .75s var(--ease),transform .75s var(--ease),filter .75s var(--ease);
  transition-delay:calc(var(--d,0) * 75ms);}
.reveal.is-visible{opacity:1;transform:none;filter:blur(0);}
@media (scripting: none){ .reveal{opacity:1;transform:none;filter:none;} }

/* Hero load - pure CSS, autoplays once on load. No JS/rAF gate, so the hero
   always resolves to its visible end state (animation-fill-mode: both). */
.hero-anim{opacity:0;transform:translateY(12px);
  animation:heroIn .62s var(--ease) both;animation-delay:calc(var(--d,0) * 75ms);}
@keyframes heroIn{to{opacity:1;transform:none;}}

/* The prime meridian draws itself in once; HQ nodes fade after it lands. */
.meridian-prime{stroke-dasharray:1400;stroke-dashoffset:1400;
  animation:draw 1.25s var(--ease) .3s forwards;}
@keyframes draw{to{stroke-dashoffset:0;}}
.hq-node{opacity:0;animation:nodeIn .5s var(--ease) both;}
.hq-node--1{animation-delay:1.2s;}
.hq-node--2{animation-delay:1.34s;}
.hq-node--3{animation-delay:1.48s;}
.hq-node--4{animation-delay:1.62s;}
@keyframes nodeIn{to{opacity:1;}}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.001ms !important;animation-delay:0s !important;
    transition-duration:.001ms !important;animation-iteration-count:1 !important;}
  .reveal{opacity:1;transform:none;filter:none;}
  .hero-anim{opacity:1;transform:none;}
  .meridian-prime{stroke-dashoffset:0;}
  .hq-node{opacity:1;}
  .meridian-pulse{display:none;}
  .hero__title{animation:none;}
  .section--dark::before,.section--deep::before{display:none;}
}

/* 19. RESPONSIVE =========================================================== */
@media (max-width:1024px){
  .footer__top{grid-template-columns:1fr 1fr 1fr;}
  .footer__brand{grid-column:1 / -1;margin-bottom:8px;}
}
@media (max-width:900px){
  .split{grid-template-columns:1fr;gap:clamp(28px,5vw,44px);}
  .split__head{position:static;}
  .portfolio-grid{grid-template-columns:1fr;}
  .doc-layout{grid-template-columns:1fr;gap:clamp(28px,5vw,40px);}
  .doc-toc{position:static;}
}
@media (max-width:820px){
  :root{--header-h:64px;}
  .nav{display:none;}
  .nav-toggle{display:block;}
  .stats{grid-template-columns:1fr 1fr;}
  .status-summary{grid-template-columns:1fr 1fr;}
  .meridian{width:min(70vw,520px);right:-12%;opacity:.85;}
}
@media (max-width:760px){
  .doctrine-grid{grid-template-columns:1fr;border-top:1px solid var(--navy-700);}
  .tenet{padding:clamp(26px,6vw,38px) 0 !important;border-right:none !important;
    border-bottom:1px solid var(--navy-700);}
  .tenet:last-child{border-bottom:none;}
  .offices{grid-template-columns:1fr;border-left:none;}
  .office{border-right:none;}
  .wordmarks{grid-template-columns:1fr 1fr;}
}
@media (max-width:600px){
  :root{--rail:14px;}
  .clocks{grid-template-columns:1fr 1fr;}
  .footer__top{grid-template-columns:1fr 1fr;}
  .hero__cta{gap:16px;}
  .hero__cta .btn{flex:1 1 auto;}
  .status-row{grid-template-columns:1fr;}
  .status-row__state{justify-self:start;}
  .status-row__bars{gap:1px;}
  .footer__bottom{flex-direction:column;}
}
@media (max-width:420px){
  .stats{grid-template-columns:1fr;}
  .status-summary{grid-template-columns:1fr;}
  .clocks{grid-template-columns:1fr;}
  .wordmarks{grid-template-columns:1fr;}
  .footer__top{grid-template-columns:1fr;}
  .brand__name{font-size:1.08rem;}
}

/* =============================================================================
   20. HERO EFFECT LAYERS - aurora wash + particle constellation (the AI layer)
   Layer order in the hero: ::before(0) · aurora(0) · canvas(1) · meridian(2) · content(3)
   ============================================================================= */
.hero__aurora{position:absolute;z-index:0;pointer-events:none;border-radius:50%;
  filter:blur(90px);will-change:transform;}
.hero__aurora--1{width:46vw;max-width:620px;aspect-ratio:1/1;top:-12%;right:1%;
  background:radial-gradient(circle,rgba(46,111,214,.26),transparent 68%);
  animation:auroraA 24s ease-in-out infinite;}
.hero__aurora--2{width:40vw;max-width:540px;aspect-ratio:1/1;bottom:-18%;left:-9%;
  background:radial-gradient(circle,rgba(20,52,96,.5),transparent 70%);
  animation:auroraB 30s ease-in-out infinite;}
@keyframes auroraA{50%{transform:translate3d(-26px,30px,0) scale(1.08);}}
@keyframes auroraB{50%{transform:translate3d(28px,-22px,0) scale(1.07);}}
.hero-canvas{position:absolute;inset:0;z-index:1;width:100%;height:100%;
  pointer-events:none;opacity:.9;}

/* =============================================================================
   21. 3D TILT CARDS + PREMIUM SURFACE POLISH
   ============================================================================= */
.tilt{transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  transform-style:preserve-3d;transition:transform .5s var(--ease);will-change:transform;}
.tilt.is-tilting{transition:transform .07s linear;}
.tilt__glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:3;
  opacity:0;transition:opacity .35s var(--ease);
  background:radial-gradient(440px circle at var(--mx,50%) var(--my,50%),
    rgba(123,176,247,.16),transparent 56%);}
.tilt:hover .tilt__glare{opacity:1;}
.tilt > *{transform-style:preserve-3d;}

/* portfolio cards as 3D surfaces with parallax depth */
.platform-card{box-shadow:var(--shadow-dark),inset 0 1px 0 rgba(255,255,255,.04);}
.platform-card.tilt:hover{transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  border-color:var(--navy-500);background:var(--navy-800);}
.platform-card.tilt .platform-card__top{transform:translateZ(34px);}
.platform-card.tilt .platform-card__tagline{transform:translateZ(28px);}
.platform-card.tilt .platform-card__desc{transform:translateZ(20px);}
.platform-card.tilt .platform-card__caps{transform:translateZ(16px);}
.platform-card.tilt .platform-card__foot{transform:translateZ(30px);}

/* brand cards - tagline, capabilities, trademark marks */
.platform-card__tagline{margin-top:20px;font-size:1.08rem;font-weight:600;letter-spacing:-0.01em;
  line-height:1.35;color:var(--accent-2);}
.platform-card__desc{margin-top:14px;}
.platform-card__caps{list-style:none;margin:24px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;}
.platform-card__caps li{position:relative;padding-left:24px;font-size:.9rem;line-height:1.45;color:var(--on-navy-soft);}
.platform-card__caps li::before{content:"";position:absolute;left:1px;top:.5em;width:7px;height:7px;
  border-radius:1px;background:var(--accent-2);box-shadow:0 0 9px rgba(107,163,240,.55);}
.tm{font-size:.5em;font-weight:500;vertical-align:super;color:var(--on-navy-mute);margin-left:1px;letter-spacing:0;}
.brand__tm{font-size:.46em;font-weight:500;vertical-align:super;color:var(--on-navy-mute);margin-left:1px;letter-spacing:0;}

/* =============================================================================
   22. INVESTOR RELATIONS - access gate + gated portal
   ============================================================================= */
.ir-gate{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;
  overflow:hidden;background:var(--navy-950);
  padding:calc(var(--header-h) + 56px) var(--gutter) 72px;}
.ir-gate::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(60% 60% at 50% 0%,rgba(31,69,118,.34),transparent 60%),
    radial-gradient(50% 50% at 80% 100%,rgba(46,111,214,.14),transparent 60%);}
.ir-gate .spine{z-index:1;}
.ir-card{position:relative;z-index:3;width:100%;max-width:468px;
  background:linear-gradient(180deg,var(--navy-850),var(--navy-900));
  border:1px solid var(--navy-700);border-radius:var(--r-lg);
  padding:clamp(30px,4vw,46px);box-shadow:var(--shadow-dark);}
.ir-card__lock{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;
  border:1px solid var(--navy-700);border-radius:var(--r);margin-bottom:24px;color:var(--accent-2);}
.ir-card__title{font-size:clamp(1.55rem,2.4vw,2rem);font-weight:600;color:var(--on-navy);
  letter-spacing:-0.02em;line-height:1.1;margin-bottom:12px;}
.ir-card__sub{color:var(--on-navy-soft);font-size:.95rem;line-height:1.6;margin-bottom:28px;}
.ir-field{margin-bottom:18px;}
.ir-label{display:block;font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--on-navy-mute);margin-bottom:8px;}
.ir-input{width:100%;background:var(--navy-950);border:1px solid var(--navy-700);border-radius:var(--r);
  padding:13px 15px;color:var(--on-navy);font:inherit;font-size:.95rem;
  font-variant-numeric:tabular-nums;
  transition:border-color var(--t-fast),box-shadow var(--t-fast);}
.ir-input::placeholder{color:var(--on-navy-mute);letter-spacing:normal;}
.ir-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(46,111,214,.20);}
.ir-input[aria-invalid="true"]{border-color:var(--down);box-shadow:0 0 0 3px rgba(189,80,72,.18);}
.ir-error{display:none;align-items:flex-start;gap:9px;margin-bottom:18px;padding:11px 14px;
  background:rgba(189,80,72,.10);border:1px solid rgba(189,80,72,.36);border-radius:var(--r);
  color:#EBADA7;font-size:.85rem;line-height:1.5;}
.ir-error.is-shown{display:flex;}
.ir-card .btn{width:100%;margin-top:8px;}
.ir-card__note{margin-top:26px;padding-top:20px;border-top:1px solid var(--navy-800);
  font-size:.78rem;color:var(--on-navy-mute);line-height:1.65;}
.ir-card__note strong{color:var(--on-navy-soft);font-weight:600;}
.ir-demo{margin-top:10px;}
.ir-demo code{color:var(--accent-2);font-family:inherit;font-variant-numeric:tabular-nums;letter-spacing:.04em;}
.ir-demo-fill{color:var(--accent-2);background:none;border:0;font:inherit;font-size:.78rem;
  padding:0;text-decoration:underline;text-underline-offset:2px;cursor:pointer;}
.ir-demo-fill:hover{color:var(--on-navy);}

/* gated portal */
.ir-portal[hidden]{display:none;}
.ir-welcome{display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;margin-top:24px;}
.ir-chip{display:inline-flex;align-items:center;gap:9px;font-size:.78rem;font-weight:600;letter-spacing:.04em;
  color:var(--ok-on-dark);border:1px solid rgba(79,181,146,.34);border-radius:100px;padding:6px 14px;}
.ir-chip::before{content:"";width:7px;height:7px;border-radius:2px;background:var(--ok-on-dark);}
.ir-signout{margin-left:auto;}
.ir-block + .ir-block{margin-top:clamp(48px,7vw,88px);}
.ir-block__head{max-width:60ch;margin-bottom:clamp(28px,3vw,40px);}
.ir-block__head .h2{margin-top:18px;}

.ir-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
.ir-metric{position:relative;background:var(--paper);border:1px solid var(--line-light);
  border-radius:var(--r-lg);padding:clamp(24px,2.4vw,32px);
  box-shadow:var(--shadow-1),inset 0 1px 0 rgba(255,255,255,.5);}
.ir-metric__fig{font-size:clamp(2rem,3vw,2.7rem);font-weight:700;letter-spacing:-0.02em;color:var(--ink);
  font-variant-numeric:tabular-nums;line-height:1;}
.ir-metric__lab{margin-top:12px;font-size:.875rem;color:var(--ink-soft);font-weight:600;}
.ir-metric__sub{margin-top:4px;font-size:.75rem;color:var(--ink-mute);line-height:1.4;}

.report-list{border:1px solid var(--line-light);border-radius:var(--r-lg);overflow:hidden;}
.report-row{display:grid;grid-template-columns:1fr auto auto;gap:14px 28px;align-items:center;
  padding:20px 26px;background:var(--paper);transition:background var(--t-fast);}
.report-row:hover{background:var(--mist);}
.report-row + .report-row{border-top:1px solid var(--line-light);}
.report-row__title{font-weight:600;color:var(--ink);font-size:1.02rem;}
.report-row__meta{font-size:.78rem;color:var(--ink-mute);margin-top:3px;font-variant-numeric:tabular-nums;}
.report-row__tag{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-soft);border:1px solid var(--line-light);border-radius:var(--r-sm);padding:5px 11px;white-space:nowrap;}
.report-row__action{justify-self:end;white-space:nowrap;}

.gov-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.gov-item{background:var(--mist);border:1px solid var(--line-light);border-radius:var(--r-lg);
  padding:clamp(24px,2.4vw,32px);}
.gov-item__num{font-size:.78rem;font-weight:700;letter-spacing:.16em;color:var(--accent);
  font-variant-numeric:tabular-nums;}
.gov-item h3{font-size:1.12rem;font-weight:600;color:var(--ink);margin:14px 0 10px;letter-spacing:-0.01em;}
.gov-item p{font-size:.95rem;color:var(--ink-soft);line-height:1.6;}

.event-list{border-top:1px solid var(--line-light);}
.event-row{display:grid;grid-template-columns:128px 1fr auto;gap:14px 28px;align-items:baseline;
  padding:20px 4px;border-bottom:1px solid var(--line-light);}
.event-row__date{font-size:.82rem;font-weight:600;color:var(--accent-deep);
  font-variant-numeric:tabular-nums;letter-spacing:.02em;}
.event-row__title{font-weight:600;color:var(--ink);}
.event-row__type{font-size:.78rem;color:var(--ink-mute);justify-self:end;}

/* =============================================================================
   23. EXPANDED FOOTER LEGAL
   ============================================================================= */
.footer__disclaimer{margin-top:clamp(44px,5vh,68px);padding-top:30px;
  border-top:1px solid var(--navy-800);
  display:grid;grid-template-columns:1fr 1fr;gap:14px 48px;}
.footer__disclaimer p{font-size:.75rem;color:var(--on-navy-mute);line-height:1.6;margin:0;}
.footer__disclaimer strong{color:var(--on-navy-soft);font-weight:600;}
.footer__disclaimer a{color:var(--on-navy-soft);border-bottom:1px solid var(--navy-700);}
.footer__disclaimer a:hover{color:var(--on-navy);border-bottom-color:var(--accent-2);}
@media (max-width:680px){ .footer__disclaimer{grid-template-columns:1fr;gap:13px;} }

/* reduced motion for new effects */
@media (prefers-reduced-motion: reduce){
  .hero__aurora{animation:none;}
  .tilt{transform:none !important;}
  .tilt__glare{display:none;}
}

/* responsive for new modules */
@media (max-width:900px){
  .ir-metrics{grid-template-columns:repeat(2,1fr);}
  .gov-grid{grid-template-columns:1fr;}
}
@media (max-width:640px){
  .report-row{grid-template-columns:1fr auto;}
  .report-row__action{grid-column:1 / -1;justify-self:start;}
  .event-row{grid-template-columns:1fr;gap:4px;}
  .event-row__type{justify-self:start;}
}
@media (max-width:480px){
  .ir-metrics{grid-template-columns:1fr;}
  .ir-signout{margin-left:0;width:100%;}
  .ir-signout .btn{width:100%;}
}

/* =============================================================================
   24. THE MAGIC LAYER - premium ambient effects (navy-native, restrained)
   ============================================================================= */
@property --a4s-angle{syntax:"<angle>";initial-value:0deg;inherits:false;}

/* 24.1 film grain - a fixed, barely-there filmic texture over the whole page */
body::after{
  content:"";position:fixed;inset:0;z-index:9000;pointer-events:none;opacity:.05;
  mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* 24.2 cursor spotlight - a soft light follows the pointer on dark sections */
.section--dark::before, .section--deep::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;
  transition:opacity .55s var(--ease);
  background:radial-gradient(460px circle at var(--mx,50%) var(--my,50%),
    rgba(67,130,224,.16), rgba(67,130,224,.05) 32%, transparent 62%);
}
@media (hover:hover) and (pointer:fine){
  .section--dark:hover::before, .section--deep:hover::before{opacity:1;}
}
.section--dark > .container, .section--deep > .container{position:relative;z-index:1;}

/* 24.3 hero headline - a one-time light sweep across the glyphs */
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .hero__title{
    /* base layer keeps every glyph solid on-navy; the shine band only crosses
       during the sweep, so the headline is never left invisible or streaked */
    background-image:
      linear-gradient(105deg, transparent 42%, rgba(233,243,255,.92) 50%, transparent 58%),
      linear-gradient(var(--on-navy), var(--on-navy));
    background-size:300% 100%, 100% 100%;
    background-position:200% 0, 0 0;
    background-repeat:no-repeat;
    -webkit-background-clip:text; background-clip:text;
    -webkit-text-fill-color:transparent; color:transparent;
    animation:heroIn .62s var(--ease) calc(var(--d,0) * 75ms) both,
              heroSheen 2.8s cubic-bezier(.3,.6,.3,1) 1.3s forwards;
  }
}
@keyframes heroSheen{ from{background-position:200% 0, 0 0;} to{background-position:-120% 0, 0 0;} }

/* 24.4 a luminous pulse travels down the prime meridian */
.meridian-prime{filter:drop-shadow(0 0 3px rgba(107,163,240,.45));}
.meridian-pulse{
  fill:#a8caff;
  offset-path:path("M300 28 L300 692"); offset-rotate:0deg;
  animation:meridianTravel 4.4s cubic-bezier(.45,0,.55,1) 1.6s infinite;
}
@keyframes meridianTravel{
  0%{offset-distance:0%;opacity:0;} 10%{opacity:1;} 90%{opacity:1;} 100%{offset-distance:100%;opacity:0;}
}

/* 24.5 section spine nodes light up as their section enters view */
.spine__node{transition:box-shadow .6s var(--ease),background .6s var(--ease);}
.in-view > .spine .spine__node{
  background:var(--accent-2);
  box-shadow:0 0 0 4px rgba(46,111,214,.18), 0 0 16px 2px rgba(107,163,240,.55);
}
.in-view > .spine .spine__tick{opacity:.9;}

/* 24.6 cards - a slow rotating accent halo behind the surface on hover */
.platform-card, .ir-metric{position:relative;}
.platform-card::before, .ir-metric::before{
  content:"";position:absolute;inset:-1.5px;border-radius:inherit;z-index:-1;pointer-events:none;
  background:conic-gradient(from var(--a4s-angle),
    rgba(46,111,214,0) 0deg, rgba(107,163,240,.6) 90deg, rgba(46,111,214,0) 200deg, rgba(46,111,214,0) 360deg);
  filter:blur(7px);opacity:0;transition:opacity .5s var(--ease);
}
.platform-card:hover::before, .ir-metric:hover::before{opacity:.9;animation:a4sSpin 3.6s linear infinite;}
@keyframes a4sSpin{ to{--a4s-angle:360deg;} }

/* 24.7 magnetic primary buttons (JS sets the transform; this smooths the reset) */
.btn--primary{will-change:transform;}

/* reduced motion - drop the moving pieces, keep static states legible */
@media (prefers-reduced-motion: reduce){
  .meridian-pulse{display:none;}
  .platform-card:hover::before, .ir-metric:hover::before{animation:none;opacity:.6;}
  body::after{opacity:.04;}
}

/* =============================================================================
   25. ICONOGRAPHY - consistent line icons (stroke-based, monochrome)
   ============================================================================= */
.ico{display:inline-block;width:22px;height:22px;flex:none;
  stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;
  vertical-align:middle;}
.ico--sm{width:18px;height:18px;}

/* doctrine - icon sits beside the roman numeral */
.tenet__num{display:inline-flex;align-items:center;gap:13px;}
.tenet__ico{color:var(--accent-2);width:24px;height:24px;}

/* stats - icon above the figure */
.stat__ico{display:block;color:var(--ink-mute);width:26px;height:26px;margin-bottom:18px;}

/* portfolio - icon leads the card head */
.platform-card__top{align-items:center;gap:16px;justify-content:flex-start;}
.platform-ico{color:var(--accent-2);width:30px;height:30px;}

/* presence - a location mark per office */
.office__pin{display:block;color:var(--accent-2);width:24px;height:24px;margin-bottom:16px;}

/* contact - mail glyph before the address */
.mail-link__addr{display:inline-flex;align-items:center;gap:11px;}
.mail-ico{color:var(--accent);width:20px;height:20px;}
.section--dark .mail-ico,.section--deep .mail-ico{color:var(--accent-2);}

/* investor relations */
.ir-metric__ico{display:block;color:var(--accent);width:26px;height:26px;margin-bottom:16px;}
.report-main{display:flex;gap:15px;align-items:flex-start;}
.report-ico{color:var(--accent);width:22px;height:22px;flex:none;margin-top:1px;}
.gov-item__num{display:inline-flex;align-items:center;gap:12px;}
.gov-ico{color:var(--accent);width:22px;height:22px;}
.event-row__date{display:inline-flex;align-items:center;gap:9px;}
.event-ico{color:var(--accent-deep);width:17px;height:17px;}

/* =============================================================================
   26. 3D GLOBE - Global Presence (canvas, vanilla, navy-native)
   ============================================================================= */
.globe-wrap{display:flex;justify-content:center;align-items:center;}
.globe{width:min(600px,94vw);aspect-ratio:1/1;height:auto;display:block;
  touch-action:pan-y;filter:drop-shadow(0 30px 70px rgba(8,23,43,.6)) drop-shadow(0 0 40px rgba(46,111,214,.18));}

/* status */
.status-sum-ico{display:block;color:var(--ink-mute);width:23px;height:23px;margin-bottom:13px;}
.status-group__title{align-items:center;}
.status-group__title .ico{color:var(--accent);width:18px;height:18px;margin-right:3px;}
.status-row__name{display:inline-flex;align-items:center;gap:10px;}
.status-row__ico{color:var(--ink-mute);width:19px;height:19px;}
