/*
Theme Name: Millenius
Theme URI: https://milleniusrealestate.com
Description: Child theme di Twenty Twenty-Five per Millenius Real Estate Inc. Design system centralizzato in theme.json — palette navy/steel/avorio campionata dal marchio, Bodoni Moda + Inter self-hosted, scala tipografica modulare 1.250.
Author: Nik — consulenza marketing e sviluppo
Template: twentytwentyfive
Version: 1.0.0
Requires at least: 6.7
Tested up to: 7.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: millenius
Tags: block-theme, real-estate, full-site-editing
*/

/* -------------------------------------------------------------------------
   Regola generale: i colori, i font, le spaziature e le dimensioni
   NON si scrivono qui. Vivono in theme.json.
   Questo file contiene solo ciò che theme.json non può esprimere.
   ------------------------------------------------------------------------- */

/* 1. Rispetto delle preferenze di movimento — requisito di accessibilita.
      Vale per GSAP, anime.js e qualsiasi transizione CSS. */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* 2. Focus visibile su tutti gli elementi interattivi.
      Il tema padre lo gestisce in modo incoerente; qui e uniforme. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--wp--preset--color--navy-700);
	outline-offset: 3px;
	border-radius: 0;
}

/* 3. Cifre tabulari ovunque compaiano numeri incolonnati
      (calcolatore mutuo, tabelle di ammortamento, prezzi). */
.is-style-tabular,
table td,
table th {
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum" 1;
}

/* 4. Bodoni ha filetti sottilissimi: sotto una certa dimensione
      spariscono e il testo diventa illeggibile. Guardia di sicurezza. */
h1, h2, h3, h4 {
	text-wrap: balance;
}

/* 5. Misura di lettura per i paragrafi lunghi (About, Neighborhoods). */
.is-style-prose p {
	max-width: var(--wp--custom--measure--prose);
}

/* 6. Occhiello / eyebrow: etichetta sopra i titoli di sezione. */
.is-style-eyebrow {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	color: var(--wp--preset--color--navy-400);
}

/* 7. Cornice fotografica: le immagini non sono mai a filo vivo,
      hanno un respiro attorno — decisione di design approvata. */
.is-style-framed img {
	box-shadow: var(--wp--preset--shadow--frame);
}

/* 8. Regola di contrasto non negoziabile: sui fondi navy si usano
      solo avorio o steel-300. I blu medi falliscono WCAG (1.98:1). */
.has-navy-900-background-color,
.has-navy-800-background-color {
	color: var(--wp--preset--color--ivory-base);
}

.has-navy-900-background-color :where(h1, h2, h3, h4, h5, h6),
.has-navy-800-background-color :where(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--ivory-base);
}

.has-navy-900-background-color a:where(:not(.wp-element-button)),
.has-navy-800-background-color a:where(:not(.wp-element-button)) {
	color: var(--wp--preset--color--steel-300);
}

/* 9. Skip link — obbligatorio per la navigazione da tastiera. */
.millenius-skip-link {
	position: absolute;
	left: -9999px;
	z-index: 999999;
	padding: 0.75rem 1.25rem;
	background: var(--wp--preset--color--navy-900);
	color: var(--wp--preset--color--ivory-base);
	font-size: var(--wp--preset--font-size--xs);
	text-decoration: none;
}

.millenius-skip-link:focus {
	left: 1rem;
	top: 1rem;
}
