:root {
  --blue: #435d7b;
  --blue-dark: #2d435c;
  --blue-soft: #eef3f7;
  --line: #d8e0e7;
  --grey: #f6f7f8;
  --map: #dceff4;
  --focus: #007fa3;
  --cyan: #007f9e;
  --cyan-light: #79e2ef;
  --shadow: 0 18px 45px rgba(45, 67, 92, .12);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 100px; font-size: clamp(15px, .25vw + 14px, 19px); }
body { margin: 0; overflow-x: clip; background: #fff; color: #17212b; font-family: "Helvetica Neue", Helvetica, "Segoe UI", sans-serif; line-height: 1.6; }
a { color: inherit; transition: color .18s ease, background-color .18s ease; }
a:hover, a:focus-visible { color: var(--cyan); }
img, svg { display: block; max-width: 100%; }

.skip-link { position: fixed; z-index: 100; top: 10px; left: 10px; padding: 10px 14px; background: #fff; color: var(--blue-dark); border: 2px solid var(--blue-dark); transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }

.header { position: sticky; z-index: 20; top: 0; min-height: clamp(72px, 7vw, 105px); display: flex; align-items: center; justify-content: space-between; gap: clamp(18px, 3vw, 46px); padding: 12px clamp(18px, 3vw, 42px); border-bottom: 1px solid var(--line); background: rgba(255,255,255,.97); }
.logo { display: block; width: clamp(300px, 47vw, 650px); }
.logo img { width: 100%; height: auto; }
.nav { display: flex; align-items: center; gap: clamp(12px, 1.7vw, 25px); }
.nav a { color: var(--blue); font-size: clamp(13px, 1.15vw, 17px); font-weight: 700; text-decoration: none; text-transform: uppercase; white-space: nowrap; }
.nav a:hover, .nav a:focus-visible { color: var(--cyan); text-decoration: underline; text-underline-offset: 5px; }
.menu { display: none; border: 1px solid var(--blue); background: #fff; color: var(--blue); padding: 9px 13px; font-weight: 700; cursor: pointer; }

.hero { position: relative; min-height: clamp(400px, 44vw, 620px); display: flex; align-items: flex-end; overflow: hidden; background: var(--blue-dark); border-bottom: 1px solid var(--line); }
.hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(13,28,42,.04) 20%, rgba(13,28,42,.2) 55%, rgba(13,28,42,.78) 100%); }
.hero-banner { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 52%; }
.hero-copy { position: relative; z-index: 1; display: flex; align-items: flex-end; width: 100%; padding-block: clamp(46px,6vw,82px); padding-inline: max(clamp(28px,6vw,88px), calc((100vw - 900px) / 2)); }
.hero-heading { max-width: 720px; }
.hero-kicker { margin: 0 0 14px; color: rgba(255,255,255,.86); font-size: clamp(12px,.9vw,14px); font-weight: 600; letter-spacing: .17em; text-transform: uppercase; }
h1, h2, h3 { margin-top: 0; color: var(--blue); font-weight: 650; letter-spacing: -.02em; }
h2 { text-transform: uppercase; }
h1 { max-width: 720px; margin-bottom: 0; color: #fff; font-size: clamp(40px,5vw,68px); font-weight: 500; line-height: 1.02; letter-spacing: -.035em; text-shadow: 0 2px 20px rgba(0,0,0,.3); }
h2 { margin-bottom: 30px; font-size: clamp(26px,2.8vw,39px); line-height: 1.08; }
h3 { margin-bottom: 8px; color: var(--blue-dark); font-size: clamp(20px,1.7vw,25px); line-height: 1.15; }

.section { padding-block: clamp(52px,6vw,88px); padding-inline: max(clamp(28px,6vw,88px), calc((100vw - 1120px) / 2)); border-bottom: 1px solid var(--line); }
.section-copy { margin: 0; font-size: clamp(17px,1.55vw,22px); line-height: 1.7; }
.about { border-bottom: 0; }
.about-inner { width: min(100%, 880px); margin: 0 auto; }
.about-copy { width: 100%; }
.about-copy p { margin: 0; font-size: clamp(17px,1.35vw,20px); line-height: 1.8; }
.about-copy p + p { margin-top: 1.35em; }
.people { background: var(--grey); }
.people > h2 { width: min(100%, 900px); margin-left: auto; margin-right: auto; }
.people-grid { width: min(100%, 900px); display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: clamp(20px,2.5vw,30px); margin: 0 auto; }
.person { min-width: 0; overflow: hidden; background: #fff; border: 1px solid var(--line); box-shadow: 0 12px 32px rgba(45, 67, 92, .1); }
.portrait { width: 100%; overflow: hidden; background: var(--blue-soft); }
.portrait img { width: 100%; height: auto; object-fit: contain; }
.person-text { min-width: 0; padding: clamp(20px,2.2vw,28px) 16px; color: var(--blue); font-size: clamp(16px,1.15vw,18px); overflow-wrap: anywhere; }
.person-text p { margin: 0 0 9px; color: #3f4d5b; }
.person-text a { display: block; width: fit-content; margin-top: 6px; font-weight: 650; text-underline-offset: 4px; }
.person-text a + a { margin-top: 4px; }
.person-email { white-space: nowrap; }

.expertise { padding-inline: max(clamp(28px,6vw,88px), calc((100vw - 900px) / 2)); background: #fff; }
.services-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(14px,2vw,24px) clamp(32px,7vw,92px); margin: 34px 0 0; padding: 0; list-style: none; }
.services-list li { position: relative; padding: 17px 20px 17px 48px; background: var(--blue-soft); color: var(--blue-dark); font-size: clamp(16px,1.3vw,20px); font-weight: 650; }
.services-list li::before { content: ''; position: absolute; left: 22px; top: 50%; width: 8px; height: 8px; border-radius: 50%; background: var(--blue); transform: translateY(-50%); }

.location { display: grid; grid-template-columns: minmax(250px,.8fr) minmax(360px,1.2fr); align-items: center; gap: clamp(30px,5vw,60px); padding-inline: max(clamp(28px,6vw,88px), calc((100vw - 900px) / 2)); }
.address { color: #111; font-size: clamp(17px,1.55vw,22px); font-style: normal; line-height: 1.38; }
.address span { display: block; margin-top: 14px; color: var(--blue); font-weight: 700; }
.address a { text-underline-offset: 4px; }
.map.office-map { position: relative; width: 100%; height: clamp(260px,28vw,360px); display: block; margin: 0; overflow: hidden; border: 1px solid #aebdc6; background: var(--map); }
.office-map iframe { width: 100%; height: 100%; border: 0; }
.map-link { position: absolute; z-index: 2; right: 10px; bottom: 10px; padding: 8px 11px; background: var(--blue); color: #fff; font-size: 13px; font-weight: 700; text-decoration: none; box-shadow: 0 2px 8px rgba(0,0,0,.18); }
.map-link:hover, .map-link:focus-visible { background: var(--cyan); color: #fff; text-decoration: underline; text-underline-offset: 3px; }

.footer { min-height: 88px; display: grid; grid-template-columns: minmax(300px,.7fr) minmax(360px,1.3fr); align-items: center; gap: 34px; padding: 20px clamp(24px,4vw,58px); background: var(--blue); color: #fff; }
.footer-left { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; font-size: 16px; font-weight: 700; }
.footer a { text-decoration: none; }
.footer a:hover, .footer a:focus-visible { color: var(--cyan-light); text-decoration: underline; text-underline-offset: 4px; }
.regulatory { max-width: 760px; margin: 0 0 0 auto; font-size: 12px; line-height: 1.4; text-align: right; }

:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }

@media (max-width: 1000px) {
  .logo { width: min(52vw,560px); }
  .nav { gap: 13px; }
  .nav a { font-size: 13px; }
}

@media (max-width: 850px) {
  html { scroll-padding-top: 80px; }
  .header { position: relative; min-height: 78px; }
  .logo { width: min(72vw,500px); }
  .js .menu { display: inline-flex; }
  .js .nav { position: absolute; z-index: 30; top: 100%; left: 0; right: 0; display: none; flex-direction: column; align-items: stretch; gap: 0; padding: 10px 20px 24px; background: #fff; border-bottom: 1px solid var(--line); box-shadow: 0 14px 30px rgba(49,74,102,.15); }
  .js .nav.open { display: flex; }
  .nav a { padding: 13px 0; border-bottom: 1px solid var(--line); }
  .hero { min-height: 360px; }
  .hero-banner { object-position: 58% center; }
  .people-grid { grid-template-columns: 1fr; }
  .location { grid-template-columns: 1fr; }
  .footer { grid-template-columns: 1fr; }
  .regulatory { margin-left: 0; text-align: left; }
}

@media (max-width: 520px) {
  .header { padding-inline: 12px; }
  .logo { width: min(76vw,330px); }
  .hero { min-height: 320px; }
  .hero-copy, .section { padding: 25px 20px; }
  .services-list { grid-template-columns: 1fr; }
  .footer { padding: 20px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

/* Legal notices page */
.legal-page { background: #fff; }
.legal-title { padding-block: clamp(46px,6vw,76px); padding-inline: max(clamp(28px,6vw,88px), calc((100vw - 1120px) / 2)); background: var(--blue-dark); color: #fff; text-align: center; }
.legal-title h1 { max-width: 760px; margin-inline: auto; color: #fff; font-size: clamp(38px,4.5vw,58px); line-height: 1.06; text-shadow: none; }
.legal-kicker { margin: 0 0 10px; color: rgba(255,255,255,.78); font-size: 12px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.legal-date { margin: 16px 0 0; color: rgba(255,255,255,.82); font-size: 15px; }
.legal-layout { width: min(100%,1000px); display: block; margin: 0 auto; padding-block: clamp(52px,6vw,88px); padding-inline: clamp(24px,5vw,58px); }
.legal-toc { width: 100%; margin: 0 auto clamp(48px,6vw,72px); padding: clamp(24px,3vw,34px); background: var(--blue-soft); border: 1px solid var(--line); }
.legal-toc h2 { margin-bottom: 22px; color: var(--blue); font-size: clamp(24px,2.4vw,32px); text-align: center; }
.legal-toc ol { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: repeat(8,auto); grid-auto-flow: column; gap: 11px 44px; margin: 0; padding-left: 24px; }
.privacy-toc ol { grid-template-rows: repeat(9,auto); }
.legal-toc li { padding-left: 4px; color: var(--blue); }
.legal-toc a { display: block; color: var(--blue-dark); font-size: 15px; line-height: 1.45; text-decoration: none; }
.legal-toc a:hover, .legal-toc a:focus-visible { color: var(--cyan); text-decoration: underline; text-underline-offset: 3px; }
.legal-content { width: 100%; max-width: 900px; margin: 0 auto; }
.legal-section { padding: 0 0 clamp(42px,5vw,62px); border-bottom: 1px solid var(--line); }
.legal-section + .legal-section { padding-top: clamp(42px,5vw,62px); }
.legal-section:last-child { padding-bottom: 0; border-bottom: 0; }
.legal-section h2 { margin: 0 0 30px; color: var(--blue); font-size: clamp(26px,2.8vw,39px); line-height: 1.08; text-transform: none; }
.legal-section p, .legal-section li { color: #17212b; font-size: clamp(17px,1.35vw,20px); line-height: 1.8; }
.legal-section p { margin: 0 0 20px; }
.legal-section p.legal-address-line { margin: 0; line-height: 1.45; }
.legal-section p.legal-address-start { margin-top: 18px; }
.legal-section p.legal-address-end { margin-bottom: 24px; }
.legal-section ul { margin: 4px 0 24px; padding-left: 26px; }
.legal-section li { padding-left: 4px; }
.legal-section li + li { margin-top: 10px; }
.legal-section a { color: var(--blue); font-weight: 600; text-underline-offset: 3px; overflow-wrap: anywhere; }
.legal-section a:hover, .legal-section a:focus-visible { color: var(--cyan); }
.legal-introduction p { color: var(--blue-dark); font-size: clamp(18px,1.4vw,21px); line-height: 1.8; }
@media (max-width: 850px) {
  .legal-title { padding-block: 42px; }
  .legal-layout { padding: 38px 20px 60px; }
  .legal-toc { margin-bottom: 46px; }
  .legal-toc ol { grid-template-columns: 1fr; grid-template-rows: none; grid-auto-flow: row; gap: 9px; }
}

@media (max-width: 520px) {
  .legal-title { padding: 34px 20px 38px; }
  .legal-title h1 { font-size: 36px; }
  .legal-layout { padding-top: 30px; }
  .legal-toc { padding: 22px 20px; }
  .legal-toc h2 { text-align: left; }
  .legal-section { padding-bottom: 36px; }
  .legal-section + .legal-section { padding-top: 36px; }
  .legal-section h2 { margin-bottom: 22px; font-size: 26px; }
}

/* Individual profile pages */
.person-name-link { color: inherit; text-decoration: none; }
.person-name-link:hover, .person-name-link:focus-visible { color: var(--cyan); text-decoration: underline; text-underline-offset: 4px; }
.person-text .profile-link { margin-top: 16px; padding: 9px 13px; background: var(--blue); color: #fff; font-size: 14px; text-decoration: none; }
.person-text .profile-link:hover, .person-text .profile-link:focus-visible { background: var(--cyan); color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.profile-page { background: #fff; }
.profile-hero { display: grid; grid-template-columns: minmax(260px,360px) minmax(0,1fr); align-items: center; gap: clamp(34px,6vw,78px); padding-block: clamp(52px,7vw,96px); padding-inline: max(clamp(28px,6vw,88px), calc((100vw - 1120px) / 2)); background: var(--grey); border-bottom: 1px solid var(--line); }
.profile-photo { overflow: hidden; background: var(--blue-soft); border: 1px solid var(--line); box-shadow: var(--shadow); }
.profile-photo img { width: 100%; height: auto; object-fit: contain; }
.profile-kicker { margin: 0 0 12px; color: var(--blue); font-size: 13px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.profile-intro h1 { max-width: 760px; margin: 0 0 14px; color: var(--blue); font-size: clamp(40px,5vw,66px); line-height: 1.02; text-shadow: none; }
.profile-role { margin: 0 0 26px; color: var(--blue-dark); font-size: clamp(19px,1.8vw,25px); font-weight: 650; }
.profile-contact { display: flex; flex-wrap: wrap; gap: 12px 22px; }
.profile-contact a { color: var(--blue); font-size: clamp(16px,1.2vw,18px); font-weight: 650; text-underline-offset: 4px; overflow-wrap: anywhere; }
.profile-contact a:hover, .profile-contact a:focus-visible { color: var(--cyan); }
.profile-body { width: min(100%,1120px); display: grid; grid-template-columns: minmax(0,1.45fr) minmax(300px,.8fr); gap: clamp(42px,7vw,90px); margin: 0 auto; padding: clamp(52px,7vw,92px) clamp(24px,5vw,60px); }
.profile-main h2, .profile-sidebar h2 { margin-bottom: 24px; color: var(--blue); font-size: clamp(26px,2.8vw,38px); text-transform: uppercase; }
.profile-main p { margin: 0; font-size: clamp(17px,1.35vw,20px); line-height: 1.8; }
.profile-main p + p { margin-top: 1.4em; }
.profile-main h2:not(:first-child) { margin-top: clamp(46px,6vw,68px); }
.profile-main h3 { margin: clamp(34px,4vw,48px) 0 18px; color: var(--blue-dark); font-size: clamp(21px,2vw,28px); line-height: 1.2; }
.profile-main h3 + p { margin-top: 0; }
.profile-experience { margin: 0; padding-left: 25px; }
.profile-experience li { font-size: clamp(17px,1.25vw,19px); line-height: 1.7; }
.profile-experience li + li { margin-top: 13px; }
.profile-recognition { margin-top: 28px; padding: 20px 22px; background: var(--blue-soft); border-left: 4px solid var(--blue); color: var(--blue-dark); font-size: 16px; line-height: 1.6; }
.profile-sidebar { align-self: start; padding: clamp(24px,3vw,34px); background: var(--blue-soft); border: 1px solid var(--line); }
.profile-sidebar h2 { margin-top: 0; font-size: 20px; }
.profile-sidebar h2:not(:first-child) { margin-top: 34px; }
.profile-sidebar ul { margin: 0; padding-left: 21px; }
.profile-sidebar li { color: var(--blue-dark); font-size: 16px; line-height: 1.55; }
.profile-sidebar li + li { margin-top: 8px; }
.profile-back { display: inline-block; margin-top: 34px; color: var(--blue); font-weight: 700; text-underline-offset: 4px; }
@media (max-width: 850px) {
  .profile-hero, .profile-body { grid-template-columns: 1fr; }
  .profile-photo { width: min(100%,420px); margin: 0 auto; }
  .profile-intro { text-align: center; }
  .profile-contact { justify-content: center; }
  .profile-sidebar { width: 100%; }
}
@media (max-width: 520px) {
  .profile-hero { padding: 30px 20px 42px; }
  .profile-intro h1 { font-size: 38px; }
  .profile-body { padding: 38px 20px 58px; }
}
