
  :root {
    --navy: #192c44;
    --gold: #ead09c;
    --capital-blue: #215d9b;
    --slate: #2f4768;
    --charcoal: #5e5f5f;
    --platinum: #d6d6d6;
    --cream: #f6f3ec;
    --paper: #fbfaf6;
    --ink: #0a1424;
    --white: #ffffff;
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }
  html {
    scroll-behavior: smooth;
    scroll-padding-top: 120px;
    scrollbar-gutter: stable;
  }

  /* Lenis 1.3.26's own stylesheet, verbatim. */
  html.lenis,
  html.lenis body { height: auto; }
  .lenis:not(.lenis-autoToggle).lenis-stopped { overflow: clip; }
  .lenis [data-lenis-prevent],
  .lenis [data-lenis-prevent-wheel],
  .lenis [data-lenis-prevent-touch],
  .lenis [data-lenis-prevent-vertical],
  .lenis [data-lenis-prevent-horizontal] { overscroll-behavior: contain; }
  .lenis.lenis-smooth iframe { pointer-events: none; }
  .lenis.lenis-autoToggle {
    transition-property: overflow;
    transition-duration: 1ms;
    transition-behavior: allow-discrete;
  }

  /* Native CSS smooth scrolling would fight Lenis for the same gesture.
     Only applies once Lenis has actually initialised and added .lenis. */
  html.lenis { scroll-behavior: auto !important; }

  body {
    font-family: 'Lato', sans-serif;
    font-weight: 300;
    color: var(--navy);
    background: var(--paper);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
  }

  ::selection { background: var(--gold); color: var(--navy); }

  .label {
    font-family: 'Lato', sans-serif;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--charcoal);
  }

  .ital { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 400; }

  /* ════════════════════════════════════════════════
     NAVIGATION
     ════════════════════════════════════════════════ */
  nav {
    position: fixed;
    top: 0; left: 0; right: 0;
    padding: 26px 56px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    z-index: 100;
    transition: all 0.4s ease;
    background: transparent;
  }

  nav.scrolled {
    background: rgba(251, 250, 246, 0.95);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid rgba(25, 44, 68, 0.08);
  }

  .nav-logo {
    display: flex;
    align-items: center;
    gap: 16px;
    text-decoration: none;
  }

  .nav-logo .lockup {
    height: 56px;
    width: auto;
    display: block;
  }

  .nav-logo .lockup-w { display: block; }
  .nav-logo .lockup-n { display: none; }
  nav.scrolled .nav-logo .lockup-w { display: none; }
  nav.scrolled .nav-logo .lockup-n { display: block; }

  .nav-links {
    display: flex;
    gap: 44px;
    list-style: none;
  }

  .nav-links a {
    font-family: 'Lato', sans-serif;
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--cream);
    text-decoration: none;
    transition: color 0.25s ease;
    position: relative;
    padding: 6px 0;
  }
  nav.scrolled .nav-links a { color: var(--navy); }
  .nav-links a:hover { color: var(--gold); }
  nav.scrolled .nav-links a:hover { color: var(--capital-blue); }

  .nav-links a::after {
    content: '';
    position: absolute;
    left: 0; bottom: 0;
    width: 0; height: 1px;
    background: currentColor;
    transition: width 0.3s ease;
  }
  .nav-links a:hover::after { width: 100%; }

  /* LinkedIn icon in nav */
  .nav-li-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid rgba(246, 243, 236, 0.4);
    border-radius: 50%;
    transition: all 0.3s ease;
    color: var(--cream) !important;
    padding: 0 !important;
    margin-left: 12px;
  }
  .nav-li-link svg { width: 14px; height: 14px; fill: currentColor; }
  .nav-li-link::after { display: none !important; }
  .nav-li-link:hover {
    background: var(--gold);
    border-color: var(--gold);
    color: var(--navy) !important;
  }
  nav.scrolled .nav-li-link {
    border-color: rgba(25, 44, 68, 0.3);
    color: var(--navy) !important;
  }
  nav.scrolled .nav-li-link:hover {
    background: var(--navy);
    border-color: var(--navy);
    color: var(--cream) !important;
  }

  /* ════════════════════════════════════════════════
     HERO — quiet institutional light drift
     ════════════════════════════════════════════════ */
  .hero {
    height: 100vh;
    min-height: 720px;
    position: relative;
    overflow: hidden;
    color: var(--cream);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 0 56px 100px;
    isolation: isolate;
    background:
      radial-gradient(ellipse at 18% 30%, rgba(234, 208, 156, 0.10), transparent 34%),
      radial-gradient(ellipse at 82% 28%, rgba(33, 93, 155, 0.18), transparent 42%),
      linear-gradient(135deg, #050b16 0%, #0a1424 48%, #192c44 100%);
    background-size: 140% 140%, 150% 150%, 100% 100%;
    animation: heroAmbientDrift 28s ease-in-out infinite alternate;
  }

  .hero-img { display: none !important; }

  .hero::before {
    content: '';
    position: absolute;
    inset: -12%;
    z-index: 1;
    pointer-events: none;
    background:
      linear-gradient(112deg,
        transparent 0%,
        transparent 38%,
        rgba(234, 208, 156, 0.085) 47%,
        rgba(246, 243, 236, 0.035) 51%,
        rgba(33, 93, 155, 0.075) 56%,
        transparent 68%,
        transparent 100%);
    opacity: 0.62;
    filter: blur(18px);
    transform: translate3d(-10%, 0, 0) scale(1.08);
    animation: heroSoftSweep 24s cubic-bezier(.45,.05,.55,.95) infinite alternate;
    will-change: transform, opacity;
  }

  .hero::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    background:
      radial-gradient(ellipse at 50% 54%, transparent 0%, rgba(5, 11, 22, 0.18) 56%, rgba(5, 11, 22, 0.54) 100%),
      linear-gradient(180deg, rgba(5, 11, 22, 0.04) 0%, rgba(5, 11, 22, 0.34) 74%, rgba(5, 11, 22, 0.70) 100%);
    opacity: 0.92;
  }

  .hero-content {
    padding-left: clamp(22px, 2.2vw, 34px);
    border-left: 2px solid rgba(234, 208, 156, 0.72);
  }

  @keyframes heroAmbientDrift {
    /* No filter here. A filter on the hero applies to everything inside it --
       the canvas, the fade, all of it -- so brightness(1.03) meant nothing in
       the hero could match a colour outside it, and because it animated, the
       mismatch drifted between one and four levels over its 28 seconds. That
       is the line that kept coming back at the foot of the hero, and why it
       measured differently every time. The hero's own background sits behind
       the canvas and is not visible, so the filter bought nothing. */
    0% {
      background-position: 0% 0%, 100% 0%, center;
    }
    100% {
      background-position: 78% 64%, 20% 76%, center;
    }
  }

  @keyframes heroSoftSweep {
    0% {
      transform: translate3d(-12%, 2%, 0) scale(1.08);
      opacity: 0.42;
    }
    50% {
      opacity: 0.68;
    }
    100% {
      transform: translate3d(10%, -2%, 0) scale(1.12);
      opacity: 0.54;
    }
  }

  .hero-content {
    padding-left: clamp(0px, 2vw, 28px);
    border-left: 1px solid rgba(234, 208, 156, 0.34);
  }

  @keyframes heroCapitalFlow {
    0% {
      background-position: -70% 0, center, center, center;
    }
    100% {
      background-position: 130% 0, center, center, center;
    }
  }

  @keyframes heroSignalLine {
    0% {
      transform: translate3d(-18%, 0, 0) scaleX(0.86);
      opacity: 0.35;
    }
    100% {
      transform: translate3d(18%, 0, 0) scaleX(1.08);
      opacity: 0.9;
    }
  }

  @keyframes heroSoftGlowDrift {
    0% {
      transform: translate3d(0, 0, 0) scale(1);
      opacity: 0.48;
    }
    100% {
      transform: translate3d(-90px, 42px, 0) scale(1.12);
      opacity: 0.72;
    }
  }

  .hero-content {
    position: relative;
    z-index: 3;
    max-width: 1500px;
    width: 100%;
    margin: 0 auto;
  }

  .hero-eyebrow {
    color: var(--gold);
    margin-bottom: 32px;
    display: flex;
    align-items: center;
    gap: 16px;
    opacity: 0;
    animation: fadeUp 1s ease 0.3s forwards;
  }
  .hero-eyebrow::before {
    content: ''; width: 32px; height: 1px; background: var(--gold);
  }

  .hero h1 {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: clamp(38px, 5.4vw, 76px);
    letter-spacing: 0.04em;
    line-height: 1.18;
    color: var(--cream);
    max-width: 1100px;
    margin-bottom: 40px;
    opacity: 0;
    
  }
  .hero h1 .em { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 300; color: var(--gold); letter-spacing: 0.01em; }

  .hero-sub {
    font-size: 16px;
    line-height: 1.85;
    color: rgba(246, 243, 236, 0.78);
    max-width: 600px;
    font-weight: 300;
    opacity: 0;
    
  }

  .hero-base {
    position: absolute;
    bottom: 32px;
    left: 56px;
    right: 56px;
    z-index: 3;
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: rgba(246, 243, 236, 0.55);
    font-size: 10.5px;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    opacity: 0;
    animation: fadeUp 1s ease 1.1s forwards;
  }

  .hero-base .city-credit { font-style: italic; text-transform: none; letter-spacing: 0.06em; font-family: 'Cormorant Garamond', serif; font-size: 13px; color: rgba(246, 243, 236, 0.5); }

  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(24px); }
    to { opacity: 1; transform: translateY(0); }
  }

  /* ════════════════════════════════════════════════
     SECTIONS
     ════════════════════════════════════════════════ */
  section {
    padding: 160px 56px;
    position: relative;
  }
  .inner { max-width: 1500px; margin: 0 auto; }

  .head-grid {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 100px;
    margin-bottom: 96px;
    align-items: start;
  }

  .head-eyebrow {
    color: var(--capital-blue);
    margin-bottom: 28px;
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: 13.5px;
    letter-spacing: 0.34em;
  }
  .head-eyebrow::before {
    content: ''; width: 28px; height: 1px; background: currentColor;
  }

  .head-grid h2 {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: clamp(36px, 4.4vw, 60px);
    letter-spacing: 0.04em;
    line-height: 1.16;
    color: var(--navy);
  }

  .head-grid .lead {
    font-size: 19px;
    line-height: 1.8;
    color: var(--slate);
    font-weight: 300;
    max-width: 720px;
  }
  .head-grid .lead em { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 400; color: var(--navy); }

  .rule { height: 1px; background: var(--platinum); width: 100%; }

  /* ════════════════════════════════════════════════
     I. THE FIRM
     ════════════════════════════════════════════════ */
  #firm { background: var(--paper); padding-top: 100px; }

  .statement {
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
    font-weight: 300;
    font-size: clamp(22px, 2.4vw, 30px);
    line-height: 1.55;
    color: var(--slate);
    max-width: 1100px;
    margin: 60px auto 0;
    text-align: center;
    padding: 60px 0;
    border-top: 1px solid var(--platinum);
    border-bottom: 1px solid var(--platinum);
    position: relative;
  }

  .statement::before {
    content: '"';
    font-family: 'Cormorant Garamond', serif;
    color: var(--gold);
    font-size: 64px;
    line-height: 0;
    position: absolute;
    top: 50px;
    left: -10px;
    opacity: 0.6;
  }

  /* ════════════════════════════════════════════════
     II. APPROACH
     ════════════════════════════════════════════════ */
  #approach {
    background: var(--navy);
    color: var(--cream);
    padding: 200px 56px;
  }

  #approach .head-grid h2 { color: var(--cream); }
  #approach .head-grid .lead { color: rgba(246, 243, 236, 0.78); }
  #approach .head-grid .lead em { color: var(--gold); font-weight: 400; }
  #approach .head-eyebrow { color: var(--gold); }

  .approach-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 60px;
    margin-top: 40px;
  }

  .approach-item {
    border-top: 1px solid rgba(234, 208, 156, 0.3);
    padding-top: 36px;
    transition: border-color 0.4s ease;
  }
  .approach-item:hover { border-top-color: var(--gold); }

  .approach-num {
    font-family: 'Cormorant SC', serif;
    font-size: 12px;
    color: var(--gold);
    letter-spacing: 0.24em;
    margin-bottom: 28px;
    display: block;
  }

  .approach-item h3 {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: 26px;
    letter-spacing: 0.05em;
    color: var(--cream);
    margin-bottom: 22px;
    line-height: 1.3;
    min-height: 70px;
  }

  .approach-item p {
    font-size: 14.5px;
    line-height: 1.9;
    color: rgba(246, 243, 236, 0.72);
    font-weight: 300;
  }

  /* ════════════════════════════════════════════════
     III. VALUES
     ════════════════════════════════════════════════ */
  #values { background: var(--cream); padding: 180px 56px; }

  .values-list {
    margin-top: 40px;
    border-top: 1px solid var(--navy);
  }

  .value-accordion-item {
    border-bottom: 1px solid rgba(25, 44, 68, 0.12);
  }

  .value-accordion-trigger {
    width: 100%;
    border: 0;
    background: transparent;
    cursor: pointer;
    display: grid;
    grid-template-columns: 80px 1fr 38px;
    gap: 60px;
    padding: 34px 0;
    align-items: center;
    text-align: left;
    color: var(--navy);
    transition: transform 0.45s cubic-bezier(.16,1,.3,1), color 0.3s ease;
  }

  .value-accordion-trigger:hover {
    transform: translate3d(12px, 0, 0);
  }

  .value-num {
    font-family: 'Cormorant SC', serif;
    font-size: 14px;
    color: var(--gold);
    letter-spacing: 0.18em;
    font-weight: 600;
  }

  .value-title {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: 24px;
    letter-spacing: 0.05em;
    color: var(--navy);
    line-height: 1.3;
  }

  .value-toggle {
    width: 26px;
    height: 26px;
    border: 1px solid rgba(25, 44, 68, 0.22);
    border-radius: 50%;
    position: relative;
    justify-self: end;
    transition: transform 0.35s ease, border-color 0.35s ease, background 0.35s ease;
  }

  .value-toggle::before {
    content: '∨';
    position: absolute;
    left: 50%;
    top: 50%;
    color: var(--navy);
    font-family: 'Cormorant Garamond', serif;
    font-size: 20px;
    line-height: 1;
    transform: translate(-50%, -56%);
    transition: color 0.35s ease;
  }

  .value-accordion-item.is-open .value-toggle {
    background: var(--navy);
    border-color: var(--navy);
    transform: none;
  }

  .value-accordion-item.is-open .value-toggle::before {
    content: '^';
    color: var(--cream);
    font-family: 'Lato', sans-serif;
    font-size: 15px;
    font-weight: 300;
    transform: translate(-50%, -58%);
  }

  .value-accordion-panel {
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    padding: 0 0 0 140px;
    transition: max-height 0.5s cubic-bezier(.16,1,.3,1), opacity 0.35s ease, padding 0.35s ease;
  }

  .value-accordion-item.is-open .value-accordion-panel {
    max-height: 260px;
    opacity: 1;
    padding: 0 0 34px 140px;
  }

  .value-accordion-panel p {
    font-size: 15px;
    line-height: 1.85;
    color: var(--charcoal);
    max-width: 760px;
  }

  /* ════════════════════════════════════════════════
     IV. PEOPLE
     ════════════════════════════════════════════════ */
  #people {
    background: var(--paper);
    padding: 180px 56px;
  }

  .manager-profile {
    display: grid;
    grid-template-columns: minmax(280px, 420px) 1fr;
    gap: 72px;
    align-items: center;
    margin-top: 20px;
    padding: 72px;
    background: var(--navy);
    color: var(--cream);
    position: relative;
    overflow: hidden;
  }

  .manager-profile::before {
    content: '';
    position: absolute;
    inset: 22px;
    border: 1px solid rgba(234, 208, 156, 0.18);
    pointer-events: none;
  }

  .manager-profile::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
      radial-gradient(circle at 15% 20%, rgba(234, 208, 156, 0.08), transparent 34%),
      radial-gradient(circle at 92% 75%, rgba(33, 93, 155, 0.18), transparent 42%);
    pointer-events: none;
  }

  .manager-photo-wrap,
  .manager-copy {
    position: relative;
    z-index: 2;
  }

  .manager-photo-wrap {
    border-top: 1px solid var(--gold);
    padding-top: 18px;
  }

  .manager-photo {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    object-position: center 18%;
    filter: grayscale(0.05) contrast(1.04);
  }

  .manager-copy .label {
    color: var(--gold);
    display: block;
    margin-bottom: 22px;
  }

  .manager-copy h3 {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: clamp(32px, 4vw, 52px);
    letter-spacing: 0.05em;
    line-height: 1.15;
    color: var(--cream);
    margin-bottom: 28px;
  }

  .manager-copy p {
    color: rgba(246, 243, 236, 0.76);
    font-size: 15.5px;
    line-height: 1.86;
    margin-bottom: 18px;
    max-width: 760px;
  }

  /* ════════════════════════════════════════════════
     V. CONTACT
     ════════════════════════════════════════════════ */
  #contact {
    position: relative;
    padding: 112px 56px 102px;
    background:
      linear-gradient(180deg, rgba(6, 14, 28, 0.70) 0%, rgba(6, 14, 28, 0.76) 100%),
      url("/tulsa%20skyline.jpg") center center / cover no-repeat;
    background-image:
      linear-gradient(180deg, rgba(6, 14, 28, 0.70) 0%, rgba(6, 14, 28, 0.76) 100%),
      image-set(url("/tulsa-skyline-hires.webp") type("image/webp"),
                url("/tulsa%20skyline.jpg") type("image/jpeg"));
  }

  #contact .inner {
    position: relative;
    z-index: 2;
  }

  #contact .head-grid {
    gap: 48px;
    margin-bottom: 42px;
  }

  #contact .head-eyebrow { color: var(--gold); }
  #contact .head-grid h2 { color: var(--cream); }
  #contact .head-grid .lead { color: rgba(246, 243, 236, 0.82); }
  #contact .head-grid .lead em { color: var(--gold); }

  .locations-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 36px;
    margin-top: 0;
  }

  .locations-grid.single {
    grid-template-columns: 1fr;
    max-width: 560px;
    margin-left: 0;
    margin-right: auto;
  }

  .location-card {
    padding: 28px 32px;
    border-top: 1px solid rgba(234, 208, 156, 0.72);
    position: relative;
    background: rgba(10, 20, 36, 0.56);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: 0 18px 44px rgba(0, 0, 0, 0.20);
  }

  .location-card .location-banner {
    display: none !important;
  }

  .location-card .label {
    color: var(--gold);
    margin-bottom: 14px;
    display: block;
  }

  .location-card h3 {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: 32px;
    letter-spacing: 0.05em;
    color: var(--cream);
    margin-bottom: 0;
    line-height: 1.08;
  }

  .location-card .role {
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
    color: rgba(234, 208, 156, 0.92);
    font-size: 17px;
    margin-top: 2px;
    margin-bottom: 18px;
    line-height: 1.2;
  }

  .location-card .addr {
    font-size: 16px;
    line-height: 1.36;
    color: rgba(246, 243, 236, 0.88);
    font-weight: 300;
    margin-bottom: 0;
  }

  .location-card .office-phone {
    display: block;
    margin-top: 4px;
  }

  .location-card .meta {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
    padding-top: 18px;
    margin-top: 18px;
    border-top: 1px solid rgba(246, 243, 236, 0.14);
  }
  .location-card .meta .label { color: rgba(246, 243, 236, 0.56); margin-bottom: 6px; font-size: 9.5px; }
  .location-card .meta .v {
    font-family: 'Cormorant Garamond', serif;
    color: rgba(246, 243, 236, 0.88);
    font-size: 14px;
  }

  /* ════════════════════════════════════════════════
     VI. CONTACT
     ════════════════════════════════════════════════ */
  .contact {
    background:
      linear-gradient(180deg, rgba(6, 14, 28, 0.70) 0%, rgba(6, 14, 28, 0.76) 100%),
      url("/tulsa%20skyline.jpg") center center / cover no-repeat;
    background-image:
      linear-gradient(180deg, rgba(6, 14, 28, 0.70) 0%, rgba(6, 14, 28, 0.76) 100%),
      image-set(url("/tulsa-skyline-hires.webp") type("image/webp"),
                url("/tulsa%20skyline.jpg") type("image/jpeg"));
    color: var(--cream);
    padding: 180px 56px;
    text-align: center;
  }

  .contact-inner { max-width: 800px; margin: 0 auto; }

  .contact .label { color: var(--gold); margin-bottom: 36px; display: block; }

  .contact h2 {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: clamp(34px, 4.6vw, 60px);
    letter-spacing: 0.04em;
    line-height: 1.2;
    color: var(--cream);
    margin-bottom: 36px;
  }
  .contact h2 em { font-family: 'Cormorant Garamond', serif; font-style: italic; color: var(--gold); font-weight: 300; }

  .contact p {
    font-size: 17px;
    line-height: 1.85;
    color: rgba(246, 243, 236, 0.72);
    margin-bottom: 56px;
    font-weight: 300;
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
  }

  .btn {
    display: inline-block;
    padding: 18px 48px;
    border: 1px solid var(--gold);
    color: var(--gold);
    font-family: 'Lato', sans-serif;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    text-decoration: none;
    transition: all 0.35s ease;
    background: transparent;
  }
  .btn:hover { background: var(--gold); color: var(--navy); }

  /* ════════════════════════════════════════════════
     FOOTER
     ════════════════════════════════════════════════ */
  footer {
    background: #060e1c;
    color: rgba(246, 243, 236, 0.7);
    padding: 48px 56px 24px;
  }

  .foot-top {
    max-width: 1500px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr;
    gap: 40px;
    padding-bottom: 32px;
    border-bottom: 1px solid rgba(234, 208, 156, 0.12);
  }

  .foot-brand .foot-lockup {
    height: 52px;
    width: auto;
    display: block;
    margin-bottom: 16px;
  }

  .foot-brand p {
    font-size: 12.5px;
    line-height: 1.7;
    color: rgba(246, 243, 236, 0.55);
    max-width: 420px;
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
  }

  .foot-col .label { color: var(--gold); margin-bottom: 8px; display: block; font-size: 10px; }
  .foot-col ul { list-style: none; display: flex; flex-direction: column; gap: 3px; }
  .foot-col li { margin-bottom: 3px; font-size: 13px; line-height: 1.2; }
  .foot-col a {
    color: rgba(246, 243, 236, 0.65);
    text-decoration: none;
    transition: color 0.2s ease;
    font-weight: 300;
  }
  .foot-col a:hover { color: var(--gold); }

  .foot-disclosures {
    max-width: 1500px;
    margin: 0 auto;
    padding: 24px 0 16px;
    border-bottom: 1px solid rgba(234, 208, 156, 0.08);
  }

  .foot-disclosures p {
    font-size: 10.5px;
    line-height: 1.7;
    color: rgba(246, 243, 236, 0.42);
    margin-bottom: 8px;
  }
  .foot-disclosures p strong { color: rgba(246, 243, 236, 0.65); font-weight: 700; }

  .foot-bottom {
    max-width: 1500px;
    margin: 16px auto 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 10px;
    letter-spacing: 0.16em;
    /* 0.52, not 0.4: at 0.4 this measured a contrast ratio of 3.55 against
       the footer's navy, under the 4.5 that text this size needs. */
    color: rgba(246, 243, 236, 0.52);
    text-transform: uppercase;
    flex-wrap: nowrap;
    gap: 24px;
  }

  .foot-bottom .foot-links {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    justify-content: flex-end;
  }

  .foot-bottom a { color: rgba(246, 243, 236, 0.52); text-decoration: none; margin-left: 0; transition: color 0.2s ease; white-space: nowrap; }
  .foot-bottom a:hover { color: var(--gold); }
  .foot-bottom .copy { white-space: nowrap; }

  /* ════════════════════════════════════════════════
     SCROLL REVEAL
     ════════════════════════════════════════════════ */
  .reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 1.1s cubic-bezier(.16,1,.3,1), transform 1.1s cubic-bezier(.16,1,.3,1);
  }
  .reveal.visible { opacity: 1; transform: translateY(0); }

  /* ════════════════════════════════════════════════
     RESPONSIVE
     ════════════════════════════════════════════════ */
  @media (max-width: 1100px) {
    .nav-logo .lockup { height: 44px; }
    .nav-links { gap: 22px; }
    .nav-links a { font-size: 12px; letter-spacing: 0.2em; }
    .nav-li-link { width: 28px; height: 28px; margin-left: 6px; }
    .nav-li-link svg { width: 12px; height: 12px; }
    nav, nav.scrolled { padding-left: 32px; padding-right: 32px; }
    .hero, section { padding-left: 32px; padding-right: 32px; }
    .hero-base { left: 32px; right: 32px; }
    .head-grid { grid-template-columns: 1fr; gap: 32px; margin-bottom: 64px; }
    .approach-list { grid-template-columns: 1fr; gap: 48px; }
    .value-row { grid-template-columns: 60px 1fr; gap: 24px; padding: 32px 0; }
    .value-row .value-desc { grid-column: 1 / -1; padding-left: 84px; }
    .locations-grid { grid-template-columns: 1fr; gap: 40px; }
    .foot-top { grid-template-columns: 1fr; gap: 40px; }
  }

  @media (max-width: 700px) {
    nav, nav.scrolled { padding-left: 20px; padding-right: 20px; }
    .nav-logo .lockup { height: 36px; }
    .nav-links { display: none; }
    .hero, section, footer { padding-left: 20px; padding-right: 20px; }
    .hero { padding-bottom: 80px; }
    .hero-base { left: 20px; right: 20px; bottom: 20px; flex-direction: column; gap: 16px; align-items: flex-start; }
    .value-row { grid-template-columns: 1fr; gap: 8px; padding: 24px 0; }
    .value-row .value-desc { padding-left: 0; }
    .foot-bottom { flex-direction: column; align-items: flex-start; }
    .foot-bottom .foot-links { justify-content: flex-start; gap: 14px; }
    .foot-bottom a { margin-left: 0; margin-right: 0; }
  }

  /* Smooth modal background blur: blur the site content itself instead of snapping backdrop-filter on. */
  body > :not(.disclaimer-modal):not(script) {
    transition: filter 0.65s cubic-bezier(.16,1,.3,1);
    will-change: filter;
  }
  body.modal-open > :not(.disclaimer-modal):not(script) {
    filter: blur(10px);
  }

  /* ════════════════════════════════════════════════
     DISCLAIMER MODAL
     ════════════════════════════════════════════════ */
  .disclaimer-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.65s cubic-bezier(.16,1,.3,1), visibility 0s linear 0.65s;
  }
  .disclaimer-modal.open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition-delay: 0s;
  }

  .disclaimer-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(10, 20, 36, 0.62);
    opacity: 1;
    cursor: pointer;
  }

  .disclaimer-card {
    position: relative;
    width: 100%;
    max-width: 760px;
    max-height: 85vh;
    background: var(--paper);
    border: none;
    box-shadow: 0 40px 80px -20px rgba(0, 0, 0, 0.5);
    transform: none;
    transition: none;
    display: flex;
    flex-direction: column;
    will-change: opacity;
  }
  .disclaimer-modal.open .disclaimer-card { transform: none; }

  .disclaimer-close {
    position: absolute;
    top: 24px;
    right: 24px;
    width: 36px;
    height: 36px;
    border: 1px solid rgba(25, 44, 68, 0.2);
    background: transparent;
    color: var(--navy);
    cursor: pointer;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.25s ease;
    font-family: 'Lato', sans-serif;
    font-size: 18px;
    font-weight: 300;
    line-height: 1;
  }
  .disclaimer-close:hover {
    background: var(--navy);
    color: var(--cream);
    border-color: var(--navy);
  }

  .disclaimer-content {
    padding: 60px 60px 50px;
    overflow-y: auto;
    overflow-x: hidden;
    position: relative;
    z-index: 2;
  }

  .disclaimer-content::-webkit-scrollbar { width: 6px; }
  .disclaimer-content::-webkit-scrollbar-track { background: transparent; }
  .disclaimer-content::-webkit-scrollbar-thumb { background: rgba(25, 44, 68, 0.2); border-radius: 3px; }
  .disclaimer-content::-webkit-scrollbar-thumb:hover { background: rgba(25, 44, 68, 0.4); }

  .disclaimer-content .label {
    color: var(--capital-blue);
    margin-bottom: 18px;
    display: block;
  }

  .disclaimer-content h2 {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: 38px;
    letter-spacing: 0.05em;
    color: var(--navy);
    line-height: 1.2;
    margin-bottom: 28px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--platinum);
  }

  .disclaimer-content .subtitle {
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
    font-size: 15px;
    color: var(--charcoal);
    margin-bottom: 32px;
    padding-bottom: 24px;
    border-bottom: 1px solid var(--platinum);
  }

  .disclaimer-content h3 {
    font-family: 'Cormorant SC', serif;
    font-weight: 500;
    font-size: 17px;
    letter-spacing: 0.06em;
    color: var(--navy);
    margin: 28px 0 12px;
  }
  .disclaimer-content h3:first-of-type { margin-top: 0; }

  .disclaimer-content p {
    font-size: 13.5px;
    line-height: 1.75;
    color: var(--charcoal);
    margin-bottom: 14px;
    text-align: justify;
    hyphens: auto;
  }

  @media (max-width: 700px) {
    .disclaimer-modal { padding: 16px; }
    .disclaimer-card { max-height: 90vh; }
    .disclaimer-close { top: 16px; right: 16px; width: 32px; height: 32px; font-size: 16px; }
    .disclaimer-content { padding: 40px 28px 32px; }
    .disclaimer-content h2 { font-size: 28px; }
    .disclaimer-content p { font-size: 12.5px; }
  }

