
/* FreeZonePartners — SINGLE SOURCE. tools/build-freezone-partners.py writes this into each consumer inside the
   "GENERATED freezone-partners" region. Same family as the banking coverage panel (panel, hairline, 16px radius,
   22px heading, mono outlined CTA in the marks row); never name that module's classes here — its generator
   strips any rule text that does. Tokens only; both themes. */
.fzp-section { padding: 0 0 56px; border-top: 0; }   /* attached to the section it data-follows (negative margin-top below) — opts out of the theme-layer section boundary; a line here would cut through the previous section */
.fzp-section[data-follows="banks-context"] { margin-top: -28px; }
.fzp-section[data-follows="ncta"] { margin-top: -64px; padding-bottom: 0; }   /* after the specialist section → 64px above the stripe; below it the founders block keeps its own 96px top padding (a negative margin there would let that section cover the panel edge) */   /* the banking panel keeps its own 56px; the two panels sit 28px apart (an attribute set by the generator, not a sibling selector) */
.fzp-inner { display: grid; grid-template-columns: 1fr auto; column-gap: 64px; row-gap: 0; grid-template-areas: "head head" "sub sub" "marks cta"; align-items: center; padding: 32px; border: 1px solid var(--line); border-radius: 16px; background: var(--glass); }
.fzp-eyebrow { grid-area: head; display: block; font-family: var(--mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--faint); margin: 0 0 12px; }
.fzp-h { grid-area: head; font-size: 22px; font-weight: 500; letter-spacing: -.02em; color: var(--text); margin: 0 0 10px; }
.fzp-eyebrow + .fzp-h { grid-row: 2; }
.fzp-sub { grid-area: sub; color: var(--muted); font-size: 14.5px; line-height: 1.6; margin: 0; }
/* the logo group (2026-09-07 brief): a left-aligned brand row, each mark in the shared 168 × 60 identity slot — never an
   icon-sized cap, never a tile or plate. Since 2026-09-09 a mark with a light-only file shows its dark-ink alternate on
   the light theme (free-zone-logos.json faces) instead of leaving the row. */
/* 2026-09-09 (the owner): exactly four marks in four equal slots — one row on desktop, 2×2 under 720px, never 3+1. A grid, not a
   wrapping flex row, so the column count is deliberate at every width; each stage keeps its measured width capped by its column. */
