/* Foundation Property & Capital — one-page site (v3)
   Navy + stone, taken from the logo. Hanken Grotesk throughout.
   Big photography, big numbers, few words. */

:root {
  --ground: #f7f6f2;
  --paper: #ffffff;
  --navy: #001963;           /* brand navy — CMYK 100/85/40/35 */
  --navy-2: #0b2775;
  --ink: #0b1a4f;
  --ink-2: #4a5470;
  --ink-3: #7b8398;
  --stone: #cdcdbe;          /* brand grey — CMYK 20/14/23/0 */
  --stone-2: #a8a899;
  --stone-soft: #ecece5;
  --rule: #dcdcd2;
  --rule-soft: #e9e9e2;
  --on-dark: #f6f5f0;
  --on-dark-2: #c6cbdc;
  --sans: "Hanken Grotesk", "Helvetica Neue", Arial, sans-serif;
  --max: 1320px;
  --gutter: clamp(20px, 5.5vw, 96px);
  --ease: cubic-bezier(.2, .7, .2, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body { margin: 0; background: var(--ground); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--navy); outline-offset: 3px; }
ul { margin: 0; padding: 0; list-style: none; }
.wrap { max-width: var(--max); margin: 0 auto; padding-inline: var(--gutter); }

/* ---------- Type ---------- */
h1, h2, h3 { margin: 0; text-wrap: balance; letter-spacing: -0.025em; font-weight: 400; }
h2 { font-size: clamp(34px, 4.2vw, 60px); line-height: 1.04; max-width: 20ch; }
h3 { font-size: 22px; line-height: 1.25; letter-spacing: -0.012em; font-weight: 500; }
p { margin: 0; }
.lede { font-size: clamp(17px, 1.25vw, 19px); line-height: 1.6; color: var(--ink-2); max-width: 56ch; font-weight: 300; }
.eyebrow { font-size: 11.5px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--stone-2); font-weight: 600; display: flex; align-items: center; gap: 12px; margin: 0; }
.eyebrow::before { content: ""; width: 26px; height: 1px; background: var(--stone); }
.eyebrow--light { color: var(--stone); }
.eyebrow--light::before { background: var(--stone); }

/* ---------- Section rhythm ---------- */
.section { padding-block: clamp(88px, 10vw, 150px); }
.section--paper { background: var(--paper); }
.section-head { display: grid; gap: 22px; margin-bottom: clamp(44px, 5vw, 80px); }

/* ---------- Header ---------- */
.header { position: fixed; inset: 0 0 auto 0; z-index: 50; display: flex; align-items: center; justify-content: space-between; padding: 22px var(--gutter); color: var(--on-dark); transition: background .45s var(--ease), padding .45s var(--ease), color .3s, border-color .45s; border-bottom: 1px solid transparent; }
.header.is-scrolled { background: rgba(247,246,242,.94); backdrop-filter: blur(14px); color: var(--ink); padding-block: 12px; border-color: var(--rule-soft); }
.brand { display: block; position: relative; height: 34px; width: 207px; }
.brand .logo { position: absolute; inset: 0; height: 100%; width: auto; transition: opacity .35s; }
.logo--navy { opacity: 0; }
.header.is-scrolled .logo--white { opacity: 0; }
.header.is-scrolled .logo--navy { opacity: 1; }
.nav { display: flex; align-items: center; gap: 30px; }
.nav a { font-size: 13.5px; font-weight: 500; letter-spacing: .01em; opacity: .85; position: relative; padding-block: 4px; transition: opacity .2s; }
.nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 0; height: 1px; background: currentColor; transition: right .3s var(--ease); }
.nav a:hover::after, .nav a.is-active::after { right: 0; }
.nav a:hover, .nav a.is-active { opacity: 1; }
.nav .cta { border: 1px solid currentColor; padding: 9px 16px; opacity: 1; transition: background .25s, color .25s, border-color .25s; }
.nav .cta::after { display: none; }
.nav .cta:hover { background: var(--navy); border-color: var(--navy); color: #fff; }
.header:not(.is-scrolled) .nav .cta:hover { background: var(--on-dark); border-color: var(--on-dark); color: var(--navy); }
.nav-toggle { display: none; background: none; border: 1px solid currentColor; color: inherit; width: 42px; height: 42px; cursor: pointer; }
.nav-toggle span { display: block; width: 18px; height: 1.5px; background: currentColor; margin: 4px auto; transition: transform .3s var(--ease), opacity .25s; }
@media (max-width: 1000px) {
  /* no backdrop-filter here: it would make the header the containing block for the fixed nav */
  .header.is-scrolled { backdrop-filter: none; background: rgba(247,246,242,.97); }
  .nav-toggle { display: block; position: relative; z-index: 60; }
  .nav { position: fixed; inset: 0; background: var(--navy); color: var(--on-dark); flex-direction: column; justify-content: center; gap: 24px; transform: translateY(-100%); transition: transform .5s var(--ease); }
  .nav.is-open { transform: translateY(0); }
  .nav a { font-size: 28px; font-weight: 400; letter-spacing: -0.02em; }
  .nav .cta { font-size: 15px; margin-top: 12px; }
  .nav .cta:hover { background: var(--on-dark) !important; color: var(--navy) !important; border-color: var(--on-dark) !important; }
  .nav-toggle[aria-expanded="true"] { color: var(--on-dark); }
  .nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(5.5px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-5.5px) rotate(-45deg); }
}

/* ---------- Hero ---------- */
.hero { position: relative; min-height: min(96vh, 940px); display: grid; align-items: end; overflow: hidden; background: var(--navy); color: var(--on-dark); }
.slides { position: absolute; inset: -6% 0; will-change: transform; }
.slide { position: absolute; inset: 0; opacity: 0; transition: opacity 1.8s var(--ease); }
.slide.is-active { opacity: 1; }
.slide img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.95) contrast(1.02); }
.slide.is-active img { animation: kenburns 10s var(--ease) forwards; }
@keyframes kenburns { from { transform: scale(1.02); } to { transform: scale(1.12) translate(-1.2%, .8%); } }
.slide::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(6,15,48,.5) 0%, rgba(6,15,48,.08) 32%, rgba(6,15,48,.5) 68%, rgba(6,15,48,.9) 100%); }
@media (prefers-reduced-motion: reduce) { .slide, .slide img { transition: none; animation: none !important; } }
.hero-content { position: relative; z-index: 2; width: 100%; padding-block: 160px 110px; }
.hero-copy { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: 40px; align-items: end; }
.hero-copy h1 { font-size: clamp(42px, 6vw, 88px); line-height: .98; letter-spacing: -0.035em; max-width: 14ch; font-weight: 400; }
.hero-copy .lede { margin-top: 26px; color: var(--on-dark-2); font-size: clamp(17px, 1.35vw, 21px); }
.slide-caption { position: relative; }
.slide-caption .cap { position: absolute; inset: 0; opacity: 0; transform: translateY(16px); transition: opacity 1s var(--ease), transform 1s var(--ease); pointer-events: none; }
.slide-caption .cap.is-active { opacity: 1; transform: none; position: relative; pointer-events: auto; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 40px; }
.btn { display: inline-flex; align-items: center; gap: 10px; padding: 15px 24px; font-size: 14px; font-weight: 500; letter-spacing: .01em; border: 1px solid rgba(246,245,240,.4); color: var(--on-dark); background: transparent; transition: border-color .25s, background .25s, color .25s, transform .3s var(--ease); }
.btn:hover { border-color: var(--on-dark); transform: translateY(-1px); }
.btn-primary { background: var(--on-dark); border-color: var(--on-dark); color: var(--navy); }
.btn-primary:hover { background: #fff; }
.btn-light { border-color: rgba(246,245,240,.5); margin-top: 30px; }
.btn svg { width: 14px; height: 14px; transition: transform .3s var(--ease); }
.btn:hover svg { transform: translateX(3px); }
.hero-meta { justify-self: end; text-align: right; }
.slide-index { display: flex; align-items: baseline; justify-content: flex-end; gap: 6px; color: var(--on-dark-2); font-size: 14px; font-variant-numeric: tabular-nums; }
.slide-index b { color: var(--on-dark); font-weight: 400; font-size: 36px; letter-spacing: -0.03em; line-height: 1; }
.slide-label { font-size: 11.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--stone); margin-top: 8px; }
.slide-controls { display: flex; gap: 8px; justify-content: flex-end; margin-top: 20px; align-items: center; }
.slide-controls button { background: rgba(6,15,48,.3); border: 1px solid rgba(246,245,240,.35); color: var(--on-dark); width: 44px; height: 44px; cursor: pointer; display: grid; place-items: center; transition: border-color .2s, background .2s; }
.slide-controls button:hover { border-color: var(--on-dark); background: rgba(6,15,48,.6); }
.slide-controls svg { width: 14px; height: 14px; }
.slide-dots { display: flex; gap: 6px; margin-right: 14px; }
.slide-dots button { width: 36px; height: 2px; border: 0; padding: 0; background: rgba(246,245,240,.3); position: relative; overflow: hidden; cursor: pointer; }
.slide-dots button.is-active::after { content: ""; position: absolute; inset: 0; background: var(--on-dark); transform-origin: left; animation: fill var(--dur, 7000ms) linear forwards; }
.hero.is-paused .slide-dots button.is-active::after { animation-play-state: paused; }
@keyframes fill { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.scroll-hint { position: absolute; left: 50%; bottom: 26px; z-index: 3; width: 1px; height: 48px; transform: translateX(-50%); overflow: hidden; background: rgba(246,245,240,.2); }
.scroll-hint span { position: absolute; inset: 0; background: var(--on-dark); transform-origin: top; animation: drop 2.2s var(--ease) infinite; }
@keyframes drop { 0% { transform: scaleY(0); transform-origin: top; } 45% { transform: scaleY(1); transform-origin: top; } 55% { transform: scaleY(1); transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }
@media (prefers-reduced-motion: reduce) { .slide-dots button.is-active::after, .scroll-hint span { animation: none; transform: none; } }
@media (max-width: 860px) {
  .hero-copy { grid-template-columns: 1fr; }
  .hero-meta { justify-self: start; text-align: left; }
  .slide-index, .slide-controls { justify-content: flex-start; }
  .hero-content { padding-block: 140px 80px; }
  .scroll-hint { display: none; }
}

/* ---------- Numbers ---------- */
.numbers { background: var(--paper); padding-block: clamp(64px, 7vw, 100px) clamp(40px, 4vw, 56px); border-bottom: 1px solid var(--rule-soft); }
.numbers-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 32px 24px; margin-top: 40px; }
.num b { display: block; font-weight: 300; font-size: clamp(52px, 6vw, 104px); line-height: .95; letter-spacing: -0.05em; color: var(--navy); font-variant-numeric: tabular-nums lining-nums; }
.num b sup { font-size: .32em; vertical-align: top; top: .4em; position: relative; color: var(--stone-2); letter-spacing: -0.01em; font-weight: 500; }
.num span { display: block; margin-top: 14px; font-size: 13.5px; color: var(--ink-2); padding-top: 12px; border-top: 1px solid var(--rule); }
.numbers-note { margin-top: 48px; font-size: 12.5px; color: var(--ink-3); }
@media (max-width: 960px) { .numbers-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 560px) { .numbers-grid { grid-template-columns: 1fr 1fr; gap: 28px 20px; } }

/* ---------- About ---------- */
.about-grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: 48px clamp(48px, 6vw, 110px); align-items: center; }
.about-text { display: grid; gap: 26px; }
.about-text h2 { margin-top: 2px; }
.themes-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 32px; margin-top: 10px; border-top: 1px solid var(--rule); }
.themes-list li { padding: 16px 0; border-bottom: 1px solid var(--rule); display: grid; gap: 2px; }
.themes-list b { font-weight: 500; font-size: 16px; }
.themes-list span { font-size: 13px; color: var(--ink-3); }
.about-photo { margin: 0; position: relative; }
.about-photo img { aspect-ratio: 4 / 5; width: 100%; object-fit: cover; filter: grayscale(1) contrast(1.05); }
.about-photo figcaption { margin-top: 14px; font-size: 13px; color: var(--ink-3); max-width: 40ch; }
@media (max-width: 900px) { .about-grid { grid-template-columns: 1fr; } .about-photo .ph { aspect-ratio: 16 / 10; } }

/* ---------- Strategy tiles ---------- */
.strategies { padding-bottom: 0; }
.tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.tile { position: relative; display: block; aspect-ratio: 4 / 5; overflow: hidden; background: var(--navy); color: var(--on-dark); isolation: isolate; }
.tile--wide { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; }
.tile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease), filter .6s; filter: saturate(.9) brightness(.95); }
.tile:hover img { transform: scale(1.05); filter: saturate(.9) brightness(.95); }
.tile::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(6,15,48,.15) 0%, rgba(6,15,48,.15) 40%, rgba(6,15,48,.92) 100%); transition: opacity .5s; }
.tile-body { position: absolute; inset: auto 0 0 0; z-index: 1; padding: 28px; display: grid; gap: 10px; }
.tile-tag { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--stone); font-weight: 600; display: flex; justify-content: space-between; gap: 8px 12px; flex-wrap: wrap; align-items: center; }
.tile-tag em { white-space: nowrap; }
.tile-tag em { font-style: normal; color: var(--on-dark); border: 1px solid rgba(246,245,240,.35); padding: 3px 7px; letter-spacing: .1em; }
.tile h3 { font-size: clamp(22px, 1.8vw, 28px); font-weight: 400; letter-spacing: -0.02em; max-width: 20ch; }
.tile--wide h3 { font-size: clamp(28px, 2.8vw, 44px); max-width: 18ch; }
.tile p { font-size: 14px; color: var(--on-dark-2); line-height: 1.5; max-width: 48ch; max-height: 0; opacity: 0; overflow: hidden; transition: max-height .6s var(--ease), opacity .5s var(--ease); }
.tile:hover p, .tile:focus-visible p { max-height: 8em; opacity: 1; }
.tile--wide p { max-height: none; opacity: 1; font-size: 15px; }
@media (max-width: 960px) { .tiles { grid-template-columns: 1fr 1fr; } .tile--wide { grid-column: span 2; grid-row: span 1; aspect-ratio: 16 / 9; } .tile:last-child { grid-column: span 2; aspect-ratio: 16 / 9; } }
@media (max-width: 600px) { .tiles { grid-template-columns: 1fr; gap: 10px; } .tile, .tile--wide, .tile:last-child { grid-column: span 1; aspect-ratio: 4 / 3; } .tile p { max-height: none; opacity: 1; } }
@media (hover: none) { .tile p { max-height: none; opacity: 1; } }

