@layer components {
  /* Auth Layout
   * Split layout for sign-in, sign-up, forgot/reset password pages.
   * Mobile: stacked (brand top, form below).
   * Desktop: side-by-side (brand 40%, form 60%).
   */

  .auth {
    display: flex;
    flex-direction: column;
    min-height: 100dvh;
  }

  /* --- Brand panel --- */

  .auth__brand {
    background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark, oklch(38% 0.08 161)) 60%, color-mix(in oklch, var(--color-primary-dark, oklch(38% 0.08 161)) 85%, oklch(30% 0.06 77)) 100%);
    color: white;
    padding: var(--space-8) var(--space-6);
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    overflow: hidden;
  }

  .auth__brand::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
      radial-gradient(circle at 20% 80%, color-mix(in oklch, var(--color-accent, oklch(77% 0.14 77)) 15%, transparent) 0%, transparent 50%),
      radial-gradient(circle at 80% 20%, color-mix(in oklch, var(--color-accent, oklch(77% 0.14 77)) 10%, transparent) 0%, transparent 40%);
    pointer-events: none;
  }

  .auth__wordmark {
    font-size: 1.75rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    position: relative;
    z-index: 1;
  }

  .auth__tagline {
    font-size: 1.0625rem;
    opacity: 0.85;
    margin-block-start: var(--space-2);
    font-weight: 400;
    position: relative;
    z-index: 1;
    max-width: 22ch;
    line-height: 1.4;
  }

  /* --- Form panel --- */

  .auth__form {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: var(--space-8) var(--space-6);
    max-width: 28rem;
    width: 100%;
    margin-inline: auto;

    & h1 {
      font-size: 1.5rem;
      font-weight: 600;
      margin-block-end: var(--space-2);
    }

    & .subtitle {
      color: var(--color-text-muted);
      font-size: var(--font-size-small);
      margin-block-end: var(--space-6);
    }
  }

  /* --- Remember me + forgot password row --- */

  .auth__row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-block-end: var(--space-6);

    & a {
      font-size: var(--font-size-small);
      color: var(--color-primary);
      text-decoration: none;
      font-weight: 500;

      &:hover {
        text-decoration: underline;
      }
    }
  }

  /* --- Footer links --- */

  .auth__links {
    margin-block-start: var(--space-6);
    text-align: center;
    font-size: var(--font-size-small);
    color: var(--color-text-muted);

    & a {
      color: var(--color-primary);
      text-decoration: none;
      font-weight: 500;

      &:hover {
        text-decoration: underline;
      }
    }

    & p + p {
      margin-block-start: var(--space-2);
    }
  }

  /* --- Error alert --- */

  .auth__alert {
    padding: var(--space-3) var(--space-4);
    background: color-mix(in oklch, var(--color-error) 8%, var(--color-canvas));
    border: 1px solid color-mix(in oklch, var(--color-error) 30%, transparent);
    border-radius: var(--radius);
    color: var(--color-error);
    font-size: var(--font-size-small);
    margin-block-end: var(--space-4);
  }

  /* --- Desktop: side-by-side split --- */

  @media (min-width: 768px) {
    .auth {
      flex-direction: row;
    }

    .auth__brand {
      width: 40%;
      min-height: 100dvh;
      padding: var(--space-12);
    }

    .auth__wordmark {
      font-size: 2.25rem;
    }

    .auth__tagline {
      font-size: 1.25rem;
      margin-block-start: var(--space-3);
    }

    .auth__form {
      width: 60%;
      padding: var(--space-12);
    }
  }

  @media (min-width: 1200px) {
    .auth__brand {
      width: 38%;
    }

    .auth__form {
      width: 62%;
    }
  }
}
