/**
 * Woo-RMA — Foglio di stile frontend.
 *
 * Stili LEGGERI e NON invasivi per tutte le classi `woo-rma-*` del frontend:
 * informativa precontrattuale art. 49, flusso di recesso (step1/step2/esito),
 * lookup ospite, pulsante di recesso, ricevuta e modulo tipo.
 *
 * Principi di personalizzabilità (tema / Elementor / Custom CSS):
 *  - TUTTO è governato da variabili CSS `--woo-rma-*` definite su `:root`. Per
 *    ritematizzare basta ridefinire una variabile (nel tema, nel Custom CSS del
 *    plugin o nel CSS personalizzato di Elementor) senza riscrivere le regole.
 *  - Namespace `woo-rma-` su ogni selettore: nessuna collisione col tema.
 *  - Niente `!important` e niente reset aggressivi: il tema resta sovrascrivibile
 *    e l'admin può ridefinire qualunque regola con una specificità minima.
 *  - Specificità volutamente bassa (selettori a classe singola dove possibile).
 *
 * @package WooRMA
 */

/* -------------------------------------------------------------------------
 * Variabili di tema — ridefinibili da tema/Elementor/Custom CSS.
 * ---------------------------------------------------------------------- */
:root {
	--woo-rma-spacing: 1rem;
	--woo-rma-spacing-sm: 0.5rem;
	--woo-rma-radius: 6px;
	--woo-rma-border: 1px solid var(--woo-rma-border-color);
	--woo-rma-border-color: rgba(0, 0, 0, 0.12);
	--woo-rma-bg-soft: rgba(0, 0, 0, 0.03);
	--woo-rma-accent: #2271b1;
	--woo-rma-accent-contrast: #fff;

	/* Pulsanti: usati solo dal fallback a specificita zero piu sotto, quando il
	 * tema non stila i `.button` del plugin. Ridefinibili come le altre. */
	--woo-rma-button-bg: var(--woo-rma-accent);
	--woo-rma-button-fg: var(--woo-rma-accent-contrast);
	--woo-rma-button-padding: 0.75em 1.5em;
	--woo-rma-text-muted: #555;
	--woo-rma-error: #b32d2e;
	--woo-rma-error-bg: rgba(179, 45, 46, 0.08);
	--woo-rma-success: #1a7f37;
	--woo-rma-max-width: 760px;
}

/* -------------------------------------------------------------------------
 * Informativa precontrattuale art. 49 (checkout, prodotto, email, pagina,
 * shortcode, step2). Wrapper + sezioni + accesso + modulo tipo.
 * ---------------------------------------------------------------------- */
.woo-rma-withdrawal-info,
.woo-rma-info {
	margin: var(--woo-rma-spacing) 0;
	font-size: 0.95em;
	line-height: 1.55;
}

/* Tab espandibile: <details>/<summary> dell'informativa. */
.woo-rma-info-toggle {
	border: var(--woo-rma-border);
	border-radius: var(--woo-rma-radius);
	background: var(--woo-rma-bg-soft);
	padding: 0;
	margin: var(--woo-rma-spacing) 0;
}

.woo-rma-info-toggle > .woo-rma-info-summary {
	cursor: pointer;
	padding: var(--woo-rma-spacing-sm) var(--woo-rma-spacing);
	font-weight: 600;
	list-style-position: inside;
}

.woo-rma-info-toggle > .woo-rma-info-summary:focus-visible {
	outline: 2px solid var(--woo-rma-accent);
	outline-offset: 2px;
}

.woo-rma-info-toggle[open] > .woo-rma-info-summary {
	border-bottom: var(--woo-rma-border);
}

.woo-rma-info-toggle > .woo-rma-info-body {
	padding: var(--woo-rma-spacing);
}

.woo-rma-info-title {
	font-size: 1.05em;
	margin: 0 0 var(--woo-rma-spacing-sm);
}

.woo-rma-info-intro {
	color: var(--woo-rma-text-muted);
	margin: 0 0 var(--woo-rma-spacing);
}

.woo-rma-info-section {
	margin: 0 0 var(--woo-rma-spacing-sm);
}

.woo-rma-info-section p {
	margin: 0 0 var(--woo-rma-spacing-sm);
}