/* ---------- Full-bleed bands ---------- */
.band, .contact { position: relative; color: var(--on-dark); background: var(--navy); overflow: hidden; isolation: isolate; }
.band { margin-top: clamp(88px, 10vw, 150px); padding-block: clamp(96px, 11vw, 170px); }
.band-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; filter: saturate(.7); opacity: .55; }
.band::before, .contact::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(0,18,74,.94) 0%, rgba(0,18,74,.86) 55%, rgba(0,18,74,.7) 100%); }
.band h2 { color: var(--on-dark); margin-top: 22px; }
.band .lede { color: var(--on-dark-2); margin-top: 24px; }
.band-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 56px clamp(48px, 6vw, 110px); align-items: center; }
.platform-rows { border-top: 1px solid rgba(246,245,240,.2); }
.platform-rows li { display: grid; grid-template-columns: 64px minmax(0,1fr) auto; gap: 18px; align-items: center; padding: 22px 0; border-bottom: 1px solid rgba(246,245,240,.2); }
.p-abbr { font-size: 26px; font-weight: 300; letter-spacing: -0.02em; }
.p-name { font-size: 15px; font-weight: 500; display: grid; gap: 2px; }
.p-name small { font-size: 12.5px; color: var(--on-dark-2); font-weight: 400; }
.badge { font-size: 10px; letter-spacing: .12em; text-transform: uppercase; padding: 6px 9px; border: 1px solid rgba(246,245,240,.35); color: var(--on-dark-2); white-space: nowrap; font-weight: 600; }
.badge--own { border-color: var(--stone); color: var(--stone); }
@media (max-width: 900px) { .band-grid { grid-template-columns: 1fr; } .band::before, .contact::before { background: rgba(6,15,48,.88); } }
@media (max-width: 520px) { .platform-rows li { grid-template-columns: 52px 1fr; } .platform-rows .badge { grid-column: 2; justify-self: start; } }

/* ---------- Track record ---------- */
.record { border-top: 1px solid var(--rule); }
.record-row { display: grid; grid-template-columns: 120px minmax(0, 1fr) 160px; gap: 20px 40px; padding: 30px 0; border-bottom: 1px solid var(--rule); align-items: start; transition: background .3s; }
.record-row .r-years { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; padding-top: 6px; font-variant-numeric: tabular-nums; }
.record-row h3 { font-size: 24px; font-weight: 400; letter-spacing: -0.02em; }
.record-row p { color: var(--ink-2); font-size: 15px; max-width: 60ch; margin-top: 6px; font-weight: 300; }
.record-row .r-fig { text-align: right; }
.record-row .r-fig b { display: block; font-weight: 300; font-size: 40px; line-height: 1; letter-spacing: -0.04em; color: var(--navy); font-variant-numeric: tabular-nums; }
.record-row .r-fig span { display: block; font-size: 12px; color: var(--ink-3); margin-top: 8px; letter-spacing: .08em; text-transform: uppercase; }
.record-row--el { background: var(--navy); color: var(--on-dark); margin-inline: calc(-1 * var(--gutter)); padding-inline: var(--gutter); border-color: var(--navy); }
.record-row--el p, .record-row--el .r-years, .record-row--el .r-fig span { color: var(--on-dark-2); }
.record-row--el .r-fig b { color: var(--stone); }
@media (max-width: 760px) { .record-row { grid-template-columns: 1fr; gap: 10px; } .record-row .r-fig { text-align: left; display: flex; align-items: baseline; gap: 14px; } .record-row .r-fig span { margin-top: 0; } }

/* ---------- Requirements ---------- */
.req-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px 32px; }
.req { border-top: 1px solid var(--navy); padding-top: 22px; display: grid; gap: 14px; align-content: start; }
.req h3 { font-size: 22px; font-weight: 500; }
.req p { font-size: 14.5px; color: var(--ink-2); line-height: 1.55; font-weight: 300; }
.req dl { margin: 6px 0 0; display: grid; grid-template-columns: max-content 1fr; gap: 6px 14px; font-size: 13.5px; }
.req dt { color: var(--ink-3); }
.req dd { margin: 0; color: var(--ink); font-weight: 500; }
.req a { margin-top: 8px; font-size: 14px; font-weight: 500; display: inline-flex; align-items: center; gap: 8px; border-top: 1px solid var(--rule); padding-top: 14px; }
.req a:hover { color: var(--stone-2); }
.arrow { width: 14px; height: 14px; transition: transform .3s var(--ease); }
a:hover .arrow { transform: translateX(3px); }
.req-note { margin-top: 44px; font-size: 14px; color: var(--ink-3); max-width: 70ch; }
@media (max-width: 960px) { .req-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .req-grid { grid-template-columns: 1fr; } }

/* ---------- Team ---------- */
.team-lead { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px 24px; }
.person { display: grid; gap: 12px; }
.person figure { margin: 0; aspect-ratio: 1; overflow: hidden; background: var(--stone-soft); }
.person img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.person:hover img { transform: scale(1.035); }
.person figure::after { content: ""; position: absolute; inset: auto 0 0 0; height: 2px; background: var(--navy); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--ease); }
.person:hover figure::after { transform: scaleX(1); }
.person figure { position: relative; }
.person .p-name { font-size: 19px; font-weight: 500; letter-spacing: -0.015em; line-height: 1.2; }
.person .p-role { font-size: 13px; color: var(--ink-3); margin-top: 3px; }
.team-rest { margin-top: 56px; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 24px 18px; }
.team-rest .p-name { font-size: 15px; }
.team-rest .p-role { font-size: 12px; }
.join-box { background: var(--stone-soft); border: 1px dashed var(--stone-2); display: grid; place-content: center; text-align: center; padding: 20px 14px; gap: 6px; aspect-ratio: 1; min-width: 0; transition: border-color .25s, background .25s; }
.join-box b { font-weight: 500; font-size: 17px; }
.join-box span { font-size: 12px; color: var(--ink-3); }
.join:hover .join-box { border-color: var(--navy); background: var(--stone-soft); }
@media (max-width: 960px) { .team-rest { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 640px) { .team-lead { grid-template-columns: 1fr 1fr; } .team-rest { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 420px) { .team-rest { grid-template-columns: 1fr 1fr; } }

/* ---------- Contact ---------- */
.contact { padding-block: clamp(96px, 11vw, 170px) clamp(72px, 8vw, 120px); }
.contact-head { display: grid; gap: 22px; margin-bottom: clamp(44px, 5vw, 72px); }
.contact h2 { color: var(--on-dark); }
.doors { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.door { background: rgba(246,245,240,.06); border: 1px solid rgba(246,245,240,.16); padding: 30px 28px; display: grid; gap: 10px; align-content: start; backdrop-filter: blur(6px); transition: background .35s, border-color .35s, transform .4s var(--ease); }
.door:hover { background: rgba(246,245,240,.12); border-color: rgba(246,245,240,.35); transform: translateY(-3px); }
.d-k { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--stone); font-weight: 600; }
.door h3 { font-size: 22px; font-weight: 400; }
.door p { font-size: 14px; color: var(--on-dark-2); font-weight: 300; }
.d-link { font-size: 14px; font-weight: 500; display: inline-flex; gap: 8px; align-items: center; margin-top: 8px; }
.door:hover .arrow { transform: translateX(4px); }
.offices { margin-top: clamp(56px, 6vw, 88px); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; border-top: 1px solid rgba(246,245,240,.2); padding-top: 32px; }
.office { display: grid; gap: 8px; align-content: start; }
.o-label { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--stone); font-weight: 600; }
.office p { font-size: 14.5px; color: var(--on-dark-2); line-height: 1.55; }
.office a { font-size: 14.5px; font-weight: 500; }
.office a:hover { color: var(--stone); }
@media (max-width: 860px) { .doors, .offices { grid-template-columns: 1fr; } }

/* ---------- Footer ---------- */
.footer { background: #00124a; color: var(--on-dark-2); padding-block: 44px 48px; font-size: 12.5px; line-height: 1.65; }
.footer-grid { display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; }
.footer-logo { height: 30px; width: auto; }
.f-links { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.f-links a { color: var(--on-dark); font-weight: 500; font-size: 13px; }
.f-links a:hover { color: var(--stone); }
.f-legal { margin-top: 32px; max-width: 110ch; color: rgba(201,203,211,.75); }
.f-copy { margin-top: 24px; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px 24px; border-top: 1px solid rgba(246,245,240,.12); padding-top: 18px; }

/* ---------- Motion: reveal ---------- */
.reveal { --d: 0ms; }
.has-js .reveal { opacity: 0; transform: translateY(24px); transition: opacity .9s var(--ease) var(--d), transform .9s var(--ease) var(--d); }
.has-js .reveal.is-in { opacity: 1; transform: none; }
.has-js .reveal-stagger > * { opacity: 0; transform: translateY(20px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
.has-js .reveal-stagger.is-in > * { opacity: 1; transform: none; }
.has-js .reveal-stagger.is-in > :nth-child(1) { transition-delay: 0ms; }
.has-js .reveal-stagger.is-in > :nth-child(2) { transition-delay: 80ms; }
.has-js .reveal-stagger.is-in > :nth-child(3) { transition-delay: 160ms; }
.has-js .reveal-stagger.is-in > :nth-child(4) { transition-delay: 240ms; }
.has-js .reveal-stagger.is-in > :nth-child(5) { transition-delay: 320ms; }
.has-js .reveal-stagger.is-in > :nth-child(6) { transition-delay: 400ms; }
.has-js .reveal-stagger.is-in > :nth-child(n+7) { transition-delay: 480ms; }
@media (prefers-reduced-motion: reduce) { .has-js .reveal, .has-js .reveal-stagger > * { opacity: 1 !important; transform: none !important; transition: none !important; } }

/* =====================================================================
   v4 polish — depth, texture, motion, mobile
   ===================================================================== */

/* Faint engineering grid on light sections: the page's signature texture */
.section, .numbers { position: relative; }
.section::before, .numbers::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background-image: linear-gradient(to right, rgba(6,15,48,.045) 1px, transparent 1px);
  background-size: calc((100% - 2 * var(--gutter)) / 12) 100%;
  background-position: var(--gutter) 0;
  -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.9), rgba(0,0,0,0) 70%);
  mask-image: linear-gradient(180deg, rgba(0,0,0,.9), rgba(0,0,0,0) 70%);
}
.section > *, .numbers > * { position: relative; z-index: 1; }

/* Section index inside the eyebrow */
.eyebrow .idx { font-variant-numeric: tabular-nums; color: var(--navy); font-weight: 500; letter-spacing: .04em; padding-right: 10px; border-right: 1px solid var(--rule); margin-right: -2px; }
.eyebrow--light .idx { color: var(--on-dark); border-right-color: rgba(246,245,240,.3); }

/* Hero: vertical hairlines + word-by-word reveal */
.hero-rules { position: absolute; inset: 0; z-index: 1; pointer-events: none; display: grid; grid-template-columns: repeat(3, 1fr); padding-inline: var(--gutter); max-width: var(--max); margin: 0 auto; width: 100%; }
.hero-rules i { border-left: 1px solid rgba(246,245,240,.09); height: 100%; transform: scaleY(0); transform-origin: top; animation: rule-in 1.6s var(--ease) forwards; }
.hero-rules i:nth-child(2) { animation-delay: .15s; } .hero-rules i:nth-child(3) { animation-delay: .3s; }
@keyframes rule-in { to { transform: scaleY(1); } }
.hero .slide::after { background: linear-gradient(180deg, rgba(6,15,48,.42) 0%, rgba(6,15,48,.06) 30%, rgba(6,15,48,.32) 62%, rgba(6,15,48,.86) 100%), radial-gradient(120% 80% at 20% 90%, rgba(6,15,48,.45), transparent 60%); }
.hero-copy h1 .w { display: inline-block; overflow: hidden; vertical-align: bottom; margin-right: .22em; }
.hero-copy h1 .w > span { display: inline-block; transform: translateY(110%); transition: transform .9s var(--ease); }
.cap.is-active h1 .w > span { transform: translateY(0); }
.cap.is-active h1 .w:nth-child(1) > span { transition-delay: .05s; }
.cap.is-active h1 .w:nth-child(2) > span { transition-delay: .1s; }
.cap.is-active h1 .w:nth-child(3) > span { transition-delay: .15s; }
.cap.is-active h1 .w:nth-child(4) > span { transition-delay: .2s; }
.cap.is-active h1 .w:nth-child(5) > span { transition-delay: .25s; }
.cap.is-active h1 .w:nth-child(6) > span { transition-delay: .3s; }
.cap.is-active h1 .w:nth-child(7) > span { transition-delay: .35s; }
.cap.is-active h1 .w:nth-child(8) > span { transition-delay: .4s; }
.cap.is-active h1 .w:nth-child(n+9) > span { transition-delay: .45s; }
.cap .lede, .hero-actions { transition: opacity .9s var(--ease) .5s, transform .9s var(--ease) .5s; }
.cap:not(.is-active) .lede { opacity: 0; transform: translateY(10px); }
.hero { min-height: min(100svh, 940px); }
.hero-content { padding-block: 150px 100px; }
.hero-actions .btn { backdrop-filter: blur(6px); }
.btn-primary { box-shadow: 0 12px 30px -14px rgba(0,0,0,.6); }

/* Header: hairline progress bar showing page position */
.header::after { content: ""; position: absolute; left: 0; bottom: -1px; height: 1px; width: 100%; background: var(--navy); transform: scaleX(var(--progress, 0)); transform-origin: left; opacity: 0; transition: opacity .3s; }
.header.is-scrolled::after { opacity: 1; }

/* Numbers: depth via large ghost numeral and rule reveal */
.num { position: relative; padding-top: 6px; }
.num b { transition: color .3s; }
.num span { position: relative; }
.num span::before { content: ""; position: absolute; left: 0; top: -1px; height: 1px; width: 100%; background: var(--navy); transform: scaleX(0); transform-origin: left; transition: transform 1.2s var(--ease) .3s; }
.reveal-stagger.is-in .num span::before { transform: scaleX(1); }
.numbers { padding-top: clamp(72px, 8vw, 110px); }

/* About: offset stone frame behind photo, slow inner parallax */
.about-photo { position: relative; }
.about-photo::before { content: ""; position: absolute; inset: 22px -22px -22px 22px; background: var(--stone-soft); z-index: 0; transition: transform .8s var(--ease); }
.about-photo:hover::before { transform: translate(6px, 6px); }
.about-photo .ph { position: relative; z-index: 1; display: block; overflow: hidden; aspect-ratio: 4 / 5; }
.about-photo .ph img { aspect-ratio: auto; height: 100%; will-change: transform; transition: filter .8s var(--ease); }
.about-photo:hover img { filter: grayscale(.2) contrast(1.02); }
.about-photo figcaption { position: relative; z-index: 1; }
.themes-list li { transition: padding-left .35s var(--ease); }
.themes-list li:hover { padding-left: 10px; }

/* Tiles: index mark, deeper hover, stronger gradient base */
.tile { box-shadow: 0 1px 0 rgba(6,15,48,.06); transition: transform .6s var(--ease), box-shadow .6s var(--ease); }
.tile:hover { transform: translateY(-4px); box-shadow: 0 30px 60px -30px rgba(6,15,48,.55); }
.tile-idx { position: absolute; top: 22px; left: 26px; z-index: 2; font-size: 12px; letter-spacing: .12em; color: rgba(246,245,240,.75); font-variant-numeric: tabular-nums; padding-bottom: 6px; border-bottom: 1px solid rgba(246,245,240,.35); }
.tile::after { background: linear-gradient(180deg, rgba(6,15,48,.12) 0%, rgba(6,15,48,.02) 35%, rgba(6,15,48,.45) 65%, rgba(6,15,48,.92) 100%); }
.tile .tile-body { transform: translateY(0); transition: transform .6s var(--ease); }
.tile:hover .tile-body { transform: translateY(-4px); }
.tile h3 { position: relative; }

/* Bands: layered gradient + faint grid on dark */
.band::after, .contact::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image: linear-gradient(to right, rgba(246,245,240,.05) 1px, transparent 1px);
  background-size: calc((100% - 2 * var(--gutter)) / 12) 100%; background-position: var(--gutter) 0; }
.band-bg { will-change: transform; transform: translate3d(0,0,0) scale(1.15); }
.platform-rows li { transition: padding-left .35s var(--ease), background .3s; }
.platform-rows li:hover { padding-left: 10px; }

/* Track record: hover lift of the figure */
.record-row:hover .r-fig b { transform: translateX(-4px); }
.record-row .r-fig b { transition: transform .4s var(--ease); }
.record-row--el { position: relative; }
.record-row--el::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(246,245,240,.04), transparent 50%); pointer-events: none; }

