/* D3 public hall application layer.
 * Foundation values come from tokens.css; campaign roles come from the
 * separately emitted, same-origin hall-theme.css. This sheet contains no
 * campaign-selected values and is safe to share across halls. */

html {
  background: var(--surface-panel);
}

.public-hall {
  min-height: 100vh;
  overflow-x: hidden;
  color: var(--ink);
  background: var(--surface-bg);
  font-size: var(--font-size-body-default);
  line-height: var(--line-height-body-default);
}

.public-hall.submitter-page {
  overflow-x: visible;
}

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

.public-hall p,
.public-hall h1,
.public-hall h2,
.public-hall ul,
.public-hall ol {
  margin-top: 0;
}

.public-hall main {
  padding: 0;
  background: var(--surface-bg);
}

.public-hall section + section {
  margin-top: 0;
}

/* Keep the complete hall on the approved 1440px desktop canvas at ultra-wide
 * viewport sizes. The neutral root surface becomes the outer gutter, while
 * every band still fills the hall canvas and smaller viewports remain fluid. */
@media (min-width: 90rem) {
  .public-hall {
    width: var(--layout-frame-width);
    margin-inline: auto;
  }
}

.content-shell {
  width: min(calc(100% - (2 * var(--layout-page-gutter))), var(--layout-content-max));
  margin-inline: auto;
}

.hall-logo {
  display: block;
  flex: 0 0 auto;
  width: 11.875rem;
}

.hall-logo img {
  display: block;
  width: 100%;
  height: auto;
}

.masthead {
  display: grid;
  min-height: 7rem;
  grid-template-columns: 11.875rem 1fr;
  gap: var(--layout-column-gap);
  align-items: center;
}

.masthead-copy {
  justify-self: end;
  text-align: right;
}

.masthead-copy p {
  margin-bottom: 0;
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.masthead-copy .masthead-tagline {
  margin-bottom: var(--space-xs);
  color: var(--ink);
  font-size: var(--font-size-heading-h4);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-heading-h4);
}

.masthead--campaign-links {
  min-height: 14.75rem;
  grid-template-columns: 19.125rem 1fr;
}

.masthead--campaign-links > .hall-logo {
  width: 19.125rem;
}

.masthead--campaign-links .masthead-copy {
  width: min(100%, 38.75rem);
}

.campaign-links {
  color: var(--brand-text-on-light);
}

.campaign-links p,
.campaign-links ul {
  color: inherit;
}

.campaign-links__eyebrow {
  margin-bottom: 0.75rem;
  font-weight: var(--font-weight-bold);
  letter-spacing: var(--letter-spacing-utility-eyebrow);
  text-transform: uppercase;
}

.campaign-links__official {
  margin-bottom: 0.75rem;
}

.campaign-links__official a {
  display: inline-flex;
  max-width: 100%;
  align-items: center;
  color: inherit;
  text-decoration: none;
}

.campaign-links__label {
  min-width: 0;
  overflow-wrap: anywhere;
}

.campaign-links__label,
.campaign-links__social a {
  text-decoration: underline;
  text-decoration-color: currentColor;
  text-decoration-skip-ink: none;
  text-underline-offset: 0.125rem;
}

.campaign-links__arrow {
  margin-left: var(--space-xs);
  font-weight: var(--font-weight-bold);
}

.campaign-links__social {
  display: flex;
  justify-content: flex-end;
  margin: 0;
  padding: 0;
  flex-wrap: wrap;
  list-style: none;
}

.campaign-links__social li {
  display: inline-flex;
  align-items: center;
}

.campaign-links__social li + li::before {
  margin-inline: var(--space-sm);
  content: "·";
  font-size: var(--font-size-body-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-body-small);
}

.campaign-links__social a {
  color: inherit;
  font-weight: var(--font-weight-semibold);
}

.campaign-links--header {
  margin-top: var(--space-md);
  text-align: right;
}

.campaign-links--header::before {
  display: block;
  width: min(100%, 21.65234375rem);
  margin: 0 0 var(--space-md) auto;
  border-top: 0.0625rem solid currentColor;
  content: "";
}

.campaign-links--header .campaign-links__eyebrow {
  font-size: var(--font-size-utility-eyebrow);
  line-height: var(--line-height-utility-eyebrow);
}

.campaign-links--header .campaign-links__official,
.campaign-links--header .campaign-links__official a {
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.disclosure-band {
  color: var(--surface-ink-inverse);
  background: var(--ink-700);
}

.disclosure-band .content-shell {
  display: flex;
  min-height: 4.625rem;
  align-items: center;
  padding-block: var(--space-md);
}

.disclosure-band .disclaimer {
  width: 100%;
  margin: 0;
  padding-left: var(--space-md);
  border-left: 0.25rem solid currentColor;
  color: inherit;
}

.disclosure-band .disclaimer p {
  margin-bottom: 0;
  color: inherit;
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.candidate-hero {
  color: var(--surface-ink-inverse);
  border-bottom: 0.125rem solid var(--brand-gold-100);
  background: var(--brand-gold-700);
}

.candidate-hero__inner {
  display: grid;
  min-height: 24.5rem;
  grid-template-columns: minmax(0, 1fr) 18.8125rem;
  gap: calc(2 * var(--layout-column-gap));
  align-items: start;
  padding-block: 3.3125rem;
}

.candidate-hero__copy {
  min-width: 0;
  max-width: 38.75rem;
  color: var(--surface-ink-inverse);
  overflow-wrap: anywhere;
}

.candidate-name-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  align-items: center;
  margin-bottom: 1.375rem;
}

.candidate-hero h1 {
  margin-bottom: 0;
  font-size: var(--font-size-display-hero);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-display-hero);
}

.incumbent-label {
  display: inline-flex;
  min-height: 1.875rem;
  align-items: center;
  padding: 0.375rem 0.625rem;
  color: var(--ink);
  border: 1px solid var(--brand-gold-700);
  border-radius: var(--radius-md);
  background: var(--brand-gold-100);
  font-size: var(--font-size-utility-eyebrow);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-utility-eyebrow);
  letter-spacing: var(--letter-spacing-utility-eyebrow);
  text-transform: uppercase;
}

.candidate-office {
  margin-bottom: 0;
  font-size: var(--font-size-heading-h3);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-heading-h3);
}

.candidate-hero .candidate-party {
  margin: var(--space-sm) 0 0;
  color: inherit;
  font-size: var(--font-size-heading-h4);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-heading-h4);
}

.district-label {
  white-space: nowrap;
}

.candidate-committee {
  margin: 0.75rem 0 0;
  color: inherit;
  font-size: var(--font-size-body-default);
  line-height: var(--line-height-body-default);
}

.candidate-hero .candidate-lede {
  max-width: 38.75rem;
  margin: var(--space-md) 0 0;
  font-size: var(--font-size-heading-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h2);
}

.candidate-portrait {
  position: relative;
  width: 18.8125rem;
  height: 17.875rem;
  overflow: hidden;
  background: var(--surface-panel);
  box-shadow:
    0 1rem 2rem rgb(17 24 39 / 0.18),
    0 0.25rem 0.625rem rgb(17 24 39 / 0.12);
}

.candidate-portrait > img,
.candidate-portrait__placeholder {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.candidate-portrait__placeholder {
  display: grid;
  place-items: center;
  color: var(--surface-ink-muted);
}

.candidate-portrait__placeholder img {
  width: 35%;
  height: auto;
}

.demo-watermark {
  position: absolute;
  right: 0.75rem;
  bottom: 0.75rem;
  left: 0.75rem;
  margin: 0;
  padding: 0.125rem 0.5rem;
  border-radius: var(--radius-md);
  color: var(--ink);
  background: var(--surface-bg);
  font-size: var(--font-size-utility-demo-mark);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-utility-demo-mark);
  letter-spacing: var(--letter-spacing-utility-eyebrow);
  text-align: center;
  text-transform: uppercase;
}

.info-document {
  background: var(--surface-bg);
}