.woo-rma-info-access {
	margin: var(--woo-rma-spacing-sm) 0 0;
}

.woo-rma-info-access-link {
	display: inline-block;
}

.woo-rma-withdrawal-info-link {
	white-space: nowrap;
}

/* Richiamo alla funzione di recesso online: un blocco riconoscibile (non una
 * riga di testo qualunque), cosi il canale piu rapido risalta rispetto al
 * modulo cartaceo sottostante. Bordo + sfondo tenue, stessa "grammatica"
 * visiva del resto del foglio (nessun colore nuovo, solo le variabili gia
 * definite in :root). */
.woo-rma-info-cta {
	border: var(--woo-rma-border);
	border-radius: var(--woo-rma-radius);
	background: var(--woo-rma-bg-soft);
	padding: var(--woo-rma-spacing);
	margin: var(--woo-rma-spacing-sm) 0 0;
}

.woo-rma-info-cta-text {
	margin: 0 0 var(--woo-rma-spacing-sm);
}

.woo-rma-info-cta .woo-rma-info-access {
	margin: 0;
}

/* Contesti specifici dell'informativa. */
.woo-rma-withdrawal-info--email {
	margin-top: var(--woo-rma-spacing);
}

.woo-rma-info-page {
	max-width: var(--woo-rma-max-width);
	margin-left: auto;
	margin-right: auto;
}

/* Shortcode [woo_rma_informativa_recesso]: solo testo semantico, nessuna
 * decorazione dal plugin (niente bordo/sfondo/padding/raggio), cosi il page
 * builder (Elementor, Avada) o il tema possono costruirci sopra il proprio
 * stile. Si azzera qui la decorazione del modulo tipo, che altrove (contesto
 * accordion) resta un riquadro con bordo/sfondo. Resta solo un margine
 * verticale minimo per separare i blocchi.
 *
 * Eccezione dichiarata: il richiamo alla funzione online (.woo-rma-info-cta)
 * MANTIENE qui il proprio bordo/sfondo/padding, diversamente dal modulo tipo.
 * Motivo: in questo contesto "piatto" il CTA sarebbe altrimenti indistinguibile
 * da un paragrafo qualsiasi, vanificando la gerarchia visiva richiesta (il
 * canale online deve risaltare sul modulo cartaceo). Resta comunque minima
 * (bordo sottile, nessun colore proprio, stesse variabili del resto del
 * foglio) e il page builder puo comunque sovrascriverla con selettori di pari
 * specificita. */
.woo-rma-info-plain {
	margin: var(--woo-rma-spacing) 0;
}

/* Il modulo tipo ha due contenitori annidati: il wrapper dello shortcode
 * (.woo-rma-info-model-form) e il riquadro del renderer (.woo-rma-model-form).
 * Entrambi sono decorati negli altri contesti: qui vanno azzerati tutti e due,
 * altrimenti resta un doppio bordo. */
.woo-rma-info-plain .woo-rma-info-model-form,
.woo-rma-info-plain .woo-rma-model-form {
	border: 0;
	border-radius: 0;
	background: none;
	padding: 0;
}

.woo-rma-info-plain .woo-rma-info-model-form {
	margin: var(--woo-rma-spacing) 0 0;
}

.woo-rma-info-plain .woo-rma-model-form {
	margin: 0;
}

/* Modulo tipo come sezione secondaria (non nascosta): tipografia piu piccola
 * e attenuata per l'etichetta "modalita alternativa e facoltativa", cosi il
 * blocco pesa visivamente meno del richiamo online, restando comunque
 * interamente nel DOM, leggibile e stampabile (nessun display:none). */
.woo-rma-info-model-form--secondary {
	font-size: 0.9em;
}

.woo-rma-info-model-form-label {
	color: var(--woo-rma-text-muted);
	font-style: italic;
	margin: 0 0 var(--woo-rma-spacing-sm);
}

/* Il renderer del modulo tipo usa un <h2>. Molti temi lo stilano come titolo di
 * pagina: su Avada arriva a 30px, quindi il modulo domina la pagina proprio
 * mentre l'etichetta lo dichiara secondario. Qui si riporta alla scala del
 * testo, ma solo dentro il blocco secondario: altrove il titolo resta quello
 * del tema. Il selettore ha specificita 0,0,2,0, sufficiente a battere le
 * regole generiche su `h2` senza competere con quelle dedicate del tema. */