/* === Smooth nav fade + scroll hide/show patch === */
nav {
  transform: translateY(0);
  transition:
    transform 0.55s cubic-bezier(.16, 1, .3, 1),
    background-color 0.55s ease,
    border-color 0.55s ease,
    backdrop-filter 0.55s ease,
    -webkit-backdrop-filter 0.55s ease !important;
  will-change: transform, background-color, border-color;
}

nav.nav-hidden {
  transform: translateY(-120%);
}

.nav-links a {
  transition: color 0.45s ease !important;
}


/* Backup anchor alignment for direct hash navigation */
section, header {
  scroll-margin-top: 92px;
}

@media (max-width: 700px) {
  section, header {
    scroll-margin-top: 74px;
  }
}


  @media (max-width: 1100px) {
    #contact .head-grid { gap: 28px; margin-bottom: 32px; }
    .locations-grid.single { max-width: 100%; }
  }

  @media (max-width: 700px) {
    #contact {
      padding-top: 88px;
      padding-bottom: 82px;
    }

    .location-card {
      padding: 24px 22px;
    }

    .location-card h3 {
      font-size: 28px;
    }
  }


  @media (max-width: 1100px) {
    .value-accordion-trigger {
      grid-template-columns: 60px 1fr 32px;
      gap: 24px;
      padding: 30px 0;
    }

    .value-accordion-panel,
    .value-accordion-item.is-open .value-accordion-panel {
      padding-left: 84px;
    }
  }

  @media (max-width: 700px) {
    .value-accordion-trigger {
      grid-template-columns: 1fr 32px;
      gap: 14px;
      padding: 24px 0;
    }

    .value-accordion-trigger .value-num {
      grid-column: 1 / -1;
    }

    .value-accordion-panel,
    .value-accordion-item.is-open .value-accordion-panel {
      padding-left: 0;
    }

    .value-title {
      font-size: 21px;
    }
  }