.info-document__title {
  padding-block: 3rem;
  border-bottom: 0.125rem solid var(--brand-gold-400);
  color: var(--surface-ink-inverse);
  background: var(--brand-gold-700);
}

.info-document__measure {
  max-width: 47.5rem;
}

.info-document__title h1 {
  margin-bottom: 0;
  font-size: var(--font-size-display-hero);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-display-hero);
}

.info-document__body {
  padding-block: var(--layout-section-space);
}

.info-document__body h2 {
  margin: var(--layout-section-space) 0 var(--space-md);
  font-size: var(--font-size-heading-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h2);
}

.info-document__body h2:first-child {
  margin-top: 0;
}

.info-document__body h3 {
  margin: var(--space-xl) 0 var(--space-sm);
  font-size: var(--font-size-heading-h4);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-heading-h4);
}

.info-document__body p,
.info-document__body li {
  font-family: var(--font-family-reading);
  font-size: var(--font-size-reading-default);
  line-height: var(--line-height-reading-default);
  overflow-wrap: anywhere;
}

.info-document__body > p:first-child {
  font-family: var(--font-family-body);
  font-size: var(--font-size-heading-h4);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-heading-h4);
}

.info-document--about .info-document__body > p:first-child,
.info-document--faq .info-document__body > p:first-child,
.info-document--policy .info-document__body > p:first-child,
.info-document--commitments .info-document__body > p:first-child {
  font-family: var(--font-family-reading);
  font-size: var(--font-size-reading-default);
  line-height: var(--line-height-reading-default);
}

.info-document__body > p[data-counsel-slot="commitments-introduction"] {
  margin-bottom: var(--space-xl);
}

.info-document--commitments .info-document__body > p > strong {
  font-family: var(--font-family-body);
  font-weight: var(--font-weight-bold);
}

.info-document__body p {
  margin-bottom: var(--space-md);
}

.info-document__body ul {
  margin: 0 0 var(--space-lg);
  padding-left: var(--space-lg);
}

.info-document__body li + li {
  margin-top: var(--space-sm);
}

.info-document__note {
  padding-top: var(--space-lg);
  border-top: 0.0625rem solid var(--line);
  color: var(--surface-ink-muted);
}

/* D8 report-a-concern intake and receipt. */
.info-document--takedown .info-document__measure {
  max-width: 56.25rem;
}

.info-document--takedown .info-document__body {
  padding-top: 3.5rem;
  padding-bottom: 4.5rem;
}

.takedown-form-panel,
.takedown-receipt {
  padding: 2.5rem;
  border: 0.0625rem solid var(--line);
  border-radius: var(--radius-xl);
  background: var(--surface-panel);
  box-shadow: var(--shadow-md);
}

.takedown-form-panel__introduction > p,
.takedown-receipt > p {
  margin: 0;
  font-family: var(--font-family-body);
  font-size: var(--font-size-body-large);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-body-large);
}

.takedown-error-summary {
  margin-top: var(--space-lg);
  padding: 0.875rem var(--space-md);
  border: 0.0625rem solid var(--color-feedback-error);
  border-radius: var(--radius-md);
  color: var(--color-feedback-error);
  background: var(--surface-panel);
  font-size: var(--font-size-body-default);
  line-height: var(--line-height-body-default);
}

.takedown-error-summary a {
  color: inherit;
}

.takedown-error-summary ul {
  margin: var(--space-xs) 0 0;
  padding-left: var(--space-lg);
}

.takedown-error-summary li + li {
  margin-top: var(--space-xs);
}

.takedown-form {
  display: grid;
  gap: var(--space-lg);
  margin-top: var(--space-lg);
}

.takedown-field {
  display: grid;
  gap: var(--space-sm);
  min-width: 0;
}

.takedown-field label {
  color: var(--ink);
  font-family: var(--font-family-body);
  font-size: var(--font-size-label-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-label-default);
}

.takedown-field input,
.takedown-field select,
.takedown-field textarea {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  border: 0.0625rem solid var(--line);
  border-radius: var(--radius-md);
  color: var(--ink);
  background: var(--surface-bg);
  font-family: var(--font-family-body);
  font-size: var(--font-size-body-default);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-body-default);
}

.takedown-field input,
.takedown-field select {
  height: 3.25rem;
  padding: 0 var(--space-md);
}

.takedown-field textarea {
  min-height: 11.25rem;
  padding: 0.8125rem var(--space-md);
  resize: vertical;
}

.takedown-field input::placeholder,
.takedown-field textarea::placeholder {
  color: var(--surface-ink-muted);
  opacity: 1;
}

.takedown-field input:focus-visible,
.takedown-field select:focus-visible,
.takedown-field textarea:focus-visible,
.takedown-submit:focus-visible {
  outline: 0.1875rem solid var(--focus-ring);
  outline-offset: 0.125rem;
}

.takedown-field input[aria-invalid="true"],
.takedown-field select[aria-invalid="true"],
.takedown-field textarea[aria-invalid="true"] {
  border-color: var(--color-feedback-error);
}

.takedown-field__error {
  margin: 0;
  color: var(--color-feedback-error);
  font-family: var(--font-family-body);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.takedown-select {
  position: relative;
}

.takedown-select select {
  padding-right: 3rem;
  appearance: none;
}

.takedown-select__chevron {
  position: absolute;
  top: 50%;
  right: var(--space-md);
  translate: 0 -50%;
  color: var(--surface-ink-muted);
  font-family: var(--font-family-body);
  font-size: var(--font-size-label-small);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-label-default);
  pointer-events: none;
}

.takedown-submit {
  box-sizing: border-box;
  width: 11.875rem;
  min-height: 3.25rem;
  padding: 0.875rem var(--space-lg);
  border: 0;
  border-radius: var(--radius-md);
  color: var(--surface-ink-inverse);
  background: var(--brand-gold-700);
  font-family: var(--font-family-body);
  font-size: var(--font-size-body-large);
  font-weight: var(--font-weight-bold);
  line-height: 1.5rem;
  cursor: pointer;
}

.takedown-submit:hover {
  text-decoration: underline;
  text-decoration-thickness: 0.125rem;
  text-underline-offset: 0.1875rem;
  text-decoration-skip-ink: none;
}

.takedown-footnote {
  margin: 0;
  color: var(--surface-ink-muted);
  font-family: var(--font-family-body);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-body-small);
}

.takedown-receipt__targets {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-block: var(--space-xl);
  border: 0.0625rem solid var(--brand-gold-300);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--surface-bg);
}

.takedown-receipt__targets > div {
  display: grid;
  justify-items: center;
  gap: var(--space-xs);
  padding: var(--space-lg) var(--space-sm);
  text-align: center;
}

.takedown-receipt__targets > div + div {
  border-left: 0.0625rem solid var(--brand-gold-300);
}

.takedown-receipt__targets strong {
  font-size: var(--font-size-heading-h2);
  line-height: var(--line-height-heading-h2);
}

.takedown-receipt__targets span {
  font-family: var(--font-family-body);
  font-size: var(--font-size-label-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-label-default);
}

.broadcast-section,
.qa-list-section,
.trail-section,
.closing-section {
  padding-block: var(--layout-section-space);
  background: var(--surface-bg);
}

/* "From the trail" (public-hall-page §1.2): the labeled lane borrows
   the Q&A card grammar — same reading rhythm — but is visibly its own section:
   its heading and the channel-disclosure line above the list are what separate
   campaign-brought questions from screened ones, and the disclosure must read as
   part of the section, not as fine print. */
.trail-list {
  display: flex;
  margin-bottom: 0;
  padding: 0;
  flex-direction: column;
  gap: var(--layout-section-space);
  list-style: none;
}

.trail-item {
  overflow: hidden;
  border: 0.0625rem solid var(--line);
  border-radius: var(--radius-xl);
  background: var(--surface-bg);
}

.trail-item .answer,
.trail-item .video {
  width: 100%;
}

.trail-item .video-media {
  border-right: 0;
  border-bottom: 0;
  border-left-width: 0.5rem;
  border-radius: 0;
}

.trail-item .transcript {
  margin-bottom: var(--space-xl);
}