/* Requirements: hairline grows in on reveal */
.req { position: relative; border-top: 0; }
.req::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 1px; background: var(--navy); transform: scaleX(0); transform-origin: left; transition: transform 1.1s var(--ease); }
.reveal-stagger.is-in .req::before { transform: scaleX(1); }
.req:nth-child(2)::before { transition-delay: .1s; } .req:nth-child(3)::before { transition-delay: .2s; } .req:nth-child(4)::before { transition-delay: .3s; }

/* Team: subtle lift */
.person figure { transition: transform .6s var(--ease), box-shadow .6s var(--ease); }
.person:hover figure { transform: translateY(-3px); box-shadow: 0 24px 40px -28px rgba(6,15,48,.5); }

/* Doors: gradient sheen */
.door { position: relative; overflow: hidden; }
.door::before { content: ""; position: absolute; inset: 0; background: linear-gradient(120deg, transparent 40%, rgba(246,245,240,.08) 50%, transparent 60%); transform: translateX(-100%); transition: transform .9s var(--ease); pointer-events: none; }
.door:hover::before { transform: translateX(100%); }

/* Footer logo a touch larger */
.footer-logo { height: 34px; }

/* ---------- Mobile refinements ---------- */
@media (max-width: 860px) {
  .hero { min-height: min(92svh, 760px); }
  .hero-content { padding-block: 120px 56px; }
  .hero-copy h1 { font-size: clamp(36px, 10vw, 52px); }
  .hero-copy .lede { font-size: 16px; margin-top: 18px; }
  .hero-actions { margin-top: 28px; }
  .hero-actions .btn { padding: 13px 18px; font-size: 13.5px; }
  .hero-rules { display: none; }
  .hero-meta { margin-top: 28px; }
  .section { padding-block: 72px; }
  .section::before, .numbers::before { display: none; }
  h2 { font-size: clamp(30px, 8.5vw, 40px); }
  .numbers { padding-top: 64px; }
  .num b { font-size: clamp(48px, 15vw, 64px); }
  .about-grid { gap: 40px; }
  .about-photo::before { inset: 14px -14px -14px 14px; }
  .about-photo .ph { aspect-ratio: 4 / 3; }
  .band { margin-top: 72px; padding-block: 80px; }
  .band h2 { max-width: none; }
  .platform-rows li { grid-template-columns: 52px minmax(0,1fr); }
  .platform-rows .badge { grid-column: 2; justify-self: start; }
  .record-row { padding: 22px 0; }
  .record-row--el { margin-inline: calc(-1 * var(--gutter)); padding-inline: var(--gutter); }
  .req-grid { gap: 32px; }
  .team-lead { gap: 24px 14px; }
  .team-rest { gap: 20px 12px; margin-top: 40px; }
  .team-rest .p-role { font-size: 11.5px; }
  .contact { padding-block: 80px 64px; }
  .door { padding: 24px 22px; }
  .offices { padding-top: 24px; }
  .footer-grid { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 420px) {
  .hero-copy h1 { font-size: clamp(32px, 10.5vw, 44px); }
  .numbers-grid { gap: 22px 16px; }
  .num span { font-size: 12.5px; }
  .tile, .tile--wide { aspect-ratio: 5 / 4; }
  .tile-body { padding: 20px; }
  .tile h3, .tile--wide h3 { font-size: 21px; }
  .tile-idx { top: 16px; left: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-rules i { animation: none; transform: none; }
  .hero-copy h1 .w > span { transform: none !important; transition: none !important; }
  .cap:not(.is-active) .lede { transition: none; }
  .band-bg, .about-photo img { transform: none !important; }
}

/* =====================================================================
   v5 — hero controls, title reveal fix, more motion
   ===================================================================== */

/* Title reveal: give descenders room so g/y/p are not clipped, and snap
   inactive captions back instantly so nothing half-shows between slides. */
.hero-copy h1 .w { padding-bottom: .14em; margin-bottom: -.14em; line-height: 1.02; }
.cap:not(.is-active) h1 .w > span { transition: none; }
.cap:not(.is-active) { visibility: hidden; transition: opacity .6s var(--ease), transform .6s var(--ease), visibility 0s linear .6s; }
.cap.is-active { visibility: visible; }

/* Slide change: soft wipe from the right on top of the fade */
.slide { clip-path: inset(0 0 0 0); }
.slide.is-active { animation: wipe 1.4s var(--ease) both; }
@keyframes wipe { from { clip-path: inset(0 0 0 100%); } to { clip-path: inset(0 0 0 0); } }
.slide.is-leaving { opacity: 1; z-index: 0; }
.slide.is-active { z-index: 1; }

/* Arrows: long thin lines, no boxes, spread wide around the dots */
.hero-meta { justify-self: end; display: flex; align-items: center; gap: 28px; }
.hero-arrow { background: none; border: 0; color: var(--on-dark); cursor: pointer; padding: 14px 6px; opacity: .75; transition: opacity .3s, transform .5s var(--ease); }
.hero-arrow svg { width: 72px; height: 16px; display: block; overflow: visible; }
.hero-arrow:hover { opacity: 1; }
.hero-arrow--prev:hover { transform: translateX(-6px); }
.hero-arrow--next:hover { transform: translateX(6px); }
.hero-arrow:focus-visible { outline: 1px solid var(--on-dark); outline-offset: 6px; }
.slide-dots { margin: 0; gap: 8px; }
.slide-dots button { width: 40px; }
@media (max-width: 860px) {
  .hero-meta { justify-self: stretch; justify-content: space-between; gap: 16px; margin-top: 36px; }
  .hero-arrow svg { width: 56px; }
  .slide-dots button { width: 28px; }
  .hero-content { padding-bottom: 64px; }
}

/* Headline line reveal for section titles */
.has-js h2[data-lines] .w { display: inline-block; overflow: hidden; vertical-align: bottom; margin-right: .24em; padding-bottom: .12em; margin-bottom: -.12em; }
.has-js h2[data-lines] .w > span { display: inline-block; transform: translateY(110%); transition: transform .9s var(--ease); }
.has-js .is-in h2[data-lines] .w > span, .has-js h2[data-lines].is-in .w > span { transform: none; }
.has-js h2[data-lines] .w:nth-child(2) > span { transition-delay: .06s; }
.has-js h2[data-lines] .w:nth-child(3) > span { transition-delay: .12s; }
.has-js h2[data-lines] .w:nth-child(4) > span { transition-delay: .18s; }
.has-js h2[data-lines] .w:nth-child(5) > span { transition-delay: .24s; }
.has-js h2[data-lines] .w:nth-child(6) > span { transition-delay: .3s; }
.has-js h2[data-lines] .w:nth-child(7) > span { transition-delay: .36s; }
.has-js h2[data-lines] .w:nth-child(n+8) > span { transition-delay: .42s; }

/* Ticker: slow, quiet, stone-coloured */
.ticker { border-top: 1px solid var(--rule-soft); margin-top: clamp(40px, 4vw, 56px); padding-block: 18px; overflow: hidden; position: relative; z-index: 1;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
.ticker-track { display: flex; gap: 0; width: max-content; animation: ticker 60s linear infinite; }
.ticker span { font-size: 11.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--stone-2); font-weight: 600; padding-inline: 28px; position: relative; white-space: nowrap; }
.ticker span::after { content: ""; position: absolute; right: -2px; top: 50%; width: 4px; height: 4px; background: var(--stone); transform: translateY(-50%) rotate(45deg); }
/* ticker no longer pauses on hover (v49) */
@keyframes ticker { to { transform: translateX(-50%); } }

/* Tiles: slow drift while in view */
.reveal-stagger.is-in .tile img { animation: drift 18s var(--ease) infinite alternate; }
@keyframes drift { from { transform: scale(1.04) translate(0,0); } to { transform: scale(1.1) translate(-1.5%, 1%); } }
.tile:hover img { animation-play-state: paused; }

/* Buttons: magnetic nudge (JS sets --mx/--my) */
.btn, .door, .hero-arrow { --mx: 0px; --my: 0px; }
.btn { transform: translate(var(--mx), var(--my)); }
.btn:hover { transform: translate(var(--mx), var(--my)) translateY(-1px); }

/* Numbers: subtle rise */
.reveal-stagger.is-in .num b { animation: rise .9s var(--ease) both; }
@keyframes rise { from { transform: translateY(12px); } to { transform: none; } }

/* Record rows: figure slides in */
.reveal-stagger.is-in .record-row .r-fig b { animation: slidein .8s var(--ease) both; }
@keyframes slidein { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: none; } }

/* Contact background: slow breathing zoom */
.contact .band-bg { animation: breathe 24s ease-in-out infinite alternate; }
@keyframes breathe { from { transform: scale(1.15); } to { transform: scale(1.22); } }

@media (prefers-reduced-motion: reduce) {
  .slide.is-active, .reveal-stagger.is-in .tile img, .ticker-track, .contact .band-bg, .reveal-stagger.is-in .num b, .reveal-stagger.is-in .record-row .r-fig b { animation: none !important; }
  .has-js h2[data-lines] .w > span { transform: none !important; transition: none !important; }
  .cap:not(.is-active) { transition: none; }
}


/* =====================================================================
   v6 — brand colours, intro, platform cards + popups, send-us-a-site
   ===================================================================== */
.intro { padding-bottom: clamp(64px, 7vw, 100px); }
.intro-text { margin-top: 28px; font-size: clamp(24px, 2.6vw, 40px); line-height: 1.25; letter-spacing: -0.02em; font-weight: 300; color: var(--navy); max-width: 30ch; }
.intro-text .w { display: inline-block; overflow: hidden; vertical-align: bottom; margin-right: .24em; padding-bottom: .12em; margin-bottom: -.12em; }
.has-js .intro-text .w > span { display: inline-block; transform: translateY(110%); transition: transform .8s var(--ease); }
.has-js .intro-text.is-in .w > span { transform: none; }
.intro-grid { margin-top: clamp(44px, 5vw, 72px); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; border-top: 1px solid var(--rule); padding-top: 32px; }
.intro-grid h3 { font-size: 15px; font-weight: 600; letter-spacing: .02em; text-transform: uppercase; color: var(--stone-2); font-size: 11.5px; letter-spacing: .16em; margin-bottom: 12px; }
.intro-grid p { font-size: 16px; color: var(--ink-2); font-weight: 300; line-height: 1.55; max-width: 34ch; }
@media (max-width: 760px) { .intro-grid { grid-template-columns: 1fr; gap: 24px; } }

/* Platform cards */
.platform-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.pcard { position: relative; display: block; text-align: left; padding: 0; border: 0; background: var(--navy); color: var(--on-dark); aspect-ratio: 4 / 5; overflow: hidden; cursor: pointer; font: inherit; isolation: isolate; transition: transform .6s var(--ease), box-shadow .6s var(--ease); }
.pcard:hover { transform: translateY(-4px); box-shadow: 0 30px 60px -30px rgba(6,15,48,.55); }
.pcard img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.8) brightness(.9); transition: transform 1.2s var(--ease); }
.pcard:hover img { transform: scale(1.05); }
.pcard::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(6,15,48,.05) 0%, rgba(6,15,48,.02) 40%, rgba(6,15,48,.9) 100%); }
.pcard-body { position: absolute; inset: auto 0 0 0; z-index: 1; padding: 28px; display: grid; gap: 6px; }
.pcard-abbr { font-size: 13px; letter-spacing: .18em; color: var(--stone); font-weight: 600; }
.pcard-name { font-size: 26px; font-weight: 400; letter-spacing: -0.02em; line-height: 1.15; }
.pcard-sub { font-size: 13.5px; color: var(--on-dark-2); }
.pcard-more { margin-top: 14px; font-size: 13.5px; font-weight: 500; display: inline-flex; align-items: center; gap: 8px; }
.pcard:hover .pcard-more .arrow { transform: translateX(4px); }
.pcard:focus-visible { outline: 2px solid var(--navy); outline-offset: 4px; }
.record-strip { margin-top: 36px; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px 32px; font-size: 14px; color: var(--ink-2); border-top: 1px solid var(--rule); padding-top: 18px; }
.record-strip b { color: var(--ink); font-weight: 600; }
@media (max-width: 900px) { .platform-cards { grid-template-columns: 1fr; gap: 12px; } .pcard { aspect-ratio: 16 / 10; } }