.free-zone-logo-group { grid-area: marks; list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); justify-items: start; align-items: center; gap: 24px 36px; margin: 20px 0 0; padding: 22px 0 4px; border-top: 1px solid var(--line-soft); min-width: 0; }
.free-zone-logo { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; min-width: 0; max-width: 100%; }
.free-zone-logo-stage { display: flex; align-items: center; justify-content: flex-start; box-sizing: border-box; max-width: 100%; min-width: 0; color: var(--text); text-decoration: none; border-radius: 8px; }   /* 2026-09-09: the mark inside is the shared free-zone identity slot (tools/_zone_logo.py, 168 × 60 'panel' box) — both theme faces, no plate, no filter; the stage only links and frames */
.free-zone-logo-label { font-size: 13.5px; line-height: 1.4; color: var(--muted); text-transform: none; letter-spacing: 0; }
a.free-zone-logo-stage:hover { opacity: .88; }
a.free-zone-logo-stage:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 4px; }
.fzp-cta { grid-area: cta; margin-top: 38px; display: inline-flex; align-items: center; gap: 8px; padding: 12px 20px; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,255,255,.03); color: var(--text); font-family: var(--mono, 'JetBrains Mono', monospace); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; text-decoration: none; white-space: nowrap; min-height: 44px; }
.fzp-cta:hover { border-color: rgba(120,140,150,.5); background: rgba(120,140,150,.08); }
.fzp-cta:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 3px; }
.fzp-cta svg { width: 14px; height: 14px; }
@media (max-width: 1024px) { .fzp-inner { grid-template-columns: 1fr; grid-template-areas: "head" "sub" "marks" "cta"; align-items: start; } .fzp-cta { justify-self: start; margin-top: 32px; } }
@media (max-width: 720px) { .fzp-section { padding-bottom: 48px; } .fzp-inner { padding: 24px 20px; } .free-zone-logo-group { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 24px; } .free-zone-logo-stage { min-height: 52px; } .fzp-cta { justify-content: center; width: 100%; margin-top: 32px; } }
@media (prefers-reduced-motion: reduce) { a.free-zone-logo-stage, .fzp-cta { transition: none; } }
      /* free-zone identity — tools/_zone_logo.py (2026-09-07): an official mark renders as supplied in a transparent box; the quiet
         bordered tile is the neutral fallback (monogram) only. No filter, invert, recolour, plate or clipping is ever applied. */
      :root .fzp-section .free-zone-logo-group .fzshelf-logo { position:relative; width:168px; min-width:168px; max-width:168px; height:60px; padding:0; box-sizing:border-box; display:flex; align-items:center; justify-content:flex-start; flex:none; font-size:0; overflow:visible; background:transparent; border:0; border-radius:0; box-shadow:none; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo img { display:none; width:auto; height:auto; max-width:100%; max-height:100%; object-fit:contain; object-position:left center; filter:none; opacity:1; background:transparent; border:0; border-radius:0; box-shadow:none; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo .fzshelf-monogram { display:none; box-sizing:border-box; min-width:72px; max-width:168px; height:60px; padding:0 10px; align-items:center; justify-content:center; text-align:center; border:1px solid var(--line); border-radius:10px; background:var(--control-surface, rgba(230,224,210,.05)); font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; font-weight:600; line-height:1.15; color:var(--text); white-space:normal; text-transform:uppercase; font-style:normal; overflow:hidden; }
      :root[data-theme="light"] .fzp-section .free-zone-logo-group .fzshelf-logo .fzshelf-monogram { background:rgba(20,24,27,.04); }
      :root:not([data-theme="light"]) .fzp-section .free-zone-logo-group .fzshelf-logo:not([data-fallback]) img[data-on~="dark"] { display:block; }
      :root:not([data-theme="light"]) .fzp-section .free-zone-logo-group .fzshelf-logo:not([data-show~="dark"]) .fzshelf-monogram, :root:not([data-theme="light"]) .fzp-section .free-zone-logo-group .fzshelf-logo[data-fallback] .fzshelf-monogram { display:inline-flex; }
      :root[data-theme="light"] .fzp-section .free-zone-logo-group .fzshelf-logo:not([data-fallback]) img[data-on~="light"] { display:block; }
      :root[data-theme="light"] .fzp-section .free-zone-logo-group .fzshelf-logo:not([data-show~="light"]) .fzshelf-monogram, :root[data-theme="light"] .fzp-section .free-zone-logo-group .fzshelf-logo[data-fallback] .fzshelf-monogram { display:inline-flex; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo .fzshelf-logo__name { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone="dmcc"] img { width:160.0px; height:48.0px; max-width:none; max-height:none; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone="dmcc"] img[src="/assets/freezones/dmcc-light.png"] { width:160.0px; height:48.0px; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone="adgm"] img { width:160.0px; height:42.1px; max-width:none; max-height:none; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone="adgm"] img[src="/assets/freezones/adgm-light.png"] { width:160.0px; height:42.1px; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone="difc"] img { width:185.6px; height:59.9px; max-width:none; max-height:none; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone="difc"] img[src="/assets/freezones/difc-light.png"] { width:185.6px; height:59.9px; }
      :root .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone="rakez"] img { width:46.6px; height:60.0px; max-width:none; max-height:none; }
      .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone] { width: min(168px, 100%); min-width: 0; max-width: 100%; }
      .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone] img { max-width: 100%; height: auto; }
      @media (max-width: 720px) {
        :root .fzp-section .free-zone-logo-group .fzshelf-logo[data-zone] img { max-width: 100%; height: auto; }
      }
      