.trail-disclosure {
  margin-bottom: var(--space-xl);
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.broadcast-stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  align-items: center;
}

.broadcast-stack > h2 {
  width: 100%;
  margin-bottom: 0;
  font-size: var(--font-size-heading-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h2);
  text-align: center;
  text-transform: uppercase;
}

.broadcast-stack > .video {
  width: 100%;
}

.video {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.video-media {
  overflow: hidden;
  border: 0.0625rem solid var(--line);
  border-left: 0.375rem solid var(--accent-edge);
  border-radius: var(--radius-xl);
  background: var(--surface-inverse);
}

.video-frame {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 0;
  background: var(--surface-inverse);
}

.video-poster-stage {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
}

.video-media--poster {
  position: relative;
  aspect-ratio: 16 / 9;
}

.video-media--poster .video-poster-stage {
  position: absolute;
  inset: 0;
}

.video-poster-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.video-poster-play {
  position: absolute;
  top: 50%;
  left: 50%;
  display: grid;
  width: 4.5rem;
  height: 4.5rem;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  place-items: center;
  background: rgb(255 255 255 / 0.6);
}

.video-poster-play span {
  width: 0;
  height: 0;
  margin-left: 0.3125rem;
  border-top: 0.75rem solid transparent;
  border-bottom: 0.75rem solid transparent;
  border-left: 1.125rem solid #fff;
  filter: drop-shadow(0 0.125rem 0.125rem rgb(17 24 39 / 0.55));
}

.video-media--unavailable {
  display: grid;
  aspect-ratio: 16 / 9;
  place-items: center;
  padding: var(--space-lg);
  color: var(--surface-ink-inverse);
}

.video-unavailable {
  max-width: 32rem;
  margin: 0;
  text-align: center;
}

.transcript {
  width: min(100%, 47.5rem);
  margin-inline: auto;
  padding: var(--space-lg);
  border-radius: var(--radius-lg);
  background: var(--surface-panel);
  box-shadow: var(--shadow-md);
}

.transcript summary {
  display: flex;
  min-height: 2.75rem;
  align-items: center;
  color: var(--ink);
  cursor: pointer;
  font-size: var(--font-size-label-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-label-default);
}

.transcript > div {
  padding-top: var(--space-sm);
  font-family: var(--font-family-reading);
  font-size: var(--font-size-reading-default);
  line-height: var(--line-height-reading-default);
  white-space: pre-line;
}

.qa-intro {
  padding-block: var(--layout-section-space);
  color: var(--surface-ink-inverse);
  background: var(--ink-700);
}

.qa-intro__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  align-items: center;
  text-align: center;
}

.qa-intro h2 {
  margin-bottom: 0;
  color: inherit;
  font-size: var(--font-size-heading-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h2);
  text-transform: uppercase;
}

.qa-intro .curation-stats,
.qa-intro .candor-disclosure {
  margin-bottom: 0;
  color: inherit;
  background: transparent;
}

.qa-intro .curation-stats {
  font-size: var(--font-size-label-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-label-default);
}

