/* DBL Nexus r23 — one sitewide type scale and spacing system.
   Linked last in <head> on every page so it settles the older per-page patch layers.
   Display caps (owner, luxury restraint): h1 34px (phones) -> 64px max. h2 one size everywhere: 26 -> 40px max. h3 20-24px. */
:root{
  --fs-display:clamp(2.125rem,1.6rem + 2.2vw,4rem);
  --fs-h2:clamp(1.6rem,1.2rem + 1.3vw,2.5rem);
  --fs-h3:clamp(1.25rem,1.1rem + .3vw,1.5rem);
  --fs-lead:clamp(1.0625rem,1rem + .2vw,1.125rem);
  --fs-body:1rem;--fs-small:.875rem;--fs-label:.75rem;
  --lh-display:1.04;--lh-h2:1.1;
  --sp-1:8px;--sp-2:16px;--sp-3:24px;--sp-4:32px;--sp-5:48px;--sp-6:64px;--sp-7:96px;
  --sec-y:clamp(26px,.9rem + 2vw,44px); /* r24: per-section padding; two stacked sections give an 52-88px gap */
  --measure:62ch;
}
/* anchors land below the sticky header */
html{scroll-padding-top:96px}
@media (max-width:899px){html{scroll-padding-top:80px}}

/* ---------- type scale ---------- */
main h1,main .hero h1,main>.hero h1{font-size:var(--fs-display)!important;line-height:var(--lh-display)!important}
main h2,main .sh h2,main .fd h2,main .ct .sh h2{font-size:var(--fs-h2)!important;line-height:var(--lh-h2)!important}
main h3:not(#think h3){font-size:var(--fs-h3)!important;line-height:1.2}
main :is(.hero .lead,.hero .line,.hero .lede,.tagline,.promise,.fd .bio){font-size:var(--fs-lead)!important;line-height:1.5}
/* eyebrows and seals: 12px floor */
:is(.eyebrow,.nx-seal,.kicker,.tag,.fw-tag,.mt-fact-l,.sig,.role){font-size:max(var(--fs-label),12px)!important}

/* ---------- spacing rhythm ---------- */
main>section:not(.hero):not(#think):not([aria-label="Crisis support"]){padding-top:var(--sec-y)!important;padding-bottom:var(--sec-y)!important}

/* ---------- DBL Nexus utility bar (phones): 44px targets, whole-item snap, clean fades ---------- */
@media (max-width:899px){
  .nx-in{height:44px!important}
  .nx a{height:44px!important}
  .nx .nxm{min-width:44px;justify-content:center}
  .nx ul{scroll-snap-type:x mandatory;scroll-padding-left:8px;padding:0 40px 0 8px!important;
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 8px,#000 calc(100% - 40px),transparent)!important;
    mask-image:linear-gradient(90deg,transparent 0,#000 8px,#000 calc(100% - 40px),transparent)!important}
  .nx li{scroll-snap-align:start}
  .nx ul a{min-width:44px;justify-content:center}
  .nx li:first-child{margin-left:0!important}
}

/* ---------- footer: 44px targets, flat hairline edge (no long gradient band) ---------- */
.nxf-bot p a{display:inline-flex!important;align-items:center;min-height:44px!important}
.nxf{padding-top:0!important;background:#141312!important;border-top:1px solid rgba(201,165,76,.22)!important}
.nxf .nxf-in{padding-top:clamp(40px,5vw,64px)!important}

/* ---------- reduced motion respected everywhere ---------- */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* ---------- tap targets: brand links and consent rows ---------- */
header .mark,header .lock,.site-head .brand{min-height:44px!important;display:inline-flex;align-items:center}
label.ck{min-height:44px}
footer li a{min-width:44px;justify-content:center}
footer a.brand{min-height:44px;display:inline-flex;align-items:center}
/* the condensed header keeps brand links at full size so they stay 44px tall */
header.nx-cond .lock,header.nx-cond .mark{transform:none!important}
@media (max-width:374px){.site-head .brand span{font-size:12px!important}}

/* ---------- one DBL NEXUS lockup style: Inter caps, wide tracking (the bar no longer uses spaced serif) ---------- */
.nx .nxw{font:500 13px/1 "Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif!important;letter-spacing:.18em!important}
/* Think & Build heading follows the sitewide h2 cap */
#tb-h{font-size:var(--fs-h2)!important;line-height:var(--lh-h2)!important;max-width:22ch}

/* ---------- r23b: phones (<600px) — the family links fold into one "Brands" disclosure ----------
   nx-motion.js adds button.nx-bt (aria-expanded/aria-controls) and .nx-dd; without scripting the strip still scrolls.
   The 44px bar keeps its height, so the sticky page header below never moves; the panel overlays it (z-index 21 > header). */
.nx-bt{display:none}
@media (max-width:599px){
  @media (scripting:enabled){.nx:not(.nx-open) ul{visibility:hidden!important}}
  .nx.nx-dd .nx-in{padding-right:clamp(16px,5vw,64px)!important;gap:12px!important}
  .nx.nx-dd .nx-bt{display:inline-flex;align-items:center;gap:10px;height:44px;min-width:44px;margin:0 -10px 0 auto;padding:0 10px 0 14px;
    background:none;border:0;border-radius:6px;color:#E8E2D4;font:500 12px/1 "Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    letter-spacing:.18em;text-transform:uppercase;cursor:pointer;-webkit-tap-highlight-color:transparent}
  .nx.nx-dd .nx-bt svg{width:12px;height:12px;color:#C9A54C;transition:transform .25s cubic-bezier(.2,.7,.2,1)}
  .nx.nx-dd .nx-bt:hover,.nx.nx-dd .nx-bt[aria-expanded="true"]{color:#E2C77F}
  .nx.nx-dd .nx-bt[aria-expanded="true"] svg{transform:rotate(180deg)}
  .nx.nx-dd .nx-bt:focus-visible{outline:2px solid #E2C77F;outline-offset:-3px}
  .nx.nx-dd ul{display:none!important}
  .nx.nx-dd.nx-open ul{display:block!important;position:absolute;top:calc(100% + 6px);right:clamp(16px,5vw,64px);left:auto;z-index:30;
    width:min(264px,calc(100vw - 32px));margin:0;padding:6px 0!important;overflow:visible;flex:none;
    -webkit-mask-image:none!important;mask-image:none!important;scroll-snap-type:none;
    background:#1A1816;border:1px solid rgba(201,165,76,.32);border-radius:14px;
    box-shadow:0 24px 48px -20px rgba(0,0,0,.7),0 2px 8px rgba(0,0,0,.35);animation:nxdd .22s cubic-bezier(.2,.7,.2,1)}
  .nx.nx-dd.nx-open li{display:block;margin:0!important}
  .nx.nx-dd.nx-open li+li{border-top:1px solid rgba(201,165,76,.12)}
  .nx.nx-dd.nx-open ul a{display:flex!important;width:100%;height:48px!important;padding:0 20px!important;justify-content:space-between;
    font-size:15px;letter-spacing:.01em;box-sizing:border-box}
  .nx.nx-dd.nx-open ul a[aria-current]::after{left:auto;right:20px;top:50%;bottom:auto;width:6px;height:6px;margin-top:-3px;border-radius:50%}
  @keyframes nxdd{from{opacity:0;transform:translateY(-4px)}}
}
/* r23b: phone footer: copyright on its own line, then "email · LinkedIn" (no dot left dangling at a line end or start) */
@media (max-width:640px){.nxf-bot p .nxf-sep{display:block;height:0;overflow:hidden}}

/* r24 QA2 fixes */
.nxf-nw{white-space:nowrap}
.nxf-li{display:inline-flex!important;align-items:center;gap:6px;vertical-align:middle}
.nxf-li svg{width:14px;height:14px}


/* ---------- r25: ONE text scale sitewide (owner): lede 19px, body 17px, small 14px, labels 12px caps ----------
   Full-width layout with --gutter (no max-width container). Device mock-ups, pull quotes and serif display lines are left alone. */
:root{--fs-lede:1.1875rem;--fs-body:1.0625rem;--fs-small:.875rem;--fs-label:.75rem;--lh-body:1.6;--lh-lede:1.5;--lede-measure:60ch}
html body main :is(p,li,dd,summary,label):not(:is(.eyebrow,.kicker,.tag,.fw-tag,.st,.kind,.by,.badge,.credit,.role,.sig,.mt-fact-l,.fw-soon-k,.nx-seal,.tb-fh,.say,.tagl,.wl-sample,.tagline,.price,.hero-cta,.cta,.who)):not(:is(.dv-shot,.dv-in,.fs-ph,.scr,.ph,.nexus,.stores,.price,blockquote,.mt-pq,svg,.wl-row,.hw-row,.nx-seal) *){font-size:var(--fs-body)!important;line-height:var(--lh-body)!important}
html body main :is(p,li):not(:is(.eyebrow,.kicker,.tag,.fw-tag,.st,.kind,.by,.badge,.credit,.role,.sig,.mt-fact-l,.fw-soon-k,.nx-seal,.tb-fh,.say,.tagl,.wl-sample,.tagline,.price,.hero-cta,.cta,.langs-h)):not(:is(.dv-shot,.dv-in,.fs-ph,.scr,.ph,.nexus,.stores,blockquote,.mt-pq,svg,.pricing .plan,.nx-seal) *){font-weight:400!important}
html body main summary{font-weight:500!important}
/* ledes */
html body main :is(p.lede,p.lead,p.sub,p.promise,.hero p.line,p.compare){font-size:var(--fs-lede)!important;line-height:var(--lh-lede)!important;font-weight:400!important}
/* small: captions, legal/fine print, consent lines, dates */
html body main :is(.fine,.fine-c,.fs-cap,.lineup-cap,.cl-cap,.cur-note,.regional,.langs-h,.consent,.soon,.upd,.mt-care,.hero-note,.tb-wkb,.wl-fine,figcaption,label.ck,label.ck span,.mt-story-c,.err):not(.who){font-size:var(--fs-small)!important;line-height:1.55!important}
/* labels: one 12px caps size */
html body main :is(.st,.kind,.by,.badge,.credit,.who,.fw-soon-k){font-size:var(--fs-label)!important}

/* ---------- r25: stacked section header (eyebrow, h2, lede directly beneath) ---------- */
html body main .r25-sh{display:block!important;grid-template-columns:none!important}
html body main .r25-sh>*{max-width:none;margin-left:0!important;justify-self:auto!important;text-align:left!important}
html body main .r25-sh :is(.lede,.sub,p:not(.eyebrow)){max-width:var(--lede-measure)!important;margin-top:14px!important;margin-bottom:0!important}
html body main .r25-sh .eyebrow{margin-bottom:12px!important}

/* r25b: family bar + footer small text at 14px on every page */
html body .nx :is(a,.nxa,.nx-bt,li){font-size:14px!important}
html body .nx .nxw{font-size:14px!important}
html body .nxf :is(.nxf-line,.nxf-bot p,.nxf-bot a,.nxf-bot button,.nxf-bot span,nav a,.nx-sh){font-size:14px!important}
