:root {
  --ink: #03203b;
  --ink-soft: #2b5672;
  --placeholder: #4f7186;
  --rule: #c5d6e0;
  --tint: #e6f0f5;
  --accent: #1f6f97;
  --white: #ffffff;
  --scrim: rgba(3, 32, 59, 0.55);
  --measure: 680px;
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--white);
  color: var(--ink);
  font-family: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size: 18px;
  line-height: 1.6667;
}

p, h1, h2, h3 { margin: 0; }

/* Layout */

.page {
  max-width: calc(var(--measure) + 48px);
  margin: 0 auto;
  padding: 120px 24px 200px;
}

.masthead {
  display: flex;
  flex-direction: column;
  gap: 24px;
  padding-bottom: 56px;
  text-align: center;
}

.masthead h1 {
  font-size: 56px;
  font-weight: 600;
  line-height: 60px;
  letter-spacing: -0.035em;
}

.byline { font-size: 22px; line-height: 30px; }

.tagline {
  font-size: 18px;
  line-height: 26px;
  color: var(--ink-soft);
}

/* Article */

.article {
  display: flex;
  flex-direction: column;
  gap: 48px;
  padding-bottom: 72px;
}

.intro, .section {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.article h2, .signup h2 {
  font-size: 28px;
  font-weight: 700;
  line-height: 36px;
  letter-spacing: -0.02em;
}

.item {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-top: 12px;
}

.item h3 {
  font-size: 19px;
  font-weight: 700;
  line-height: 1.4737;
}

.pull-quote {
  font-size: 20px;
  font-weight: 600;
  line-height: 1.6;
}

/* Author card */

.author-card {
  display: flex;
  gap: 28px;
  padding: 32px;
  background: var(--tint);
}

.avatar {
  flex: none;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
}

.author-text {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
}

.author-id { display: flex; flex-direction: column; gap: 2px; }

.author-name {
  font-size: 22px;
  font-weight: 700;
  line-height: 1.3636;
  letter-spacing: -0.01em;
}

.author-role {
  font-size: 15px;
  line-height: 1.4667;
  color: var(--ink-soft);
}

.author-bio { font-size: 16px; line-height: 1.625; }

/* Signup */

.divider {
  width: 100%;
  height: 1px;
  margin: 0 0 48px;
  border: 0;
  background: var(--ink);
}

.signup-content { display: flex; flex-direction: column; gap: 20px; }

.form {
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding-top: 12px;
}

.field { display: flex; flex-direction: column; gap: 8px; }

.field label {
  font-size: 14px;
  font-weight: 600;
  line-height: 20px;
}

.field input {
  width: 100%;
  height: 56px;
  padding: 0 16px;
  border: 1px solid var(--ink);
  border-radius: 0;
  background: var(--white);
  color: var(--ink);
  font: inherit;
  font-size: 18px;
  line-height: 1.3333;
}

.field input::placeholder { color: var(--placeholder); opacity: 1; }

.button {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 56px;
  margin-top: 12px;
  padding: 0 16px;
  border: 0;
  border-radius: 0;
  background: var(--accent);
  color: var(--white);
  font: inherit;
  font-size: 18px;
  font-weight: 600;
  line-height: 1.3333;
  cursor: pointer;
}

.button:disabled { opacity: 0.7; cursor: default; }

.form-status { min-height: 0; font-size: 16px; line-height: 1.5; color: var(--ink-soft); }
.form-status:empty { display: none; }
.form-status[data-state="error"] { color: var(--ink); font-weight: 600; }

:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.button:focus-visible { outline-color: var(--ink); box-shadow: 0 0 0 2px var(--white); }

/* Sticky CTA bar */

.cta-bar {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 10;
  background: var(--white);
  border-top: 1px solid var(--rule);
  transition: transform 0.2s ease, visibility 0.2s;
}

/* Hidden while the signup form at the bottom of the page is in view. */
.cta-bar.is-hidden {
  transform: translateY(100%);
  visibility: hidden;
}

@media (prefers-reduced-motion: reduce) {
  .cta-bar { transition: none; }
}

.cta-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  max-width: calc(var(--measure) + 48px);
  margin: 0 auto;
  padding: 20px 24px;
}

.cta-pitch { display: flex; flex-direction: column; gap: 2px; width: 420px; }

.cta-heading { font-size: 18px; font-weight: 700; line-height: 1.3333; }

.cta-subline { font-size: 14px; line-height: 1.4286; color: var(--ink-soft); }

.button-bar {
  height: 48px;
  margin: 0;
  padding: 0 24px;
  font-size: 16px;
  line-height: 1.5;
}

.label-narrow { display: none; }

/* Dialog: centered modal on desktop, bottom sheet on mobile */

.dialog {
  width: 480px;
  max-width: 100%;
  padding: 32px;
  border: 0;
  background: var(--white);
  color: var(--ink);
}

.dialog[open] { display: flex; flex-direction: column; gap: 20px; }

.dialog:focus { outline: none; }

.dialog::backdrop { background: var(--scrim); }

.dialog-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

.dialog-header h2 {
  font-size: 24px;
  font-weight: 700;
  line-height: 1.3333;
  letter-spacing: -0.02em;
}

.close {
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  color: var(--ink);
  font: inherit;
  font-size: 28px;
  line-height: 32px;
  cursor: pointer;
}

.dialog-subline { font-size: 16px; line-height: 1.5; color: var(--ink-soft); }

.dialog .button { font-size: 16px; line-height: 1.5; }

/* Mobile */

@media (max-width: 640px) {
  body { font-size: 17px; line-height: 1.6471; }

  .page {
    display: flex;
    flex-direction: column;
    gap: 32px;
    padding: 56px 24px 160px;
  }

  .masthead { gap: 12px; padding-bottom: 0; }
  .masthead h1 { font-size: 36px; line-height: 40px; letter-spacing: -0.035em; }
  .byline { font-size: 18px; line-height: 1.4444; }
  .tagline { font-size: 16px; line-height: 1.5; }

  .article { gap: 32px; padding-bottom: 0; }
  .intro { gap: 16px; }
  .section { gap: 12px; }
  .article h2, .signup h2 { font-size: 24px; line-height: 1.3333; letter-spacing: -0.02em; }

  .author-card { gap: 16px; padding: 24px; }

  .divider { margin-bottom: 32px; }
  .field input { height: 52px; font-size: 17px; }
  .button { height: 52px; font-size: 16px; line-height: 1.5; }

  .cta-inner { display: block; padding: 12px 24px 24px; }
  .cta-pitch { display: none; }
  .button-bar { width: 100%; height: 52px; padding: 0 16px; }
  .label-wide { display: none; }
  .label-narrow { display: inline; }

  .dialog {
    width: 100%;
    margin: auto 0 0;
    padding: 24px 24px 32px;
    gap: 16px;
  }
  .dialog[open] { gap: 16px; }
  .dialog-header h2 { font-size: 22px; line-height: 1.2727; letter-spacing: 0; }
  .dialog-header { align-items: center; }
  .dialog .field input { height: 52px; font-size: 17px; }
}