.qa-intro .candor-disclosure {
  max-width: 48rem;
  padding: 0;
  border: 0;
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.qa-list {
  display: flex;
  margin-bottom: 0;
  padding: 0;
  flex-direction: column;
  gap: var(--layout-section-space);
  list-style: none;
}

.qa-item {
  overflow: hidden;
  border: 0.0625rem solid var(--brand-gold-300);
  border-radius: var(--radius-xl);
  background: var(--surface-bg);
}

.question-block {
  padding: var(--space-xl);
}

.question {
  margin-bottom: var(--space-sm);
  font-family: var(--font-family-reading);
  font-size: var(--font-size-reading-default);
  line-height: var(--line-height-reading-default);
}

.attribution {
  margin-bottom: 0;
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.qa-item .answer,
.qa-item .video {
  width: 100%;
}

.qa-item .video-media {
  border-right: 0;
  border-bottom: 0;
  border-left-width: 0.5rem;
  border-radius: 0;
}

.qa-item .transcript {
  margin-bottom: var(--space-xl);
}

.content-empty {
  width: 100%;
  margin: 0;
  padding: var(--space-xl);
  border: 0.0625rem solid var(--line);
  border-radius: var(--radius-lg);
  color: var(--surface-ink-muted);
  background: var(--surface-panel);
  text-align: center;
}

.ask-module {
  padding-block: calc(var(--layout-section-space) - var(--space-sm));
  background: var(--brand-gold-100);
}

.ask-module--airing {
  padding-block: var(--space-xl);
}

.ask-module__inner {
  max-width: 47.5rem;
  text-align: center;
}

.ask-module .eyebrow {
  margin-bottom: var(--space-md);
  font-size: var(--font-size-utility-eyebrow);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-utility-eyebrow);
  letter-spacing: var(--letter-spacing-utility-eyebrow);
  text-transform: uppercase;
}

.ask-module h2 {
  margin-bottom: var(--space-md);
  font-size: var(--font-size-heading-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h2);
}

.ask-module p:not(.eyebrow) {
  margin-bottom: var(--space-md);
}

.ask-module .primary-link {
  display: inline-flex;
  min-height: 2.75rem;
  align-items: center;
  padding-inline: var(--space-md);
  border: 0.125rem solid var(--accent-edge);
  border-radius: var(--radius-md);
  font-weight: var(--font-weight-semibold);
}

.ask-module .manage-link {
  margin-bottom: 0;
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.ask-module .manage-link a {
  font-weight: var(--font-weight-semibold);
  text-decoration-color: currentColor;
  text-decoration-skip-ink: none;
}

.broadcast-stack--closing {
  max-width: 47.5rem;
}

.broadcast-stack--closing > h2 {
  font-size: var(--font-size-heading-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h3);
}

.hall-footer {
  padding-block: 2.1875rem 2.4375rem;
  color: var(--surface-ink-inverse);
  background: var(--surface-inverse);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.hall-footer__grid {
  display: grid;
  grid-template-columns: 14rem minmax(0, 1fr);
  column-gap: 4rem;
  row-gap: 0;
  align-items: start;
}

.hall-footer p {
  margin-bottom: 0;
  color: inherit;
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.footer-brand .hall-logo {
  width: 11.875rem;
  margin-bottom: var(--space-sm);
}

.footer-primary-copy {
  display: flex;
  min-height: 8.625rem;
  flex-direction: column;
  gap: var(--space-sm);
}

.footer-disclosure .disclaimer {
  margin: 0;
  color: inherit;
}

.footer-disclosure .disclaimer p + p {
  margin-top: var(--space-sm);
}

.footer-disclosure .paid-for {
  font-weight: var(--font-weight-semibold);
}

.footer-trust {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.footer-trust ul {
  display: flex;
  margin-bottom: 0;
  padding: 0;
  flex-wrap: wrap;
  list-style: none;
}

.footer-trust li {
  display: inline-flex;
  align-items: center;
}

.footer-trust li + li::before {
  margin-inline: var(--space-sm);
  content: "·";
  font-size: var(--font-size-body-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-body-small);
}

.footer-trust a {
  font-weight: var(--font-weight-bold);
}

.footer-trust nav a {
  position: relative;
  min-width: 0;
}

/* Keep short links easy to tap without adding space before the separator. */
.footer-trust nav a::after {
  position: absolute;
  inset-block: 0;
  left: 50%;
  width: 100%;
  min-width: var(--target-min);
  transform: translateX(-50%);
  content: "";
}

.footer-trust .symmetry-link {
  padding-top: 0.125rem;
}

.hall-footer a {
  color: var(--surface-ink-inverse);
  text-decoration-color: currentColor;
  text-decoration-skip-ink: none;
}

.campaign-links--footer {
  display: flex;
  width: min(100%, 46.875rem);
  padding-top: var(--space-lg);
  border-top: 0.0625rem solid currentColor;
  flex-direction: column;
  gap: 0;
  grid-column: 2;
  color: var(--brand-text-on-dark);
}

.campaign-links--footer a {
  color: inherit;
}

.campaign-links--footer .campaign-links__eyebrow {
  width: min(100%, 35.625rem);
  margin: 0 0 0.875rem;
  font-size: var(--font-size-body-small);
  line-height: 1.25rem;
}

.campaign-links--footer .campaign-links__official,
.campaign-links--footer .campaign-links__official a,
.campaign-links--footer .campaign-links__social,
.campaign-links--footer .campaign-links__social a {
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-body-small);
}

.campaign-links--footer .campaign-links__official,
.campaign-links--footer .campaign-links__social {
  width: min(100%, 35.625rem);
  margin: 0;
}

.campaign-links--footer .campaign-links__official {
  margin-bottom: 0.15625rem;
}

.campaign-links--footer .campaign-links__social {
  min-height: 2.75rem;
  justify-content: flex-start;
}

.hall-footer .footer-demo {
  grid-column: 1 / -1;
  margin-top: 4rem;
  opacity: 0.78;
}

/* D5 verification journey. The routes remain server-rendered and
 * JavaScript-optional; these rules apply the approved shared presentation only. */
.verification-page {
  padding-block: var(--layout-section-space);
  background: var(--surface-bg);
}

.verification-page__shell {
  position: relative;
}

.verification-exit {
  position: absolute;
  top: 0;
  right: 0;
  color: var(--ink);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
  gap: 0.3em;
  text-decoration: none;
}

.verification-exit__label {
  text-decoration: underline;
  text-underline-offset: 0.16em;
}

.verification-page__measure {
  width: min(100%, 35rem);
  margin-inline: auto;
}

.verification-eyebrow {
  margin-bottom: var(--space-sm);
  font-size: var(--font-size-utility-eyebrow);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-utility-eyebrow);
  letter-spacing: var(--letter-spacing-utility-eyebrow);
  text-transform: uppercase;
}

.verification-page h1 {
  margin-bottom: var(--space-md);
  font-size: var(--font-size-heading-h1);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h1);
}

.verification-intro {
  margin-bottom: var(--space-lg);
  /* This step prints the submitter's address back to them, and an email has no
   * break opportunity a browser will take. Same idiom as
   * `.campaign-links__label`, which carries arbitrary campaign URLs. */
  overflow-wrap: anywhere;
  font-size: var(--font-size-body-large);
  line-height: var(--line-height-body-large);
}

.verification-stepper {
  display: flex;
  width: 100%;
  margin: 0 0 2.5rem;
  padding: 0;
  list-style: none;
}

.verification-stepper li {
  position: relative;
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
  gap: var(--space-xs);
  align-items: center;
  color: var(--surface-ink-muted);
  text-align: center;
}

.verification-stepper li + li::before {
  position: absolute;
  top: 0.5625rem;
  right: 50%;
  width: calc(100% - 2.75rem);
  height: 0.125rem;
  transform: translateX(-1.375rem);
  background: var(--brand-gold-700);
  content: "";
}

.verification-stepper__indicator {
  position: relative;
  z-index: 1;
  display: grid;
  width: 1.75rem;
  height: 1.25rem;
  border: 0.125rem solid var(--accent-edge);
  border-radius: 999px;
  place-items: center;
  color: var(--ink);
  background: var(--surface-bg);
  font-size: var(--font-size-label-small);
  font-weight: var(--font-weight-bold);
  line-height: 1;
}

.verification-stepper__label {
  font-size: var(--font-size-label-small);
  line-height: var(--line-height-label-small);
}

.verification-stepper .is-current {
  color: var(--ink);
  font-weight: var(--font-weight-bold);
}

.verification-stepper .is-current .verification-stepper__indicator {
  border-color: var(--brand-gold-700);
  color: var(--surface-ink-inverse);
  background: var(--brand-gold-700);
}

.verification-card {
  width: min(40rem, calc(100vw - (2 * var(--layout-page-gutter))));
  margin-left: 50%;
  padding: var(--space-xl) 2.5rem;
  transform: translateX(-50%);
  border: 0.0625rem solid var(--line);
  border-radius: var(--radius-xl);
  background: var(--surface-panel);
}

.verification-card h2 {
  margin-bottom: var(--space-sm);
  font-size: var(--font-size-heading-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h3);
}

.verification-card > p {
  margin-bottom: var(--space-lg);
}

.verification-form {
  display: grid;
  gap: var(--space-lg);
}

.verification-field {
  display: grid;
  gap: var(--space-sm);
}

.verification-field label,
.verification-checks legend,
.verification-name-fields legend,
.verification-locality legend {
  color: var(--ink);
  font-size: var(--font-size-label-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-label-default);
}

.verification-field input[type="email"],
.verification-field input[type="text"],
.verification-field input[type="tel"] {
  width: 100%;
  min-width: 0;
  height: 3.25rem;
  padding-inline: var(--space-md);
  border: 0.125rem solid var(--accent-edge);
  border-radius: var(--radius-md);
  color: var(--ink);
  background: var(--surface-bg);
  font: inherit;
}

.verification-field input::placeholder {
  color: var(--surface-ink-muted);
  opacity: 1;
}

.verification-field input[aria-invalid="true"] {
  border-color: var(--color-feedback-error);
}

/* The hall's state, shown beside the ZIP field. It is displayed from hall config
   and never asked (identity-verification §2.3), so it reads as context rather
   than as another thing to fill in. */
.verification-field-hint {
  margin: 0;
  color: var(--surface-ink-muted);
  font-size: var(--font-size-label-small);
  line-height: var(--line-height-label-default);
}

.verification-primary {
  display: inline-flex;
  min-height: 3.25rem;
  align-items: center;
  justify-content: center;
  padding: 0.75rem var(--space-lg);
  border: 0.125rem solid var(--accent-edge);
  border-radius: var(--radius-md);
  color: var(--surface-ink-inverse);
  background: var(--accent-raw);
  font-family: var(--font-family-body);
  font-size: var(--font-size-body-large);
  font-weight: var(--font-weight-bold);
  line-height: 1.5rem;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}

.verification-primary:hover {
  color: var(--surface-ink-inverse);
  text-decoration: underline;
  text-decoration-skip-ink: none;
}

.verification-privacy-note {
  display: flex;
  margin-top: var(--space-xl);
  padding: var(--space-md) var(--space-lg);
  border: 0.0625rem solid var(--line);
  border-radius: var(--radius-md);
  gap: var(--space-md);
  background: var(--surface-panel);
}

.verification-privacy-note > span {
  width: 0.25rem;
  flex: 0 0 0.25rem;
  align-self: stretch;
  border-radius: 999px;
  background: var(--accent-edge);
}

.verification-privacy-note p {
  margin: 0;
}

/* The demonstration hall's one-time code, printed on the page because its fake mailer
 * delivers nothing (town-hall-lifecycle §2). Read aloud and typed, so the digits get the
 * width of a heading and the spacing of a code. */
.verification-demo-code {
  display: flex;
  margin: 0 0 var(--space-lg);
  padding: var(--space-md) var(--space-lg);
  border-left: 0.25rem solid var(--accent-edge);
  border-radius: var(--radius-md);
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-sm) var(--space-md);
  background: var(--surface-panel);
}

.verification-demo-code-label {
  color: var(--surface-ink-muted);
  font-size: var(--font-size-utility-eyebrow);
  font-weight: var(--font-weight-semibold);
  letter-spacing: var(--letter-spacing-utility-eyebrow);
  text-transform: uppercase;
}

.verification-demo-code-value {
  font-size: var(--font-size-heading-h3);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.16em;
}

.verification-error {
  margin: 0;
  color: var(--color-feedback-error);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-body-small);
}

.verification-error--banner {
  margin-bottom: var(--space-lg);
  padding: var(--space-md);
  border-left: 0.25rem solid var(--color-feedback-error);
  background: var(--brand-gold-50);
}

