/*
 * Zero One Hack — Components
 * Source of truth for reusable UI pieces.
 * Imported by: every preview card AND the marketing site.
 * Edit a class here → it updates everywhere.
 */

@import url('./colors_and_type.css');

/* ═══════════════════════════════════════════════════════
   BUTTONS
   ═══════════════════════════════════════════════════════ */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 22px;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 500;
  border-radius: var(--radius-pill);
  border: 1px solid transparent;
  cursor: pointer;
  text-decoration: none;
  transition: all var(--dur-fast) var(--ease-standard);
  line-height: 1;
}
.btn-primary { background: var(--accent); color: var(--color-accent-ink); border-color: var(--accent); }
.btn-primary:hover { background: #0137D1; border-color: #0137D1; text-decoration: none; }
.btn-secondary { background: transparent; color: var(--fg1); border-color: var(--color-hairline-strong); }
.btn-secondary:hover { border-color: var(--fg1); text-decoration: none; }
.btn-sm { padding: 8px 16px; font-size: 13px; }
.btn-lg { padding: 16px 28px; font-size: 16px; }

/* ═══════════════════════════════════════════════════════
   BADGES / PILLS / CHIPS
   ═══════════════════════════════════════════════════════ */

.badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  border-radius: 6px;
  background: var(--color-hairline);
  color: var(--fg1);
}
.badge-accent { background: var(--accent); color: var(--color-accent-ink); }
.badge-outline { background: transparent; border: 1px solid var(--color-hairline-strong); }

.pixel-label {
  font-family: var(--font-pixel);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--accent);
  text-transform: uppercase;
}
.pixel-label.muted { color: var(--fg3); }
.pixel-label.dim   { color: rgba(243,243,243,0.5); }
.pixel-label.xs    { font-size: 9px; }

/* Eyebrow divider: pixel label + hairline */
.eyebrow-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.eyebrow-row .rule { flex: 1; height: 1px; background: var(--color-hairline); }

/* ═══════════════════════════════════════════════════════
   CARD PRIMITIVE
   ═══════════════════════════════════════════════════════ */

.card {
  background: var(--surface);
  border: 1px solid var(--color-hairline);
  border-radius: var(--radius-card);
  padding: 28px;
  box-shadow: var(--shadow-sm);
}
.card-lg { padding: 40px; }
.card-accent-border { border-color: var(--accent); }

/* Unified card-unit: eyebrow → metric → hairline → caption */
.card-unit {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-height: 220px;
}
.card-unit .card-eyebrow {
  font-family: var(--font-pixel);
  font-size: 10px;
  letter-spacing: 0.18em;
  color: var(--accent);
  text-transform: uppercase;
}
.card-unit .card-metric {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(30px, 8vw, 72px);
  letter-spacing: -0.03em;
  line-height: 0.9;
  color: var(--fg1);
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
}
.card-unit .card-metric .unit {
  font-size: clamp(18px, 3.6vw, 28px);
  font-weight: 600;
  color: var(--fg2);
  letter-spacing: -0.02em;
}
.card-unit .card-rule {
  width: 40px;
  height: 2px;
  background: var(--accent);
}
.card-unit .card-caption {
  margin: 0;
  margin-top: auto;
  font-family: var(--font-ui);
  font-size: 13px;
  line-height: 1.55;
  color: var(--fg2);
}

/* ═══════════════════════════════════════════════════════
   STAT CARD / STAT ROW
   ═══════════════════════════════════════════════════════ */

.stat {
  background: var(--surface);
  border: 1px solid var(--color-hairline);
  border-radius: var(--radius-card);
  padding: 28px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.stat .stat-value {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 56px;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--fg1);
}
.stat .stat-label {
  font-family: var(--font-pixel);
  font-size: 10px;
  letter-spacing: 0.15em;
  color: var(--accent);
  text-transform: uppercase;
}
.stat .stat-caption {
  font-size: 14px;
  color: var(--fg2);
  line-height: 1.5;
}

.stat-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 18px 0;
  border-bottom: 1px solid var(--color-hairline);
}
.stat-row .label { font-family: var(--font-pixel); font-size: 10px; letter-spacing: 0.15em; color: var(--fg3); text-transform: uppercase; }
.stat-row .value { font-family: var(--font-display); font-weight: 700; font-size: 22px; color: var(--fg1); letter-spacing: -0.01em; }

/* ═══════════════════════════════════════════════════════
   STEP ROW (numbered, with circle + text)
   ═══════════════════════════════════════════════════════ */

