:root {
  --ink: #34302b;
  --muted: #575046;
  --dark: #1d1915;
  --paper: #e9dfce;
  --gold: #d3b272;
  --rule: #34302b2b;
  --gutter: 4.5vw;
  --gold-dot: #9a773c;
  --row-feedback: color-mix(in srgb, var(--ink) 8%, transparent);
  --cta-feedback: color-mix(in srgb, var(--gold) 35%, transparent);
}

* { box-sizing: border-box; }
/* Keep the layout width unchanged when the page or a dialog starts scrolling. */
html { scrollbar-gutter: stable; }
body { margin: 0; font: 16px/1.65 Manrope, Arial, sans-serif; color: var(--ink); background: var(--dark); }
body.locked { overflow: hidden; }
button { font: inherit; color: inherit; border: 0; padding: 0; background: none; cursor: default; }
a { color: inherit; text-decoration: none; touch-action: manipulation; cursor: default; }
a:focus-visible, button:focus-visible { outline: 3px solid var(--ink); outline-offset: 5px; }
p, h1, h2 { margin: 0; }
svg { flex: none; }
.skip-link { position: absolute; z-index: 1; top: 16px; left: var(--gutter); padding: 12px 20px; background: var(--paper); transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }

.site-header { height: 86px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 0 var(--gutter); color: var(--paper); }
.site-header :is(a, button):focus-visible { outline-color: var(--gold); }
.site-brand { font-size: 25px; font-weight: 650; letter-spacing: -.06em; }
.site-header nav { display: flex; align-items: center; gap: 44px; font-size: 14px; }
.site-header nav > :is(a, button) { display: flex; align-items: center; min-height: 44px; gap: 16px; }
.back-link { color: var(--gold); }
.site-header nav > .back-link { gap: 5px; }
.back-link > span { display: inline-block; transition: transform .2s ease-out; }
.visit { font-size: 13px; }
.visit svg { width: 15px; height: 15px; }