.verification-hint,
.verification-support-note,
.verification-secondary-actions,
.verification-secondary-link {
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.verification-support-note {
  margin: var(--space-lg) 0 0;
}

.verification-secondary-actions {
  display: flex;
  margin-top: var(--space-lg);
  flex-wrap: wrap;
  gap: var(--space-sm) var(--space-lg);
}

.verification-secondary-actions form {
  margin: 0;
}

.verification-text-action {
  padding: 0;
  border: 0;
  color: var(--ink);
  background: transparent;
  font: inherit;
  text-decoration: underline;
  text-decoration-color: var(--accent-edge);
  text-underline-offset: 0.16em;
  cursor: pointer;
}

.verification-secondary-link {
  display: block;
  margin-top: var(--space-md);
  text-align: center;
}

.verification-checks,
.verification-name-fields,
.verification-locality {
  display: grid;
  margin: 0;
  padding: 0;
  border: 0;
  gap: var(--space-md);
}

.verification-checks label {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}

.verification-checks input,
.verification-choice input {
  width: 1.5rem;
  height: 1.5rem;
  flex: 0 0 auto;
  accent-color: var(--accent-raw);
}

.verification-name-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 8rem;
  gap: var(--space-md);
}

/* ADR-0015 display choice (identity §2.2): checking "display as Anonymous" hides
   the name inputs and swaps the locality previews to "Anonymous" — CSS `:has()`
   only, no JavaScript, matching the `.verification-choice:has(...)` idiom above.
   Progressive enhancement: a browser without `:has()` keeps the name fields
   visible and the named preview shown; the server drops name values unread when
   the box is checked, so behavior is correct either way. */
.verification-anonymous-toggle {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}

.verification-anonymous-toggle input {
  width: 1.5rem;
  height: 1.5rem;
  flex: 0 0 auto;
  accent-color: var(--accent-raw);
}

.verification-anonymous-note {
  color: var(--surface-ink-muted);
  font-size: var(--font-size-sm, 0.875rem);
  margin: 0;
}

.verification-name-fields:has(.verification-anonymous-toggle input:checked)
  .verification-name-grid {
  display: none;
}

.preview-display-anonymous {
  display: none;
}

form:has(.verification-anonymous-toggle input:checked) .preview-display-anonymous {
  display: inline;
}

form:has(.verification-anonymous-toggle input:checked) .preview-display-named {
  display: none;
}

.verification-locality {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.verification-locality legend {
  grid-column: 1 / -1;
}

.verification-choice {
  display: grid;
  padding: var(--space-md);
  border: 0.125rem solid var(--line);
  border-radius: var(--radius-md);
  grid-template-columns: 1.5rem 1fr;
  gap: var(--space-xs) 0.75rem;
  background: var(--surface-bg);
  cursor: pointer;
}

.verification-choice:has(input:checked) {
  border-color: var(--accent-edge);
}

.verification-choice > span {
  font-weight: var(--font-weight-semibold);
}

.verification-choice small {
  grid-column: 2;
  color: var(--surface-ink-muted);
}

.verification-card--result {
  text-align: center;
}

.verification-card--result > .verification-support-note:only-child {
  margin-block: calc(var(--space-lg) / 2);
}

.verification-card--result .verification-privacy-note {
  text-align: left;
}

.verification-card--district-refusal {
  display: grid;
  gap: var(--space-md);
  text-align: left;
}

.verification-card--district-refusal > h2,
.verification-card--district-refusal > p,
.verification-card--district-refusal > form,
.verification-card--district-refusal .verification-privacy-note {
  margin: 0;
}

.verification-card--district-refusal .verification-primary {
  min-width: min(13.75rem, 100%);
}

.verification-card--district-refusal .verification-privacy-note {
  padding: var(--space-md) 1.25rem;
  gap: 0.75rem;
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.verification-card--district-refusal .verification-secondary-link {
  margin: 0;
  justify-content: flex-start;
  color: var(--ink);
  font-weight: var(--font-weight-semibold);
}

.verification-result-icon {
  display: grid;
  width: 3.25rem;
  height: 3.25rem;
  margin: 0 auto var(--space-md);
  border-radius: 50%;
  place-items: center;
  color: var(--surface-ink-inverse);
  background: var(--accent-raw);
  font-size: var(--font-size-heading-h3);
  font-weight: var(--font-weight-bold);
}

/* Question submission and submitter self-service. These pages follow the
 * verification journey and use the same compact, mobile-first reading measure. */
.submitter-page main {
  display: grid;
  width: min(calc(100% - (2 * var(--layout-page-gutter))), 45rem);
  margin-inline: auto;
  padding-block: var(--layout-section-space);
  gap: var(--space-xl);
}

.submitter-page .submitter-page__content,
.submitter-page .submitter-settings-card {
  min-width: 0;
  margin: 0;
  padding: 2.5rem;
  border: 0.0625rem solid var(--line);
  border-radius: var(--radius-xl);
  background: var(--surface-panel);
  box-shadow: var(--shadow-md);
}

.submitter-page .submitter-page__content h2,
.submitter-page .submitter-settings-card h2 {
  margin-bottom: var(--space-sm);
  font-size: var(--font-size-heading-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h2);
}

.submitter-page .submitter-page__intro {
  margin-bottom: var(--space-xl);
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-large);
  line-height: var(--line-height-body-large);
}

.submitter-page .identity-preview {
  margin: 0 0 var(--space-lg);
  padding: var(--space-md) var(--space-lg);
  border-left: 0.25rem solid var(--accent-edge);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  color: var(--surface-ink-inverse);
  background: var(--ink-700);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.submitter-page .identity-preview strong {
  font-weight: var(--font-weight-bold);
}

.submitter-page .question-form {
  display: grid;
  margin-top: var(--space-xl);
  gap: var(--space-lg);
}

.submitter-page .question-form > label[for="question-text"] {
  margin-bottom: calc(-1 * var(--space-md));
  font-size: var(--font-size-label-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-label-default);
}

.submitter-page .question-form textarea {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  min-height: 11.25rem;
  padding: 0.8125rem var(--space-md);
  resize: vertical;
  border: 0.125rem solid var(--accent-edge);
  border-radius: var(--radius-md);
  color: var(--ink);
  background: var(--surface-bg);
  font-family: var(--font-family-body);
  font-size: var(--font-size-body-default);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-body-default);
}

.submitter-page .question-form textarea:focus-visible {
  outline: 0.1875rem solid var(--focus-ring);
  outline-offset: 0.125rem;
}

.submitter-page .field-hint {
  margin: calc(-1 * var(--space-md)) 0 0;
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.submitter-page .callout {
  padding: var(--space-md) var(--space-lg);
  border: 0.0625rem solid var(--brand-gold-300);
  border-radius: var(--radius-md);
  background: var(--brand-gold-50);
}

.submitter-page .callout strong {
  display: block;
  margin-bottom: var(--space-xs);
  font-size: var(--font-size-body-large);
  line-height: var(--line-height-body-large);
}

.submitter-page .callout p {
  margin: 0;
}

.submitter-page .field-check {
  display: grid;
  min-height: var(--target-min);
  grid-template-columns: 1.5rem minmax(0, 1fr);
  gap: 0.75rem;
  align-items: start;
  font-weight: var(--font-weight-semibold);
  cursor: pointer;
}

.submitter-page .field-check input {
  width: 1.5rem;
  height: 1.5rem;
  margin: 0;
  accent-color: var(--accent-raw);
}

.submitter-page .field-check + .field-hint {
  margin-top: calc(-1 * var(--space-lg));
  padding-left: 2.25rem;
}

.submitter-page .submitter-primary,
.submitter-page .my-question button,
.submitter-page .submitter-settings-card button {
  display: inline-flex;
  box-sizing: border-box;
  min-height: 3.25rem;
  align-items: center;
  justify-content: center;
  padding: 0.75rem var(--space-lg);
  border: 0.125rem solid var(--surface-inverse);
  border-radius: var(--radius-md);
  font-family: var(--font-family-body);
  font-size: var(--font-size-body-default);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-body-default);
  text-align: center;
  cursor: pointer;
}

.submitter-page .submitter-primary {
  width: 100%;
  color: var(--surface-ink-inverse);
  background: var(--surface-inverse);
}

.submitter-page .my-question button,
.submitter-page .submitter-settings-card button {
  color: var(--surface-ink-inverse);
  background: var(--surface-inverse);
  font-size: var(--font-size-body-large);
}

.submitter-page .submitter-settings-card button {
  border-color: var(--ink);
  color: var(--ink);
  background: var(--surface-bg);
}

.submitter-page .submitter-primary:hover,
.submitter-page .my-question button:hover,
.submitter-page .submitter-settings-card button:hover {
  text-decoration: underline;
  text-decoration-thickness: 0.125rem;
  text-underline-offset: 0.1875rem;
  text-decoration-skip-ink: none;
}

.submitter-page .danger,
.submitter-page .my-question button.danger {
  border-color: var(--color-feedback-error);
  color: var(--surface-ink-inverse);
  background: var(--color-feedback-error);
}

.submitter-page .quota-note,
.submitter-page .deadline-note {
  margin: var(--space-lg) 0 0;
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.submitter-page .deadline-note {
  margin-top: var(--space-sm);
  font-weight: var(--font-weight-semibold);
}

.submitter-page .standalone-link {
  margin: var(--space-lg) 0 0;
}

.submitter-page .standalone-link a {
  font-weight: var(--font-weight-bold);
}

.submitter-page .submitter-page__content--ask .standalone-link a {
  font-size: var(--font-size-body-large);
}

.submitter-page .form-error,
.submitter-page .form-notice {
  margin: var(--space-lg) 0 0;
  padding: var(--space-md);
  border-left: 0.25rem solid currentColor;
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-body-small);
}

.submitter-page .form-error {
  color: var(--color-feedback-error);
  background: color-mix(in srgb, var(--color-feedback-error) 8%, var(--surface-bg));
}

.submitter-page .form-notice {
  color: var(--feedback-success-700);
  background: color-mix(in srgb, var(--feedback-success-700) 8%, var(--surface-bg));
}

.submitter-page .empty-state {
  margin: var(--space-xl) 0 0;
  padding: var(--space-xl);
  border: 0.0625rem dashed var(--line);
  border-radius: var(--radius-lg);
  color: var(--surface-ink-muted);
  background: var(--surface-bg);
  text-align: center;
}

.submitter-page .my-question-list {
  display: grid;
  margin: var(--space-xl) 0 0;
  padding: 0;
  gap: var(--space-lg);
  list-style: none;
}

.submitter-page .my-question {
  min-width: 0;
  padding: var(--space-lg);
  border: 0.0625rem solid var(--line);
  border-left: 0.25rem solid var(--accent-edge);
  border-radius: var(--radius-lg);
  background: var(--surface-bg);
  box-shadow: var(--shadow-sm);
}

.submitter-page .question-status {
  display: flex;
  margin: 0 0 var(--space-md);
  flex-wrap: wrap;
  gap: var(--space-sm);
  align-items: center;
}

.submitter-page .question-status small {
  margin-left: auto;
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-caption);
  line-height: var(--line-height-body-caption);
}