.step {
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 24px;
  align-items: center;
}
.step-circle {
  width: 80px;
  height: 80px;
  border-radius: var(--radius-pill);
  background: var(--accent);
  display: block;
}
.step-circle svg { width: 100%; height: 100%; display: block; }
.step-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 22px;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  color: var(--fg1);
  line-height: 1.1;
  margin: 0 0 6px;
}
.step-desc {
  font-size: 14px;
  color: var(--fg2);
  line-height: 1.55;
  margin: 0;
}

/* ═══════════════════════════════════════════════════════
   TIMELINE
   ═══════════════════════════════════════════════════════ */

.timeline {
  list-style: none;
  margin: 0;
  padding: 0;
  position: relative;
}
.timeline::before {
  content: '';
  position: absolute;
  left: 4px;
  top: 8px;
  bottom: 8px;
  width: 1px;
  background: var(--color-hairline);
}
.timeline-item {
  position: relative;
  padding: 0 0 28px 28px;
  display: grid;
  grid-template-columns: 140px 1fr;
  column-gap: 24px;
  align-items: baseline;
}
.timeline-item:last-child { padding-bottom: 0; }
.timeline-item .dot {
  position: absolute;
  left: 0;
  top: 8px;
  width: 9px;
  height: 9px;
  border-radius: var(--radius-pill);
  background: var(--bg);
  border: 1.5px solid var(--fg3);
  box-sizing: border-box;
}
.timeline-item.done .dot { background: var(--fg3); border-color: var(--fg3); }
.timeline-item.now  .dot {
  background: var(--accent);
  border-color: var(--accent);
  box-shadow: 0 0 0 4px rgba(1,71,255,0.18);
}
.timeline-item .date {
  font-family: var(--font-pixel);
  font-size: 10px;
  letter-spacing: 0.15em;
  color: var(--fg3);
  text-transform: uppercase;
}
.timeline-item.now .date { color: var(--accent); }
.timeline-item .title {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 18px;
  color: var(--fg1);
  margin: 0;
  line-height: 1.3;
}
.timeline-item.done .title { color: var(--fg2); }

@media (max-width: 560px) {
  .timeline-item { grid-template-columns: 1fr; row-gap: 4px; padding-bottom: 22px; }
}

/* ═══════════════════════════════════════════════════════
   FAQ ACCORDION
   ═══════════════════════════════════════════════════════ */

.faq {
  border-top: 1px solid var(--color-hairline);
}
.faq-item {
  border-bottom: 1px solid var(--color-hairline);
}
.faq-item summary {
  list-style: none;
  cursor: pointer;
  padding: 20px 0;
  font-family: var(--font-ui);
  font-size: 16px;
  font-weight: 500;
  color: var(--fg1);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: '+';
  font-family: var(--font-pixel);
  font-size: 20px;
  color: var(--accent);
  transition: transform var(--dur-fast);
}
.faq-item[open] summary::after { content: '–'; }
.faq-item .faq-body {
  padding: 0 0 20px;
  font-size: 14px;
  color: var(--fg2);
  line-height: 1.6;
  max-width: 60ch;
}

/* ═══════════════════════════════════════════════════════
   LOGO CHIP (for partner/sponsor logos)
   ═══════════════════════════════════════════════════════ */

.logo-chip {
  background: #0F1014;
  border: 1px solid var(--color-hairline);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  box-sizing: border-box;
}
.logo-chip img {
  max-height: 100%;
  max-width: 100%;
  object-fit: contain;
  display: block;
}
.logo-chip.dashed { border-style: dashed; border-color: var(--color-hairline-strong); }
.logo-chip.tier-track    { height: 130px; padding: 24px; }
.logo-chip.tier-sponsor  { height: 90px;  padding: 18px; }
.logo-chip.tier-supporter{ height: 62px;  padding: 12px; }

.logo-wall-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}
.logo-wall-header .rule { flex: 1; height: 1px; background: var(--color-hairline); }

/* Supporter row — equal columns, always fills width, chip height scales
   smaller as count grows so more logos still look balanced */