/* Popups */
.modal { border: 0; padding: 0; background: var(--paper); color: var(--ink); width: min(920px, calc(100vw - 32px)); max-height: calc(100vh - 32px); overflow: auto; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); box-shadow: 0 40px 90px -30px rgba(6,15,48,.6); }
.modal:not([open]) { display: none; }
.modal::backdrop { background: rgba(0,18,74,.72); backdrop-filter: blur(6px); }
.modal[open] { animation: modal-in .5s var(--ease); }
@keyframes modal-in { from { opacity: 0; transform: translateY(18px) scale(.98); } to { opacity: 1; transform: none; } }
.modal-img { width: 100%; height: 100%; min-height: 320px; object-fit: cover; }
.modal-body { padding: clamp(28px, 4vw, 48px); display: grid; gap: 18px; align-content: start; }
.modal-body h3 { font-size: clamp(24px, 2.4vw, 32px); font-weight: 400; letter-spacing: -0.022em; }
.modal-body p { font-size: 15.5px; color: var(--ink-2); line-height: 1.6; font-weight: 300; }
.modal-body dl { margin: 6px 0 0; display: grid; grid-template-columns: max-content 1fr; gap: 8px 18px; font-size: 13.5px; border-top: 1px solid var(--rule); padding-top: 16px; }
.modal-body dt { color: var(--ink-3); } .modal-body dd { margin: 0; font-weight: 500; }
.btn-navy { background: var(--navy); border-color: var(--navy); color: #fff; justify-self: start; margin-top: 6px; }
.btn-navy:hover { background: var(--navy-2); border-color: var(--navy-2); }
.modal-close { position: absolute; top: 12px; right: 12px; z-index: 2; width: 40px; height: 40px; border: 0; background: rgba(255,255,255,.9); color: var(--navy); font-size: 26px; line-height: 1; cursor: pointer; transition: background .2s, transform .3s var(--ease); }
.modal-close:hover { background: #fff; transform: rotate(90deg); }
@media (max-width: 760px) { .modal { grid-template-columns: 1fr; } .modal-img { min-height: 0; aspect-ratio: 16 / 10; } }

/* Send us a site (inside Contact) */
.send-site { margin-top: clamp(48px, 6vw, 80px); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; border-top: 1px solid rgba(246,245,240,.2); padding-top: 32px; }
.send-site .req { border-top: 0; padding-top: 0; gap: 8px; }
.send-site .req::before { display: none; }
.send-site h4 { margin: 0; font-size: 16px; font-weight: 500; }
.send-site p { font-size: 13.5px; color: var(--on-dark-2); line-height: 1.55; font-weight: 300; }
.send-site a { margin-top: 4px; font-size: 13.5px; font-weight: 500; display: inline-flex; align-items: center; gap: 8px; border-top: 1px solid rgba(246,245,240,.2); padding-top: 10px; color: var(--on-dark); }
.send-site a:hover { color: var(--stone); }
@media (max-width: 900px) { .send-site { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .send-site { grid-template-columns: 1fr; } }
.f-credit { margin-top: 10px; }

/* Slide timing: dots fill over the (now 30s) interval; ken burns runs the full slide */
.slide.is-active img { animation-duration: 30s; }

/* =====================================================================
   v7 — faster slides, richer About, team grid, more life
   ===================================================================== */
/* Faster, more visible drift on each slide (10s interval) */
.slide.is-active img { animation: kenburns 11s var(--ease) forwards; animation-duration: 11s; }
@keyframes kenburns { from { transform: scale(1.02) translate(0, 0); } to { transform: scale(1.16) translate(-2.2%, 1.4%); } }
.slide.is-active { animation: wipe 1.1s var(--ease) both; }

/* About: text + layered imagery */
.intro-grid-outer { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 56px clamp(48px, 6vw, 110px); align-items: center; }
.intro-visual { position: relative; min-height: 640px; }
.iv { margin: 0; position: absolute; }
.iv .ph { display: block; overflow: hidden; }
.iv .ph img { width: 100%; height: 100%; object-fit: cover; will-change: transform; }
.iv--a { left: 0; top: 0; width: 76%; }
.iv--a .ph { aspect-ratio: 4 / 5; }
.iv--b { right: 0; bottom: 0; width: 56%; box-shadow: 0 40px 80px -40px rgba(6,15,48,.55); }
.iv--b .ph { aspect-ratio: 4 / 3; }
.iv figcaption { margin-top: 10px; font-size: 12px; color: var(--ink-3); letter-spacing: .02em; }
.iv--b figcaption { background: var(--paper); padding: 10px 12px; margin: 0; }
.iv-stamp { position: absolute; left: -18px; bottom: 26%; background: var(--navy); color: var(--on-dark); padding: 18px 22px; display: grid; gap: 2px; box-shadow: 0 30px 60px -30px rgba(6,15,48,.7); }
.iv-stamp b { font-size: 34px; font-weight: 300; letter-spacing: -0.03em; line-height: 1; }
.iv-stamp span { font-size: 11.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--stone); font-weight: 600; }
/* image wipe-in on reveal */
.has-js .iv .ph { clip-path: inset(0 100% 0 0); transition: clip-path 1.2s var(--ease); }
.has-js .reveal.is-in .iv .ph { clip-path: inset(0 0 0 0); }
.has-js .reveal.is-in .iv--b .ph { transition-delay: .25s; }
.has-js .iv-stamp { opacity: 0; transform: translateY(16px); transition: opacity .8s var(--ease) .6s, transform .8s var(--ease) .6s; }
.has-js .reveal.is-in .iv-stamp { opacity: 1; transform: none; }
@media (max-width: 960px) { .intro-grid-outer { grid-template-columns: 1fr; } .intro-visual { min-height: 0; height: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: end; } .iv { position: static; width: auto; } .iv--b { box-shadow: none; } .iv--b figcaption { background: none; padding: 10px 0 0; } .iv-stamp { position: static; grid-column: span 2; justify-self: start; } }
@media (max-width: 520px) { .intro-visual { grid-template-columns: 1fr; } .iv-stamp { grid-column: span 1; } .iv--a .ph { aspect-ratio: 16 / 10; } }

/* Team grid without the join tile */
.team-rest { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px 20px; }
.team-rest .p-name { font-size: 17px; }
.team-join { margin-top: 36px; border-top: 1px solid var(--rule); padding-top: 20px; font-size: 14.5px; }
.team-join a { font-weight: 500; display: inline-flex; align-items: center; gap: 8px; }
.team-join a:hover { color: var(--stone-2); }
@media (max-width: 640px) { .team-rest { grid-template-columns: 1fr 1fr; } }

/* Photo wipe-in for strategy tiles and platform cards */
.has-js .reveal-stagger > .tile, .has-js .reveal-stagger > .pcard { clip-path: inset(0 0 100% 0); transition: clip-path 1s var(--ease), opacity .8s var(--ease), transform .8s var(--ease); }
.has-js .reveal-stagger.is-in > .tile, .has-js .reveal-stagger.is-in > .pcard { clip-path: inset(0 0 0 0); }

/* Soft moving light behind dark sections */
.contact::after { background-image: radial-gradient(60% 80% at var(--lx, 70%) var(--ly, 30%), rgba(205,205,190,.10), transparent 60%), linear-gradient(to right, rgba(246,245,240,.05) 1px, transparent 1px); background-size: 100% 100%, calc((100% - 2 * var(--gutter)) / 12) 100%; background-position: 0 0, var(--gutter) 0; animation: light-drift 14s ease-in-out infinite alternate; }
@keyframes light-drift { from { --lx: 70%; --ly: 30%; } to { --lx: 30%; --ly: 70%; } }
@property --lx { syntax: '<percentage>'; inherits: false; initial-value: 70%; }
@property --ly { syntax: '<percentage>'; inherits: false; initial-value: 30%; }

/* Tiles tilt toward the cursor (JS sets --rx/--ry) */
.tile, .pcard { --rx: 0deg; --ry: 0deg; transform-style: preserve-3d; }
.tile:hover, .pcard:hover { transform: translateY(-4px) perspective(900px) rotateX(var(--rx)) rotateY(var(--ry)); }

/* Numbers pulse once when counted */
.reveal-stagger.is-in .num b { animation: rise .9s var(--ease) both, pulse 1.2s var(--ease) 1.3s 1; }
@keyframes pulse { 0% { color: var(--navy); } 40% { color: var(--stone-2); } 100% { color: var(--navy); } }

/* Page-load sequence */
.has-js .brand, .has-js .nav-toggle { opacity: 0; transform: translateY(-10px); animation: fade-down .9s var(--ease) .2s forwards; }
@media (min-width: 1001px) { .has-js .nav { opacity: 0; transform: translateY(-10px); animation: fade-down .9s var(--ease) .35s forwards; } }
@keyframes fade-down { to { opacity: 1; transform: none; } }
.has-js .hero-actions { opacity: 0; animation: fade-up .9s var(--ease) 1.1s forwards; }
.has-js .hero-meta { opacity: 0; animation: fade-up .9s var(--ease) 1.4s forwards; }
@keyframes fade-up { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.cap:not(.is-active) .hero-actions { animation: none; }

/* Team photos: gentle rise as they enter */
.has-js .team-lead .person, .has-js .team-rest .person { transition-duration: 1s; }

@media (prefers-reduced-motion: reduce) {
  .has-js .iv .ph, .has-js .reveal-stagger > .tile, .has-js .reveal-stagger > .pcard { clip-path: none !important; transition: none !important; }
  .contact::after, .has-js .brand, .has-js .nav-toggle, .has-js .nav, .has-js .hero-actions, .has-js .hero-meta, .reveal-stagger.is-in .num b { animation: none !important; opacity: 1 !important; transform: none !important; }
  .tile:hover, .pcard:hover { transform: none; }
}

/* =====================================================================
   v8 — big section titles, themes, investments, contact form, careers
   ===================================================================== */
/* Large numbered section titles */
.sec-title { display: flex; align-items: baseline; gap: 22px; margin-bottom: clamp(28px, 3vw, 44px); }
.sec-title h2 { font-size: clamp(44px, 6.4vw, 96px); line-height: .95; letter-spacing: -0.035em; font-weight: 300; max-width: none; }
.sec-num { font-size: clamp(13px, 1.1vw, 15px); letter-spacing: .2em; color: var(--stone-2); font-weight: 600; font-variant-numeric: tabular-nums; padding-bottom: .5em; position: relative; }
.sec-num::after { content: ""; position: absolute; left: 0; bottom: .15em; width: 100%; height: 1px; background: var(--stone); }
.sec-title--sm h2 { font-size: clamp(34px, 4.2vw, 60px); }
.sec-title--light h2 { color: var(--on-dark); }
.sec-title--light .sec-num { color: var(--stone); }
.sec-lede { margin-bottom: clamp(36px, 4vw, 56px); max-width: 60ch; }
.section-head { display: none; }
.intro-col .intro-text { margin-top: 6px; font-size: clamp(24px, 2.4vw, 36px); max-width: 26ch; }
.intro-col .lede { margin-top: 20px; }
.intro-col .intro-grid { margin-top: clamp(36px, 4vw, 56px); }

/* Strategies: body copy + four theme tiles, hover only (no click) */
.strat-body { display: grid; grid-template-columns: 1fr 1fr; gap: 24px clamp(32px, 4vw, 64px); margin-bottom: clamp(40px, 5vw, 64px); }
.strat-body .lede { max-width: none; }
.themes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; background: none; border: 0; }
.theme { position: relative; aspect-ratio: 3 / 4; overflow: hidden; background: var(--navy); color: var(--on-dark); padding: 0; min-height: 0; display: block; isolation: isolate; cursor: default; transition: transform .6s var(--ease), box-shadow .6s var(--ease); }
.theme:hover { background: var(--navy); transform: translateY(-4px); box-shadow: 0 30px 60px -30px rgba(6,15,48,.55); }
.theme img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.85) brightness(.9); transition: transform 1.2s var(--ease), filter .6s; }
.theme:hover img { transform: scale(1.06); filter: saturate(1) brightness(1); }
.theme::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(6,15,48,.1) 0%, rgba(6,15,48,.05) 40%, rgba(6,15,48,.9) 100%); transition: background .5s; }
.theme-body { position: absolute; inset: auto 0 0 0; z-index: 1; padding: 26px; display: grid; gap: 8px; transform: translateY(0); transition: transform .6s var(--ease); }
.theme-k { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--stone); font-weight: 600; }
.theme h3 { font-size: 30px; font-weight: 400; letter-spacing: -0.025em; color: var(--on-dark); }
.theme p { font-size: 14px; color: var(--on-dark-2); line-height: 1.5; max-height: 0; opacity: 0; overflow: hidden; transition: max-height .6s var(--ease), opacity .5s var(--ease); }
.theme:hover p { max-height: 6em; opacity: 1; }
@media (hover: none) { .theme p { max-height: none; opacity: 1; } }
.has-js .reveal-stagger > .theme { clip-path: inset(0 0 100% 0); transition: clip-path 1s var(--ease), opacity .8s var(--ease), transform .8s var(--ease); }
.has-js .reveal-stagger.is-in > .theme { clip-path: inset(0 0 0 0); }
@media (max-width: 960px) { .strat-body { grid-template-columns: 1fr; } .themes { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .themes { grid-template-columns: 1fr; } .theme { aspect-ratio: 16 / 10; } .theme p { max-height: none; opacity: 1; } }

/* Investments grid: 3 x 2 */
.inv-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pcard { aspect-ratio: 4 / 5; }
.pcard--exited { background: linear-gradient(160deg, #0b2775, #001963); }
.pcard-mark { position: absolute; right: -6%; top: 6%; font-size: 160px; font-weight: 300; letter-spacing: -0.06em; color: rgba(246,245,240,.06); line-height: 1; }
.pcard--exited::after { background: linear-gradient(180deg, transparent 0%, rgba(6,15,48,.5) 100%); }
.pcard .pcard-abbr { color: var(--stone); }
@media (max-width: 900px) { .inv-grid { grid-template-columns: 1fr 1fr; } .pcard { aspect-ratio: 4 / 5; } }
@media (max-width: 520px) { .inv-grid { grid-template-columns: 1fr; } .pcard { aspect-ratio: 16 / 10; } }
.modal-body p a { text-decoration: underline; text-underline-offset: 3px; }
.modal-img--mark { display: grid; place-items: center; background: linear-gradient(160deg, #0b2775, #001963); color: rgba(246,245,240,.12); font-size: 120px; font-weight: 300; letter-spacing: -0.05em; }

/* Team: one uniform grid */
.team-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 32px 20px; }
.team-grid .person figure { aspect-ratio: 1; }
.team-grid .p-name { font-size: 17px; }
@media (max-width: 1100px) { .team-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 800px) { .team-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 14px; } }
@media (max-width: 520px) { .team-grid { grid-template-columns: 1fr 1fr; } }

/* Contact: intro + form */
.contact-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 56px clamp(40px, 6vw, 96px); align-items: start; }
.contact-intro .lede { color: var(--on-dark-2); margin-top: 8px; }
.contact-intro .offices { margin-top: clamp(36px, 4vw, 56px); grid-template-columns: 1fr; gap: 20px; }
.cform { background: rgba(246,245,240,.06); border: 1px solid rgba(246,245,240,.18); backdrop-filter: blur(8px); padding: clamp(24px, 3vw, 40px); display: grid; gap: 14px; }
.cform h3 { font-size: 26px; font-weight: 400; letter-spacing: -0.02em; margin-bottom: 6px; }
.cf-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.cf-field { display: grid; gap: 6px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--stone); font-weight: 600; }
.cf-field input, .cf-field select, .cf-field textarea { font: inherit; font-size: 15px; letter-spacing: 0; text-transform: none; font-weight: 400; color: var(--on-dark); background: rgba(0,18,74,.35); border: 1px solid rgba(246,245,240,.25); padding: 13px 14px; width: 100%; outline: none; transition: border-color .25s, background .25s; border-radius: 0; -webkit-appearance: none; appearance: none; }
.cf-field input:focus, .cf-field select:focus, .cf-field textarea:focus { border-color: var(--on-dark); background: rgba(0,18,74,.5); }
.cf-field textarea { resize: vertical; min-height: 120px; }
.cf-select { position: relative; }
.cf-select::after { content: ""; position: absolute; right: 16px; bottom: 20px; width: 8px; height: 8px; border-right: 1.5px solid var(--on-dark); border-bottom: 1.5px solid var(--on-dark); transform: rotate(45deg); pointer-events: none; }
.cf-field select option { color: var(--ink); background: #fff; }
.cf-field input.is-invalid, .cf-field select.is-invalid { border-color: #e0a06a; }
.cf-consent { font-size: 13px; color: var(--on-dark-2); }
.cf-consent label { display: flex; gap: 10px; align-items: flex-start; }
.cf-consent input { margin-top: 3px; accent-color: var(--stone); }
.cf-consent a { text-decoration: underline; text-underline-offset: 3px; }
.cf-submit { justify-self: start; margin-top: 4px; }
.cf-status { font-size: 14px; color: var(--stone); min-height: 1.4em; }
.cform.is-sent > :not(.cf-status) { display: none; }
.cform.is-sent .cf-status { font-size: 18px; color: var(--on-dark); }
@media (max-width: 900px) { .contact-grid { grid-template-columns: 1fr; } .cf-row { grid-template-columns: 1fr; } }

/* Careers box */
.careers { background: var(--ground); padding-block: clamp(48px, 5vw, 72px); }
.careers-box { display: flex; justify-content: space-between; align-items: center; gap: 24px 40px; flex-wrap: wrap; background: var(--paper); border: 1px solid var(--rule); padding: clamp(28px, 3.5vw, 44px); max-width: calc(var(--max) - 2 * var(--gutter)); }
.careers-box h3 { font-size: 28px; font-weight: 400; letter-spacing: -0.02em; margin: 10px 0 8px; }
.careers-box p { color: var(--ink-2); font-weight: 300; max-width: 52ch; }

/* =====================================================================
   v9 — legibility, smaller headings, About timeline, richer hovers
   ===================================================================== */
/* Hero text scrim: readable on bright slides */
.hero .slide::after { background:
  linear-gradient(90deg, rgba(6,15,48,.72) 0%, rgba(6,15,48,.42) 42%, rgba(6,15,48,.08) 75%, rgba(6,15,48,0) 100%),
  linear-gradient(180deg, rgba(6,15,48,.35) 0%, rgba(6,15,48,0) 30%, rgba(6,15,48,.25) 65%, rgba(6,15,48,.85) 100%); }
.hero-copy h1, .hero-copy .lede { text-shadow: 0 2px 24px rgba(6,15,48,.45), 0 1px 2px rgba(6,15,48,.35); }
.hero-copy h1 { font-size: clamp(38px, 5.2vw, 76px); }

/* Smaller section headings */
.sec-title h2 { font-size: clamp(32px, 4vw, 58px); font-weight: 400; }
.sec-title { gap: 18px; margin-bottom: clamp(22px, 2.5vw, 34px); }
.sec-title--sm h2 { font-size: clamp(28px, 3.2vw, 44px); }
.intro-col .intro-text { font-size: clamp(22px, 2.1vw, 32px); }

/* About: milestones timeline */
.timeline { margin: clamp(32px, 4vw, 52px) 0 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); position: relative; }
.timeline::before { content: ""; position: absolute; left: 0; right: 0; top: 5px; height: 1px; background: var(--rule); }
.timeline::after { content: ""; position: absolute; left: 0; top: 5px; height: 1px; width: 0; background: var(--navy); transition: width 2.2s var(--ease) .2s; }
.has-js .timeline.is-in::after { width: 100%; }
.timeline li { position: relative; padding: 20px 14px 0 0; display: grid; gap: 4px; }
.timeline li::before { content: ""; position: absolute; left: 0; top: 0; width: 11px; height: 11px; border-radius: 50%; background: var(--paper); border: 1.5px solid var(--navy); box-sizing: border-box; transform: scale(0); transition: transform .5s var(--ease); }
.has-js .timeline.is-in li::before { transform: scale(1); }
.has-js .timeline.is-in li:nth-child(2)::before { transition-delay: .5s; } .has-js .timeline.is-in li:nth-child(3)::before { transition-delay: .9s; } .has-js .timeline.is-in li:nth-child(4)::before { transition-delay: 1.3s; } .has-js .timeline.is-in li:nth-child(5)::before { transition-delay: 1.7s; }
.timeline b { font-weight: 500; font-size: 15px; letter-spacing: -0.01em; color: var(--navy); }
.timeline span { font-size: 12.5px; color: var(--ink-3); line-height: 1.4; }
@media (max-width: 760px) { .timeline { grid-template-columns: 1fr; gap: 14px; } .timeline::before, .timeline::after { left: 5px; top: 0; bottom: 0; width: 1px !important; height: auto; } .timeline::after { height: 0; transition: height 2.2s var(--ease) .2s; } .has-js .timeline.is-in::after { height: 100%; } .timeline li { padding: 0 0 0 26px; } }

/* About images: sheen sweep once on reveal, and slow hover zoom */
.iv .ph { position: relative; }
.iv .ph::after { content: ""; position: absolute; inset: 0; background: linear-gradient(115deg, transparent 35%, rgba(255,255,255,.28) 50%, transparent 65%); transform: translateX(-120%); }
.has-js .reveal.is-in .iv .ph::after { animation: sheen 1.6s var(--ease) 1s 1 forwards; }
@keyframes sheen { to { transform: translateX(120%); } }
.iv .ph img { transition: transform 1.2s var(--ease); }
.iv:hover .ph img { transform: scale(1.04) !important; }
.intro-grid > div { position: relative; padding-top: 14px; }
.intro-grid > div::before { content: ""; position: absolute; left: 0; top: 0; width: 28px; height: 2px; background: var(--navy); transition: width .6s var(--ease); }
.intro-grid > div:hover::before { width: 100%; }

/* Strategies: richer hover — spotlight follows cursor, caption rises, bar slides */
.theme-body::before { content: ""; position: absolute; left: 26px; right: 26px; top: 0; height: 1px; background: rgba(246,245,240,.35); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--ease); }
.theme:hover .theme-body::before { transform: scaleX(1); }
.theme-body { padding-top: 22px; }
.theme:hover .theme-body { transform: translateY(-6px); }
.theme h3 { transition: letter-spacing .5s var(--ease); }
.theme:hover h3 { letter-spacing: -0.01em; }
.theme:hover img { transform: scale(1.08) rotate(.4deg); }
.theme::after { transition: opacity .5s; }

/* Investments: same spotlight + underline treatment */
.pcard--conv img, .modal-img--conv { object-position: 50% 40%; }

/* Numbers: gentle hover */
.num { transition: transform .5s var(--ease); }
.num:hover { transform: translateY(-3px); }
.num:hover b { color: var(--navy-2); }

/* Team: name underline on hover */
.person .p-name { position: relative; display: inline-block; }
.person .p-name::after { content: ""; position: absolute; left: 0; bottom: -2px; height: 1px; width: 0; background: var(--navy); transition: width .5s var(--ease); }
.person:hover .p-name::after { width: 100%; }

/* v10 */
.hero .slides .slide:nth-child(4) img { object-position: 50% 45%; }
.pcard[data-open="odeon"] img, #modal-odeon .modal-img { object-position: 50% 55%; }
.theme:nth-child(4) img { object-position: 50% 60%; }
@media (max-width: 700px) {
  .hero .slides .slide:nth-child(4) img { object-position: 72% 50%; }
  .pcard[data-open="odeon"] img { object-position: 40% 60%; }
}

/* v12 */
@media (min-width: 1000px) { .hero { min-height: 100svh; } }
.timeline { grid-template-columns: repeat(6, minmax(0, 1fr)); }
@media (max-width: 760px) { .timeline { grid-template-columns: 1fr; } }
@media (min-width: 1240px) { .inv-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } .inv-grid .pcard { aspect-ratio: 4 / 5; } }