.submitter-page .status-pill {
  display: inline-flex;
  min-height: 1.75rem;
  align-items: center;
  padding: var(--space-xs) 0.75rem;
  border: 0.0625rem solid var(--line);
  border-radius: 999px;
  color: var(--ink);
  background: var(--surface-panel);
  box-shadow: var(--shadow-sm);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-body-small);
}

.submitter-page .my-question blockquote {
  margin: 0;
  overflow-wrap: anywhere;
  text-align: center;
  font-family: var(--font-family-reading);
  font-size: var(--font-size-reading-default);
  line-height: var(--line-height-reading-default);
}

.submitter-page .question-actions {
  display: flex;
  margin-top: var(--space-lg);
  flex-wrap: wrap;
  gap: var(--space-sm);
}

.submitter-page .question-actions form,
.submitter-page .submitter-settings-card form {
  margin: 0;
}

.submitter-page .question-actions button {
  padding: 0.6875rem var(--space-md);
}

.submitter-page .question-actions button:not(.danger) {
  min-width: 11.75rem;
}

.submitter-page .question-actions button.danger {
  min-width: 14.3125rem;
}

.submitter-page .submitter-settings-card h2 {
  font-size: var(--font-size-heading-h3);
  line-height: var(--line-height-heading-h3);
}

.submitter-page .submitter-settings-card p {
  margin-bottom: var(--space-md);
}

.submitter-page .submitter-settings-card p:last-of-type {
  margin-bottom: var(--space-lg);
}

/* Pointer targets (public-hall-page §3 "44px minimum targets"; design brief §2).
 *
 * A control a person taps is at least `--target-min` in both dimensions. The
 * floor is stated once, here, because it belongs to every interactive element on
 * these pages and to no one component.
 *
 * It covers a link inside running text, which WCAG 2.5.5 does not require of it:
 * this project's rule reaches every visible target. `inline-flex` also keeps such
 * a link on one line, so a person taps one box and not two smaller ones.
 *
 * Form controls are reached by element, not by class, because the ask, gate,
 * removal and my-questions forms carry no component classes. Buttons outside a
 * form size themselves in their own D3 rules above. */

.campaign-links__official a,
.campaign-links__social a,
.footer-trust a,
.standalone-link a,
.verification-exit,
.verification-secondary-actions a,
.verification-text-action,
main p a,
.verification-checks label a {
  display: inline-flex;
  min-width: var(--target-min);
  min-height: var(--target-min);
  align-items: center;
}

/* Start alignment, the default, keeps a left-aligned label on its edge and grows
 * the target into the gap beside it. This row is set from the right, so it grows
 * the other way and keeps its flush edge. */
.campaign-links--header .campaign-links__social a {
  justify-content: flex-end;
}

/* Full width, so the centred link keeps the line it is centred on. */
.verification-secondary-link {
  display: flex;
  min-height: var(--target-min);
  align-items: center;
  justify-content: center;
}

.verification-checks label,
.submitter-page .field-check {
  min-height: var(--target-min);
}

main form button,
main form select,
main form textarea,
main form input:not([type="checkbox"]):not([type="radio"]) {
  min-height: var(--target-min);
}

@media (max-width: 64rem) {
  .hall-footer__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-lg);
  }

  .footer-brand,
  .footer-primary-copy,
  .campaign-links--footer {
    width: 100%;
    grid-column: 1 / -1;
  }
}

@media (min-width: 47.5625rem) and (max-width: 51rem) {
  .masthead--campaign-links {
    grid-template-columns: 13rem minmax(0, 1fr);
    column-gap: var(--space-xl);
  }

  .masthead--campaign-links > .hall-logo {
    width: 13rem;
  }

  .masthead--campaign-links .masthead-copy {
    width: 100%;
  }
}

@media (max-width: 49.75rem) {
  .footer-trust ul,
  .campaign-links--footer .campaign-links__social {
    gap: 0.75rem var(--space-lg);
  }

  .footer-trust li + li::before,
  .campaign-links--footer .campaign-links__social li + li::before {
    margin: 0;
    content: none;
  }
}

