:root {
  --public-page-gutter: var(--ac-page-gutter);
  --public-content-max-width: var(--ac-container-width);
  --color-background: var(--ac-color-canvas);
  --color-surface: var(--ac-color-surface);
  --color-surface-raised: var(--ac-color-surface);
  --color-text: var(--ac-color-text);
  --color-text-secondary: var(--ac-color-text-muted);
  --color-text-inverse: var(--ac-color-text-inverse);
  --color-border: var(--ac-color-border);
  --color-signal: var(--ac-color-accent);
  --color-signal-muted: var(--ac-color-accent-muted);
  --color-success-muted: color-mix(in srgb, var(--ac-color-brand-teal) 10%, transparent);
  --color-warning-muted: color-mix(in srgb, var(--ac-color-brand-slate-blue) 10%, transparent);
  --color-error-muted: color-mix(in srgb, var(--ac-color-brand-burgundy) 10%, transparent);
  --color-success: var(--ac-color-brand-teal);
  --color-warning: var(--ac-color-brand-slate-blue);
  --color-error: var(--ac-color-brand-burgundy);
  --color-control-border: var(--ac-color-control-border);
  --font-ui: var(--ac-font-ui);
  --font-editorial: var(--ac-font-editorial);
  --font-metadata: var(--ac-font-ui);
  --font-size-label: 11px;
  --font-weight-semibold: var(--ac-font-weight-semibold);
  --radius-card: 10px;
  --radius-pill: 999px;
}

body.public-site {
  min-width: 0;
  background: var(--color-background);
  line-height: 1.5;
}

.public-site a {
  text-decoration: none;
}

.public-site .ac-text-link {
  text-decoration: underline;
}

.public-site input::placeholder,
.public-site textarea::placeholder {
  color: var(--color-text-secondary);
  opacity: 1;
}

.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.public-eyebrow {
  margin: 0;
}

.directory-validation:empty {
  display: none;
}

.directory-validation.validation-summary-valid {
  display: none;
}

.directory-validation {
  margin-bottom: 16px;
  padding: 12px 16px;
  border-left: 3px solid var(--color-error);
  background: var(--color-error-muted);
  color: var(--color-error);
  font-size: 14px;
}

.directory-validation ul {
  margin: 0;
  padding-left: 20px;
}

.source-icon {
  display: grid;
  width: 42px;
  height: 42px;
  flex: none;
  overflow: hidden;
  place-items: center;
  border: 1px solid var(--ac-color-brand-navy);
  border-radius: var(--radius-card);
  background: var(--ac-color-brand-navy);
  color: var(--color-text-inverse);
}

.source-icon--image {
  border-color: var(--color-control-border);
  background: var(--color-surface);
}

.source-icon svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5;
}

.source-icon__accent {
  stroke: color-mix(in srgb, var(--ac-color-brand-teal) 50%, white);
}

.source-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.source-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  padding: 4px 7px;
  border: 1px solid transparent;
  border-radius: var(--radius-pill);
  background: var(--color-signal-muted);
  color: var(--color-text);
  font-family: var(--font-metadata);
  font-size: 12px;
  font-weight: var(--font-weight-semibold);
  line-height: 18px;
  text-transform: uppercase;
}

.source-badge--paid,
.source-badge--subscription-required,
.source-badge--invitation-only {
  border-color: var(--color-warning);
  background: var(--color-warning-muted);
  color: var(--color-warning);
}

.source-badge--free,
.source-badge--public {
  border-color: var(--color-success);
  background: var(--color-success-muted);
  color: var(--color-success);
}

.source-badge--access {
  border-color: var(--color-border);
  background: var(--color-background);
  color: var(--color-text-secondary);
}

.source-badge__detail {
  padding-left: 5px;
  border-left: 1px solid currentColor;
  opacity: 0.75;
}

/* One footer composition serves every public page, including the landing page. */
.public-site .public-footer { display: block; padding-block: 1.75rem; background: var(--landing-canvas); }

.public-footer__content { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem 2rem; }

.public-footer__content .ac-brand-lockup { display: block; width: 12rem; height: auto; }

.public-footer__links { display: flex; align-items: center; justify-content: end; flex-wrap: wrap; gap: 0.75rem 1.25rem; font-size: 0.8rem; }

.public-footer__links a[aria-current="page"] { color: var(--ac-color-text-inverse); text-decoration-color: var(--ac-color-accent); }

@media (max-width: 48rem) {
  .public-footer__content { flex-direction: column; align-items: start; }
  .public-footer__links { justify-content: start; }
}

@media (forced-colors: active) {
  .public-site .public-footer { background: Canvas; color: CanvasText; }
  .public-footer__links a[aria-current="page"] { color: LinkText; }
}

/* Error recovery follows the public editorial hierarchy. */
.public-error { max-width: 720px; margin: clamp(3rem, 8vw, 7rem) auto; padding: 0 1.5rem; }

.public-error h1 { font-family: var(--font-editorial); font-size: clamp(2.5rem, 6vw, 4.5rem); line-height: 1.08; }

.public-error > p { max-width: 58ch; }

.public-error__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }

.public-error__reference { margin-top: 2.5rem; font-size: .875rem; }
