@layer components {
  .flash {
    width: min(90%, var(--max-width));
    margin: var(--space-md) auto 0;
    box-sizing: border-box;

    display: flex;
    align-items: center;
    gap: var(--space-md);

    padding: var(--space-md) var(--space-lg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background-color: var(--color-surface);
    color: var(--color-text);

    line-height: 1.4;
  }

  .flash--notice {
    background-color: color-mix(in srgb, var(--color-success) 10%, var(--color-surface));
    border-color: color-mix(in srgb, var(--color-success) 35%, var(--color-border));
  }

  .flash--alert {
    background-color: color-mix(in srgb, var(--color-danger) 10%, var(--color-surface));
    border-color: color-mix(in srgb, var(--color-danger) 35%, var(--color-border));
  }

  .flash__icon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5em;
    height: 1.5em;
    line-height: 1;
    font-size: 1rem;
    font-variant-emoji: text;
  }

  .flash--notice .flash__icon { color: var(--color-success); }
  .flash--alert  .flash__icon { color: var(--color-danger); }

  .flash__text {
    flex: 1 1 auto;
    min-width: 0;
  }

  .flash__close {
    flex: 0 0 auto;
    background: transparent;
    border: 0;
    color: var(--color-text-muted);
    cursor: pointer;
    font-size: 1.25rem;
    line-height: 1;
    padding: 0;
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    transition:
      background-color 200ms cubic-bezier(0.22, 1, 0.36, 1),
      color 200ms cubic-bezier(0.22, 1, 0.36, 1);
  }
  .flash__close:hover {
    background-color: color-mix(in srgb, var(--color-text-muted) 12%, transparent);
    color: var(--color-text);
  }
  .flash__close:focus-visible {
    outline: 2px solid var(--color-link);
    outline-offset: 2px;
  }

  @media (prefers-reduced-motion: reduce) {
    .flash__close { transition: none; }
  }
}