/* Values accordion refinements */
.value-toggle {
  border-radius: 50%;
}

.value-toggle::before,
.value-toggle::after {
  content: '' !important;
  position: absolute;
  left: 50%;
  top: 50%;
  width: 8px;
  height: 8px;
  border-right: 1px solid var(--navy);
  border-bottom: 1px solid var(--navy);
  background: transparent !important;
  transform: translate(-50%, -62%) rotate(45deg);
  transition: transform 0.35s ease, border-color 0.35s ease;
}

.value-toggle::after {
  display: none !important;
}

.value-accordion-item.is-open .value-toggle {
  background: var(--navy);
  border-color: var(--navy);
  transform: none;
}

.value-accordion-item.is-open .value-toggle::before {
  border-color: var(--cream);
  transform: translate(-50%, -36%) rotate(225deg);
}

.value-accordion-panel {
  padding-left: 140px;
  padding-right: 38px;
}

.value-accordion-item.is-open .value-accordion-panel {
  max-height: 420px;
  padding-left: 140px;
  padding-right: 38px;
}

.value-accordion-panel p {
  max-width: none;
  text-align: justify;
  text-justify: inter-word;
}


/* People profile switcher */
.manager-photo,
.manager-copy {
  transition: opacity 0.38s ease;
}

.manager-profile.is-switching .manager-photo,
.manager-profile.is-switching .manager-copy {
  opacity: 0;
}