.partners { padding: 54px var(--gutter) 32px; min-height: calc(100svh - 86px); overflow-x: clip; }
.eyebrow { display: flex; justify-content: space-between; gap: 24px; border-top: 1px solid var(--rule); padding-top: 20px; font-size: 12px; letter-spacing: .13em; text-transform: uppercase; color: var(--muted); }
.section-intro { margin: 44px 0 56px; }
h1 { font-size: clamp(60px, 6.12vw, 88px); font-weight: 500; line-height: .99; letter-spacing: -.065em; }
.heading-first { display: inline-block; margin-right: .17em; }
.gold-dot { color: var(--gold-dot); }
.directory { border-top: 1px solid var(--rule); }
.partner-row { position: relative; isolation: isolate; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) minmax(0, .8fr); gap: 50px; align-items: center; padding: 34px 0; border-bottom: 1px solid var(--rule); }
.partner-row[data-partner="holgo"] { --partner-color: #303cfa; }
.partner-row[data-partner="pro-rock"] { --partner-color: #8a2117; }
/* Match the evening program: a full-width band fading into both page edges. */
.partner-row::before, .partner-row::after { content: ''; position: absolute; top: 0; bottom: 0; left: calc(-1 * var(--gutter)); right: calc(-1 * var(--gutter)); z-index: -1; pointer-events: none; background: linear-gradient(90deg, transparent 0, var(--row-feedback) 18%, var(--row-feedback) 62%, transparent 100%); opacity: 0; transition: opacity .24s ease-out; }
.partner-row::after { transition-duration: .12s; }
.partner-row:focus-visible { outline-offset: -3px; }
.partner-row:focus-visible::before, .partner-row:active::before, .partner-row.is-pressed::before { opacity: 1; }
.partner-row:active::after, .partner-row.is-pressed::after { opacity: 1; }
.category { display: block; font-size: 12px; line-height: 1.5; letter-spacing: .11em; text-transform: uppercase; color: var(--muted); }
.brand-name { color: var(--ink); font-size: 32px; font-weight: 650; line-height: 1.2; letter-spacing: -.04em; margin-top: 12px; overflow-wrap: anywhere; transition: color .24s ease-out; }
.partner-row:focus-visible .brand-name { color: var(--partner-color, var(--ink)); }
.partner-tagline { font-size: 21px; line-height: 1.4; font-weight: 550; letter-spacing: -.04em; }
.row-copy > p:not(.partner-tagline) { font-size: 14px; line-height: 1.75; color: var(--muted); margin-top: 10px; max-width: 49ch; }
.partner-link { display: flex; align-items: center; flex-wrap: wrap; min-height: 52px; gap: 8px; font-size: 15px; line-height: 1.4; font-weight: 600; }
.partner-link > span:first-child { flex-basis: calc(100% - 28px); }
.partner-link svg { width: 19px; height: 19px; order: 1; transition: transform .16s ease-out; }
.partner-link .domain { order: 2; color: var(--muted); font-size: 13px; font-weight: 400; }
.partner-bottom { display: flex; flex-direction: column; align-items: center; gap: 6px; width: fit-content; max-width: 100%; margin: 52px auto 0; text-align: center; font-size: 14px; }
.partner-bottom > span { color: var(--muted); }
.partner-bottom > :is(a, button) { position: relative; isolation: isolate; display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 14px; font-weight: 600; touch-action: manipulation; transition: transform .12s ease-out; }
.partner-bottom > :is(a, button)::before { content: ''; position: absolute; inset: 2px 0; z-index: -1; border-radius: 999px; background: var(--cta-feedback); opacity: 0; pointer-events: none; transition: opacity .2s ease-out; }
.partner-bottom > :is(a, button) > span { display: inline-block; transition: transform .2s ease-out; }
.partner-bottom > :is(a, button):focus-visible::before, .partner-bottom > :is(a, button):active::before { opacity: 1; }
.partner-bottom > :is(a, button):active { transform: translateY(1px); }

.dialog-close { position: absolute; right: 12px; top: 9px; width: 44px; height: 44px; font-size: 30px; line-height: 1; }
.waitlist-dialog { --ink: #241e19; --muted: #ab9b86; scrollbar-gutter: stable; }
.waitlist-dialog button:focus-visible { outline-color: var(--gold); }
.legal-dialog { width: min(860px, 94vw); max-height: 94svh; padding: 55px 45px 35px; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; border: 1px solid var(--rule); background: var(--paper); color: var(--ink); }
.legal-dialog::backdrop { background: #100c09e8; backdrop-filter: blur(12px); }
.legal-body h1 { font-size: clamp(28px, 4vw, 46px); line-height: 1.2; margin-bottom: 25px; }
.legal-body h2 { font-size: 25px; line-height: 1.4; margin: 30px 0 15px; }
.legal-body p, .legal-body li { font-size: 15px; line-height: 1.8; margin-bottom: 14px; }
.legal-body a { text-decoration: underline; }

@media (hover: hover) and (pointer: fine) {
  .partner-row:hover::before { opacity: 1; }
  .partner-row:hover .brand-name { color: var(--partner-color, var(--ink)); }
  .partner-row:hover .partner-link svg { transform: translate(4px, -4px); }
  .partner-bottom > :is(a, button):hover::before { opacity: 1; }
  .partner-bottom > :is(a, button):hover > span, .visit:hover svg { transform: translate(3px, -3px); }
  .back-link:hover > span { transform: translateX(-3px); }
}

.visit svg { transition: transform .2s ease-out; }
.partner-row:active .partner-link svg, .partner-row.is-pressed .partner-link svg { transform: translate(2px, -2px) scale(.88); }
.partner-bottom > :is(a, button):active > span { transform: translate(1px, -1px) scale(.9); }

@media (max-width: 1024px) {
  .partner-row { gap: 28px; }
  .brand-name { font-size: 28px; }
}

@media (max-width: 760px) {
  :root { --gutter: 24px; }
  .site-header { height: 76px; gap: 12px; }
  .site-brand { font-size: 22px; }
  .site-header nav { gap: 0; font-size: 13px; }
  .site-header nav > .visit { display: none; }
  .partners { padding: 30px var(--gutter); min-height: calc(100svh - 76px); }
  .eyebrow { font-size: 11px; letter-spacing: .1em; gap: 14px; }
  .eyebrow > span:last-child { font-size: 10px; letter-spacing: .03em; }
  .section-intro { margin: 33px 0 36px; }
  h1 { font-size: 60px; line-height: 1; }
  .heading-first { display: block; margin-right: 0; }
  .partner-row { grid-template-columns: minmax(0, 1fr); gap: 22px; padding: 30px 0; }
  .brand-name { font-size: 31px; }
  .partner-tagline { font-size: 23px; }
  .row-copy > p:not(.partner-tagline) { font-size: 16px; }
  .partner-link { padding-top: 18px; border-top: 1px solid var(--rule); }
  .partner-link > span:first-child { flex-basis: calc(100% - 32px); }
  .partner-link .domain { flex-basis: 100%; }
  .partner-bottom { margin-top: 40px; }
  .partner-bottom > :is(a, button) { font-size: 16px; }
  .legal-dialog { width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; margin: 0; padding: 56px var(--gutter) 32px; border: 0; }
}

@media (max-width: 760px), (hover: none) and (pointer: coarse) {
  /* The program's scroll highlight covers one complete company block. */
  .partner-row { --row-feedback: #241e191c; }
  .partner-row::before { transition: opacity .85s cubic-bezier(.22,.8,.24,1); }
  .brand-name { transition: color .85s cubic-bezier(.22,.8,.24,1); }
  .partner-row.is-current::before { opacity: 1; }
  .partner-row.is-current .brand-name { color: var(--partner-color, var(--ink)); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .partner-row:hover .partner-link svg, .partner-row:active .partner-link svg, .partner-row.is-pressed .partner-link svg, .partner-bottom > :is(a, button):active, .partner-bottom > :is(a, button):hover > span, .partner-bottom > :is(a, button):active > span, .visit:hover svg, .back-link:hover > span { transform: none; }
}