.woo-rma-info-model-form--secondary .woo-rma-model-form-title {
	font-size: 1.05em;
	line-height: 1.4;
	margin: 0 0 var(--woo-rma-spacing-sm);
}

/* -------------------------------------------------------------------------
 * Modulo tipo di recesso (Allegato I, parte B). Reso sia inline sia dentro un
 * <details> richiudibile (step2: .woo-rma-model-form-wrapper).
 * ---------------------------------------------------------------------- */
.woo-rma-model-form,
.woo-rma-info-model-form {
	border: var(--woo-rma-border);
	border-radius: var(--woo-rma-radius);
	padding: var(--woo-rma-spacing);
	margin: var(--woo-rma-spacing) 0;
	background: var(--woo-rma-bg-soft);
}

.woo-rma-model-form-title {
	font-size: 1em;
	margin: 0 0 var(--woo-rma-spacing-sm);
}

.woo-rma-model-form-instructions,
.woo-rma-model-form-statement {
	color: var(--woo-rma-text-muted);
	margin: 0 0 var(--woo-rma-spacing-sm);
}

.woo-rma-model-form-fields {
	margin: 0;
}

.woo-rma-model-form-fields dt {
	font-weight: 600;
	margin-top: var(--woo-rma-spacing-sm);
}

.woo-rma-model-form-fields dd {
	margin: 0 0 var(--woo-rma-spacing-sm);
	min-height: 1.2em;
}

.woo-rma-model-form-wrapper {
	margin: var(--woo-rma-spacing) 0;
}

.woo-rma-model-form-wrapper > summary {
	cursor: pointer;
	font-weight: 600;
	padding: var(--woo-rma-spacing-sm) 0;
}

/* -------------------------------------------------------------------------
 * Flusso di recesso — contenitori comuni (step1/step2/esito) e introduzioni.
 * ---------------------------------------------------------------------- */
.woo-rma-step,
.woo-rma-lookup {
	max-width: var(--woo-rma-max-width);
	margin: var(--woo-rma-spacing) auto;
}

/* Flusso reso fuori dall'area cliente (ospite, pagina propria): il tema non
 * fornisce un contenitore, quindi il blocco si dà da solo larghezza e margini.
 * `:where()` ha specificità zero: una regola del sito vince sempre. */
:where(.woo-rma-withdrawal--standalone) {
	box-sizing: border-box;
	width: min(100% - 2 * var(--woo-rma-spacing), var(--woo-rma-max-width));
	margin-inline: auto;
}

.woo-rma-intro {
	color: var(--woo-rma-text-muted);
}

.woo-rma-deadline {
	font-weight: 600;
}

.woo-rma-estimate {
	background: var(--woo-rma-bg-soft);
	border-radius: var(--woo-rma-radius);
	padding: var(--woo-rma-spacing-sm) var(--woo-rma-spacing);
	margin: var(--woo-rma-spacing) 0;
}

/* Stati / messaggi. */
.woo-rma-error {
	color: var(--woo-rma-error);
	background: var(--woo-rma-error-bg);
	border-radius: var(--woo-rma-radius);
	padding: var(--woo-rma-spacing-sm) var(--woo-rma-spacing);
}

.woo-rma-unavailable {
	color: var(--woo-rma-text-muted);
	font-style: italic;
}

/* -------------------------------------------------------------------------
 * Form di recesso (step1) — righe selezionabili, esclusioni, campi dati.
 * ---------------------------------------------------------------------- */
.woo-rma-form fieldset {
	border: var(--woo-rma-border);
	border-radius: var(--woo-rma-radius);
	margin: var(--woo-rma-spacing) 0;
	padding: var(--woo-rma-spacing);
}

.woo-rma-form legend {
	font-weight: 600;
	padding: 0 var(--woo-rma-spacing-sm);
}

.woo-rma-line {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--woo-rma-spacing-sm);
	padding: var(--woo-rma-spacing-sm) 0;
	border-bottom: var(--woo-rma-border);
}

.woo-rma-line:last-child {
	border-bottom: 0;
}

.woo-rma-line--excluded {
	opacity: 0.65;
}

.woo-rma-line-name {
	font-weight: 600;
}