@media (max-width: 47.5rem) {
  .masthead {
    display: flex;
    min-height: 11.5rem;
    padding-block: var(--space-md);
    flex-direction: column;
    gap: 0.75rem;
    align-items: flex-start;
  }

  .masthead .hall-logo {
    display: block;
    width: 9.375rem;
    min-height: 0;
  }

  .masthead-copy {
    width: 100%;
    justify-self: auto;
    text-align: left;
  }

  .masthead--campaign-links {
    min-height: 20.25rem;
  }

  .masthead--campaign-links > .hall-logo {
    width: 9.375rem;
  }

  .masthead--campaign-links .masthead-copy {
    width: 100%;
    text-align: left;
  }

  .masthead--campaign-links .masthead-tagline {
    font-size: clamp(1rem, calc(0.875rem + 0.526vw), 1.125rem);
    line-height: clamp(1.375rem, calc(1.125rem + 1.053vw), 1.625rem);
  }

  .masthead--campaign-links .masthead-copy > p:not(.masthead-tagline),
  .campaign-links--header .campaign-links__official,
  .campaign-links--header .campaign-links__official a {
    font-size: clamp(0.75rem, calc(0.6875rem + 0.263vw), 0.8125rem);
    line-height: clamp(1.125rem, calc(1.0625rem + 0.263vw), 1.1875rem);
  }

  .campaign-links--header {
    width: 100%;
    margin-top: clamp(0.75rem, 2vw, var(--space-md));
  }

  .campaign-links--header::before {
    margin-bottom: clamp(0.75rem, 2vw, var(--space-md));
  }

  .campaign-links--header .campaign-links__eyebrow {
    font-size: clamp(0.625rem, calc(0.5625rem + 0.263vw), 0.6875rem);
    line-height: clamp(0.9375rem, calc(0.875rem + 0.263vw), 1rem);
  }

  .campaign-links--header .campaign-links__social,
  .campaign-links--header .campaign-links__social a {
    font-size: clamp(0.8125rem, calc(0.75rem + 0.263vw), 0.875rem);
    line-height: clamp(1.1875rem, calc(1.0625rem + 0.526vw), 1.3125rem);
  }

  .campaign-links--header .campaign-links__social a {
    display: inline-flex;
    min-height: var(--target-min);
    align-items: center;
  }

  .disclosure-band .content-shell {
    min-height: 7.25rem;
  }

  .candidate-hero__inner {
    width: calc(100% - 2.5rem);
    min-height: 0;
    padding-block: var(--space-md);
    grid-template-columns: 1fr;
    gap: 0.75rem;
    justify-items: center;
  }

  .candidate-hero__copy {
    width: 100%;
  }

  .candidate-name-row {
    flex-direction: column;
    gap: var(--space-sm);
    align-items: flex-start;
    margin-bottom: 0.75rem;
  }

  .incumbent-label {
    min-height: 1.75rem;
    padding: 0.3125rem 0.4375rem;
  }

  .candidate-hero .candidate-party {
    width: 100%;
    margin-top: 0.75rem;
    text-align: left;
  }

  .candidate-hero h1 {
    font-size: var(--font-size-heading-h1);
    line-height: var(--line-height-heading-h1);
  }

  .candidate-office,
  .candidate-hero .candidate-party {
    font-size: var(--font-size-label-default);
    line-height: var(--line-height-label-default);
  }

  .candidate-hero .candidate-lede {
    margin-top: 0.75rem;
    font-size: var(--font-size-heading-h4);
    line-height: var(--line-height-heading-h4);
    font-weight: var(--font-weight-semibold);
  }

  .candidate-committee {
    width: 100%;
    margin-top: 0;
    font-size: var(--font-size-body-small);
    line-height: var(--line-height-body-small);
  }

  .candidate-portrait {
    width: min(18.75rem, 100%);
    height: 17.8125rem;
  }

  .info-document__title {
    padding-block: var(--layout-section-space);
  }

  .info-document__title h1 {
    font-size: var(--font-size-heading-h2);
    line-height: var(--line-height-heading-h2);
  }

  .info-document__body h2 {
    font-size: var(--font-size-heading-h3);
    line-height: var(--line-height-heading-h3);
  }

  .info-document--takedown .info-document__body {
    padding-block: var(--layout-section-space);
  }

  .takedown-form-panel,
  .takedown-receipt {
    padding: var(--space-lg) var(--space-md);
  }

  .takedown-submit {
    width: 100%;
  }

  .takedown-receipt__targets {
    grid-template-columns: 1fr;
  }

  .takedown-receipt__targets > div + div {
    border-top: 0.0625rem solid var(--brand-gold-300);
    border-left: 0;
  }

  .broadcast-stack {
    gap: var(--space-md);
  }

  .broadcast-stack > h2 {
    font-size: var(--font-size-heading-h4);
    line-height: var(--line-height-heading-h4);
  }

  .video {
    gap: var(--space-md);
  }

  .video-media,
  .qa-item .video-media {
    border-left-width: 0.375rem;
    border-radius: var(--radius-lg);
  }

  .video-poster-play {
    width: 3.5rem;
    height: 3.5rem;
  }

  .video-poster-play span {
    border-top-width: 0.625rem;
    border-bottom-width: 0.625rem;
    border-left-width: 0.9375rem;
  }

  .transcript {
    width: calc(100% - 2.5rem);
    padding: var(--space-md);
  }

  .qa-intro h2 {
    font-size: var(--font-size-heading-h3);
    font-weight: var(--font-weight-semibold);
    line-height: var(--line-height-heading-h3);
  }

  .qa-item {
    border-radius: var(--radius-xl);
  }

  .question-block {
    padding: var(--space-md) var(--space-lg);
  }

  .qa-item .transcript {
    margin-bottom: var(--space-lg);
  }

  .ask-module {
    padding-block: 2.5rem;
  }

  .ask-module--airing {
    padding-block: var(--space-lg);
  }

  .ask-module h2 {
    font-size: var(--font-size-heading-h3);
    font-weight: var(--font-weight-semibold);
    line-height: var(--line-height-heading-h3);
  }

  .broadcast-stack--closing > h2 {
    font-size: var(--font-size-heading-h4);
    line-height: var(--line-height-heading-h4);
  }

  .hall-footer {
    padding-block: var(--space-xl);
  }

  .hall-footer__grid {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
  }

  .footer-brand .hall-logo {
    width: 10.625rem;
  }

  .submitter-page main {
    padding-block: var(--space-xl);
  }

  .submitter-page .submitter-page__content,
  .submitter-page .submitter-settings-card {
    padding: var(--space-lg) var(--space-md);
  }

  .submitter-page .submitter-page__content h2 {
    font-size: var(--font-size-heading-h3);
    line-height: var(--line-height-heading-h3);
  }

  .submitter-page .identity-preview,
  .submitter-page .callout,
  .submitter-page .my-question {
    padding-inline: var(--space-md);
  }

  .submitter-page .question-status small {
    width: 100%;
    margin-left: 0;
  }

  .submitter-page .question-actions {
    display: grid;
  }

  .submitter-page .question-actions form,
  .submitter-page .question-actions button,
  .submitter-page .submitter-settings-card button {
    width: 100%;
  }

  .submitter-page .question-actions button:not(.danger),
  .submitter-page .question-actions button.danger {
    min-width: 0;
    width: 100%;
  }

  .footer-trust,
  .footer-trust nav,
  .footer-trust ul {
    width: 100%;
  }

  .footer-trust ul {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, max-content));
    gap: 0.75rem var(--space-lg);
  }

  .footer-trust li,
  .footer-trust li a {
    min-height: var(--target-min);
    align-items: center;
  }

  .campaign-links--footer {
    width: 100%;
    padding-top: var(--space-lg);
  }

  .verification-page {
    padding-block: var(--space-xl);
  }

  .verification-page__shell {
    width: min(calc(100% - (2 * var(--layout-page-gutter))), 100%);
  }

  .verification-exit {
    position: static;
    display: flex;
    margin-bottom: var(--space-xl);
    justify-content: flex-end;
  }

  .verification-page h1 {
    font-size: var(--font-size-heading-h1);
    line-height: var(--line-height-heading-h1);
  }

  .verification-stepper {
    margin-bottom: var(--space-xl);
  }

  .verification-stepper li + li::before {
    width: calc(100% - 2.25rem);
    transform: translateX(-1.125rem);
  }

  .verification-stepper__label {
    font-size: 0.6875rem;
  }

  .verification-card {
    width: 100%;
    margin-left: 0;
    padding: var(--space-lg) var(--space-md);
    transform: none;
  }

  .verification-card--district-refusal {
    padding-inline: 1.25rem;
  }

  .verification-primary {
    width: 100%;
  }

  .verification-privacy-note {
    padding: var(--space-md);
  }

  .verification-secondary-actions,
  .verification-name-grid,
  .verification-locality {
    grid-template-columns: 1fr;
  }

  .verification-secondary-actions {
    display: grid;
  }

  .verification-locality legend {
    grid-column: 1;
  }
}