.manager-copy p,
#managerBio p {
  text-align: justify;
  text-justify: inter-word;
}

.people-selector {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 30px;
  padding-top: 24px;
  border-top: 1px solid rgba(246, 243, 236, 0.14);
}

.people-tab {
  border: 1px solid rgba(234, 208, 156, 0.36);
  background: transparent;
  color: rgba(246, 243, 236, 0.76);
  font-family: 'Lato', sans-serif;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 11px 15px;
  cursor: pointer;
  transition: background 0.28s ease, color 0.28s ease, border-color 0.28s ease;
}

.people-tab:hover,
.people-tab.active {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--navy);
}


/* People switcher fixed-layout refinement */
.manager-profile {
  min-height: 690px;
}

.manager-copy {
  align-self: stretch;
  display: grid;
  grid-template-rows: 28px 128px minmax(300px, 1fr) auto;
  align-content: stretch;
}

#managerRole,
#managerName,
#managerBio,
.manager-photo {
  transition: opacity 0.38s ease;
}

.manager-profile.is-switching .manager-photo,
.manager-profile.is-switching #managerRole,
.manager-profile.is-switching #managerName,
.manager-profile.is-switching #managerBio {
  opacity: 0;
}

.manager-profile.is-switching .manager-copy {
  opacity: 1;
}

#managerName {
  margin-bottom: 0;
  align-self: start;
}

#managerBio {
  min-height: 300px;
}

#managerBio p:last-child {
  margin-bottom: 0;
}

.people-selector {
  align-self: end;
  min-height: 46px;
}

@media (max-width: 1100px) {
  .manager-profile {
    min-height: auto;
  }

  .manager-copy {
    grid-template-rows: 28px auto minmax(300px, auto) auto;
  }
}

@media (max-width: 700px) {
  .manager-copy {
    grid-template-rows: 28px auto minmax(360px, auto) auto;
  }

  #managerBio {
    min-height: 360px;
  }
}


/* Final People switcher no-shift layout */
.manager-profile {
  min-height: 770px !important;
  align-items: stretch !important;
}

.manager-photo-wrap {
  align-self: stretch !important;
}

.manager-photo {
  height: 100% !important;
  min-height: 600px !important;
  object-fit: cover !important;
}

.manager-copy {
  align-self: stretch !important;
  display: grid !important;
  grid-template-rows: 30px 126px 390px 72px !important;
  row-gap: 0 !important;
}

#managerRole {
  display: block !important;
  height: 30px !important;
  margin-bottom: 0 !important;
  align-self: start !important;
}

#managerName {
  height: 126px !important;
  min-height: 126px !important;
  margin-bottom: 0 !important;
  align-self: start !important;
  overflow: hidden !important;
}

#managerBio {
  height: 390px !important;
  min-height: 390px !important;
  max-height: 390px !important;
  overflow: hidden !important;
}

#managerBio p,
.manager-copy p {
  text-align: justify !important;
  text-justify: inter-word !important;
}

.people-selector {
  height: 72px !important;
  min-height: 72px !important;
  margin-top: 0 !important;
  align-self: end !important;
}

.manager-profile.is-switching .manager-copy {
  opacity: 1 !important;
}

.manager-profile.is-switching #managerRole,
.manager-profile.is-switching #managerName,
.manager-profile.is-switching #managerBio,
.manager-profile.is-switching .manager-photo {
  opacity: 0 !important;
}

@media (max-width: 1100px) {
  .manager-profile {
    min-height: auto !important;
  }

  .manager-photo {
    height: auto !important;
    min-height: 0 !important;
  }

  .manager-copy {
    grid-template-rows: 30px auto minmax(390px, auto) auto !important;
  }

  #managerName {
    height: auto !important;
    min-height: 0 !important;
  }

  #managerBio {
    height: auto !important;
    min-height: 390px !important;
    max-height: none !important;
  }

  .people-selector {
    height: auto !important;
    min-height: 58px !important;
    margin-top: 24px !important;
  }
}


/* Section header alignment refinement */
.head-grid > div:nth-child(2) {
  padding-top: 58px;
}

@media (max-width: 1100px) {
  .head-grid > div:nth-child(2) {
    padding-top: 0;
  }
}


/* Section lead typing effect */
.head-grid .lead {
  position: relative;
}

.head-grid .lead.typing-active::after {
  content: '';
  display: inline-block;
  width: 1px;
  height: 1em;
  margin-left: 3px;
  background: currentColor;
  vertical-align: -0.12em;
  animation: leadCaretBlink 0.85s steps(1) infinite;
}

.head-grid .lead.typing-complete::after {
  content: none;
}

@keyframes leadCaretBlink {
  0%, 48% { opacity: 1; }
  49%, 100% { opacity: 0; }
}


/* Justified section lead paragraphs */
.head-grid .lead {
  text-align: justify;
  text-justify: inter-word;
}


/* Replaying typing lead alignment */
.head-grid .lead {
  text-align: justify;
  text-justify: inter-word;
}


/* Investment process copy refinements */
#approach .lead,
#firm .lead,
#values .lead,
.value-accordion-panel p,
#managerBio p {
  text-align: justify;
  text-justify: inter-word;
}


/* People cycle navigation */
.people-cycle {
  display: flex;
  align-items: center;
  gap: 16px;
}

.people-nav-btn {
  width: 42px;
  height: 42px;
  border: 1px solid rgba(234, 208, 156, 0.42);
  background: transparent;
  color: var(--gold);
  font-family: 'Cormorant Garamond', serif;
  font-size: 32px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.28s ease, color 0.28s ease, border-color 0.28s ease, transform 0.28s ease;
}

.people-nav-btn:hover {
  background: var(--gold);
  color: var(--navy);
  border-color: var(--gold);
  transform: translateY(-1px);
}

.people-count {
  min-width: 70px;
  text-align: center;
  color: rgba(246, 243, 236, 0.62);
  font-family: 'Lato', sans-serif;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.people-tab {
  display: none !important;
}


/* Softer People images and dot navigation */
.manager-photo-wrap {
  border-top: none !important;
  padding-top: 0 !important;
  border-radius: 22px;
  overflow: hidden;
  position: relative;
  box-shadow:
    0 24px 70px rgba(0, 0, 0, 0.30),
    inset 0 0 0 1px rgba(234, 208, 156, 0.10);
}

.manager-photo-wrap::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(5, 11, 22, 0.02) 0%, rgba(5, 11, 22, 0.08) 100%),
    radial-gradient(ellipse at 50% 45%, transparent 45%, rgba(5, 11, 22, 0.22) 100%);
  box-shadow: inset 0 0 0 1px rgba(246, 243, 236, 0.08);
  border-radius: inherit;
}

.manager-photo {
  border-radius: 22px;
  transform: scale(1.015);
  filter: grayscale(0.04) contrast(1.02) saturate(0.95);
}

.people-cycle {
  display: flex;
  align-items: center;
  gap: 18px;
}

.people-dots {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-width: 52px;
  justify-content: center;
}

.people-dot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: rgba(246, 243, 236, 0.28);
  transition: width 0.28s ease, background 0.28s ease, opacity 0.28s ease;
}

.people-dot.active {
  width: 22px;
  background: var(--gold);
}

.people-count {
  display: none !important;
}


/* Dot-only people navigation */
.people-cycle {
  justify-content: flex-start;
  gap: 0;
}

.people-dots {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  min-width: auto;
  justify-content: flex-start;
}

.people-dot {
  appearance: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: rgba(246, 243, 236, 0.32);
  transition: width 0.28s ease, background 0.28s ease, opacity 0.28s ease, transform 0.28s ease;
}

.people-dot:hover {
  background: rgba(234, 208, 156, 0.72);
  transform: translateY(-1px);
}

.people-dot.active {
  width: 28px;
  background: var(--gold);
}

.people-nav-btn {
  display: none !important;
}


/* Safe interaction repair */
.value-accordion-trigger,
.people-dot,
.photo-nav {
  pointer-events: auto !important;
}

.photo-nav {
  z-index: 20 !important;
}

.people-dot {
  border: 0;
}


/* Final click repair for People and Values */
.value-accordion-trigger,
.value-accordion-trigger *,
.people-dot,
.photo-nav {
  pointer-events: auto !important;
}