.woo-rma-line-total {
	margin-left: auto;
	white-space: nowrap;
}

.woo-rma-qty-label {
	margin-left: var(--woo-rma-spacing-sm);
}

.woo-rma-exclusion-reason {
	flex-basis: 100%;
	color: var(--woo-rma-text-muted);
	font-size: 0.9em;
}

.woo-rma-excluded {
	margin-top: var(--woo-rma-spacing);
}

.woo-rma-excluded-title {
	font-weight: 600;
	margin: 0 0 var(--woo-rma-spacing-sm);
}

.woo-rma-field {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	margin: 0 0 var(--woo-rma-spacing);
}

.woo-rma-field label {
	font-weight: 600;
}

.woo-rma-field input,
.woo-rma-field textarea,
.woo-rma-lookup-form input {
	max-width: 100%;
}

/* -------------------------------------------------------------------------
 * Riepilogo conferma (step2) — tabella + dichiarante.
 * ---------------------------------------------------------------------- */
.woo-rma-summary {
	width: 100%;
	border-collapse: collapse;
	margin: var(--woo-rma-spacing) 0;
}

.woo-rma-summary th,
.woo-rma-summary td {
	border-bottom: var(--woo-rma-border);
	padding: var(--woo-rma-spacing-sm);
	text-align: left;
}

.woo-rma-declarant {
	list-style: none;
	margin: 0 0 var(--woo-rma-spacing);
	padding: 0;
}

.woo-rma-declarant li {
	padding: 0.2rem 0;
}

.woo-rma-declarant .woo-rma-label {
	font-weight: 600;
	margin-right: var(--woo-rma-spacing-sm);
}

/* -------------------------------------------------------------------------
 * Esito (result) e ricevuta durevole.
 * ---------------------------------------------------------------------- */
.woo-rma-result-intro {
	color: var(--woo-rma-text-muted);
}

.woo-rma-result-details {
	display: grid;
	grid-template-columns: max-content 1fr;
	gap: 0.25rem var(--woo-rma-spacing);
	margin: var(--woo-rma-spacing) 0;
}

.woo-rma-result-details dt {
	font-weight: 600;
}

.woo-rma-result-details dd {
	margin: 0;
}

.woo-rma-receipt-download {
	margin: var(--woo-rma-spacing) 0;
}

/* -------------------------------------------------------------------------
 * Azioni (pulsanti).
 *
 * Il plugin marca i propri pulsanti con `.button`, la classe convenzionale di
 * WooCommerce. Molti temi la stilano solo dentro un contesto WooCommerce: per
 * esempio Avada usa `.woocommerce button.button`, quindi la regola non si
 * applica fuori dalle pagine del negozio. Senza fallback il pulsante resta con
 * lo stile predefinito del browser (grigio, bordo di sistema) accanto a campi
 * gia stilati.
 *
 * Il fallback qui sotto sta dentro `:where()`, che ha specificita zero: appena
 * il tema espone una regola propria, anche a specificita minima, quella vince.
 * Il plugin copre il caso scoperto senza mai competere col tema, coerentemente
 * col principio "niente !important" dichiarato in testa al file.
 * ---------------------------------------------------------------------- */
/* La variante dipende dal TAG, non dalla classe: `.woo-rma-cancel` e
 * `.woo-rma-proceed` compaiono sia su <button> (step2) sia su <a> (il link
 * "Annulla" dello step1). Qualificare i selettori evita che un link erediti lo
 * sfondo pieno, dove il testo resterebbe del colore del tema. */

/* Pulsanti veri (<button>): sfondo pieno. Il colore del testo si applica senza
 * ostacoli, perche i temi non stilano il `color` dei <button> con la
 * specificita che riservano ai link. */
:where(
	button.woo-rma-lookup-submit,
	button.woo-rma-proceed,
	button.woo-rma-cancel,
	input[type='submit'].woo-rma-lookup-submit
) {
	display: inline-block;
	padding: var(--woo-rma-button-padding);
	border: 0;
	border-radius: var(--woo-rma-radius);
	background: var(--woo-rma-button-bg);
	color: var(--woo-rma-button-fg);
	font-size: 1em;
	font-weight: 600;
	line-height: 1.4;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
}

