/* ==================================================================
 * WIST · Avisos
 * ------------------------------------------------------------------
 * Un solo aspecto para los avisos de WooCommerce, en su sitio.
 *
 * SIN TOAST, POR DECISION
 *
 * Hasta el 2026-09-17 las confirmaciones se movian a una capa flotante
 * (toast) con wist-avisos.js. El dueno lo retiro: al mover el nodo, la
 * pagina daba un salto antes de que el toast apareciera, y el aviso
 * estilizado en su sitio cumple igual. Todos los avisos, incluidas las
 * confirmaciones, se quedan donde WooCommerce los pone.
 *
 * EL COLOR
 *
 * Los colores semanticos del sistema no tienen variante oscura, asi que un
 * fondo tintado se rompe en modo oscuro. El fondo va en superficie y el color
 * semantico se reserva para el icono y el contorno, que es lo que comunica el
 * tipo sin depender del modo.
 * ================================================================== */

/* ------------------------------------------------------------------ */
/* Base compartida                                                     */
/* ------------------------------------------------------------------ */

/* Rejilla y no flex: WooCommerce emite varios mensajes como varios <li>, y en
   una fila flex cada uno seria un item y se alinearian en horizontal. Con dos
   columnas, el icono ocupa la primera y cada mensaje cae en la segunda, uno
   debajo de otro. */
.woocommerce-error,
.woocommerce-message,
.woocommerce-info {
	display: grid;
	grid-template-columns: auto 1fr;
	align-items: start;
	column-gap: var(--wist-space-150);
	row-gap: var(--wist-space-100);
	box-sizing: border-box;
	margin: 0 0 var(--wist-space-300);
	padding: var(--wist-space-200);
	border: 0;
	border-radius: var(--wist-radius-md);
	background: var(--wist-surface);
	box-shadow: inset 0 0 0 1px var(--wist-border-decorative);
	color: var(--wist-ink-primary);
	font-family: Inter, system-ui, sans-serif;
	font-size: 0.9375rem;
	line-height: 1.5;
	list-style: none;
}

/* WooCommerce los emite como listas. Con un solo mensaje la vinieta sobra, y
   con varios el aviso ya es la agrupacion. */
.woocommerce-error li,
.woocommerce-message li,
.woocommerce-info li {
	grid-column: 2;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* ------------------------------------------------------------------ */
/* El icono                                                            */
/* -------------------------------------------------------------------
 * Va como mascara y no como imagen de fondo: asi toma el color del token y
 * responde al modo oscuro sin necesidad de dos archivos.
 * ------------------------------------------------------------------ */

.woocommerce-error::before,
.woocommerce-message::before,
.woocommerce-info::before {
	content: "";
	grid-column: 1;
	grid-row: 1;
	width: 20px;
	height: 20px;
	margin-top: 2px;
	background-color: currentColor;
	-webkit-mask: var(--wist-aviso-icono) center / contain no-repeat;
	mask: var(--wist-aviso-icono) center / contain no-repeat;
}

/* ------------------------------------------------------------------ */
/* Los tres tipos                                                      */
/* ------------------------------------------------------------------ */

.woocommerce-error {
	box-shadow: inset 0 0 0 1px var(--wist-danger-base);
	--wist-aviso-icono: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4'/%3E%3Cpath d='M12 16h.01'/%3E%3C/svg%3E");
}

.woocommerce-error::before {
	color: var(--wist-danger-base);
}

.woocommerce-message {
	box-shadow: inset 0 0 0 1px var(--wist-success-base);
	--wist-aviso-icono: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E");
}

.woocommerce-message::before {
	color: var(--wist-success-base);
}

.woocommerce-info {
	box-shadow: inset 0 0 0 1px var(--wist-info-base);
	--wist-aviso-icono: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4'/%3E%3Cpath d='M12 8h.01'/%3E%3C/svg%3E");
}

.woocommerce-info::before {
	color: var(--wist-info-base);
}

/* ------------------------------------------------------------------ */
/* El boton que WooCommerce mete dentro del aviso                      */
/* -------------------------------------------------------------------
 * "Ver carrito" y compañia. Van como accion secundaria: el aviso confirma
 * algo que ya pasó, no compite con la accion principal de la pagina.
 * ------------------------------------------------------------------ */

.woocommerce-error .button,
.woocommerce-message .button,
.woocommerce-info .button {
	grid-column: 2;
	justify-self: start;
	min-height: 2.25rem;
	padding: 6px 16px;
	border: 0;
	border-radius: var(--wist-radius-xs);
	background: transparent;
	box-shadow: inset 0 0 0 1px var(--wist-border-interactive);
	color: var(--wist-ink-primary);
	font-family: Inter, system-ui, sans-serif;
	font-size: 0.875rem;
	font-weight: 500;
	white-space: nowrap;
}

.woocommerce-error .button:hover,
.woocommerce-message .button:hover,
.woocommerce-info .button:hover {
	background: var(--wist-canvas);
}
