/* Reusable components: buttons, forms, cards. */

@layer components {
  .btn {
    display: inline-flex; align-items: center; justify-content: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-5);
    border-radius: var(--radius-pill);
    font-weight: 600;
    font-size: var(--fs-400);
    line-height: 1;
    text-decoration: none;
    transition: background var(--dur-2) var(--easing),
                color      var(--dur-2) var(--easing),
                box-shadow var(--dur-2) var(--easing),
                transform  var(--dur-1) var(--easing);
    border: 1px solid transparent;
    user-select: none;
    cursor: pointer;
  }
  .btn:active { transform: translateY(1px); }

  .btn-primary {
    background: var(--color-deep-rose);
    color: var(--ink-on-rose);
    box-shadow: var(--shadow-1);
  }
  .btn-primary:hover { background: var(--color-rose); color: var(--ink-on-rose); }

  .btn-ghost {
    background: transparent;
    color: var(--ink-primary);
    border-color: var(--color-border);
  }
  .btn-ghost:hover {
    background: var(--surface-raised);
    border-color: var(--color-soft);
  }

  .btn-lg { padding: var(--space-4) var(--space-6); font-size: var(--fs-500); }
  .btn-block { width: 100%; }

  /* Forms */
  .form { display: grid; gap: var(--space-4); }
  .field { display: grid; gap: var(--space-2); }
  .field > span { font-weight: 600; font-size: var(--fs-300); color: var(--ink-secondary); letter-spacing: var(--letter-wide); text-transform: uppercase; }
  .field input[type="text"],
  .field input[type="email"],
  .field input[type="password"],
  .field input[type="number"],
  .field textarea,
  .field select {
    appearance: none;
    background: var(--surface-raised);
    border: 1px solid var(--color-border);
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-2);
    font-size: var(--fs-400);
    color: var(--ink-primary);
    transition: border-color var(--dur-2) var(--easing), box-shadow var(--dur-2) var(--easing);
  }
  .field input:focus, .field textarea:focus, .field select:focus {
    border-color: var(--color-rose);
    box-shadow: var(--focus-ring);
    outline: none;
  }
  .field .hint { color: var(--ink-muted); font-size: var(--fs-300); }

  /* Auth card */
  .auth-card {
    background: var(--surface-raised);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-3);
    padding: var(--space-7);
    max-width: 28rem;
    margin: var(--space-8) auto;
    box-shadow: var(--shadow-2);
  }
  .auth-card h1 {
    font-size: var(--fs-700);
    text-align: center;
    margin-bottom: var(--space-5);
  }
  .form-foot { text-align: center; color: var(--ink-secondary); margin-top: var(--space-3); font-size: var(--fs-300); }

  /* Generic cards */
  .card {
    background: var(--surface-raised);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-3);
    padding: var(--space-5);
    box-shadow: var(--shadow-1);
  }

  /* Flash messages and per-field errors */
  .flash-stack {
    max-width: 36rem;
    margin: var(--space-5) auto var(--space-3);
    display: grid;
    gap: var(--space-2);
  }
  .flash {
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-2);
    border: 1px solid var(--color-border);
    font-size: var(--fs-400);
    line-height: 1.5;
  }
  .flash-success {
    background: color-mix(in srgb, var(--color-sage) 18%, var(--surface-raised));
    border-color: color-mix(in srgb, var(--color-sage) 40%, var(--color-border));
    color: var(--ink-primary);
  }
  .flash-error {
    background: color-mix(in srgb, var(--color-deep-rose) 12%, var(--surface-raised));
    border-color: color-mix(in srgb, var(--color-deep-rose) 40%, var(--color-border));
    color: var(--ink-primary);
  }
  .flash-info {
    background: var(--surface-raised);
    border-color: var(--color-border);
    color: var(--ink-secondary);
  }
  .field-invalid input { border-color: var(--color-deep-rose); }
  .field-invalid input:focus { box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-deep-rose) 30%, transparent); }
  .field-error {
    color: var(--color-deep-rose);
    font-size: var(--fs-300);
  }

  /* Inline form (for header logout) and link-styled button */
  .inline-form { display: inline; }
  .link-button {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    color: inherit;
    font: inherit;
    text-decoration: underline;
  }
  .link-button:hover { color: var(--color-deep-rose); }
}