@media (max-width: 22rem) {
  /* A long district name can set the hero grid item's minimum width above the
   * 320px reflow floor. Preserve the indivisible label where it fits, and let
   * it wrap only at the narrow widths where the guard would cause overflow. */
  .district-label {
    white-space: normal;
  }

  /* Two max-content columns overflow once WCAG text-spacing overrides are
   * applied at narrow mobile widths. Keep the established two-column mobile
   * treatment where it fits, and stack only below 352px. */
  .footer-trust ul {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .public-hall *,
  .public-hall *::before,
  .public-hall *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* Priming uses the shared hall shell and a participation-first content layout. */
.priming-page {
  overflow-x: visible;
}

.priming-page .masthead--campaign-links {
  min-height: 14.125rem;
}

.priming-page .hall-footer {
  padding-bottom: var(--space-xl);
}

.priming-page .hall-footer .footer-demo {
  margin-top: var(--space-xl);
  font-size: var(--font-size-body-caption);
  line-height: var(--line-height-body-caption);
}

.priming-section {
  padding-block: var(--layout-section-space);
}

.priming-gate {
  display: grid;
  max-width: 40rem;
  margin-inline: auto;
  gap: var(--space-lg);
}

.priming-page .priming-gate > *,
.priming-page .priming-invitation > *,
.priming-page .priming-candidate > *,
.priming-page .priming-next > * {
  margin: 0;
}

.priming-page h1 {
  font-size: var(--font-size-heading-h1);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading-h1);
  text-wrap: pretty;
}

.priming-page h2 {
  font-size: var(--font-size-heading-h3);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-heading-h3);
}

.priming-page .priming-eyebrow {
  color: var(--surface-ink-muted);
  font-size: var(--font-size-label-default);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-label-default);
  text-transform: uppercase;
}

.priming-page .priming-lead {
  font-size: var(--font-size-body-large);
  line-height: var(--line-height-body-large);
}

.priming-page .priming-note {
  color: var(--surface-ink-muted);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.priming-action {
  width: 14.5rem;
  max-width: 100%;
  justify-self: start;
  font-size: var(--font-size-heading-h4);
}

.priming-gate-action {
  width: 13.75rem;
}

.priming-gate input[type="password"] {
  width: 100%;
  min-width: 0;
  min-height: 3.25rem;
  padding: 0.75rem var(--space-md);
  border: 0.0625rem solid var(--accent-edge);
  border-radius: var(--radius-md);
  color: var(--ink);
  background: var(--surface-bg);
  font: inherit;
}

.priming-gate input[aria-invalid="true"] {
  border-color: var(--color-feedback-error);
}

.priming-page .priming-error {
  margin: 0;
  color: var(--color-feedback-error);
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

.priming-intake {
  display: grid;
  grid-template-columns: minmax(0, 41.5rem) minmax(0, 18.8125rem);
  gap: var(--space-xl);
  align-items: start;
  justify-content: space-between;
}

.priming-invitation {
  display: grid;
  min-width: 0;
  gap: calc(var(--space-md) + var(--space-xs));
}

.priming-page .priming-manage {
  font-size: var(--font-size-label-default);
  line-height: var(--line-height-label-default);
}

.priming-manage a {
  display: inline-flex;
  min-height: var(--target-min);
  align-items: center;
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.priming-candidate {
  display: grid;
  min-width: 0;
  gap: calc(var(--space-sm) + var(--space-xs));
}

.priming-candidate > p {
  color: var(--surface-ink-muted);
}

.priming-candidate .candidate-portrait {
  width: 100%;
  max-width: 18.8125rem;
  height: auto;
  aspect-ratio: 301 / 286;
}

.priming-next {
  display: grid;
  margin-top: var(--space-xl);
  padding: var(--space-lg);
  gap: calc(var(--space-sm) + var(--space-xs));
  background: var(--surface-panel);
}

@media (max-width: 47.5rem) {
  .priming-page .content-shell {
    width: calc(100% - 4rem);
    padding-inline: 0;
  }

  .priming-page .masthead--campaign-links {
    min-height: 0;
    padding-block: var(--space-md) 1.375rem;
  }

  .priming-page .masthead-copy .masthead-tagline {
    font-size: var(--font-size-heading-h4);
    line-height: var(--line-height-heading-h4);
    text-wrap: pretty;
  }

  .priming-page .masthead-copy > p:not(.masthead-tagline),
  .priming-page .campaign-links--header .campaign-links__official,
  .priming-page .campaign-links--header .campaign-links__official a {
    font-size: var(--font-size-body-small);
    line-height: var(--line-height-body-small);
  }

  .priming-page h1 {
    font-size: var(--font-size-heading-h2);
    line-height: var(--line-height-heading-h2);
  }

  .priming-gate,
  .priming-gate .verification-form {
    gap: calc(var(--space-md) + var(--space-xs));
  }

  .priming-intake {
    grid-template-columns: minmax(0, 1fr);
  }

  .priming-action {
    width: 100%;
  }

  .priming-candidate {
    justify-items: center;
    text-align: center;
  }

  .priming-page .hall-footer .footer-demo {
    margin-top: var(--space-sm);
  }

  .priming-page .campaign-links--footer .campaign-links__social {
    column-gap: var(--space-xs);
  }
}

.priming-page .campaign-links--header {
  margin-top: 0.6875rem;
}

.priming-page .campaign-links--header::before {
  margin-bottom: 0.4375rem;
}

.priming-page .campaign-links--header .campaign-links__eyebrow,
.priming-page .campaign-links--header .campaign-links__official {
  margin-bottom: 0;
}

.priming-page .campaign-links--header .campaign-links__official a {
  min-height: var(--target-min);
}

.priming-page .campaign-links--header .campaign-links__social a {
  display: inline-flex;
  min-height: 2.75rem;
  align-items: center;
  font-size: var(--font-size-body-small);
  line-height: var(--line-height-body-small);
}

@media (min-width: 75rem) {
  .priming-page .masthead--campaign-links {
    padding-block: 2.25rem 0.8125rem;
    align-items: start;
  }

  .priming-page .masthead--campaign-links > .hall-logo {
    margin-top: 1.25rem;
  }
}

@media (max-width: 47.5rem) {
  .priming-page .footer-trust ul {
    grid-template-columns: repeat(2, max-content);
    gap: 0 var(--space-sm);
  }

  .priming-page .footer-trust li a {
    min-height: 2.75rem;
  }

  .priming-page .footer-trust li:nth-child(even)::before {
    margin-inline: 0 var(--space-sm);
    content: "·";
  }

  .priming-page .campaign-links--footer .campaign-links__social {
    column-gap: 0;
  }

  .priming-page .campaign-links--footer .campaign-links__social li + li::before {
    margin-inline: var(--space-xs);
    content: "·";
  }
}

@media (max-width: 23.75rem) {
  .priming-page .footer-trust ul {
    grid-template-columns: minmax(0, 1fr);
  }

  .priming-page .footer-trust li:nth-child(even)::before {
    content: none;
  }
}

.verification-checks legend,
.verification-name-fields legend {
  margin-inline-start: 2.25rem;
  padding: 0;
  font-weight: var(--font-weight-bold);
}

.verification-checks input,
.verification-anonymous-toggle input {
  margin: 3px 0 0;
}

.verification-checks {
  row-gap: 16px;
}

.verification-name-fields {
  margin-block-start: -28px;
}

.verification-checks label:has(input[name="content_policy_agreed"]) > span {
  position: relative;
  top: calc((var(--line-height-body-default) - var(--target-min)) / 2);
  line-height: var(--target-min);
}

@media (max-width: 47.5rem) {
  .verification-checks label:has(input[name="content_policy_agreed"]) > span {
    position: static;
    line-height: var(--line-height-body-default);
  }

  /* Each document title stays on one line. The link keeps the 44px target floor. */
  .verification-checks label:has(input[name="content_policy_agreed"]) a {
    white-space: nowrap;
  }

  .verification-name-fields {
    margin-block-start: -8px;
  }
}

.verification-locality legend {
  font-size: var(--font-size-label-default);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-label-default);
  position: relative;
  top: -2px;
}
