:root {
  --font-ui: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --type-body: 16px;
  --type-label: 15px;
  --type-help: 14px;
  --type-caption: 13px;
  font-family: var(--font-ui);
  font-size: var(--type-body);
  font-synthesis: none;
  text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

*, *::before, *::after { letter-spacing: 0; }
body { font-family: var(--font-ui); font-size: var(--type-body); font-weight: 400; line-height: 1.6; }
button, input, select { font-family: inherit; }
h1, h2, h3, h4, legend { text-wrap: balance; }
p, .consent span { text-wrap: pretty; }

.wordmark { font-size: 24px; font-weight: 500; line-height: 1.15; }
.wordmark strong { font-weight: 750; }
.wordmark span { font-size: 12px; font-weight: 600; line-height: 1.4; letter-spacing: 0; margin-top: 4px; }
.preview-label { font-size: 12px; line-height: 1.4; }
.eyebrow, .welcome .eyebrow { font-size: 12px; font-weight: 650; line-height: 1.5; letter-spacing: 0; }
.welcome h1 { font-size: 68px; font-weight: 450; line-height: 1.08; margin: 20px 0 22px; }
.welcome h1 strong { font-weight: 750; }
.welcome-copy > p:not(.eyebrow):not(.already) { font-size: 18px; line-height: 1.65; max-width: 440px; }
.welcome .already { font-size: var(--type-caption); line-height: 1.65; max-width: 350px; color: #edf3ef; }
.hero-caption { font-size: var(--type-caption); line-height: 1.5; }
.primary { font-size: var(--type-body); font-weight: 650; line-height: 1.35; }
.back { font-size: var(--type-label); font-weight: 550; line-height: 1.5; }

.form-intro h2 { font-size: 36px; font-weight: 700; line-height: 1.2; margin: 10px 0 12px; }
.form-intro > p:last-child { font-size: var(--type-body); line-height: 1.65; max-width: 50ch; }
.step > h3 { font-size: 26px; font-weight: 650; line-height: 1.3; max-width: 32ch; }
.step-copy { font-size: var(--type-body); line-height: 1.65; margin: 12px 0 28px; max-width: 54ch; }
.journey li { font-size: var(--type-label); font-weight: 550; line-height: 1.5; color: #59695f; }
.journey li > span { font-size: var(--type-caption); font-weight: 650; font-variant-numeric: tabular-nums; line-height: 1.75; }
.journey li small, .privacy-note { font-size: var(--type-caption); font-weight: 400; line-height: 1.65; }
.mobile-progress { font-size: var(--type-caption); line-height: 1.5; font-variant-numeric: tabular-nums; }
.mobile-progress span:last-child { font-weight: 650; }

label { font-size: var(--type-label); font-weight: 600; line-height: 1.5; }
input:not([type=checkbox]):not([type=radio]), select { font-size: var(--type-body); font-weight: 450; line-height: 1.5; height: 52px; }
input::placeholder { font-weight: 400; color: #68786d; }
input[inputmode=numeric], input[type=tel], .phone-field > span { font-variant-numeric: tabular-nums; }
legend { font-size: 17px; font-weight: 650; line-height: 1.5; margin-bottom: 10px; }
.field-hint, label small { font-size: var(--type-help); font-weight: 400; line-height: 1.6; }
.optional, .choices label small { font-size: var(--type-caption); font-weight: 400; line-height: 1.5; }
.identity-status { font-size: var(--type-help); line-height: 1.65; margin-bottom: 28px; }
.choices label, .interests label, .mobilization label { font-size: var(--type-label); font-weight: 450; line-height: 1.5; }
.mobilization strong { font-size: var(--type-body); font-weight: 600; }
.choices label:has(input:checked) { font-weight: 550; }
.consent { font-size: var(--type-label); font-weight: 400; line-height: 1.65; }
.consent small { font-size: var(--type-caption); line-height: 1.5; }
.consent-intro h4 { font-size: 18px; font-weight: 650; line-height: 1.4; margin-bottom: 12px; }
.consent-intro p { font-size: var(--type-label); line-height: 1.7; }
.review div { font-size: var(--type-label); line-height: 1.6; }
.review dt { font-size: var(--type-help); line-height: 1.7; }
.review dd { font-weight: 550; font-variant-numeric: tabular-nums; }
.text-button { font-size: var(--type-help); font-weight: 550; line-height: 1.5; }
.preview-notice { font-size: var(--type-caption); line-height: 1.65; }
#form-message, #catalog-error { font-size: var(--type-label); line-height: 1.65; }

.footer-name { font-size: 19px; font-weight: 500; line-height: 1.5; }
.footer-name strong { font-weight: 700; }
.footer-name > span, .powered { font-size: var(--type-caption); line-height: 1.6; }
.policy-top { font-size: 12px; font-weight: 650; line-height: 1.5; }
dialog h2 { font-size: 28px; font-weight: 700; line-height: 1.25; margin: 16px 0; }
dialog h3 { font-size: 18px; font-weight: 650; line-height: 1.4; margin: 28px 0 10px; }
dialog p { font-size: var(--type-label); line-height: 1.75; }
.policy-pending { font-size: var(--type-help); line-height: 1.7; }

@media (max-width: 760px) {
  .wordmark { font-size: 22px; }
  .wordmark span { font-size: 12px; }
  .preview-label { font-size: 12px; max-width: 95px; }
  .welcome h1 { font-size: 44px; line-height: 1.1; margin: 12px 0 16px; }
  .welcome-copy > p:not(.eyebrow):not(.already) { font-size: var(--type-body); line-height: 1.6; }
  .welcome .already { font-size: 12px; line-height: 1.6; margin-top: 16px; }
  .welcome-copy { padding-bottom: 26px; }
  .form-intro h2 { font-size: 30px; line-height: 1.2; }
  .form-intro > p:last-child { font-size: var(--type-body); line-height: 1.6; }
  .step > h3 { font-size: 24px; line-height: 1.3; }
  .step-copy { font-size: var(--type-label); line-height: 1.65; margin-bottom: 26px; }
  .interests label, .mobilization label { font-size: var(--type-label); line-height: 1.5; }
  .choices label { min-height: 56px; }
  .review { font-size: var(--type-label); }
  .review div { grid-template-columns: 105px minmax(0, 1fr); }
  .form-actions { align-items: stretch; }
  .primary { min-height: 56px; }
  dialog h2 { font-size: 26px; }
}

@media (max-width: 359px) {
  .welcome h1 { font-size: 40px; }
  .form-intro h2 { font-size: 28px; }
  .step > h3 { font-size: 22px; }
  .interests { grid-template-columns: 1fr; }
  .review div { grid-template-columns: 1fr; gap: 4px; }
}