/* v13 */
.header::after { display: none; }
.theme-k { display: none; }
/* Large and very large displays: scale the whole layout up so it fills the screen */
:root { --z: 1; }
@media (min-width: 1800px) { :root { --z: 1.15; } }
@media (min-width: 2300px) { :root { --z: 1.4; } }
@media (min-width: 3200px) { :root { --z: 1.8; } }
@media (min-width: 1800px) {
  body { zoom: var(--z); }
  .hero { min-height: calc(100svh / var(--z)); }
  .modal { max-height: calc(92svh / var(--z)); }
}

/* v14: investments grid without an orphan cell */
.pcard--wide, .pcard--wide-md { aspect-ratio: auto; min-height: 0; }
@media (min-width: 1240px) { .inv-grid .pcard--wide { grid-column: span 2; } }
@media (min-width: 901px) and (max-width: 1239px) { .inv-grid .pcard--wide, .inv-grid .pcard--wide-md { grid-column: span 2; } }
@media (min-width: 521px) and (max-width: 900px) { .inv-grid .pcard--wide { grid-column: span 2; } }
.pcard--wide .pcard-name { font-size: clamp(22px, 2vw, 30px); }

/* v14: restrained motion */
.pcard[data-status="current"] .pcard-abbr::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #7dd3a8; margin-right: 10px; vertical-align: 2px; box-shadow: 0 0 0 0 rgba(125,211,168,.6); animation: dot-pulse 2.6s ease-out infinite; }
@keyframes dot-pulse { 0% { box-shadow: 0 0 0 0 rgba(125,211,168,.55); } 70% { box-shadow: 0 0 0 7px rgba(125,211,168,0); } 100% { box-shadow: 0 0 0 0 rgba(125,211,168,0); } }
.pcard .pcard-body { transition: transform .6s var(--ease); }
.pcard:hover .pcard-body { transform: translateY(-4px); }
.pcard .pcard-more { position: relative; }
.pcard .pcard-more::after { content: ""; position: absolute; left: 0; bottom: -4px; height: 1px; width: 100%; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform .5s var(--ease); }
.pcard:hover .pcard-more::after { transform: scaleX(1); }
.modal[open] .modal-body > * { animation: modal-item .6s var(--ease) both; }
.modal[open] .modal-body > :nth-child(1) { animation-delay: .12s; } .modal[open] .modal-body > :nth-child(2) { animation-delay: .2s; }
.modal[open] .modal-body > :nth-child(3) { animation-delay: .28s; } .modal[open] .modal-body > :nth-child(4) { animation-delay: .36s; } .modal[open] .modal-body > :nth-child(5) { animation-delay: .44s; }
@keyframes modal-item { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.modal[open] .modal-img { animation: modal-img .9s var(--ease) both; }
@keyframes modal-img { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
.scroll-cue { position: absolute; right: clamp(20px, 4vw, 56px); bottom: 28px; z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 10px; color: var(--on-dark); text-decoration: none; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; opacity: .75; transition: opacity .4s; }
.scroll-cue:hover { opacity: 1; }
.scroll-cue i { display: block; width: 1px; height: 44px; background: linear-gradient(to bottom, currentColor, transparent); position: relative; overflow: hidden; }
.scroll-cue i::after { content: ""; position: absolute; left: 0; top: -100%; width: 100%; height: 100%; background: linear-gradient(to bottom, transparent, #fff); animation: cue 2.2s var(--ease) infinite; }
@keyframes cue { to { top: 100%; } }
@media (max-width: 760px) { .scroll-cue { display: none; } }
.sec-num { position: relative; }
.reveal.is-in .sec-num::after { content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 1px; background: var(--stone-2); transform-origin: left; animation: fill .8s var(--ease) .3s both; }
.timeline.is-in li::before { animation: dot-pop .6s var(--ease) both; }
.timeline.is-in li:nth-child(2)::before { animation-delay: .15s; } .timeline.is-in li:nth-child(3)::before { animation-delay: .3s; } .timeline.is-in li:nth-child(4)::before { animation-delay: .45s; } .timeline.is-in li:nth-child(5)::before { animation-delay: .6s; } .timeline.is-in li:nth-child(6)::before { animation-delay: .75s; }
@keyframes dot-pop { from { transform: scale(0); } 60% { transform: scale(1.35); } to { transform: scale(1); } }
.person figure img { transition: transform .7s var(--ease), filter .7s var(--ease); }
.person:hover figure img { transform: scale(1.04); filter: grayscale(1) contrast(1.06); }
@media (prefers-reduced-motion: reduce) { .pcard[data-status="current"] .pcard-abbr::before, .scroll-cue i::after, .timeline.is-in li::before, .modal[open] .modal-body > *, .modal[open] .modal-img { animation: none !important; } }

/* v15: About photos static */
.iv .ph::after { display: none; }
.iv .ph img { transition: none; transform: none !important; will-change: auto; }
.iv:hover .ph img { transform: none !important; }
.scroll-cue { display: none; }

/* v16: wide investment cards take the row height from their neighbours (fixes the gap) */
.inv-grid .pcard--wide, .inv-grid .pcard--wide-md { aspect-ratio: auto !important; height: 100%; min-height: 0; }
.inv-grid { align-items: stretch; }
@media (max-width: 520px) { .inv-grid .pcard--wide, .inv-grid .pcard--wide-md { aspect-ratio: 16 / 10 !important; height: auto; } }
@media (min-width: 521px) and (max-width: 900px) { .inv-grid .pcard--wide { aspect-ratio: 16 / 9 !important; height: auto; } }

/* v17: no wipe on first load — only when slides change */
.hero:not(.has-changed) .slide.is-active { animation: none; clip-path: inset(0 0 0 0); }

/* v18: simpler, more robust card reveal on phones and tablets (no clip-path) */
@media (max-width: 900px) {
  .has-js .reveal-stagger > .tile, .has-js .reveal-stagger > .pcard { clip-path: none; }
  .inv-grid .pcard { aspect-ratio: 16 / 10; height: auto; min-height: 180px; }
  .inv-grid .pcard--wide, .inv-grid .pcard--wide-md { height: auto; }
}
@media (min-width: 521px) and (max-width: 900px) { .inv-grid .pcard { aspect-ratio: 4 / 5; } .inv-grid .pcard--wide { aspect-ratio: 16 / 9 !important; } }

/* v19: investment cards use explicit heights everywhere (no aspect-ratio) — identical on every browser */
.inv-grid .pcard, .inv-grid .pcard--wide, .inv-grid .pcard--wide-md { aspect-ratio: auto !important; height: clamp(300px, 23vw, 400px) !important; min-height: 0 !important; }
@media (min-width: 901px) and (max-width: 1239px) { .inv-grid .pcard, .inv-grid .pcard--wide, .inv-grid .pcard--wide-md { height: clamp(300px, 30vw, 380px) !important; } }
@media (min-width: 521px) and (max-width: 900px) { .inv-grid .pcard, .inv-grid .pcard--wide-md { height: clamp(260px, 44vw, 380px) !important; } .inv-grid .pcard--wide { height: clamp(240px, 40vw, 360px) !important; } }
@media (max-width: 520px) { .inv-grid .pcard, .inv-grid .pcard--wide, .inv-grid .pcard--wide-md { height: clamp(200px, 58vw, 300px) !important; grid-column: auto !important; } }
.inv-grid { align-items: start; }
/* v19: team — six leaders on the first row on wide screens */
@media (min-width: 1240px) { .team-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 32px 18px; } }
@media (min-width: 901px) and (max-width: 1239px) { .team-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* v20: team in rows of four on desktop (3 rows × 4) */
@media (min-width: 901px) { .team-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 36px 24px; } }
@media (min-width: 1240px) { .team-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px 28px; } }

/* v21: smaller team portraits */
@media (min-width: 901px) { .team-grid { max-width: 880px; gap: 32px 22px; } }
@media (min-width: 1240px) { .team-grid { max-width: 980px; gap: 36px 26px; } }
@media (min-width: 521px) and (max-width: 900px) { .team-grid { max-width: 620px; } }

/* v22: team back to six across, full width, tighter spacing */
.team-grid { max-width: none !important; }
@media (min-width: 1240px) { .team-grid { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; gap: 28px 18px !important; } }
@media (min-width: 901px) and (max-width: 1239px) { .team-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 28px 20px !important; } }
@media (min-width: 521px) and (max-width: 900px) { .team-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }
#team { padding-bottom: clamp(40px, 5vw, 72px); }
#investments { padding-bottom: clamp(48px, 6vw, 88px); }
.cf-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* v23: readable card text — stronger scrim, white text, soft shadow */
.pcard::after { background: linear-gradient(180deg, rgba(6,15,48,.12) 0%, rgba(6,15,48,.18) 35%, rgba(6,15,48,.78) 62%, rgba(6,15,48,.96) 100%); }
.pcard-body { text-shadow: 0 1px 2px rgba(0,0,0,.55), 0 4px 18px rgba(0,0,0,.35); }
.pcard-name { color: #fff; font-weight: 500; }
.pcard-sub { color: rgba(255,255,255,.92); font-weight: 400; }
.pcard-abbr { color: #e6e6dc; }
.pcard-more { color: #fff; }

/* v23: popups on phones/tablets — full-screen sheet, no tilt/hover artefacts on touch */
@media (hover: none) {
  .tile:hover, .pcard:hover { transform: none; box-shadow: none; }
  .pcard:hover img, .pcard:hover .pcard-body { transform: none; }
  .pcard:active { transform: scale(.985); transition: transform .15s; }
}
@media (max-width: 760px) {
  .modal { position: fixed; inset: 0; width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; border-radius: 0; grid-template-columns: 1fr; grid-template-rows: auto 1fr; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
  .modal[open] { animation: modal-up .35s ease-out; }
  @keyframes modal-up { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
  .modal[open] .modal-img { animation: none; clip-path: none; height: auto; aspect-ratio: 16 / 10; min-height: 0; }
  .modal[open] .modal-body > * { animation: none; opacity: 1; transform: none; }
  .modal-body { padding: 22px 20px 40px; }
  .modal-close { position: fixed; top: max(12px, env(safe-area-inset-top)); right: 12px; width: 44px; height: 44px; border-radius: 50%; box-shadow: 0 2px 10px rgba(0,0,0,.25); }
  .modal::backdrop { backdrop-filter: none; }
}
@media (max-width: 760px) {
  .modal[open] { display: block; }
  .modal[open] .modal-img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; }
  .modal-body { display: grid; }
}

/* v24 */
.ticker-track { animation: ticker 70s linear infinite; will-change: transform; }
.ticker-track span { flex: none; }
@keyframes ticker { from { transform: translate3d(0,0,0); } to { transform: translate3d(-50%,0,0); } }
.team-grid { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; gap: 28px 20px !important; max-width: none !important; }
@media (max-width: 1100px) { .team-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }
@media (max-width: 520px) { .team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 22px 14px !important; } }
.has-js .team-grid > .person { opacity: 1; transform: none; }
.has-js .team-grid .person figure { clip-path: inset(100% 0 0 0); transition: clip-path 1s var(--ease); }
.has-js .team-grid.is-in .person figure { clip-path: inset(0 0 0 0); }
.has-js .team-grid .person > div { opacity: 0; transform: translateY(10px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.has-js .team-grid.is-in .person > div { opacity: 1; transform: none; }
.team-grid.is-in .person:nth-child(1) figure, .team-grid.is-in .person:nth-child(1) > div { transition-delay: .05s; }
.team-grid.is-in .person:nth-child(2) figure, .team-grid.is-in .person:nth-child(2) > div { transition-delay: .17s; }
.team-grid.is-in .person:nth-child(3) figure, .team-grid.is-in .person:nth-child(3) > div { transition-delay: .29s; }
.team-grid.is-in .person:nth-child(4) figure, .team-grid.is-in .person:nth-child(4) > div { transition-delay: .41s; }
.team-grid.is-in .person:nth-child(5) figure, .team-grid.is-in .person:nth-child(5) > div { transition-delay: .53s; }
.team-grid.is-in .person:nth-child(6) figure, .team-grid.is-in .person:nth-child(6) > div { transition-delay: .65s; }
.person figure img { transition: transform .8s var(--ease), filter .8s var(--ease); }
.person:hover figure img { transform: scale(1.05); }
.person .p-name { position: relative; display: inline-block; }
.person .p-name::after { content: ""; position: absolute; left: 0; bottom: -3px; height: 1px; width: 100%; background: var(--navy); transform: scaleX(0); transform-origin: left; transition: transform .5s var(--ease); }
.person:hover .p-name::after { transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) { .has-js .team-grid .person figure, .has-js .team-grid .person > div { clip-path: none !important; opacity: 1 !important; transform: none !important; transition: none !important; } }

/* v26: contact submit button — clear hover, press and sending states */
.cf-submit { position: relative; overflow: hidden; cursor: pointer; padding: 16px 30px; font-size: 15px; font-weight: 600; letter-spacing: .02em; background: #fff; color: var(--navy); border: 1px solid #fff; box-shadow: 0 6px 18px -8px rgba(0,0,0,.5); transition: transform .25s var(--ease), box-shadow .25s var(--ease), background .25s, color .25s, border-color .25s; }
.cf-submit::before { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 30%, rgba(0,25,99,.10) 50%, transparent 70%); transform: translateX(-120%); transition: transform .7s var(--ease); pointer-events: none; }
.cf-submit:hover { background: var(--stone); border-color: var(--stone); color: var(--navy); transform: translate(var(--mx), var(--my)) translateY(-2px); box-shadow: 0 14px 30px -10px rgba(0,0,0,.55), 0 0 0 4px rgba(255,255,255,.14); }
.cf-submit:hover::before { transform: translateX(120%); }
.cf-submit:hover svg { transform: translateX(5px); }
.cf-submit:active { transform: translate(var(--mx), var(--my)) translateY(0) scale(.96); box-shadow: 0 4px 12px -6px rgba(0,0,0,.6); transition-duration: .1s; }
.cf-submit:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.cf-submit:disabled { opacity: .7; cursor: progress; transform: none; }
.cf-submit:disabled svg { animation: send-nudge .9s var(--ease) infinite; }
@keyframes send-nudge { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(5px); } }
.cform.is-sent .cf-submit { background: #7dd3a8; border-color: #7dd3a8; color: #06301c; }
@media (hover: none) { .cf-submit:hover { transform: none; box-shadow: 0 6px 18px -8px rgba(0,0,0,.5); background: #fff; border-color: #fff; } .cf-submit:active { transform: scale(.96); background: var(--stone); } }

/* v27: tighten the gap between Team and Investments */
#team { padding-bottom: clamp(28px, 3vw, 44px) !important; }
#investments { padding-top: clamp(40px, 4.5vw, 64px) !important; }

/* v28: colour team portraits - keep colour on hover */
.person figure img, .person:hover figure img { filter: none !important; }

/* v29: Strategies - breathing room above the grey Team band + richer theme tiles */
.strategies { padding-bottom: clamp(64px, 7vw, 112px) !important; }
.themes-head { display: flex; align-items: center; gap: 18px; margin-top: clamp(36px, 4vw, 56px); margin-bottom: 18px; }
.themes-label { font-size: 12px; letter-spacing: .2em; text-transform: uppercase; font-weight: 600; color: var(--navy); white-space: nowrap; }
.themes-rule { flex: 1; height: 1px; background: var(--rule); transform-origin: left; transform: scaleX(0); transition: transform 1.2s var(--ease) .2s; }
.themes-head.is-in .themes-rule, html:not(.has-js) .themes-rule { transform: scaleX(1); }
.themes { counter-reset: th; gap: 14px; margin-top: 0 !important; }
.theme { counter-increment: th; box-shadow: 0 18px 40px -28px rgba(6,15,48,.5); }
.theme::before { content: counter(th, decimal-leading-zero); position: absolute; top: 22px; left: 26px; z-index: 2; font-size: 12px; font-weight: 600; letter-spacing: .2em; color: rgba(255,255,255,.9); padding-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,.45); text-shadow: 0 1px 3px rgba(0,0,0,.4); }
.theme::after { background: linear-gradient(180deg, rgba(6,15,48,.45) 0%, rgba(6,15,48,0) 24%, rgba(6,15,48,.05) 42%, rgba(6,15,48,.55) 66%, rgba(6,15,48,.94) 100%) !important; }
.theme h3 { text-shadow: 0 2px 14px rgba(0,0,0,.35); }
.theme p { max-height: none; opacity: .88; color: rgba(255,255,255,.92); text-shadow: 0 1px 2px rgba(0,0,0,.45); font-size: 14px; }
.theme:hover p { opacity: 1; }
.theme-body::after { content: ""; display: block; width: 32px; height: 2px; background: var(--stone); margin-top: 6px; transition: width .6s var(--ease); }
.theme:hover .theme-body::after { width: 64px; }
@media (hover: hover) { .theme:hover { transform: translateY(-6px); box-shadow: 0 36px 60px -30px rgba(6,15,48,.6); } }
@media (max-width: 960px) { .theme { aspect-ratio: 4 / 5; } }
@media (max-width: 520px) { .theme { aspect-ratio: 16 / 11; } .theme::before { top: 16px; left: 20px; } .theme-body { padding: 20px; } .theme h3 { font-size: 26px; } }
@media (min-width: 521px) { .theme p { min-height: 4.5em; } }

/* v30: no label, no numbering, no top line on hover */
.theme::before { content: none !important; display: none !important; }
.theme-body::before { content: none !important; display: none !important; }
.themes { margin-top: clamp(40px, 4.5vw, 64px) !important; }

/* v31: no accent line; clean hover = lift, soft shadow, gentle zoom, brighter photo */
.theme-body::after { content: none !important; display: none !important; }
.theme img { transition: transform 1.1s var(--ease), filter .6s var(--ease) !important; }
@media (hover: hover) {
  .theme { transition: transform .6s var(--ease), box-shadow .6s var(--ease); }
  .theme:hover { transform: translateY(-6px); box-shadow: 0 34px 60px -28px rgba(6,15,48,.6); }
  .theme:hover img { transform: scale(1.06) !important; filter: saturate(1.05) brightness(1.04) !important; }
  .theme:hover .theme-body { transform: translateY(-4px); }
}

/* v32: smallest phones (<=360px) - hero title and slide controls fit */
@media (max-width: 360px) {
  .hero-copy h1 { font-size: clamp(32px, 10.5vw, 38px); max-width: none; }
  .hero-meta { gap: 12px; justify-self: stretch; justify-content: space-between; }
  .hero-arrow svg { width: 44px; }
  .slide-dots { gap: 6px; }
  .slide-dots button { width: 24px; }
  .hero-actions .btn { padding: 12px 14px; font-size: 13px; }
}
/* contact background image is intentionally oversized for parallax; keep it clipped */
.contact { overflow: hidden; }

/* v32b: phones - investment cards grow with their text instead of a fixed height */
@media (max-width: 520px) {
  .inv-grid .pcard, .inv-grid .pcard--wide, .inv-grid .pcard--wide-md { height: auto !important; min-height: clamp(220px, 62vw, 300px) !important; display: flex !important; flex-direction: column; justify-content: flex-end; }
  .inv-grid .pcard-body { position: relative; inset: auto; padding: 64px 22px 22px; }
  .pcard-abbr { font-size: 11.5px; letter-spacing: .14em; }
}
@media (max-width: 360px) { .pcard-name { font-size: 22px; } .inv-grid .pcard-body { padding: 56px 18px 18px; } }


/* v41b: readable tags - no pill; brighter white text with a crisp shadow, and a slightly deeper shade behind them */
.pcard-abbr { color: #fff; font-weight: 700; text-shadow: 0 1px 2px rgba(0,0,0,.85), 0 0 10px rgba(0,0,0,.55), 0 0 22px rgba(0,10,40,.6); }
.pcard::after { background: linear-gradient(180deg, rgba(6,15,48,.12) 0%, rgba(6,15,48,.22) 30%, rgba(6,15,48,.6) 50%, rgba(6,15,48,.85) 66%, rgba(6,15,48,.96) 100%); }
.pcard[data-status="current"] .pcard-abbr::before { background: #8be0b4; }

/* v43: bottom-row alignment without boxes or gaps - tags stay on one line, descriptions share a 2-line slot */
@media (min-width: 521px) {
  .pcard-abbr { white-space: nowrap; letter-spacing: .12em; font-size: 12.5px; }
  .inv-grid .pcard-sub { line-height: 1.45; min-height: calc(2 * 1.45em); }
}
@media (min-width: 521px) { .pcard-abbr { font-size: 12px; letter-spacing: .1em; } }
@media (min-width: 1800px) { .pcard-abbr { font-size: 12.5px; letter-spacing: .08em; } }

/* v44: one identical tag style on every investment card, all screen sizes */
.pcard .pcard-abbr, .pcard-abbr { color: #fff !important; font-weight: 700 !important; font-size: 12px !important; letter-spacing: .1em !important; line-height: 1.4; text-transform: uppercase; white-space: nowrap; text-shadow: 0 1px 2px rgba(0,0,0,.85), 0 0 10px rgba(0,0,0,.55), 0 0 22px rgba(0,10,40,.6); }
@media (min-width: 1800px) { .pcard .pcard-abbr, .pcard-abbr { font-size: 12.5px !important; letter-spacing: .08em !important; } }
@media (max-width: 400px) { .pcard .pcard-abbr, .pcard-abbr { font-size: 11px !important; letter-spacing: .08em !important; } }
.pcard .pcard-abbr, .pcard-abbr { white-space: normal; }
.pcard .pcard-abbr, .pcard-abbr { text-transform: none; font-weight: 600 !important; white-space: nowrap; }

/* v45 - About collage: fill the column, larger images, caption overlay, stamp on the seam */
@media (min-width: 961px) {
  .intro-grid-outer { align-items: stretch; }
  .intro-visual { min-height: 0; height: auto; position: relative; }
  .iv--a { left: 0; top: 0; width: 100%; height: 57%; }
  .iv--a .ph { aspect-ratio: auto; height: 100%; }
  .iv--b { right: 0; bottom: 0; width: 84%; height: 37%; box-shadow: 0 44px 80px -36px rgba(6,15,48,.6); }
  .iv--b .ph { aspect-ratio: auto; height: 100%; }
  .iv-stamp { left: -22px; bottom: auto; top: calc(57% - 46px); padding: 20px 26px; }
  .iv-stamp b { font-size: 38px; }
}
.iv--b { position: absolute; }
.iv--b figcaption { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; padding: 36px 16px 14px; background: linear-gradient(180deg, rgba(6,15,48,0) 0%, rgba(6,15,48,.72) 100%); color: #fff; font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; pointer-events: none; }
.iv .ph img { transform-origin: 50% 60%; }
@media (max-width: 960px) {
  .intro-visual { grid-template-columns: 1.15fr 1fr; gap: 16px; align-items: stretch; }
  .iv { position: relative; }
  .iv--a .ph { aspect-ratio: 4 / 5; height: 100%; }
  .iv--b .ph { aspect-ratio: auto; height: 100%; }
  .iv--b { box-shadow: 0 30px 60px -30px rgba(6,15,48,.5); }
  .iv--b figcaption { background: linear-gradient(180deg, rgba(6,15,48,0) 0%, rgba(6,15,48,.72) 100%); padding: 36px 14px 12px; }
  .iv-stamp { position: absolute; left: 0; bottom: -18px; grid-column: auto; z-index: 2; }
  .intro-visual { padding-bottom: 60px; margin-top: 8px; }
}
@media (max-width: 520px) {
  .intro-visual { grid-template-columns: 1fr; gap: 14px; }
  .iv--a .ph { aspect-ratio: 16 / 10; height: auto; }
  .iv--b .ph { aspect-ratio: 16 / 10; height: auto; }
  .iv--b { width: 88%; justify-self: end; }
  .iv-stamp { left: 0; bottom: auto; top: calc(100% - 60px); }
  .intro-visual { padding-bottom: 72px; }
}
@media (max-width: 520px) {
  .iv-stamp { top: auto; bottom: 0; padding: 16px 20px; }
  .iv-stamp b { font-size: 30px; }
  .intro-visual { padding-bottom: 40px; }
}
@media (max-width: 520px) {
  .iv--b figcaption { top: 0; bottom: auto; padding: 12px 14px 36px; background: linear-gradient(180deg, rgba(6,15,48,.72) 0%, rgba(6,15,48,0) 100%); }
}
/* v45b - all section headings identical size */
.sec-title--sm h2 { font-size: clamp(32px, 4vw, 58px); }

/* v46 - About collage: overlapping pair, large, sticky on desktop; no caption */
.intro .intro-visual { display: block; position: relative; min-height: 0; padding: 0; margin: 0; }
.intro .iv { position: absolute; margin: 0; width: auto; }
.intro .iv .ph { height: 100%; aspect-ratio: auto; }
.intro .iv--a { left: 0; top: 0; width: 86%; height: 80%; }
.intro .iv--b { right: 0; bottom: 0; width: 64%; height: 40%; box-shadow: 0 44px 80px -36px rgba(6,15,48,.65); }
.intro .iv--b figcaption { display: none; }
.intro .iv-stamp { position: absolute; left: -22px; top: calc(80% - 48px); bottom: auto; z-index: 2; padding: 20px 26px; }
.intro .iv-stamp b { font-size: 38px; }
@media (min-width: 961px) {
  .intro-grid-outer { grid-template-columns: minmax(0, 6.7fr) minmax(0, 5.3fr); align-items: start; }
  .intro .intro-visual { position: sticky; top: clamp(72px, 9vh, 110px); height: clamp(560px, 48vw, 820px); margin-top: 6px; }
}
@media (max-width: 960px) {
  .intro .intro-visual { aspect-ratio: 1 / 0.9; margin-top: 12px; }
  .intro .iv-stamp { left: 0; }
}
@media (max-width: 520px) {
  .intro .intro-visual { aspect-ratio: 1 / 1.08; }
  .intro .iv-stamp { padding: 16px 20px; top: calc(80% - 40px); }
  .intro .iv-stamp b { font-size: 30px; }
}
@media (max-width: 520px) {
  .intro .iv--a { width: 90%; height: 78%; }
  .intro .iv--b { width: 54%; height: 36%; }
  .intro .iv-stamp { padding: 14px 18px; top: calc(78% - 40px); }
  .intro .iv-stamp b { font-size: 28px; }
  .intro .iv-stamp span { font-size: 10.5px; letter-spacing: .12em; }
}

/* v47 - remove the vertical grid-line texture everywhere; keep contact light drift */
.section::before, .numbers::before { display: none !important; content: none !important; }
.band::after { display: none !important; content: none !important; }
.contact::after { background-image: radial-gradient(60% 80% at var(--lx, 70%) var(--ly, 30%), rgba(205,205,190,.10), transparent 60%) !important; background-size: 100% 100% !important; background-position: 0 0 !important; }

/* v48 - hero: buttons and arrows sit at the same spot on every slide; always fits the viewport */
.slide-caption { display: grid; }
.slide-caption .cap, .slide-caption .cap.is-active { grid-area: 1 / 1; position: relative; inset: auto; }
@media (min-width: 1000px) {
  .hero-copy h1 { font-size: clamp(36px, 4.4vw, 64px); max-width: 16ch; }
  .hero-content { padding-block: 130px 72px; }
  .hero-actions { margin-top: 32px; }
  .hero { min-height: calc(100svh / var(--z)); height: calc(100svh / var(--z)); max-height: none; }
}
.slide-caption .cap { align-self: end; }

/* v49 - hero copy centred and larger; ticker never pauses; team bio popups */
.hero { align-items: center; }
.hero-content { padding-block: clamp(120px, 14vh, 170px) clamp(56px, 8vh, 96px); }
@media (min-width: 1000px) {
  .hero-copy h1 { font-size: clamp(44px, 5.4vw, 82px); max-width: 15ch; }
  .hero-content { padding-block: 130px 80px; }
  .hero-actions { margin-top: 36px; }
}
@media (max-width: 999px) {
  .hero-copy h1 { font-size: clamp(36px, 8.6vw, 56px); max-width: 14ch; }
}
@media (max-width: 520px) {
  .hero-copy h1 { font-size: clamp(32px, 9.6vw, 42px); max-width: none; }
}
.ticker:hover .ticker-track, .ticker:active .ticker-track, .ticker:focus-within .ticker-track, .ticker .ticker-track:hover { animation-play-state: running !important; }

/* team cards as buttons */
button.person { appearance: none; -webkit-appearance: none; background: none; border: 0; padding: 0; margin: 0; font: inherit; color: inherit; text-align: left; cursor: pointer; width: 100%; }
button.person:focus-visible { outline: 2px solid var(--navy); outline-offset: 4px; }
.person .p-more { position: absolute; right: 0; bottom: 0; width: 44px; height: 44px; display: grid; place-items: center; background: var(--navy); color: var(--on-dark); transform: translateX(100%); transition: transform .45s var(--ease); z-index: 2; }
.person .p-more svg { width: 18px; height: 18px; }
.person:hover .p-more, .person:focus-visible .p-more { transform: none; }
@media (hover: none) { .person .p-more { transform: none; width: 36px; height: 36px; } .person .p-more svg { width: 15px; height: 15px; } }
.person .p-name { cursor: pointer; }

/* bio dialog */
.modal--person { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); width: min(960px, calc(100vw - 32px)); }
.modal--person .modal-img { object-position: 50% 18%; min-height: 420px; }
.modal--person .modal-body { gap: 14px; }
.modal--person .modal-body h3 { font-size: clamp(26px, 2.6vw, 36px); margin-top: -4px; }
.modal--person .modal-body .eyebrow { color: var(--ink-3); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; font-weight: 600; }
.modal--person .modal-body p { font-size: 15.5px; line-height: 1.65; }
.modal--person .modal-body p + p { margin-top: -2px; }
@media (max-width: 760px) {
  .modal--person { grid-template-columns: 1fr; }
  .modal--person .modal-img { min-height: 0; aspect-ratio: 1 / 1; object-position: 50% 15%; }
  .modal--person .modal-body p { font-size: 15px; }
}
@media (min-width: 1800px) { .modal--person .modal-body p { font-size: 16.5px; } }
@media (max-width: 999px) {
  .hero-copy { gap: 0; }
  .hero-meta { margin-top: 30px; }
}
@media (max-width: 520px) {
  .hero-copy h1 { font-size: clamp(34px, 10.4vw, 46px); }
  .hero-meta { margin-top: 26px; }
}

/* v50 - team popups: equal size, contact details fill the space */
.modal--person .modal-body { display: flex; flex-direction: column; gap: 14px; }
.modal--person .p-meta { margin-top: auto; padding-top: 18px; border-top: 1px solid var(--rule); display: grid; grid-template-columns: max-content 1fr; gap: 8px 18px; font-size: 13.5px; }
.modal--person .p-meta dt { color: var(--ink-3); }
.modal--person .p-meta dd { margin: 0; font-weight: 500; }
.modal--person .p-meta a { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
@media (min-width: 761px) { .modal--person { min-height: min(620px, calc(100vh - 32px)); } .modal--person .modal-body { padding-top: 40px; } }
@media (min-width: 761px) and (max-height: 700px) { .modal--person { min-height: 0; } }
@media (max-width: 760px) { .modal--person .p-meta { margin-top: 10px; padding-bottom: 24px; } }
@media (min-width: 761px) {
  .modal--person { height: min(690px, calc(100vh - 32px)); min-height: 0; }
  .modal--person .modal-body { overflow: auto; min-height: 0; }
  .modal--person .modal-img { min-height: 0; height: 100%; }
}
@media (min-width: 1800px) { .modal--person { height: min(760px, calc(100vh / var(--z) - 32px)); } }
@media (min-width: 761px) {
  .modal--person .modal-body { justify-content: center; padding-top: clamp(28px, 4vw, 48px); }
  .modal--person .modal-body p { font-size: 16.5px; line-height: 1.7; }
  .modal--person .p-meta { margin-top: 26px; gap: 10px 20px; font-size: 14px; }
}
@media (min-width: 761px) and (max-height: 760px) { .modal--person .modal-body p { font-size: 15.5px; line-height: 1.6; } }
@media (min-width: 761px) {
  #modal-team-omer .modal-body { gap: 10px; padding-top: 28px; padding-bottom: 24px; }
  #modal-team-omer .modal-body p { font-size: 14.5px; line-height: 1.55; }
  #modal-team-omer .modal-body h3 { font-size: 28px; }
  #modal-team-omer .p-meta { margin-top: 14px; padding-top: 12px; gap: 6px 18px; font-size: 13px; }
}

/* v51 - team popups back to the compact box for everyone; Omer's text sized to fit */
@media (min-width: 761px) {
  .modal--person { height: min(600px, calc(100vh - 32px)); }
  .modal--person .modal-body { padding-top: clamp(24px, 3vw, 40px); padding-bottom: clamp(24px, 3vw, 40px); }
  .modal--person .modal-body p { font-size: 15.5px; line-height: 1.6; }
  .modal--person .p-meta { margin-top: 20px; padding-top: 14px; gap: 8px 18px; font-size: 13.5px; }
  #modal-team-omer .modal-body { gap: 8px; padding-top: 22px; padding-bottom: 20px; }
  #modal-team-omer .modal-body h3 { font-size: 26px; }
  #modal-team-omer .modal-body p { font-size: 14px; line-height: 1.52; }
  #modal-team-omer .p-meta { margin-top: 10px; padding-top: 10px; gap: 5px 16px; font-size: 12.5px; }
  #modal-team-omer .modal-body .eyebrow { font-size: 11px; }
}
@media (min-width: 1800px) { .modal--person { height: min(660px, calc(100vh / var(--z) - 32px)); } }
.modal--person .modal-img, .person figure img { image-rendering: auto; backface-visibility: hidden; transform: translateZ(0); }

/* v52 - team popups match the investment popup footprint (920 wide, ~500 tall) */
@media (min-width: 761px) {
  .modal--person { width: min(920px, calc(100vw - 32px)); height: min(500px, calc(100vh - 32px)); grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); }
  .modal--person .modal-body { padding: 26px clamp(24px, 3vw, 40px); gap: 10px; }
  .modal--person .modal-body h3 { font-size: clamp(24px, 2.2vw, 30px); }
  .modal--person .modal-body p { font-size: 14.5px; line-height: 1.55; }
  .modal--person .p-meta { margin-top: 14px; padding-top: 12px; gap: 6px 16px; font-size: 13px; }
  #modal-team-omer .modal-body { gap: 6px; padding-top: 18px; padding-bottom: 16px; }
  #modal-team-omer .modal-body h3 { font-size: 22px; }
  #modal-team-omer .modal-body .eyebrow { font-size: 10.5px; }
  #modal-team-omer .modal-body p { font-size: 13px; line-height: 1.45; }
  #modal-team-omer .p-meta { margin-top: 8px; padding-top: 8px; gap: 3px 14px; font-size: 12px; }
}
@media (min-width: 1800px) { .modal--person { height: min(540px, calc(100vh / var(--z) - 32px)); } }

/* v53 - tighten the space between the ticker and Our strategies; drop the full-width rule lines */
.numbers { padding-bottom: 0 !important; border-bottom: 0 !important; }
.ticker { border-top: 0; margin-top: clamp(28px, 3vw, 44px); padding-block: 16px 22px; }
.strategies { padding-top: clamp(56px, 6vw, 96px) !important; }
@media (max-width: 760px) { .strategies { padding-top: 48px !important; } .ticker { margin-top: 24px; } }
/* v54 - Omer's bio shortened, so use the same text size as everyone else */
@media (min-width: 761px) {
  #modal-team-omer .modal-body { gap: 10px; padding: 26px clamp(24px, 3vw, 40px); }
  #modal-team-omer .modal-body h3 { font-size: clamp(24px, 2.2vw, 30px); }
  #modal-team-omer .modal-body .eyebrow { font-size: 12px; }
  #modal-team-omer .modal-body p { font-size: 14.5px; line-height: 1.55; }
  #modal-team-omer .p-meta { margin-top: 14px; padding-top: 12px; gap: 6px 16px; font-size: 13px; }
}

/* v55 - phone/tablet-portrait: bio popups full-screen like the investment ones, head never cropped */
@media (max-width: 760px) {
  .modal--person { position: fixed; inset: 0; width: 100vw; max-width: none; height: 100dvh; max-height: none; min-height: 0; margin: 0; grid-template-columns: 1fr; grid-template-rows: auto 1fr; overflow-y: auto; }
  .modal--person .modal-img, .modal--person[open] .modal-img { height: auto; min-height: 0; aspect-ratio: 4 / 3; object-fit: cover; object-position: 50% 8%; }
  .modal--person .modal-body { display: flex; flex-direction: column; justify-content: flex-start; gap: 12px; padding: 22px 20px 32px; overflow: visible; }
  .modal--person .modal-body h3 { font-size: 26px; }
  .modal--person .modal-body p { font-size: 15px; line-height: 1.6; }
  .modal--person .p-meta { margin-top: 12px; padding-top: 14px; font-size: 13.5px; gap: 8px 16px; }
  .modal--person .p-meta dd { overflow-wrap: anywhere; }
}
@media (max-width: 760px) and (orientation: landscape) {
  .modal--person .modal-img { aspect-ratio: 16 / 7; object-position: 50% 12%; }
}

/* v68 - Co-investors: statement left, navy panel right; both the same height, no gaps */
.coinvest { padding-top: clamp(64px, 7vw, 110px) !important; padding-bottom: clamp(72px, 8vw, 130px) !important; background: var(--paper); }
.coinvest-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 28px clamp(40px, 6vw, 100px); align-items: stretch; }
.coinvest-lead { display: flex; flex-direction: column; justify-content: center; }
.coinvest-kicker { font-size: 12px; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; color: var(--stone-2); }
.coinvest-statement { margin-top: 16px; font-size: clamp(22px, 2.35vw, 37px); line-height: 1.22; letter-spacing: -0.022em; color: var(--navy); font-weight: 400; max-width: 32ch; }
.coinvest-copy { background: var(--navy); color: var(--on-dark); padding: clamp(28px, 3vw, 44px); display: flex; flex-direction: column; justify-content: center; gap: 26px; position: relative; isolation: isolate; overflow: hidden; box-shadow: 0 40px 80px -40px rgba(6,15,48,.55); }
.coinvest-copy::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(70% 80% at 100% 0%, rgba(255,255,255,.08), transparent 60%); }
.coinvest-copy::after { content: ""; position: absolute; left: 0; top: 0; width: 44px; height: 3px; background: var(--stone); }
.coinvest-copy > p { font-size: clamp(16px, 1.25vw, 19px); line-height: 1.65; font-weight: 300; color: var(--on-dark); max-width: 44ch; }
.coinvest-cta { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.coinvest-cta .btn { background: var(--paper); color: var(--navy); border-color: var(--paper); }
.coinvest-cta .btn:hover { background: #fff; color: var(--navy); }
.coinvest-mail { font-size: 14px; color: var(--on-dark-2); text-decoration: underline; text-underline-offset: 4px; text-decoration-color: rgba(246,245,240,.35); transition: color .2s, text-decoration-color .2s; }
.coinvest-mail:hover { color: var(--on-dark); text-decoration-color: var(--on-dark); }
@media (max-width: 1100px) { .coinvest-grid { grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); } }
@media (max-width: 900px) {
  .coinvest-grid { grid-template-columns: 1fr; gap: 24px; }
  .coinvest-statement { max-width: none; }
  .coinvest-copy { padding: 26px 22px 28px; gap: 22px; }
  .coinvest-copy > p { max-width: none; }
}

/* v69 - About intro statement: full column width, lines balanced to similar lengths; image column unchanged */
.intro-col .intro-text { max-width: none !important; font-size: clamp(22px, 2.2vw, 34px); line-height: 1.22; text-wrap: balance; }
/* v72 - intro statement on four lines at desktop */
@media (min-width: 961px) { .intro-col .intro-text { font-size: clamp(22px, 2.05vw, 31px); letter-spacing: -0.022em; } }
@media (min-width: 1800px) { .intro-col .intro-text { font-size: 28px; } }
@media (min-width: 1560px) and (max-width: 1799px) { .intro-col .intro-text { font-size: 29.5px; } }

/* v73 - About: wider landscape collage pushed to the right edge; text fills its column */
@media (min-width: 961px) {
  .intro-grid-outer { grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: 56px clamp(40px, 5vw, 80px); align-items: start; }
  .intro .intro-visual { position: sticky; top: clamp(72px, 9vh, 110px); height: auto; aspect-ratio: 1 / 0.92; margin-top: 6px; margin-right: calc(-1 * var(--gutter) + 24px); }
  .intro .iv--a { left: 0; top: 0; width: 100%; height: 66%; }
  .intro .iv--b { right: 0; bottom: 0; width: 56%; height: 44%; }
  .intro .iv-stamp { left: -22px; top: auto; bottom: 10%; }
  .intro-col .intro-text { max-width: none !important; }
  .intro-col .lede { max-width: none; }
  .intro-col .intro-grid p { max-width: none; }
}
@media (min-width: 1500px) { .intro .intro-visual { margin-right: calc(-1 * var(--gutter)); } }
.intro .iv--a img { object-position: 50% 55%; }
.intro .iv--b img { object-position: 50% 50%; }
@media (min-width: 961px) {
  .intro .iv-stamp { left: -22px; top: calc(66% - 46px); bottom: auto; }
  .intro-col .intro-text { font-size: clamp(22px, 1.95vw, 29px); }
}
@media (min-width: 1560px) and (max-width: 1799px) { .intro-col .intro-text { font-size: 28px; } }
@media (min-width: 1800px) { .intro-col .intro-text { font-size: 27px; } }
@media (min-width: 1460px) and (max-width: 1799px) { .intro-col .intro-text { font-size: 27px; } }

/* v74 - About: statement wraps edge to edge like the paragraphs; collage fills the full column height */
@media (min-width: 961px) {
  .intro-col .intro-text { text-wrap: wrap; max-width: none !important; }
  .intro-grid-outer { align-items: stretch; }
  .intro .intro-visual { position: relative; top: auto; height: auto; aspect-ratio: auto; margin-top: 6px; }
  .intro .iv--a { left: 0; top: 0; width: 100%; height: 50%; }
  .intro .iv--b { right: 0; bottom: 0; width: 100%; height: 46%; box-shadow: none; }
  .intro .iv-stamp { left: -22px; top: calc(50% - 46px); bottom: auto; }
  .intro .iv--b img { object-position: 50% 45%; }
}

/* v75 - About statement: four fixed lines scaled to the column width on desktop; collage fills the column */
.intro-fit { line-height: 1.16; letter-spacing: -0.024em; }
@media (min-width: 961px) { .intro-fit .ln { display: block; white-space: nowrap; } .intro-fit { max-width: none !important; } }
@media (max-width: 960px) { .intro-fit .ln { display: inline; } }


/* v76 - About collage: full-resolution wind farm + battery storage photos, crisp rendering */
.intro .iv--a img { object-position: 50% 42%; }
.intro .iv--b img { object-position: 50% 55%; }
.intro .iv .ph img { image-rendering: auto; backface-visibility: hidden; transform: translateZ(0); filter: saturate(1.04) contrast(1.03); }
.intro .iv:hover .ph img { transform: translateZ(0) scale(1.03) !important; }

/* v78 - About photos: new solar rows + battery-lake; section 06 statement toned down; headings unified */
.intro .iv--a img { object-position: 50% 50%; }
.intro .iv--b img { object-position: 50% 40%; }
.coinvest-statement { font-size: clamp(20px, 1.75vw, 27px) !important; line-height: 1.3 !important; letter-spacing: -0.015em !important; max-width: 34ch !important; }
.coinvest-lead { gap: 22px; }
.coinvest-align, .coinvest-kicker { }
.sec-title h2, .sec-title--sm h2, .sec-title--light h2 { font-size: clamp(32px, 4vw, 58px) !important; font-weight: 400 !important; letter-spacing: -0.035em; line-height: .95; }
.intro .iv--b img { object-position: 50% 35%; }

/* v79 - section 06: text and panel brought together, no dead space */
@media (min-width: 901px) {
  .coinvest-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 clamp(28px, 3.5vw, 56px); align-items: center; }
  .coinvest-lead { gap: 18px; padding-right: 0; }
  .coinvest-statement { max-width: none !important; font-size: clamp(20px, 1.7vw, 26px) !important; }
  .coinvest-copy { padding: clamp(26px, 2.6vw, 36px); gap: 22px; }
  .coinvest-copy > p { max-width: none; font-size: clamp(15.5px, 1.1vw, 17px); }
  .coinvest { padding-top: clamp(56px, 6vw, 96px) !important; padding-bottom: clamp(64px, 7vw, 110px) !important; }
  .coinvest .sec-title { margin-bottom: clamp(24px, 2.6vw, 36px); }
}
/* crisp rendering of the About photos */
.intro .iv .ph img { filter: saturate(1.05) contrast(1.04); image-rendering: -webkit-optimize-contrast; }

.intro .iv--b img { object-position: 50% 55%; }

.intro .iv--b img { object-position: 50% 50%; }

/* v82 - timeline: every entry starts on the same line under its year; even text */
.timeline li { align-content: start; gap: 6px; padding-right: 16px; }
.timeline span { font-size: 12.5px; line-height: 1.45; text-wrap: pretty; }
@media (min-width: 961px) and (max-width: 1180px) { .timeline { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 28px; } .timeline::before, .timeline::after { display: none; } .timeline li::after { content: ""; position: absolute; left: 0; right: 16px; top: 5px; height: 1px; background: var(--rule); } .timeline li::before { z-index: 1; } }
@media (max-width: 960px) and (min-width: 561px) { .timeline { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 24px; } .timeline::before, .timeline::after { display: none; } .timeline li::after { content: ""; position: absolute; left: 0; right: 16px; top: 5px; height: 1px; background: var(--rule); } .timeline li::before { z-index: 1; } }
@media (max-width: 760px) and (min-width: 561px) { .timeline li { padding: 20px 16px 0 0; } .timeline li::before { left: 0; top: 0; } }
/* v82b - timeline as 3 x 2 at every width above phone: room for even 2-line entries */
@media (min-width: 561px) {
  .timeline { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; row-gap: 30px; column-gap: 18px; }
  .timeline::before, .timeline::after { display: none; }
  .timeline li { padding: 20px 8px 0 0; }
  .timeline li::after { content: ""; position: absolute; left: 0; right: -18px; top: 5px; height: 1px; background: var(--rule); }
  .timeline li:nth-child(3n)::after { right: 0; }
  .timeline li::before { z-index: 1; left: 0; top: 0; }
  .timeline span { font-size: 13.5px; }
  .timeline b { font-size: 16px; }
}

/* v84 - performance: no filters on animated images, no backdrop blurs, no idle infinite animations, GPU hints */
.slide img { filter: none !important; will-change: transform; backface-visibility: hidden; }
.slides, .hero-content { will-change: transform, opacity; }
.hero-actions .btn { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: rgba(246,245,240,.96); }
.hero-actions .btn:not(.btn-primary) { background: rgba(0,18,74,.35); }
.header.is-scrolled { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: rgba(247,246,242,.97) !important; }
.tile img { filter: none !important; animation: none !important; will-change: transform; }
.pcard img { filter: none !important; will-change: transform; }
.theme img { filter: none !important; will-change: transform; }
.intro .iv .ph img { filter: none !important; will-change: transform; }
.contact .band-bg { animation: none !important; will-change: transform; }
.contact::after { animation: none !important; background-image: radial-gradient(60% 80% at 70% 30%, rgba(205,205,190,.10), transparent 60%) !important; }
.cform { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: rgba(246,245,240,.08) !important; }
.door { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: rgba(246,245,240,.09) !important; }
.ticker-track { will-change: transform; }
.person figure img { will-change: transform; }
.iv .ph::after { display: none !important; }

/* v85 - About top photo: Ayrshire wind farm */
.intro .iv--a img { object-position: 50% 45%; }

.intro .iv--a img { object-position: 50% 55%; }

/* v87 - About: looping wind-farm video in the top slot */
.iv .ph video { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; background: var(--stone-soft); }
.intro .iv--a .ph { background: var(--stone-soft); }

/* v88: hide browser hover toolbars (PiP / video enhance) on the About videos —
   a transparent layer sits over each clip so the browser never sees a hover on the <video> */
.iv .ph { position: relative; }
.iv .ph video { pointer-events: none; }
.iv .ph::before { content: ""; position: absolute; inset: 0; z-index: 2; background: transparent; display: block !important; }
video.iv-video::-webkit-media-controls,
video.iv-video::-webkit-media-controls-enclosure,
video.iv-video::-webkit-media-controls-panel,
video.iv-video::-webkit-media-controls-overlay-play-button,
video.iv-video::-webkit-media-controls-start-playback-button { display: none !important; -webkit-appearance: none; }

/* v89: About statement — same four justified lines on every screen (JS sets size + spacing) */
.has-js .intro-fit .ln { display: block; white-space: nowrap; }
.intro-fit { text-align: left; max-width: none !important; text-wrap: initial; }
.intro-fit .ln:last-child { letter-spacing: -0.024em; word-spacing: 0; }
@media (max-width: 960px) { .intro-grid-outer { grid-template-columns: minmax(0, 1fr); } }
.intro-col, .intro-grid-outer > * { min-width: 0; }

/* v90: Strategies intro — justified, hyphenated columns that finish on the same line; navy lead-in sentence */
.strat-body { grid-template-columns: minmax(0, var(--strat-l, 1.16fr)) minmax(0, 1fr); align-items: start; }
.strat-body .lede { text-align: justify; text-justify: inter-word; -webkit-hyphens: manual; hyphens: manual; text-wrap: pretty; }
.strat-body .lead-in { color: var(--navy); font-weight: 400; }
@media (max-width: 960px) { .strat-body { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 600px) { .strat-body .lede { text-align: left; text-wrap: pretty; -webkit-hyphens: none; hyphens: none; } }
