/* Canonical composition for focused authentication and account-lifecycle pages. */
.fs-auth-body {
  background: linear-gradient(
    180deg,
    var(--fs-public-pale-gradient-start),
    var(--fs-public-page) 25rem
  );
}

.fs-auth-body .fs-public-page-shell {
  min-block-size: 100svh;
}

.fs-auth-body .fs-public-main {
  width: min(calc(100% - (2 * var(--fs-public-gutter))), var(--fs-public-standard));
  min-width: 0;
  flex: 1 0 auto;
  display: grid;
  align-items: center;
  padding-block: clamp(1.5rem, 4vw, 3rem);
}

/* Login is one integrated premium surface with credential and agency guidance regions. */
.fs-auth-login {
  width: min(100%, 62rem);
  min-width: 0;
  margin-inline: auto;
}

.fs-auth-panel {
  min-width: 0;
  padding-block: clamp(1.5rem, 3.5vw, 2.5rem);
  display: grid;
  grid-template-columns: minmax(18rem, 1.12fr) minmax(15rem, 0.88fr);
  align-items: center;
  gap: clamp(1.75rem, 4vw, 3.5rem);
}

.fs-auth-panel__primary {
  min-width: 0;
  display: grid;
  gap: 1rem;
}

.fs-auth-panel__header h1 {
  margin: 0;
  font-size: clamp(1.85rem, 3.4vw, 2.7rem);
}

.fs-auth-panel__header > p:last-child {
  max-width: 34rem;
  margin: 0.75rem 0 0;
}

.fs-auth-form {
  display: grid;
  gap: 0.8rem;
}

.fs-auth-form > .fs-public-button--primary {
  width: 100%;
  margin-top: 0.15rem;
}

.fs-auth-panel[data-fs-premium-title-region] .fs-public-field,
.fs-auth-panel[data-fs-premium-title-region] .fs-auth-support-links a {
  color: var(--fs-public-inverse);
}

.fs-auth-panel[data-fs-premium-title-region] .fs-auth-panel__header > p:last-child,
.fs-auth-panel[data-fs-premium-title-region] .fs-auth-microcopy {
  color: var(--fs-public-inverse-82);
}

.fs-auth-microcopy {
  margin: 0;
  font-size: 0.85rem;
}

.fs-auth-support-links {
  padding-top: 0.9rem;
  border-top: 1px solid var(--fs-public-inverse-20);
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 1rem;
}

.fs-auth-support-links a,
.fs-auth-login__support a,
.fs-reset-link,
.fs-setup-link {
  font-weight: 800;
  text-underline-offset: 0.2em;
}

.fs-auth-login__support {
  min-width: 0;
  padding-left: clamp(1.5rem, 3vw, 2.5rem);
  border-left: 1px solid var(--fs-public-inverse-20);
}

.fs-auth-login__support h2 {
  margin: 0;
  font-size: clamp(1.45rem, 2.5vw, 2rem);
}

.fs-auth-login__support > p:not(.fs-public-eyebrow) {
  margin: 0.8rem 0 0;
  color: var(--fs-public-inverse-82);
}

.fs-auth-login__guidance {
  margin-top: 1.35rem;
  border-top: 1px solid var(--fs-public-inverse-20);
}

.fs-auth-login__guidance p {
  margin: 0;
  padding-top: 0.7rem;
}

.fs-auth-login__guidance p:nth-child(even) {
  padding-top: 0.2rem;
  color: var(--fs-public-inverse-82);
}

/* Shared status treatment stays within the focused auth family. */
.fs-auth-alert,
.fs-reset-note,
.fs-setup-note {
  padding: 0.8rem 0.9rem;
  border-left: 0.25rem solid var(--fs-public-teal);
  color: var(--fs-public-teal-dark);
  background: var(--fs-public-pale);
  font-weight: 750;
}

.fs-auth-alert--error {
  border-left-color: var(--fs-public-danger);
  color: var(--fs-public-danger-dark);
  background: var(--fs-public-danger-pale);
}

.fs-auth-field input[aria-invalid="true"] {
  border-color: var(--fs-public-danger);
  background: var(--fs-public-danger-pale);
}

.fs-auth-field input:-webkit-autofill,
.fs-auth-field input:-webkit-autofill:hover,
.fs-auth-field input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--fs-public-ink);
  box-shadow: 0 0 0 1000px var(--fs-public-surface) inset;
  caret-color: var(--fs-public-ink);
}

/* Recovery and setup use the canonical public card, field, action, and form primitives. */
.fs-auth-state {
  width: min(100%, 64rem);
  min-width: 0;
  margin-inline: auto;
}

.fs-auth-state > :where(.fs-reset-card, .fs-setup-card) {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 0.82fr) minmax(20rem, 1.18fr);
  align-items: center;
  gap: clamp(1.5rem, 4vw, 3.5rem);
}

.fs-auth-state__intro {
  min-width: 0;
}

.fs-reset-card h1,
.fs-setup-card h1,
.fs-register-card h1,
.fs-verify-card h1,
.fs-change-card h1 {
  margin: 0;
  font-size: clamp(1.9rem, 4vw, 2.75rem);
}