.supporter-row {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  gap: 10px;
}
.supporter-row .logo-chip.tier-supporter { height: 64px; padding: 10px; }
.supporter-row[data-count="7"]  .logo-chip.tier-supporter,
.supporter-row[data-count="8"]  .logo-chip.tier-supporter { height: 58px; padding: 9px; }
.supporter-row[data-count="9"]  .logo-chip.tier-supporter,
.supporter-row[data-count="10"] .logo-chip.tier-supporter { height: 52px; padding: 8px; }
@media (max-width: 640px) {
  .supporter-row { grid-auto-flow: row; grid-template-columns: repeat(3, 1fr); grid-auto-columns: auto; }
}
@media (max-width: 420px) {
  .supporter-row { grid-template-columns: repeat(2, 1fr); }
}

/* ═══════════════════════════════════════════════════════
   TRACK CARD (branching track diagram + cards)
   ═══════════════════════════════════════════════════════ */

.track-tree-layer {
  position: relative;
  width: 100%;
  max-width: 1020px;
  margin: 0 auto;
}
.track-tree-layer svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
  position: relative;
  z-index: 2;
}

.track-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  position: relative;
  margin-top: 0;
  z-index: 1;
}

.track-card {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--color-hairline);
  border-radius: var(--radius-card-lg);
  padding: 32px 26px 22px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow: hidden;
}
.track-card .watermark-num {
  position: absolute;
  top: 18px; right: 24px;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 72px;
  color: rgba(1,71,255,0.1);
  line-height: 1;
  pointer-events: none;
  user-select: none;
  letter-spacing: -0.04em;
}
.track-card .track-title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 26px;
  text-transform: uppercase;
  letter-spacing: -0.015em;
  color: var(--fg1);
  line-height: 1.05;
  position: relative;
}
.track-card .track-desc {
  margin: 0;
  font-size: 14px;
  color: var(--fg2);
  line-height: 1.55;
  position: relative;
  min-height: 44px;
}

/* 2-COL footer: left = 1st/2nd/3rd stacked | right = sponsor logo (bigger) */
.track-footer {
  margin-top: 6px;
  padding-top: 16px;
  border-top: 1px solid var(--color-hairline);
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: 0;
  align-items: stretch;
  position: relative;
}
.track-footer-col {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-right: 16px;
}
.track-footer-col + .track-footer-col {
  border-left: 1px solid var(--color-hairline);
  padding-left: 16px;
  padding-right: 0;
}
.track-footer-col .footer-label {
  font-family: var(--font-pixel);
  font-size: 9px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}
.track-footer-col .footer-label.sponsor { color: var(--fg3); }
.track-footer-col .footer-label.first   { color: var(--accent); }
.track-footer-col .footer-label.second  { color: rgba(243,243,243,0.6); }
.track-footer-col .footer-label.third   { color: rgba(243,243,243,0.4); }

.track-footer-col.sponsor {
  justify-content: center;
  align-items: flex-end;     /* logo sits flush-right in its container */
  text-align: right;
  gap: 10px;
}
.track-footer-col.sponsor img {
  height: 64px;              /* was 44 — bigger to balance the 3-prize stack */
  max-width: 100%;
  width: auto;
  object-fit: contain;
  display: block;
}
.track-footer-col.sponsor .open-slot {
  font-family: var(--font-pixel);
  font-size: 11px;
  letter-spacing: 0.15em;
  color: var(--fg3);
  padding: 12px 14px;
  border: 1px dashed var(--color-hairline-strong);
  border-radius: 8px;
  align-self: stretch;
  text-align: center;
}

.track-footer-col.prizes {
  gap: 8px;
  justify-content: center;
}
.track-footer-col.prizes .prize {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}
.track-footer-col.prizes .prize-second { opacity: 0.9; }
.track-footer-col.prizes .prize-third  { opacity: 0.75; }
.track-footer-col.prizes .prize-second .footer-value { font-size: 16px; }
.track-footer-col.prizes .prize-third  .footer-value { font-size: 14px; }
.track-footer-col.prizes .footer-value {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 20px;
  letter-spacing: -0.01em;
  line-height: 1;
}
.track-footer-col.prizes .footer-value.first  { color: var(--fg1); }
.track-footer-col.prizes .footer-value.second { color: rgba(243,243,243,0.85); }
.track-footer-col.prizes .footer-value.third  { color: rgba(243,243,243,0.65); }