.value-accordion-item.is-open .value-accordion-panel,
.value-accordion-item.open .value-accordion-panel {
  max-height: 560px !important;
  opacity: 1 !important;
}

.photo-nav {
  z-index: 100 !important;
}

.people-dot {
  border: 0 !important;
}


/* Refined bio image edge navigation */
.manager-photo-wrap {
  position: relative;
}

.photo-nav {
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: 100 !important;
  width: 24%;
  border: 0;
  padding: 0;
  cursor: pointer;
  opacity: 0;
  background: transparent;
  color: transparent;
  pointer-events: auto !important;
  transition: opacity 0.34s ease;
}

.photo-nav-left {
  left: 0;
}

.photo-nav-right {
  right: 0;
}

.photo-nav::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  width: 82px;
  opacity: 0;
  transition: opacity 0.34s ease;
}

.photo-nav-left::before {
  left: 0;
  background: linear-gradient(90deg, rgba(5, 11, 22, 0.34), transparent);
}

.photo-nav-right::before {
  right: 0;
  background: linear-gradient(270deg, rgba(5, 11, 22, 0.34), transparent);
}

.photo-nav span {
  position: absolute;
  top: 50%;
  width: 15px;
  height: 15px;
  border-top: 1px solid rgba(246, 243, 236, 0.80);
  border-left: 1px solid rgba(246, 243, 236, 0.80);
  opacity: 0;
  transition: opacity 0.34s ease, border-color 0.28s ease, transform 0.28s ease;
}

.photo-nav-left span {
  left: 24px;
  transform: translateY(-50%) rotate(-45deg);
}

.photo-nav-right span {
  right: 24px;
  transform: translateY(-50%) rotate(135deg);
}

.manager-photo-wrap:hover .photo-nav {
  opacity: 1;
}

.manager-photo-wrap:hover .photo-nav::before {
  opacity: 1;
}

.manager-photo-wrap:hover .photo-nav span {
  opacity: 0.78;
}

.photo-nav:hover span {
  opacity: 0.92;
  border-color: rgba(234, 208, 156, 0.92);
}

.photo-nav-left:hover span {
  transform: translate(-3px, -50%) rotate(-45deg);
}

.photo-nav-right:hover span {
  transform: translate(3px, -50%) rotate(135deg);
}

.photo-nav:focus-visible {
  outline: 1px solid rgba(234, 208, 156, 0.55);
  outline-offset: -10px;
  opacity: 1;
}

.photo-nav:focus-visible span {
  opacity: 0.92;
  border-color: rgba(234, 208, 156, 0.92);
}


/* Hero italic gold refinement */
.hero h1 .ital {
  color: var(--gold) !important;
}




/* Restored section lead typing effect */
.head-grid .lead {
  text-align: justify;
  text-justify: inter-word;
  position: relative;
}

.head-grid .lead.typing-active::after {
  content: '';
  display: inline-block;
  width: 1px;
  height: 1em;
  margin-left: 3px;
  background: currentColor;
  vertical-align: -0.12em;
  animation: leadCaretBlink 0.85s steps(1) infinite;
}

.head-grid .lead.typing-complete::after {
  content: none;
}

@keyframes leadCaretBlink {
  0%, 48% { opacity: 1; }
  49%, 100% { opacity: 0; }
}


/* Repaired smooth top bar hide/show */
nav {
  transform: translateY(0);
  transition:
    transform 0.55s cubic-bezier(.16, 1, .3, 1),
    background-color 0.55s ease,
    border-color 0.55s ease,
    backdrop-filter 0.55s ease,
    -webkit-backdrop-filter 0.55s ease !important;
  will-change: transform, background-color, border-color;
}

nav.nav-hidden {
  transform: translateY(-120%);
}


/* Entry family-office disclaimer */
.entry-disclaimer-card {
  max-width: 760px;
}

.entry-disclaimer-ack {
  margin-top: 26px;
  border: 1px solid var(--navy);
  background: var(--navy);
  color: var(--cream);
  font-family: 'Lato', sans-serif;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 14px 22px;
  cursor: pointer;
  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.entry-disclaimer-ack:hover {
  background: transparent;
  color: var(--navy);
}

body.entry-disclaimer-open {
  overflow: hidden;
}


/* Entry disclaimer visibility repair */
#entryDisclaimerModal {
  position: fixed !important;
  inset: 0 !important;
  z-index: 999999 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 28px !important;
  background: rgba(5, 11, 22, 0.42) !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transition: opacity 0.32s ease, visibility 0.32s ease !important;
}

#entryDisclaimerModal.active {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
}

#entryDisclaimerModal .entry-disclaimer-card {
  position: relative !important;
  z-index: 1000000 !important;
  opacity: 1 !important;
  transform: none !important;
}

body.entry-disclaimer-open {
  overflow: hidden;
}


/* Prevent awkward hyphenation in pop-ups */
.disclaimer-modal,
.disclaimer-modal *,
.disclaimer-content,
.disclaimer-content p,
.disclaimer-content li {
  hyphens: none !important;
  -webkit-hyphens: none !important;
  -ms-hyphens: none !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
}


/* Stronger blur while entry disclaimer is active */
body.entry-disclaimer-open .site-shell,
body.entry-disclaimer-open main,
body.entry-disclaimer-open nav,
body.entry-disclaimer-open footer {
  filter: blur(16px) saturate(0.82) brightness(0.82) !important;
  transform: scale(1.012);
  transition: filter 0.35s ease, transform 0.35s ease;
  pointer-events: none;
}

body.entry-disclaimer-open #entryDisclaimerModal {
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  background: rgba(5, 11, 22, 0.58) !important;
}






/* Footer outer background height reduction only */
footer {
  padding-top: 38px !important;
  padding-bottom: 26px !important;
}

@media (max-width: 700px) {
  footer {
    padding-top: 34px !important;
    padding-bottom: 22px !important;
  }
}


/* Contact email line */
.location-card .office-email {
  display: block;
  margin-top: 0;
  line-height: 1.25;
}

.location-card .office-email a {
  color: inherit;
  text-decoration: none;
}

.location-card .office-email a:hover {
  color: var(--gold);
}


/* Smooth contact email hover */
.location-card .office-email a {
  transition: color 0.28s ease, opacity 0.28s ease;
}

.location-card .office-email a:hover {
  color: var(--gold);
}


/* Smooth approach overhead bar hover */
.approach-item,
.approach-card,
.process-card {
  position: relative;
}

.approach-item::before,
.approach-card::before,
.process-card::before {
  transition:
    background-color 0.34s ease,
    border-color 0.34s ease,
    opacity 0.34s ease,
    transform 0.34s ease,
    width 0.34s ease !important;
}




/* If the bar is an actual child element instead of ::before */
#approach .bar,
#approach .top-bar,
#approach .accent-bar,
#approach .approach-bar,
#approach .rule {
  transition:
    background-color 0.42s cubic-bezier(.16, 1, .3, 1),
    border-color 0.42s cubic-bezier(.16, 1, .3, 1),
    opacity 0.42s cubic-bezier(.16, 1, .3, 1),
    transform 0.42s cubic-bezier(.16, 1, .3, 1),
    box-shadow 0.42s cubic-bezier(.16, 1, .3, 1) !important;
}

#approach .approach-card:hover .bar,
#approach .approach-item:hover .bar,
#approach .process-card:hover .bar,
#approach .step-card:hover .bar,
#approach article:hover .bar,
#approach .card:hover .bar,
#approach .approach-card:hover .top-bar,
#approach .approach-item:hover .top-bar,
#approach .process-card:hover .top-bar,
#approach .step-card:hover .top-bar,
#approach article:hover .top-bar,
#approach .card:hover .top-bar,
#approach .approach-card:hover .accent-bar,
#approach .approach-item:hover .accent-bar,
#approach .process-card:hover .accent-bar,
#approach .step-card:hover .accent-bar,
#approach article:hover .accent-bar,
#approach .card:hover .accent-bar,
#approach .approach-card:hover .approach-bar,
#approach .approach-item:hover .approach-bar,
#approach .process-card:hover .approach-bar,
#approach .step-card:hover .approach-bar,
#approach article:hover .approach-bar,
#approach .card:hover .approach-bar,
#approach .approach-card:hover .rule,
#approach .approach-item:hover .rule,
#approach .process-card:hover .rule,
#approach .step-card:hover .rule,
#approach article:hover .rule,
#approach .card:hover .rule {
  background-color: var(--gold) !important;
  border-color: var(--gold) !important;
  opacity: 1 !important;
  transform: translateY(-1px) scaleX(1.018);
  box-shadow: 0 0 18px rgba(193, 154, 85, 0.18);
}


/* Hero text visible normally */
.hero-typing-target {
  opacity: 1 !important;
}

body:not(.entry-acknowledged) .hero-typing-target {
  opacity: 1 !important;
}



/* Prevent initial landing text/background jump */
.hero h1,
.hero-sub,
.hero-typing-target,
.hero-content {
  transform: none !important;
  animation-name: none !important;
  opacity: 1 !important;
}

.hero::before {
  animation: none !important;
}

.hero::after {
  animation-duration: 34s !important;
  animation-timing-function: ease-in-out !important;
}

.hero .hero-motion-orb {
  animation-duration: 34s !important;
  animation-timing-function: ease-in-out !important;
  opacity: 0.45;
}


/* Values smooth overhead bar highlight */
.value-accordion-item {
  position: relative;
}

.value-hover-bar {
  position: absolute;
  top: -1px;
  left: 0;
  width: 100%;
  height: 1px;
  background: rgba(25, 44, 68, 0.18);
  transform-origin: left center;
  transform: scaleX(1);
  opacity: 1;
  pointer-events: none;
  transition:
    background-color 0.42s cubic-bezier(.16, 1, .3, 1),
    opacity 0.42s cubic-bezier(.16, 1, .3, 1),
    box-shadow 0.42s cubic-bezier(.16, 1, .3, 1);
}

.value-accordion-item:hover .value-hover-bar,
.value-accordion-item.is-open .value-hover-bar,
.value-accordion-item.open .value-hover-bar {
  background: var(--gold);
  opacity: 1;
  box-shadow: 0 0 14px rgba(193, 154, 85, 0.20);
}

.value-accordion-trigger {
  transform: none !important;
  transition:
    color 0.34s cubic-bezier(.16, 1, .3, 1),
    opacity 0.34s cubic-bezier(.16, 1, .3, 1) !important;
}

