/**
 * notice.css — komunikaty WooCommerce: sukces, błąd, informacja.
 *
 * KOMPONENT, NIE SEKCJA (reguła 18): ten sam znacznik wypisują
 * woocommerce/notices/{success,error,notice}.php na koszyku, w kasie,
 * na karcie produktu i w koncie klienta — cztery miejsca od pierwszego
 * dnia. Konstrukcja z widoku 3 makiety (cart-views.html): studzienka
 * z ikoną, treść, ewentualna akcja po prawej.
 *
 * Wymaga tokens.css i base.css. Klasy .dc-notice* stoją OBOK klas
 * WooCommerce (.woocommerce-message / -error / -info), których szukają
 * cart.js i checkout.js — same klasy wtyczki nie niosą tu żadnego stylu,
 * bo arkusze WooCommerce są zdjęte (functions.php,
 * dc_dequeue_woocommerce_styles()).
 *
 * KOLORY STANÓW BEZ NOWYCH TOKENÓW. Makieta ma zieleń i czerwień w pięciu
 * alfach każdą (.08 / .09 / .13 / .14 / .28 / .3). Paleta ma po jednym
 * tokenie na stan (--dc-success, --dc-danger) i drabinkę alfy tylko dla
 * złota — tinty stanów składa więc color-mix() z tokenu i przezroczystości.
 * Zysk: w motywie ciemnym oba tokeny się przełączają, a tint idzie za nimi
 * bez ani jednej reguły [data-theme] (reguła 10). Stopnie mieszanki
 * odpowiadają drabince złota: 10 % tło (jak a10), 15 % studzienka (a15),
 * 30 % obwódka (a30). Informacja bierze złoto wprost z drabinki.
 *
 * Cień: makietowe 0 8px 26px .07 to --dc-shadow-md (0 5 18 .07) —
 * stopień „dymki i pola" z design-audit.md C.4, dokładnie ta rola.
 */

/* ==========================================================================
   1. OPAKOWANIE WOOCOMMERCE
   wc_print_notices() owija komunikaty w .woocommerce-notices-wrapper
   zawsze, także pusty. Odstęp pod spodem tylko wtedy, gdy coś jest w środku.
   ========================================================================== */

.woocommerce-notices-wrapper:not(:empty) {
  margin-block-end: var(--dc-space-20);
}

/* Lista błędów: WooCommerce wypisuje <ul role="alert"> — semantykę listy
   i tak zastępuje rola, więc punktory i wcięcie schodzą tu, nie przez
   role="list" (reguła 5 dotyczy list, które listami zostają). */
.dc-notice-list {
  display: flex;
  flex-direction: column;
  gap: var(--dc-space-12);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* ==========================================================================
   2. KOMUNIKAT
   Makieta: padding 18/20, promień 18, obwódka 1 px, gap 14 — wszystko
   trafia w tokeny bez scalania.
   ========================================================================== */

.dc-notice {
  display: flex;
  align-items: center;
  gap: var(--dc-space-14);
  padding: var(--dc-space-18) var(--dc-space-20);
  border: var(--dc-border) solid var(--dc-border-line);
  border-radius: var(--dc-radius-18);
  background-color: var(--dc-surface-glass);
  box-shadow: var(--dc-shadow-md);
  color: var(--dc-text);
  font-size: var(--dc-text-md);
  line-height: var(--dc-leading-snug);
}

.dc-notice + .dc-notice {
  margin-block-start: var(--dc-space-12);
}

/* Studzienka ikony: 38 px z makiety scalone do 40 (C.8: studzienka 40 / r12).
   Kolor kreski ustawia wariant niżej. */
.dc-notice__icon {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--dc-space-40);
  height: var(--dc-space-40);
  border: var(--dc-border) solid var(--dc-border-accent);
  border-radius: var(--dc-radius-12);
  background-color: var(--dc-accent-a15);
  color: var(--dc-accent-strong);
}

/* Treść: tytuł krojem wystawowym 14,5 -> --dc-text-md / 700 jak w makiecie.
   flex-wrap + space-between: odnośnik lub przycisk z WooCommerce („Zobacz
   koszyk", „Cofnij?") staje po prawej jak akcja z makiety, a przy braku
   miejsca schodzi pod tekst. */
.dc-notice__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--dc-space-10) var(--dc-space-16);
  font-family: var(--dc-font-display);
  font-weight: var(--dc-weight-bold);
}

/* Akcja w komunikacie — WooCommerce wypisuje ją jako <a class="button">
   (np. „Zobacz koszyk" po dodaniu). Ranga 2 w małym rozmiarze
   (design-audit.md C.1): szkło, obwódka --dc-border-line, bez cienia,
   najazd wyłącznie kolorem. Promień 11 z makiety -> r12 (drabinka C.9:
   przycisk w karcie r18 z odstępem 18 -> dowolny; 12 jest najbliższy). */
.dc-notice__body .button,
.dc-notice__body .restore-item {
  display: inline-flex;
  align-items: center;
  padding: var(--dc-space-8) var(--dc-space-16);
  border: var(--dc-border) solid var(--dc-border-line);
  border-radius: var(--dc-radius-12);
  background-color: var(--dc-surface-glass);
  color: var(--dc-text);
  font-family: var(--dc-font-body);
  font-size: var(--dc-text-base);
  font-weight: var(--dc-weight-medium);
  line-height: var(--dc-leading-none);
  text-decoration: none;
  white-space: nowrap;
  transition:
    background-color var(--dc-duration-base) var(--dc-ease),
    border-color var(--dc-duration-base) var(--dc-ease),
    color var(--dc-duration-base) var(--dc-ease),
    transform var(--dc-duration-fast) var(--dc-ease-out);
}

.dc-notice__body .button:hover,
.dc-notice__body .restore-item:hover {
  border-color: var(--dc-accent-a50);
  background-color: var(--dc-surface);
  color: var(--dc-text);
}

.dc-notice__body .button:active,
.dc-notice__body .restore-item:active {
  transform: scale(0.97);
}

/* ==========================================================================
   3. WARIANTY
   ========================================================================== */

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

.dc-notice--success .dc-notice__icon {
  border-color: color-mix(in srgb, var(--dc-success) 30%, transparent);
  background-color: color-mix(in srgb, var(--dc-success) 15%, transparent);
  color: var(--dc-success);
}

/* Błąd: tytuł w barwie błędu jak tekst błędu pola z C.7 (6,57:1 na bieli). */
.dc-notice--error {
  border-color: color-mix(in srgb, var(--dc-danger) 30%, transparent);
  background-color: color-mix(in srgb, var(--dc-danger) 10%, var(--dc-surface));
  color: var(--dc-danger);
}

.dc-notice--error .dc-notice__icon {
  border-color: color-mix(in srgb, var(--dc-danger) 30%, transparent);
  background-color: color-mix(in srgb, var(--dc-danger) 15%, transparent);
  color: var(--dc-danger);
}

.dc-notice--error .dc-notice__body .button,
.dc-notice--error .dc-notice__body a {
  color: var(--dc-danger);
}

.dc-notice--info {
  border-color: var(--dc-border-accent);
  background-color: color-mix(in srgb, var(--dc-accent) 10%, var(--dc-surface));
  color: var(--dc-accent-strong);
}