@media (max-width: 720px) {
  .track-tree-layer { display: none; }
  .track-grid { grid-template-columns: 1fr; gap: 14px; padding-left: 28px; margin-top: 0; }
  .track-grid::before {
    content: ''; position: absolute; left: 9px; top: 26px; bottom: 26px;
    width: 6px; background: var(--accent); border-radius: 999px;
  }
  .track-card::before {
    content: ''; position: absolute; left: -22px; top: 30px;
    width: 28px; height: 6px; background: var(--accent); border-radius: 0 3px 3px 0;
  }
  .track-footer { grid-template-columns: 1fr; gap: 12px; }
  .track-footer-col { padding-right: 0; }
  .track-footer-col + .track-footer-col {
    border-left: none; padding-left: 0;
    border-top: 1px solid var(--color-hairline); padding-top: 12px;
  }
}

/* ═══════════════════════════════════════════════════════
   INFRASTRUCTURE CARD (horizontal row grid)
   ═══════════════════════════════════════════════════════ */

.infra-grid {
  background: var(--surface);
  border: 1px solid var(--color-hairline);
  border-radius: 6px;
  overflow: hidden;
}
.infra-row {
  display: grid;
  grid-template-columns: 160px repeat(3, 1fr);
  align-items: center;
  border-bottom: 1px solid var(--color-hairline);
}
.infra-row:last-child { border-bottom: none; }
.infra-row .infra-label {
  padding: 28px 28px;
  font-family: var(--font-pixel);
  font-size: 10px;
  letter-spacing: 0.15em;
  color: var(--fg3);
  text-transform: uppercase;
  border-right: 1px solid var(--color-hairline);
}
.infra-row .infra-cell {
  padding: 28px 28px;
  border-right: 1px solid var(--color-hairline);
}
.infra-row .infra-cell:last-child { border-right: none; }
.infra-row.head .infra-cell {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 22px;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  color: var(--fg1);
  line-height: 1.1;
}
.infra-row.spec .infra-cell {
  font-family: var(--font-ui);
  font-size: 18px;
  font-weight: 500;
  color: var(--fg1);
  line-height: 1.2;
}
.infra-row.spec .infra-cell .hint {
  display: block;
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 400;
  color: var(--fg3);
  margin-top: 6px;
  letter-spacing: 0.02em;
}
.infra-row.desc .infra-cell {
  font-size: 13px;
  color: var(--fg2);
  line-height: 1.55;
}

/* ═══════════════════════════════════════════════════════
   PARTNER CTA (the big "Set a challenge" block)
   ═══════════════════════════════════════════════════════ */

.partner-cta {
  background: var(--surface);
  border: 1px solid var(--color-hairline-strong);
  border-radius: var(--radius-card-lg);
  padding: 40px;
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 40px;
  align-items: center;
}
.partner-cta .cta-eyebrow {
  font-family: var(--font-pixel);
  font-size: 11px;
  letter-spacing: 0.15em;
  color: var(--accent);
  text-transform: uppercase;
}
.partner-cta h2 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 38px;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--fg1);
}
.partner-cta p {
  margin: 0;
  font-size: 15px;
  line-height: 1.6;
  color: var(--fg2);
  max-width: 44ch;
}
.partner-cta .cta-stats { display: flex; flex-direction: column; border-top: 1px solid var(--color-hairline); }
@media (max-width: 720px) {
  .partner-cta { grid-template-columns: 1fr; padding: 28px; }
}

/* ═══════════════════════════════════════════════════════
   FORM (Tally embed container)
   ═══════════════════════════════════════════════════════ */

.form-shell {
  background: var(--surface);
  border: 1px solid var(--color-hairline);
  border-radius: var(--radius-card-lg);
  padding: 32px;
}
.form-shell .form-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--color-hairline);
}
.form-shell h3 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 24px;
  text-transform: uppercase;
  letter-spacing: -0.01em;
}

/* ═══════════════════════════════════════════════════════
   SECTION SCAFFOLD (for the marketing site)
   ═══════════════════════════════════════════════════════ */

.site-container { max-width: var(--container-max); margin: 0 auto; padding: 0 32px; }
.site-section   { padding: 96px 0; }
.site-section.tight { padding: 64px 0; }
.site-section > .site-container > .section-title { margin: 0 0 32px; }
.section-eyebrow { display: block; margin-bottom: 12px; }

/* ═══════════════════════════════════════════════════════
   PREVIEW SHELL — ensures review-pane previews have a
   proper dark canvas even when iframe bg isn't inherited.
   ═══════════════════════════════════════════════════════ */
html, body { background: var(--bg); color: var(--fg1); margin: 0; }
.card-surface {
  width: 100%;
  min-height: 100vh;
  padding: 24px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 16px;
  background: var(--bg);
}
.row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.stack { display: flex; flex-direction: column; gap: 12px; }