.value-accordion-trigger:hover {
  transform: none !important;
}

/* keep the original row separators visually stable */
.value-accordion-item {
  border-bottom-color: rgba(25, 44, 68, 0.12);
  transition: border-color 0.42s cubic-bezier(.16, 1, .3, 1);
}

.value-accordion-item:hover,
.value-accordion-item.is-open,
.value-accordion-item.open {
  border-bottom-color: rgba(193, 154, 85, 0.34);
}


/* Smooth Approach top-rule hover highlight */
#approach .approach-grid > *,
#approach .approach-item,
#approach .approach-card,
#approach .process-card,
#approach .step-card {
  position: relative;
}

#approach .approach-grid > *::after,
#approach .approach-item::after,
#approach .approach-card::after,
#approach .process-card::after,
#approach .step-card::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--gold);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.34s ease;
}

#approach .approach-grid > *:hover::after,
#approach .approach-item:hover::after,
#approach .approach-card:hover::after,
#approach .process-card:hover::after,
#approach .step-card:hover::after {
  opacity: 1;
}

/* If the top line is an existing border or rule, keep it stable underneath the fade overlay */
#approach .approach-grid > *,
#approach .approach-item,
#approach .approach-card,
#approach .process-card,
#approach .step-card {
  transition: border-color 0.34s ease;
}

/* If the top line is an actual child element, fade it smoothly too */
#approach .approach-grid > * > :first-child,
#approach .approach-item > :first-child,
#approach .approach-card > :first-child,
#approach .process-card > :first-child,
#approach .step-card > :first-child {
  transition: color 0.34s ease, border-color 0.34s ease, background-color 0.34s ease, opacity 0.34s ease;
}


/* Restore smooth Values right-shift hover */
.value-accordion-trigger {
  transition:
    transform 0.45s cubic-bezier(.16, 1, .3, 1),
    color 0.34s cubic-bezier(.16, 1, .3, 1),
    opacity 0.34s cubic-bezier(.16, 1, .3, 1) !important;
  will-change: transform;
}

.value-accordion-trigger:hover {
  transform: translate3d(12px, 0, 0) !important;
}


/* Professional profile portrait treatment */
.people-portrait,
.manager-portrait,
.bio-portrait,
.profile-portrait,
.people-image,
.manager-image,
.bio-image,
.portrait-frame,
.member-image-wrap,
.member-photo-wrap,
.manager-visual,
.manager-media,
.people-visual {
  position: relative;
  overflow: hidden;
  border-radius: 18px !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.24) !important;
  transform: none !important;
}

.people-portrait::before,
.people-portrait::after,
.manager-portrait::before,
.manager-portrait::after,
.bio-portrait::before,
.bio-portrait::after,
.profile-portrait::before,
.profile-portrait::after,
.people-image::before,
.people-image::after,
.manager-image::before,
.manager-image::after,
.bio-image::before,
.bio-image::after,
.portrait-frame::before,
.portrait-frame::after,
.member-image-wrap::before,
.member-image-wrap::after,
.member-photo-wrap::before,
.member-photo-wrap::after,
.manager-visual::before,
.manager-visual::after,
.manager-media::before,
.manager-media::after,
.people-visual::before,
.people-visual::after {
  display: none !important;
  content: none !important;
}

.people-portrait img,
.manager-portrait img,
.bio-portrait img,
.profile-portrait img,
.people-image img,
.manager-image img,
.bio-image img,
.portrait-frame img,
.member-image-wrap img,
.member-photo-wrap img,
.manager-visual img,
.manager-media img,
.people-visual img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 18px !important;
  filter: none !important;
  transform: none !important;
  box-shadow: none !important;
}


/* Jaxon-only People section */
.photo-nav,
.people-selector,
.people-cycle,
.people-dots,
.people-dot,
.people-count {
  display: none !important;
}




/* Slower, more noticeable landing background drift */
.hero::after {
  opacity: 0.30 !important;
  animation-duration: 48s !important;
  animation-timing-function: ease-in-out !important;
  filter: saturate(1.06) !important;
}

.hero::before {
  opacity: 0.56 !important;
}

.hero .hero-motion-orb,
.hero-motion-orb {
  opacity: 0.50 !important;
  animation-duration: 54s !important;
  animation-timing-function: ease-in-out !important;
  filter: blur(42px) saturate(1.10) !important;
}

/* If the existing background animation uses smaller movement, this adds a slower large-scale drift */
@keyframes pdcmSlowHeroDrift {
  0% {
    transform: translate3d(-2.5%, -1.5%, 0) scale(1.02);
  }
  50% {
    transform: translate3d(2.5%, 1.5%, 0) scale(1.055);
  }
  100% {
    transform: translate3d(-2.5%, -1.5%, 0) scale(1.02);
  }
}

.hero::after {
  animation-name: pdcmSlowHeroDrift !important;
}


/* Remove fast landing sweep overlay */
.hero-content::after {
  display: none !important;
  content: none !important;
  animation: none !important;
  opacity: 0 !important;
}

.hero-content {
  overflow: visible;
}



