/**
 * DevSign — foglio di stampa.
 *
 * Caricato con media="print" (inc/enqueue.php): il browser lo scarica a
 * priorità bassa e non entra mai nel percorso di rendering dello schermo.
 * Il contenuto è comunque dentro @media print, così resta corretto anche se
 * un domani qualcuno lo accodasse come media="all".
 *
 * ⚠️ Questo file è scritto a mano e NON ha sorgente SCSS: è leggibile così
 * com'è, non fa parte del bundle minificato e non passa da nessun compilatore.
 * Modificarlo qui, non cercare un .scss che non esiste.
 *
 * Scopo: una pagina stampata (o salvata in PDF) leggibile in bianco e nero,
 * senza la cornice del sito e senza gli elementi che su carta non hanno senso.
 */

@media print {

	/* ------------------------------------------------------------------
	 * 1. Pagina e colori
	 * Il dark mode NON deve arrivare in stampa: i token tornano ai valori
	 * chiari qualunque sia il tema scelto a schermo, così tutto quello che
	 * li usa si adegua senza dover riscrivere regola per regola.
	 * ---------------------------------------------------------------- */
	@page {
		margin: 16mm 14mm;
	}

	:root,
	:root[data-theme="dark"],
	:root[data-theme="auto"] {
		--ds-bg: #ffffff;
		--ds-text: #000000;
		--ds-ink: #000000;
		--ds-paper: #ffffff;
		--ds-card: #ffffff;
		--ds-inset: #ffffff;
		--ds-bg-alt: #ffffff;
		--ds-line: #999999;
		--ds-line-strong: #666666;
		--ds-soft: #444444;
		--ds-muted: #444444;
		--ds-surface: #ffffff;
		--ds-border: #999999;
		--ds-accent-text: #000000;
		--ds-glass-bg: transparent;
		--ds-glass-border: transparent;

		/*
		 * Il respiro pensato per lo schermo, su carta è carta sprecata:
		 * 23 blocchi usano `padding-block: var(--ds-space-3xl, 6rem)`, che a
		 * 6rem lascia due centimetri di bianco fra una sezione e l'altra.
		 * Si stringono i token invece di riscrivere blocco per blocco.
		 */
		--ds-space-xl: 1.1rem;
		--ds-space-2xl: 1.4rem;
		--ds-space-3xl: 1.8rem;
		--ds-space-4xl: 2.2rem;
	}

	html,
	body {
		background: #fff !important;
		color: #000 !important;
		font-size: 11pt;
		line-height: 1.45;
	}

	/* Nessuna animazione, nessuna transizione: su carta non esistono. */
	*,
	*::before,
	*::after {
		animation: none !important;
		transition: none !important;
		box-shadow: none !important;
		text-shadow: none !important;
		filter: none !important;
		backdrop-filter: none !important;
	}

	/* ------------------------------------------------------------------
	 * 2. Cosa NON si stampa
	 * Cornice del sito, controlli, e tutto ciò che serve a fare qualcosa
	 * invece che a leggere: su carta un modulo o un calcolatore sono
	 * inchiostro sprecato.
	 * ---------------------------------------------------------------- */
	.site-header,
	.site-footer,
	.ds-mobile-menu,
	.ds-burger,
	.ds-preloader,
	.ds-transition,
	.ds-cursor,
	.ds-consent,
	.ds-fab,
	.ds-totop,
	.skip-link,
	.ds-searchform,
	.ds-theme-toggle,
	dialog,
	.ds-prevmodal,
	iframe,
	video,
	audio,
	/* blocchi interattivi o promozionali */
	.ds-form,
	.ds-preventivo,
	.ds-calcom,
	.ds-audit,
	.ds-tools,
	.ds-nastro,
	.ds-cta,
	.ds-ctabanner,
	.ds-firma-block,
	.wp-block-button,
	.btn,
	button,
	[role="button"],
	input,
	select,
	textarea {
		display: none !important;
	}

	/* ------------------------------------------------------------------
	 * 3. ⚠️ Il reveal deve essere visibile
	 * Gli elementi con [data-reveal] partono a opacity:0 e diventano
	 * visibili solo quando l'utente li scorre. In stampa lo scroll non
	 * avviene: senza questa regola metà pagina esce BIANCA.
	 * È la stessa trappola degli screenshot headless.
	 * ---------------------------------------------------------------- */
	[data-reveal],
	[data-reveal] * {
		opacity: 1 !important;
		transform: none !important;
		visibility: visible !important;
		clip-path: none !important;
	}

	/* ------------------------------------------------------------------
	 * 4. Superfici e decorazioni
	 * Fondi pieni, griglie, aloni e watermark: su carta costano toner e
	 * non aggiungono niente. Le utility degli sfondi tornano neutre.
	 * ---------------------------------------------------------------- */
	.ds-bg-alt,
	.ds-bg-ink,
	.ds-grid,
	.ds-glow,
	.ds-mark,
	.ds-glifo {
		background: none !important;
		color: #000 !important;
	}

	.ds-bg-ink *,
	.ds-grid::before,
	.ds-glow::before,
	.ds-mark::before,
	.ds-glifo::before,
	.ds-grid::after,
	.ds-glow::after,
	.ds-mark::after {
		background: none !important;
		color: inherit !important;
		content: none !important;
	}

	/* ------------------------------------------------------------------
	 * 5. Impaginazione e larghezza
	 * A schermo il contenuto è incolonnato dentro un contenitore da
	 * 1280px con gabbie e sticky: in stampa tutto questo va sciolto.
	 * ---------------------------------------------------------------- */
	.site-main,
	.container,
	.entry-content,
	.entry-content > * {
		width: auto !important;
		max-width: none !important;
		margin-inline: 0 !important;
		padding-inline: 0 !important;
		float: none !important;
		position: static !important;
	}

	.entry-content > :is(p, ul, ol, blockquote) {
		max-width: none !important;
	}

	/* ------------------------------------------------------------------
	 * 6. Tipografia
	 * ---------------------------------------------------------------- */
	h1 { font-size: 20pt; }
	h2 { font-size: 15pt; }
	h3 { font-size: 12.5pt; }
	h4 { font-size: 11.5pt; }

	h1, h2, h3, h4 {
		color: #000 !important;
		margin-top: 0.8em;
		margin-bottom: 0.35em;
	}

	p, li {
		orphans: 3;
		widows: 3;
	}

	blockquote {
		border-left: 2pt solid #666;
		padding-left: 3mm;
		font-style: italic;
	}

	code, pre {
		font-size: 9.5pt;
		background: none !important;
		border: 1pt solid #999;
	}

	pre {
		white-space: pre-wrap;
		word-wrap: break-word;
		padding: 2mm;
	}

	table {
		width: 100% !important;
		border-collapse: collapse;
		font-size: 9.5pt;
	}

	th, td {
		border: 0.5pt solid #999;
		padding: 1.5mm 2mm;
	}

	/* A schermo le tabelle larghe scrollano dentro il loro contenitore:
	   su carta non c'è scroll, quindi il contenitore deve lasciar fluire. */
	.wp-block-table,
	figure.wp-block-table {
		overflow: visible !important;
	}

	/* ------------------------------------------------------------------
	 * 7. Interruzioni di pagina
	 * ---------------------------------------------------------------- */
	h1, h2, h3, h4 {
		break-after: avoid;
		page-break-after: avoid;
	}

	img,
	figure,
	table,
	blockquote,
	pre,
	li {
		break-inside: avoid;
		page-break-inside: avoid;
	}

	.entry-header {
		break-after: avoid;
	}

	/* ------------------------------------------------------------------
	 * 8. Link
	 * L'URL si stampa SOLO per i link della prosa: farlo ovunque
	 * riempirebbe la pagina di indirizzi del menu e delle card.
	 * Niente URL per àncore interne, mailto e tel, che si leggono già
	 * dal testo.
	 * ---------------------------------------------------------------- */
	a {
		color: #000 !important;
		text-decoration: underline;
	}

	.entry-content a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 8.5pt;
		word-break: break-all;
	}

	.entry-content a[href^="#"]::after,
	.entry-content a[href^="mailto:"]::after,
	.entry-content a[href^="tel:"]::after {
		content: "";
	}

	/* ------------------------------------------------------------------
	 * 9. FAQ e altri <details>
	 * Su carta una risposta chiusa è una risposta persa: si aprono tutte.
	 * Due meccanismi perché i browser le nascondono in modi diversi.
	 * ---------------------------------------------------------------- */
	details > *:not(summary) {
		display: block !important;
	}

	details::details-content {
		content-visibility: visible !important;
		block-size: auto !important;
	}

	summary {
		list-style: none;
		font-weight: 600;
	}

	/* ------------------------------------------------------------------
	 * 10. Immagini
	 * ---------------------------------------------------------------- */
	img {
		max-width: 100% !important;
		max-height: 12cm;
		object-fit: contain;
	}

	/* ------------------------------------------------------------------
	 * 11. Altezze pensate per la finestra
	 * `100vh`, `min-height` e gli `aspect-ratio` dei segnaposto misurano il
	 * viewport: in stampa diventano pagine mezze vuote. Lo sticky, poi, non
	 * ha nessun senso su carta.
	 * ---------------------------------------------------------------- */
	[class*="ds-"],
	.site-main,
	section {
		min-height: 0 !important;
		height: auto !important;
		max-height: none !important;
		position: static !important;
	}

	/* ------------------------------------------------------------------
	 * 12. Le piste orizzontali si impilano
	 * `process` a schermo è un nastro che scorre mentre la sezione è
	 * fissata: in stampa le card oltre la prima uscivano TAGLIATE dal bordo
	 * destro del foglio. Qui diventano un elenco verticale.
	 * ---------------------------------------------------------------- */
	.ds-process__pin,
	.ds-process__sticky,
	.ds-process__inner,
	.ds-process__track {
		display: block !important;
		width: auto !important;
		height: auto !important;
		transform: none !important;
		overflow: visible !important;
		padding-inline: 0 !important;
	}

	.ds-process__track::after,
	.ds-process__bar,
	.ds-process__dots {
		display: none !important;
	}

	.ds-process__step {
		width: auto !important;
		max-width: none !important;
		flex: none !important;
		margin: 0 0 4mm !important;
		break-inside: avoid;
	}

	/*
	 * Segnaposto decorativi: la vetrina di una card senza screenshot mostra
	 * il monogramma in filigrana. A schermo riempie un vuoto, in stampa sono
	 * 330px di inchiostro che non dicono niente. Con un'immagine vera la
	 * vetrina resta.
	 */
	.ds-hero__pulse,
	.ds-portfolio__segno,
	.ds-blogcard__segno,
	.ds-firma__segno,
	.ds-stat__segno {
		display: none !important;
	}

	.ds-portfolio__shot:not(:has(img)),
	.ds-blogcard__media:not(:has(img)),
	.post-card__shot:not(:has(img)) {
		display: none !important;
	}

	/* Qualunque altro contenitore che a schermo scorre in orizzontale. */
	[style*="overflow-x"],
	.ds-portfolio__grid,
	.ds-casi__track,
	.ds-metodo__track {
		overflow: visible !important;
	}

	/* ------------------------------------------------------------------
	 * 13. Riga di provenienza
	 * Chi riceve un foglio stampato deve poter risalire alla pagina.
	 * Il browser stampa l'URL nel proprio piè di pagina, ma l'utente può
	 * averlo disattivato: questa riga è sotto il nostro controllo.
	 * ---------------------------------------------------------------- */
	.ds-print-fonte {
		display: block !important;
		margin-top: 8mm;
		padding-top: 2mm;
		border-top: 0.5pt solid #999;
		font-size: 8.5pt;
		color: #444 !important;
		break-inside: avoid;
	}

	.ds-print-fonte a::after {
		content: "" !important;
	}

	/* Pagina-documento delle risorse: i controlli non vanno sulla carta. */
	.ds-doc__actions,
	.ds-doc__hint { display: none !important; }

	/* La casella della checklist deve restare visibile sulla carta. */
	.ds-check li::before { border-color: #292929 !important; }
}

/*
 * ⚠️ Nascondere `.ds-print-fonte` a schermo NON si può fare da qui: questo
 * foglio è accodato con `media="print"`, quindi una regola scritta fuori dal
 * blocco @media resta comunque inerte a schermo. Il 14/09/2026 era proprio
 * così, e la riga «Stampato da…» si vedeva in fondo a OGNI pagina del sito.
 * La regola che la nasconde vive nel foglio principale (style.scss / style.css).
 */