/* Azioni che sono link (<a>): stile "outline", senza sfondo pieno.
 *
 * Un fondo colorato qui sarebbe rischioso: i temi stilano il `color` dei link
 * con specificita maggiore di `:where()`, quindi il testo resterebbe del colore
 * del tema sopra il nostro sfondo. Su Avada il contrasto misurato scende a
 * 1.44:1, sotto la soglia WCAG AA di 4.5:1.
 *
 * Con bordo in `currentColor` e sfondo trasparente il bordo segue sempre il
 * colore del testo, qualunque esso sia: il contrasto resta quello, gia scelto
 * dal tema, fra testo e sfondo della pagina. Sullo stesso caso Avada la misura
 * sale a 7.43:1. */
:where(
	a.woo-rma-back,
	a.woo-rma-cancel,
	a.woo-rma-proceed,
	a.woo-rma-download-receipt,
	a.woo-rma-back-to-orders,
	a.woo-rma-info-access-link,
	a.woo-rma-withdraw-button,
	a.woo-rma-recesso-button
) {
	display: inline-block;
	padding: var(--woo-rma-button-padding);
	border: 1px solid currentColor;
	border-radius: var(--woo-rma-radius);
	background: transparent;
	font-size: 1em;
	font-weight: 600;
	line-height: 1.4;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
}

/* Il `padding` e l'unica dichiarazione che non regge dentro `:where()`: la
 * regola dell'user-agent sui <button> ha specificita zero come `:where()`, e a
 * parita vince l'ultima dichiarata, quindi il pulsante terrebbe il padding di
 * sistema. Il selettore resta a specificita minima (0,0,1,1) e il foglio del
 * plugin e accodato prima di quello del tema: a parita il tema vince per
 * ordine.
 *
 * Il colore del testo non si forza mai: sui link il fallback usa lo stile
 * "outline" (vedi sopra), che resta leggibile qualunque colore il tema
 * assegni ai suoi `a`. */
button.woo-rma-lookup-submit,
button.woo-rma-proceed,
button.woo-rma-cancel {
	padding: var(--woo-rma-button-padding);
}

.woo-rma-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--woo-rma-spacing-sm);
	align-items: center;
	margin: var(--woo-rma-spacing) 0;
}

.woo-rma-actions .woo-rma-back {
	margin: 0;
}

/* CTA di recesso in vista ordine. */
.woo-rma-withdrawal-cta {
	margin: var(--woo-rma-spacing) 0;
}

.woo-rma-withdrawal-cta .woo-rma-deadline {
	margin-top: var(--woo-rma-spacing-sm);
	font-weight: 400;
	color: var(--woo-rma-text-muted);
}

/* -------------------------------------------------------------------------
 * Lookup ospite (self-service).
 * ---------------------------------------------------------------------- */
.woo-rma-lookup-error {
	color: var(--woo-rma-error);
	background: var(--woo-rma-error-bg);
	border-radius: var(--woo-rma-radius);
	padding: var(--woo-rma-spacing-sm) var(--woo-rma-spacing);
	margin: 0 0 var(--woo-rma-spacing);
}

.woo-rma-antiphishing {
	color: var(--woo-rma-text-muted);
	font-size: 0.9em;
	margin-top: var(--woo-rma-spacing);
}

/* Honeypot anti-bot: invisibile e fuori dal flusso (difesa-in-profondità: lo
 * stile inline nel markup resta la fonte primaria, questa è ridondante). */
.woo-rma-hp {
	position: absolute !important;
	left: -9999px !important;
	top: -9999px !important;
}

/* -------------------------------------------------------------------------
 * Pulsante shortcode (home/footer) — solo spaziatura.
 * ---------------------------------------------------------------------- */
.woo-rma-recesso-button {
	display: inline-block;
	margin: var(--woo-rma-spacing-sm) 0;
}

/* -------------------------------------------------------------------------
 * Responsività minima.
 * ---------------------------------------------------------------------- */
@media (max-width: 600px) {
	.woo-rma-line-total {
		margin-left: 0;
		flex-basis: 100%;
	}

	.woo-rma-result-details {
		grid-template-columns: 1fr;
		gap: 0.1rem;
	}

	.woo-rma-result-details dt {
		margin-top: var(--woo-rma-spacing-sm);
	}
}