.firm-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:36px;margin:64px 0 8px;}
.firm-fact{border-top:1px solid var(--navy);padding-top:20px;}
.firm-fact .label{display:block;margin-bottom:10px;font-size:9.5px;color:var(--capital-blue);}
.firm-fact .v{font-family:'Cormorant SC',serif;font-size:21px;letter-spacing:0.04em;color:var(--navy);line-height:1.3;}
@media(max-width:1100px){.firm-facts{grid-template-columns:repeat(2,1fr);}}
@media(max-width:700px){.firm-facts{grid-template-columns:1fr;}}
#office{background:var(--paper);padding:160px 56px;}
.office-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:60px;margin-top:40px;}
.office-item{border-top:1px solid rgba(25,44,68,0.25);padding-top:36px;transition:border-color .4s ease;position:relative;}
.office-item:hover{border-top-color:var(--gold);}
.office-num{font-family:'Cormorant SC',serif;font-size:12px;color:var(--capital-blue);letter-spacing:0.24em;margin-bottom:28px;display:block;}
.office-item h3{font-family:'Cormorant SC',serif;font-weight:500;font-size:26px;letter-spacing:0.05em;color:var(--navy);margin-bottom:22px;line-height:1.3;}
.office-item p{font-size:14.5px;line-height:1.9;color:var(--charcoal);font-weight:300;text-align:justify;text-justify:inter-word;}
@media(max-width:1100px){#office{padding:120px 32px;}.office-grid{grid-template-columns:1fr;gap:48px;}}
@media(max-width:700px){#office{padding-left:20px;padding-right:20px;}}
.pdcm-variant-bar{position:fixed;bottom:22px;right:22px;z-index:99999;display:flex;align-items:center;gap:8px;background:rgba(10,20,36,0.92);border:1px solid rgba(234,208,156,0.35);padding:10px 14px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);}
.pdcm-variant-bar .pvb-t{font-family:'Lato',sans-serif;font-size:9.5px;font-weight:700;letter-spacing:0.28em;text-transform:uppercase;color:rgba(246,243,236,0.6);margin-right:4px;}
.pdcm-variant-bar a{display:flex;align-items:center;justify-content:center;width:30px;height:30px;font-family:'Cormorant SC',serif;font-size:15px;color:var(--cream);text-decoration:none;border:1px solid rgba(246,243,236,0.25);transition:all .25s ease;}
.pdcm-variant-bar a:hover{border-color:var(--gold);color:var(--gold);}
.pdcm-variant-bar a.pvb-cur{background:var(--gold);color:var(--navy);border-color:var(--gold);}
body.modal-open > .pdcm-variant-bar{filter:none !important;}
body.entry-disclaimer-open .pdcm-variant-bar{display:none;}

/* Compact section sizing */
section{padding:90px 56px;}
#firm{padding-top:64px;padding-bottom:84px;}
#approach{padding:100px 56px;}
#values{padding:100px 56px;}
#contact{padding:84px 56px 76px;}
.head-grid{margin-bottom:52px;}
.head-grid > div:nth-child(2){padding-top:40px;}
.statement{margin-top:36px;padding:42px 0;}
@media(max-width:1100px){section,#approach,#values,#contact{padding-left:32px;padding-right:32px;}.head-grid{margin-bottom:40px;}.head-grid > div:nth-child(2){padding-top:0;}}
@media(max-width:700px){section,#approach,#values,#contact{padding-left:20px;padding-right:20px;}#contact{padding-top:72px;padding-bottom:66px;}}

/* Brand-guide alignment sample: Cormorant SC + Lato only, no Garamond italic */
.ital, .hero h1 .em, .hero h1 .ital,
.head-grid .lead em,
.statement,
.hero-base .city-credit,
.foot-brand p,
.location-card .role,
.location-card .meta .v,
.disclaimer-content .subtitle,
.contact h2 em {
  font-family: 'Cormorant SC', serif !important;
  font-style: normal !important;
  font-weight: 500 !important;
}
.statement::before { font-family: 'Cormorant SC', serif; }



/* Careers application form. Built from the site's own tokens so it reads as
   part of the page rather than as an embedded widget: Cormorant SC is left
   for the headings the modal already sets, labels and controls are Lato, and
   the only accent is Soft Gold on focus. */

.pdcm-apply { margin-top: 22px; }

.pdcm-apply-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
@media (max-width: 620px) {
  .pdcm-apply-row { grid-template-columns: 1fr; gap: 0; }
}

.pdcm-field { margin-bottom: 18px; }

.pdcm-field label {
  display: block;
  font-family: 'Lato', sans-serif;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--navy);
  margin-bottom: 8px;
}
.pdcm-field label span { color: var(--gold); margin-left: 2px; }

.pdcm-field input[type="text"],
.pdcm-field input[type="email"],
.pdcm-field input[type="tel"],
.pdcm-field select,
.pdcm-field textarea {
  width: 100%;
  box-sizing: border-box;
  font-family: 'Lato', sans-serif;
  font-size: 14px;
  font-weight: 300;
  color: var(--navy);
  background: #fff;
  border: 1px solid var(--platinum);
  border-radius: 0;
  padding: 11px 13px;
  transition: border-color 0.22s ease, box-shadow 0.22s ease;
  -webkit-appearance: none;
  appearance: none;
}
.pdcm-field textarea { line-height: 1.7; resize: vertical; min-height: 118px; }

/* appearance:none strips the native arrow, so the caret is drawn back in as a
   Midnight Navy chevron. Inlined as a data URI: the page makes no extra request. */
.pdcm-field select {
  padding-right: 38px;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M1 1l4.5 4.5L10 1' fill='none' stroke='%23192c44' stroke-width='1.3'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
}
.pdcm-field select:invalid, .pdcm-field select option[value=""] { color: var(--charcoal); }
.pdcm-field select option[disabled] { color: var(--platinum); }

.pdcm-field input:focus,
.pdcm-field select:focus,
.pdcm-field textarea:focus {
  outline: none;
  border-color: var(--navy);
  box-shadow: 0 0 0 2px rgba(234, 208, 156, 0.55);
}

/* The native file control cannot be styled consistently across browsers, so
   only its button half is restyled and the rest is left to the platform. */
.pdcm-field input[type="file"] {
  width: 100%;
  box-sizing: border-box;
  font-family: 'Lato', sans-serif;
  font-size: 13px;
  color: var(--charcoal);
  background: #fff;
  border: 1px solid var(--platinum);
  padding: 9px 11px;
}
.pdcm-field input[type="file"]::file-selector-button {
  font-family: 'Lato', sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--navy);
  background: transparent;
  border: 1px solid var(--navy);
  padding: 7px 14px;
  margin-right: 12px;
  cursor: pointer;
  transition: background 0.22s ease, color 0.22s ease;
}
.pdcm-field input[type="file"]::file-selector-button:hover {
  background: var(--navy);
  color: var(--cream);
}
.pdcm-field input[type="file"]:focus {
  outline: none;
  border-color: var(--navy);
  box-shadow: 0 0 0 2px rgba(234, 208, 156, 0.55);
}

.pdcm-required-note {
  font-family: 'Lato', sans-serif;
  font-size: 11.5px;
  letter-spacing: 0.04em;
  color: var(--charcoal);
  opacity: 0.92;   /* 0.8 measured 3.9 against the paper; 4.5 is the floor */
  margin: 18px 0 0;
  text-align: left;
}
.pdcm-required-note::first-letter { color: var(--gold); }

.pdcm-note {
  font-family: 'Lato', sans-serif;
  font-size: 11.5px;
  line-height: 1.6;
  color: var(--charcoal);
  opacity: 0.92;   /* 0.78 measured 3.7 against the paper; 4.5 is the floor */
  margin: 7px 0 0;
  text-align: left;
}

.pdcm-err {
  font-family: 'Lato', sans-serif;
  font-size: 11.5px;
  line-height: 1.55;
  color: #8c2f2f;
  margin: 7px 0 0;
  text-align: left;
}
.pdcm-field.is-invalid input,
.pdcm-field.is-invalid select,
.pdcm-field.is-invalid textarea { border-color: #8c2f2f; }

.pdcm-consent {
  font-family: 'Lato', sans-serif;
  font-size: 11.5px;
  line-height: 1.65;
  color: var(--charcoal);
  opacity: 0.92;   /* 0.8 measured 3.9 against the paper; 4.5 is the floor */
  margin: 22px 0 0;
  text-align: left;
}

/* Matches the entry notice's acknowledgement button. */
.pdcm-apply-send {
  margin-top: 20px;
  border: 1px solid var(--navy);
  background: var(--navy);
  color: var(--cream);
  font-family: 'Lato', sans-serif;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 14px 30px;
  cursor: pointer;
  transition: background 0.25s ease, color 0.25s ease;
}
.pdcm-apply-send:hover { background: transparent; color: var(--navy); }
.pdcm-apply-send:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px rgba(234, 208, 156, 0.75);
}
.pdcm-apply-send[disabled] { opacity: 0.55; cursor: default; }
.pdcm-apply-send[disabled]:hover { background: var(--navy); color: var(--cream); }

.pdcm-form-status {
  font-family: 'Lato', sans-serif;
  font-size: 12.5px;
  line-height: 1.65;
  color: #8c2f2f;
  margin: 14px 0 0;
  text-align: left;
}

.pdcm-apply-done h3 { margin-top: 8px; }

/* On narrow screens the modal's close button sits at right:16px and is 32px
   wide, and the content scrolls underneath it rather than past it -- so
   without a gutter a tap on the right edge of a control dismisses the modal
   instead of focusing the field. The prose above wraps harmlessly under the
   button; only the form needs the clearance. */
@media (max-width: 700px) {
  .pdcm-apply, .pdcm-required-note { padding-right: 26px; }
}

@media (prefers-reduced-motion: reduce) {
  .pdcm-field input,
  .pdcm-field select,
  .pdcm-field textarea,
  .pdcm-apply-send,
  .pdcm-field input[type="file"]::file-selector-button { transition: none; }
}


/* The lockup sat 38px below the footer's top edge but 65px above the rule.
   The extra came from a 16px margin under the lockup, left over for a
   paragraph this footer does not carry, so the lower gap never matched the
   padding that was supposed to set it. With that margin gone, both gaps are
   simply the footer's top padding and the rule's padding above it. */
.foot-brand .foot-lockup { margin-bottom: 0; }

/* The header and the footer now share one vertical rhythm: the space above
   and below each lockup is 0.42 of that lockup's height. The guidelines'
   clear-space diagram puts the minimum at roughly 0.38 of the height, so
   this is tighter than either was while staying clear of that floor.

   Before, the two disagreed -- the header sat at 0.46 of its lockup and the
   footer at 0.62 -- which is why the footer read as the airier of the two
   even though its lockup is the smaller one.

   An earlier rule sets the footer's padding !important, so matching that is
   the only way to move it. */
nav { padding-top: 24px; padding-bottom: 24px; }      /* 57px lockup -> 0.42 */
footer { padding-top: 22px !important; }              /* 52px lockup -> 0.42 */
footer .foot-top { padding-bottom: 22px; }

/* The nav links carried too little optical weight against a 309px lockup:
   13px beside a mark whose own secondary line sets at about 11px. Lato, which
   the guidelines name as the secondary typeface for functional text, and the
   site's existing tracking, which is already far above the 50pt floor they
   specify. Held to wide viewports so the narrower layouts keep the sizes they
   were designed with. */
@media (min-width: 1200px) {
  .nav-links a { font-size: 14.5px; }
}

/* 18px here would have been 0.35 of the lockup, under the guideline floor.
   21px is the tightest that still clears it on a 52px lockup. */
@media (max-width: 700px) {
  footer { padding-top: 21px !important; }
  footer .foot-top { padding-bottom: 21px; }
}


  /* ── Landing field ─────────────────────────────────────────────────
     A generative light field, drawn in the browser from mathematics.
     There is no image, video or model to load: nothing to host, nothing
     to expire, and it stays sharp at any resolution.

     It replaces five overlapping animations that were cancelling each
     other out (background drift, diagonal sheen, an orb, and a drifting
     vignette, plus three keyframe sets defined and never used). All were
     slow translates of blurred gradients, so none had a trackable edge
     and together they averaged into stillness. */

  .hero-field {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    display: block;
    pointer-events: none;
    opacity: 0;
    transition: opacity 1.6s ease;
  }

  .hero-field.is-lit { opacity: 1; }

  /* The sheen competed with the field; hold it back to a glaze. */
  .hero::before { opacity: 0.18 !important; }

  /* Restore the vignette to full strength and stop it drifting. Held at
     0.30 it barely darkened anything, and animating the vignette itself
     partly cancelled the layers beneath. Full strength is what keeps the
     headline legible over a moving ground. */
  .hero::after {
    /* This one rule owns everything layered over the light field, so the
       fade at the hero's foot lives here rather than in a later rule that
       would have to out-shout this one's !important.

       What scroll drives is the LENGTH of the fade, not its opacity. Fading
       opacity cannot work: at any partial value the pixels above the hero's
       edge are a mix of the dark field and the paper below, while the pixels
       below it are paper outright, so the difference between them is a hard
       line whose contrast is simply (1 - opacity) x the full contrast.
       Fading the length instead keeps the bottom-most row exactly the paper
       colour at every moment, so the two sides always meet.

       The curve is flat at both ends, and that matters as much as the
       values. A gradient still climbing when it reaches the section below
       ends on a change of slope, and the eye reads a change of slope as an
       edge even when no step is there: measured at 0.5 of a level per pixel
       above the join against 0.00 below it, which is the faint line that
       survived every fix aimed at steps. The last tenth of the fade now
       covers only the final two percent of the change, so it arrives almost
       flat and the join has nothing to mark it.

       The curve is also deliberately slow to start. The stops are placed as
       fractions of the fade's length, and the first half of it barely lifts
       off transparent -- under 6% where the sub-headline sits. That is what
       lets the fade run most of the way up the hero without washing out the
       text it passes behind. The change the eye reads is spread across the
       lower half rather than crammed into the last hundred pixels, which is
       what made the earlier version look abrupt even once the line was gone.

       The layer also used to carry opacity 0.92, which capped the fade at 88%
       and left the dark field showing through. It is opaque now and the
       vignette's own alphas carry the 0.92 instead. */
    opacity: 1 !important;
    animation: none !important;
    filter: none !important;
    background:
      linear-gradient(90deg, rgba(5, 11, 22, 0.570) 0%, rgba(5, 11, 22, 0.368) 34%, rgba(5, 11, 22, 0.055) 62%, transparent 100%),
      linear-gradient(180deg, rgba(5, 11, 22, 0.423) 0%, rgba(5, 11, 22, 0.092) 26%, rgba(5, 11, 22, 0.313) 66%, rgba(5, 11, 22, 0.810) 100%) !important;
    /* The vignette is lifted away across the fade. Left in place it would
       darken the pale ground the shader is resolving to, and the two would
       fight over the same pixels. */
    /* Two stops made a straight ramp: every part of the fade changed at the
       same rate, so reaching higher up the hero meant washing the headline by
       the same amount it softened the bottom. Shaped instead -- almost all of
       the change in the lower half, a long whisper above it -- the fade can
       run much further for the same cost to the text underneath. */
    -webkit-mask-image: linear-gradient(180deg, #000 0%,
      #000 calc(100% - var(--hero-fade, 0px)),
      rgba(0, 0, 0, 0.99) calc(100% - var(--hero-fade, 0px) * 0.88),
      rgba(0, 0, 0, 0.96) calc(100% - var(--hero-fade, 0px) * 0.76),
      rgba(0, 0, 0, 0.89) calc(100% - var(--hero-fade, 0px) * 0.64),
      rgba(0, 0, 0, 0.74) calc(100% - var(--hero-fade, 0px) * 0.52),
      rgba(0, 0, 0, 0.40) calc(100% - var(--hero-fade, 0px) * 0.40),
      rgba(0, 0, 0, 0.20) calc(100% - var(--hero-fade, 0px) * 0.30),
      rgba(0, 0, 0, 0.07) calc(100% - var(--hero-fade, 0px) * 0.24),
      transparent calc(100% - var(--hero-fade, 0px) * 0.20)) !important;
    mask-image: linear-gradient(180deg, #000 0%,
      #000 calc(100% - var(--hero-fade, 0px)),
      rgba(0, 0, 0, 0.99) calc(100% - var(--hero-fade, 0px) * 0.88),
      rgba(0, 0, 0, 0.96) calc(100% - var(--hero-fade, 0px) * 0.76),
      rgba(0, 0, 0, 0.89) calc(100% - var(--hero-fade, 0px) * 0.64),
      rgba(0, 0, 0, 0.74) calc(100% - var(--hero-fade, 0px) * 0.52),
      rgba(0, 0, 0, 0.40) calc(100% - var(--hero-fade, 0px) * 0.40),
      rgba(0, 0, 0, 0.20) calc(100% - var(--hero-fade, 0px) * 0.30),
      rgba(0, 0, 0, 0.07) calc(100% - var(--hero-fade, 0px) * 0.24),
      transparent calc(100% - var(--hero-fade, 0px) * 0.20)) !important;
  }

  @media (prefers-reduced-motion: reduce) {
    /* One still frame is drawn; nothing animates and the cursor is ignored. */
    .hero::before { opacity: 0.3 !important; }
    /* The hero element itself carries a background drift keyframe; it has to
       stop here too, not only the layers above it. */
    .hero { animation: none !important; }
  }


/* ════════════════════════════════════════════════
   Generated by src/build_pages.py
   ════════════════════════════════════════════════ */

/* ── The hero's lower edge ────────────────────────
   The hero used to stop dead against the section below it -- a hard line
   across the page where a dark field met a pale one. This dissolves it: a
   band of the following section's colour, rising out of the bottom of the
   hero. It is driven by scroll position rather than by a one-way animation,
   so it resolves as you come down and returns as you go back up, and it is
   the same gesture in both directions.

   The band belongs to the hero rather than to the section below so that it
   sits over the moving light field and blends with whatever the field is
   doing at that moment, instead of cutting across it. */

/* The dissolve itself lives in the hero-field stylesheet in src/site.html,
   which owns this layer with !important; a rule here could not beat it. */

/* The section below deliberately adds nothing of its own. An earlier version
   gave #firm a navy head meant to meet the hero halfway, but the hero has
   already resolved to the paper colour by the time it ends -- so tinting the
   top of the section darker than the rest of it did not soften the join, it
   introduced a second edge a few pixels below the first. Measured as a band
   still visible at the seam. The hero's dissolve reaching full paper is the
   whole effect. */

/* Nothing moves under reduced motion, so the join is simply always made. */
/* ── The last row ─────────────────────────────────
   The hero's fade lands on exactly the paper colour through its whole run --
   251,250,246, measured two rows above the edge, matching the section below
   channel for channel. Its FINAL row alone renders 252,251,247: one unit
   brighter in every channel. That is an artifact of how Chromium resolves a
   gradient's last row, not a colour reachable by choosing different stops --
   a flat, fully opaque tail rendered the same way, and made it worse by
   adding a step of 7 where the tail met the ramp.

   One unit is nothing in isolation. As a straight line across 1200px of flat
   field it is the whole complaint. Since the row cannot be corrected it is
   covered: the section below starts two pixels higher and paints its own
   paper over it. It needs a stacking context to do so, because the hero is
   positioned and would otherwise paint above it. */
#firm {
  position: relative;
  z-index: 1;
  margin-top: -2px;
}