.fs-reset-eyebrow,
.fs-setup-eyebrow {
  margin: 0 0 0.75rem;
  color: var(--fs-public-teal);
  font-size: 0.74rem;
  font-weight: 900;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.fs-reset-copy,
.fs-setup-copy {
  color: var(--fs-public-muted);
}

.fs-auth-state-actions {
  align-items: center;
}

.fs-auth-state-actions :is(.fs-reset-link, .fs-setup-link) {
  padding-block: 0.65rem;
}

.fs-auth-subordinate-path {
  margin: 1.25rem 0 0;
  padding-top: 1rem;
  border-top: 1px solid var(--fs-public-line);
}

.fs-reset-form,
.fs-setup-form,
.fs-register-form,
.fs-verify-form,
.fs-change-form {
  min-width: 0;
}

.fs-password-requirements {
  margin: 0;
  padding: 0.8rem 0;
  border-block: 1px solid var(--fs-public-line);
  color: var(--fs-public-muted);
  font-size: 0.9rem;
  font-weight: 500;
}

.fs-password-control {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.5rem;
}

.fs-password-control .fs-public-button {
  min-width: 4.75rem;
  padding-inline: 0.8rem;
}

.fs-verified-account-identity h2 {
  margin: 0;
  font-size: 1.2rem;
}

.fs-verified-account-identity dl {
  margin: 1rem 0 0;
  display: grid;
  gap: 0.75rem;
}

.fs-verified-account-identity dl > div {
  display: grid;
  grid-template-columns: minmax(6rem, 0.35fr) minmax(0, 1fr);
  gap: 0.75rem;
}

.fs-verified-account-identity dt {
  font-weight: 850;
}

.fs-verified-account-identity dd {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
}

.fs-verified-account-identity p {
  margin: 0.9rem 0 0;
  color: var(--fs-public-muted);
  font-size: 0.85rem;
}

.fs-reset-button,
.fs-setup-button {
  width: 100%;
}

/* Existing account-lifecycle consumers retain safe containment in this canonical owner. */
.fs-auth-panel:not([data-fs-premium-title-region]),
.fs-register-card,
.fs-verify-card,
.fs-change-card {
  min-width: 0;
  padding: clamp(1.5rem, 3vw, 2rem);
  border: 1px solid var(--fs-public-line);
  border-radius: var(--fs-public-radius-lg);
  background: var(--fs-public-surface);
  box-shadow: var(--fs-public-shadow-soft);
}

.fs-auth-form,
.fs-register-form,
.fs-verify-form,
.fs-change-form {
  margin-top: 1.25rem;
  display: grid;
  gap: 0.9rem;
}

.fs-register-field,
.fs-verify-field,
.fs-change-field {
  display: grid;
  gap: 0.4rem;
  font-size: 0.9rem;
  font-weight: 850;
}

.fs-register-field input,
.fs-verify-field input,
.fs-change-field input {
  width: 100%;
  min-width: 0;
  min-height: var(--fs-public-control-height);
  padding: 0.7rem 0.8rem;
  border: 1px solid var(--fs-public-line-strong);
  border-radius: var(--fs-public-radius-sm);
  color: var(--fs-public-ink);
  background: var(--fs-public-surface);
  caret-color: var(--fs-theme-color-primary);
  font: inherit;
  font-size: 1rem;
}

html[data-fs-account-registration] .fs-register-card,
html[data-fs-email-verification] .fs-verify-card,
html[data-fs-password-setup] .fs-setup-card,
html[data-fs-reset-password] .fs-reset-card,
html[data-fs-change-password] .fs-change-card {
  overflow-wrap: anywhere;
}

@media (max-width: 56rem) {
  .fs-auth-panel {
    grid-template-columns: 1fr;
    align-items: start;
    gap: 1.5rem;
  }

  .fs-auth-login__support {
    padding: 1.5rem 0 0;
    border-top: 1px solid var(--fs-public-inverse-20);
    border-left: 0;
  }

  .fs-auth-login__guidance {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 1.25rem;
  }

  .fs-auth-login__guidance p:nth-child(n + 3) {
    margin-top: 0.75rem;
  }

  .fs-auth-state > :where(.fs-reset-card, .fs-setup-card) {
    grid-template-columns: 1fr;
    align-items: start;
  }
}

@media (max-width: 48rem), (orientation: landscape) and (max-height: 30rem) {
  .fs-auth-body .fs-public-main {
    align-items: start;
    padding-block: 1rem var(--fs-public-section-space);
  }

  .fs-auth-panel {
    padding-block: 1.35rem;
  }
}

@media (max-width: 30rem) {
  .fs-auth-panel {
    padding-block: 1.25rem;
  }

  .fs-auth-panel__header h1,
  .fs-reset-card h1,
  .fs-setup-card h1 {
    font-size: 1.75rem;
  }

  .fs-auth-login__guidance,
  .fs-password-control {
    grid-template-columns: 1fr;
  }

  .fs-password-control .fs-public-button {
    width: 100%;
  }

  .fs-auth-state > :where(.fs-reset-card, .fs-setup-card) {
    gap: 1.25rem;
  }

  .fs-verified-account-identity dl > div {
    grid-template-columns: 1fr;
    gap: 0.2rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .fs-auth-body .fs-public-button,
  .fs-auth-body .fs-public-nav__link {
    transition: none;
  }
}

/* A single recovery field needs a compact reading form. */
.fs-auth-state:has([data-fs-forgot-password-form-shell]) { width: min(100%, 36rem); }
.fs-auth-state > [data-fs-forgot-password-form-shell] { display: block; }
.fs-auth-state:has([data-fs-forgot-password-form-shell]) .fs-reset-form { margin-top: 1.5rem; }