/* ── Room for the fade ────────────────────────────
   The hero was exactly one screen tall with its text sitting 100px off the
   bottom, which left the fade nowhere to go: at its previous length it
   already ran 182px up behind the sub-headline, and running it further would
   have washed the text out rather than made the transition smoother.

   The hero is taller than the window now, and its text is held higher within
   it. The extra height is empty ground below the text for the gradient to
   occupy, so the fade can be long without passing behind anything that has
   to stay legible. At rest the window still shows a full screen of hero with
   no fade at all; the fade is what you scroll into.

   It was briefly taller still -- 190vh -- to buy the fade more scroll to run
   across. That is not what a longer fade means: it lengthened the landing
   page rather than the effect, and made you scroll further to reach anything.
   The height is back where it was, and the smoothness comes from the fade's
   own length and from easing the value over time instead. */
.hero {
  height: 130vh;
  min-height: 960px;
  padding-bottom: max(200px, 42vh);
}

@media (max-width: 700px) {
  .hero { height: 124vh; min-height: 700px; padding-bottom: max(150px, 34vh); }
}

/* The final settle onto the page's own colour. Sized from the same scroll
   value that drives the fade, so it grows and unwinds with it. */
.hero-foot {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: calc(var(--hero-fade, 0px) * 0.26);
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(180deg,
    rgba(251, 250, 246, 0) 0%,
    rgba(251, 250, 246, 0.18) 34%,
    rgba(251, 250, 246, 0.52) 60%,
    rgba(251, 250, 246, 0.82) 80%,
    rgba(251, 250, 246, 0.96) 92%,
    rgba(251, 250, 246, 1) 100%);
}

/* ── Footer pages ─────────────────────────────────
   Cross-document view transitions. Chrome and Safari animate between the
   main page and a footer page; Firefox ignores the at-rule and navigates
   normally, which is the correct fallback rather than a broken one. Naming
   the nav and footer keeps them still while the content changes. */
@view-transition { navigation: auto; }

nav { view-transition-name: pdcm-nav; }
footer { view-transition-name: pdcm-footer; }

::view-transition-old(root) { animation: pdcmPageOut 0.30s cubic-bezier(.4, 0, 1, 1) both; }
::view-transition-new(root) { animation: pdcmPageIn 0.46s cubic-bezier(.16, 1, .3, 1) both; }
@keyframes pdcmPageOut { to   { opacity: 0; transform: translateY(-10px); } }
@keyframes pdcmPageIn  { from { opacity: 0; transform: translateY(14px);  } }

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) { animation: none; }
}

body.page-light nav {
    background: rgba(251, 250, 246, 0.95);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid rgba(25, 44, 68, 0.08);
  }
body.page-light nav .nav-logo .lockup-w { display: none; }
body.page-light nav .nav-logo .lockup-n { display: block; }
body.page-light nav .nav-links a { color: var(--navy); }
body.page-light nav .nav-links a:hover { color: var(--capital-blue); }
body.page-light nav .nav-li-link {
    border-color: rgba(25, 44, 68, 0.3);
    color: var(--navy) !important;
  }
body.page-light nav .nav-li-link:hover {
    background: var(--navy);
    border-color: var(--navy);
    color: var(--cream) !important;
  }
body.page-light nav { padding-left: 32px; padding-right: 32px; }
body.page-light nav { padding-left: 20px; padding-right: 20px; }

/* A footer page has no hero, so its content would otherwise start underneath
   the fixed nav. Qualified by ID because the sections it replaces carry their
   padding under ID selectors, which outrank anything written without one. */
body.page-inner main > section#page,
body.page-inner main > section#notfound { padding-top: 190px; }
@media (max-width: 700px) { body.page-inner main > section#page,
body.page-inner main > section#notfound { padding-top: 150px; } }

/* A footer page is as long as its contents, and the Careers page is at its
   shortest once the form has been replaced by the acknowledgement. Without
   this the footer stopped wherever the text did and the page's own background
   showed below it -- the firm's mark floating mid-screen over a white band.

   The nav is fixed and the notices are fixed, so neither is a flex item; only
   the content and the footer are, and the content takes the slack. */
body.page-inner {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
body.page-inner main { flex: 1 0 auto; }
body.page-inner footer { flex-shrink: 0; }

/* Country, state and city read as one address, narrowing left to right, and
   none of them is left absurdly wide. Country carries a little more room
   because country names are the longest of the three. Below the width where
   two columns already stack, this stacks with them. */

/* The verification widget, when one is configured. Cloudflare sizes its own
   iframe; this only gives it room and keeps it on the form's rhythm. */
/* Only the visitor who is actually challenged ever sees this, so it reserves
   no room: an empty slot must not leave a gap above the button. */
.pdcm-turnstile { margin: 0; }
.pdcm-turnstile:not(:empty) { margin: 4px 0 22px; }

/* When it could not load. Reads as the notice it is, not as an error the
   applicant caused. */
.pdcm-turnstile-blocked {
  min-height: 0;
  font: 300 13.5px/1.7 "Lato", sans-serif;
  color: var(--charcoal);
  border-left: 2px solid var(--gold);
  padding: 2px 0 2px 14px;
}

.pdcm-apply-row-3 { grid-template-columns: 1.18fr 1fr 1fr; }
@media (max-width: 900px) { .pdcm-apply-row-3 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 620px) { .pdcm-apply-row-3 { grid-template-columns: 1fr; } }

/* A footer page keeps the measure the panel had, so its text is not stranded
   across a wide screen. */
.page-body { max-width: 820px; margin: 0 auto; }
.page-body h2 {
  font-family: 'Cormorant SC', serif;
  font-weight: 500;
  font-size: clamp(36px, 4.4vw, 56px);
  letter-spacing: 0.04em;
  line-height: 1.16;
  color: var(--navy);
  border-bottom: 1px solid var(--platinum);
  padding-bottom: 28px;
  margin-bottom: 34px;
}
.page-body h3 {
  font-family: 'Cormorant SC', serif;
  font-weight: 500;
  font-size: 17px;
  letter-spacing: 0.05em;
  color: var(--navy);
  margin: 30px 0 12px;
}
.page-body p, .page-body li {
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--charcoal);
  margin-bottom: 15px;
}
.page-body ul, .page-body ol { padding-left: 20px; margin-bottom: 15px; }
.page-body .pdcm-apply-done h3 { font-size: 26px; margin-top: 8px; }

/* No close button floats over a page, so the gutter that cleared one inside
   the panel is not wanted here. */
@media (max-width: 700px) {
  .page-body .pdcm-apply,
  .page-body .pdcm-required-note { padding-right: 0; }
}
