/*
Theme Name: Studio Giordano
Theme URI: https://www.studiogiordanoavvocati.it/
Description: Tema su misura per lo Studio Legale Giordano. Leggero, senza risorse di terze parti (font inclusi nel tema, nessun Google Fonts, nessuno script esterno), con i dati obbligatori dello studio gestibili da Aspetto > Personalizza.
Version: 2.0.0
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: studio-giordano
*/

/* ---------- Font (inclusi nel tema, licenza SIL OFL) ---------- */
@font-face {
	font-family: "Cormorant Garamond";
	src: url("assets/fonts/cormorant-garamond-var.woff") format("woff");
	font-weight: 300 700;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Cormorant Garamond";
	src: url("assets/fonts/cormorant-garamond-italic-var.woff") format("woff");
	font-weight: 300 700;
	font-style: italic;
	font-display: swap;
}
@font-face {
	font-family: "Cormorant SC";
	src: url("assets/fonts/cormorant-sc-600.woff") format("woff");
	font-weight: 600;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Source Sans 3";
	src: url("assets/fonts/source-sans-3-var.woff") format("woff");
	font-weight: 200 900;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Source Sans 3";
	src: url("assets/fonts/source-sans-3-italic-var.woff") format("woff");
	font-weight: 200 900;
	font-style: italic;
	font-display: swap;
}

/* ---------- Token ---------- */
:root {
	--verde: #1e3a32;
	--verde-profondo: #142a23;
	--verde-link: #1f5a47;
	--ottone: #b4914c;
	--ottone-chiaro: #dcc283;
	--ottone-scuro: #6f5527;
	--carta: #ffffff;
	--pietra: #eef0ec;
	--inchiostro: #1d2622;
	--grigio: #56615b;
	--filo: #d3d8d2;
	--su-verde: #e9eee9;
	--su-verde-tenue: #b9c7bf;

	--serif: "Cormorant Garamond", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
	--serif-sc: "Cormorant SC", var(--serif);
	--sans: "Source Sans 3", "Segoe UI", system-ui, -apple-system, sans-serif;

	--misura: 38rem;
	--largo: 72rem;
	--gutter: clamp(1rem, 4vw, 2.5rem);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 1rem; }
body {
	margin: 0;
	background: var(--carta);
	color: var(--inchiostro);
	font-family: var(--sans);
	font-size: 1.0625rem;
	line-height: 1.6;
	font-optical-sizing: auto;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--verde-link); text-decoration-thickness: 1px; text-underline-offset: 0.18em; }
a:hover { color: var(--verde); text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--ottone); outline-offset: 3px; }

h1, h2, h3 {
	font-family: var(--serif);
	font-weight: 600;
	line-height: 1.12;
	color: var(--verde);
	margin: 0 0 0.6em;
	letter-spacing: -0.005em;
}
h1 { font-size: clamp(2.4rem, 5vw, 3.6rem); }
h2 { font-size: clamp(1.9rem, 3.4vw, 2.5rem); }
h3 { font-size: 1.45rem; }
p, ul, ol { margin: 0 0 1em; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link:focus {
	position: fixed; top: 0.75rem; left: 0.75rem; z-index: 100;
	width: auto; height: auto; clip: auto; margin: 0;
	padding: 0.7rem 1rem; background: var(--carta); color: var(--verde);
	font-weight: 600;
}

.contenitore { max-width: var(--largo); margin: 0 auto; padding: 0 var(--gutter); }

/* ---------- Intestazione ---------- */
.testata { background: var(--verde); color: var(--su-verde); }
.testata .contenitore {
	display: flex; align-items: center; justify-content: space-between;
	gap: 1.5rem; min-height: 5.5rem;
}
.marchio { display: block; line-height: 0; padding: 0.7rem 0; }
.marchio-logo { height: 4.75rem; width: auto; }
.marchio img { max-height: 4.75rem; width: auto; }

.nav-principale { display: flex; align-items: center; gap: 0.5rem; }
.nav-principale ul { list-style: none; margin: 0; padding: 0; }
.nav-principale > ul { display: flex; gap: 0.25rem; align-items: center; }
.nav-principale a {
	display: block; padding: 0.5rem 0.8rem; color: var(--su-verde);
	text-decoration: none; font-weight: 600;
}
.nav-principale a:hover, .nav-principale .current-menu-item > a,
.nav-principale .current_page_item > a, .nav-principale .current-menu-parent > a { color: #fff; text-decoration: underline; text-decoration-color: var(--ottone); text-underline-offset: 0.4em; }
.nav-principale li { position: relative; }
.nav-principale .sub-menu {
	position: absolute; left: 0; top: 100%; z-index: 20; min-width: 16rem;
	background: var(--verde-profondo); padding: 0.4rem 0;
	display: none;
}
.nav-principale li:hover > .sub-menu,
.nav-principale li:focus-within > .sub-menu { display: block; }
.nav-principale .sub-menu a { padding: 0.55rem 1rem; font-weight: 500; }
.nav-tel a { color: var(--ottone-chiaro); font-variant-numeric: tabular-nums; white-space: nowrap; }

.nav-interruttore {
	display: none; background: none; border: 1px solid var(--su-verde-tenue);
	color: #fff; font: inherit; font-weight: 600; padding: 0.45rem 0.85rem; cursor: pointer;
}

@media (max-width: 56rem) {
	.nav-interruttore { display: inline-block; }
	.marchio-logo { height: 3.6rem; }
	.nav-principale { display: none; position: absolute; left: 0; right: 0; top: 100%; z-index: 30; background: var(--verde-profondo); padding: 0.5rem var(--gutter) 1rem; }
	.nav-principale.aperta { display: block; }
	.nav-principale > ul { flex-direction: column; align-items: stretch; }
	.nav-principale .sub-menu { position: static; display: block; background: none; padding: 0 0 0 1rem; }
	.testata { position: relative; }
}

/* ---------- Bottoni ---------- */
.azioni { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.75rem; }
.bottone {
	display: inline-block; padding: 0.8rem 1.3rem; font-weight: 600; text-decoration: none;
	border: 1px solid var(--ottone-chiaro); color: #fff;
}
.bottone:hover { background: rgba(220, 194, 131, 0.14); color: #fff; text-decoration: none; }
.bottone-pieno { background: var(--ottone-chiaro); color: var(--verde-profondo); }
.bottone-pieno:hover { background: #e8d39f; color: var(--verde-profondo); }
.bottone-verde { background: var(--verde); border-color: var(--verde); color: #fff; }
.bottone-verde:hover { background: var(--verde-profondo); color: #fff; }

/* ---------- Apertura della home: testo e foto ---------- */
.apertura { background: var(--verde); color: var(--su-verde); }
.apertura-griglia { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: stretch; }
.apertura-testo {
	padding: clamp(3rem, 7vw, 5rem) clamp(1.5rem, 4vw, 3.5rem) clamp(3.5rem, 8vw, 5.5rem) max(var(--gutter), calc((100vw - var(--largo)) / 2 + var(--gutter)));
	display: flex; flex-direction: column; justify-content: center;
}
.apertura h1 { color: #fff; font-weight: 500; max-width: 15ch; font-size: clamp(2.4rem, 4.6vw, 3.6rem); line-height: 1.08; }
.apertura-testo p { max-width: 34rem; font-size: 1.15rem; color: var(--su-verde); }
.apertura-foto { width: 100%; height: 100%; min-height: 32rem; object-fit: cover; object-position: 50% 40%; }
@media (max-width: 52rem) {
	.apertura-griglia { grid-template-columns: 1fr; }
	.apertura-testo { padding-left: var(--gutter); padding-right: var(--gutter); }
	.apertura-foto { min-height: 0; height: auto; aspect-ratio: 4 / 3; order: -1; }
}

/* ---------- Sezioni della home ---------- */
.sezione { padding: clamp(3.5rem, 8vw, 5.5rem) 0; }
.sezione-pietra { background: var(--pietra); }
.sezione-intro { max-width: var(--misura); color: var(--grigio); font-size: 1.12rem; }

.aree { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 2.5rem 2.25rem; margin-top: 2.5rem; }
.area { border-top: 3px solid var(--ottone); padding-top: 1.1rem; display: flex; flex-direction: column; gap: 0.8rem; }
.area h3 { margin: 0; font-size: 1.7rem; }
.area h3 a { color: var(--verde); text-decoration: none; }
.area h3 a:hover { text-decoration: underline; }
.area-sintesi { color: var(--grigio); margin: 0; }
.area-materie { margin: 0; padding-left: 1.15rem; flex: 1; }
.area-materie li { margin-bottom: 0.35rem; }
.area-materie li::marker { color: var(--ottone-scuro); }
.area .leggi { font-weight: 600; }
.ambiti-nota { margin: 2.75rem 0 0; padding-top: 1.25rem; border-top: 1px solid var(--filo); color: var(--grigio); }

.studio-griglia { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 4rem); align-items: center; }
.studio-griglia .testo { max-width: var(--misura); }
.studio-griglia.senza-foto { grid-template-columns: minmax(0, var(--misura)); }
.mosaico { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 14rem)); gap: 0.75rem; }
.mosaico img { width: 100%; height: 100%; object-fit: cover; }
.mosaico .mosaico-grande { grid-row: span 2; }
.mosaico-1 { grid-template-columns: 1fr; grid-template-rows: 22rem; }
.mosaico-2 { grid-template-rows: 20rem; }
.mosaico-2 .mosaico-grande { grid-row: auto; }
@media (max-width: 52rem) {
	.studio-griglia { grid-template-columns: 1fr; }
	.mosaico { grid-template-rows: repeat(2, minmax(0, 11rem)); }
}

.contatti-griglia { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 4rem); align-items: start; }
.contatti-griglia.senza-foto { grid-template-columns: 1fr; }
.contatti-foto { width: 100%; height: 30rem; object-fit: cover; object-position: 50% 35%; }
@media (max-width: 52rem) { .contatti-griglia { grid-template-columns: 1fr; } .contatti-foto { height: 22rem; } }

.persone { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: 2rem; margin-top: 2rem; list-style: none; padding: 0; }
.persona img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; margin-bottom: 0.8rem; background: var(--pietra); }
.persona h3 { font-size: 1.35rem; margin-bottom: 0.2em; }
.persona h3 a { color: var(--verde); text-decoration: none; }
.persona h3 a:hover { text-decoration: underline; }
.persona p { color: var(--grigio); font-size: 0.98rem; }

.recapiti { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 1.5rem 2.5rem; margin: 2rem 0 0; }
.recapiti div { border-left: 3px solid var(--ottone); padding-left: 1rem; }
.recapiti dt { font-weight: 600; color: var(--verde); }
.recapiti dd { margin: 0.15rem 0 0; font-size: 1.08rem; overflow-wrap: anywhere; }
.recapiti a { font-variant-numeric: tabular-nums; }
.recapiti .recapito-lungo { grid-column: 1 / -1; }

/* ---------- Pagine interne ---------- */
.titolo-pagina { background: var(--verde); color: var(--su-verde); }
.titolo-griglia { max-width: var(--largo); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr); }
.titolo-testo { padding: clamp(2.25rem, 6vw, 3.5rem) var(--gutter) clamp(2.25rem, 5vw, 3.25rem); display: flex; flex-direction: column; justify-content: center; }
.titolo-con-foto .titolo-griglia { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.titolo-foto { width: 100%; height: 100%; min-height: 22rem; object-fit: cover; }
.titolo-pagina h1 { color: #fff; font-weight: 500; margin: 0; }
.titolo-pagina p { max-width: var(--misura); margin: 0.9rem 0 0; font-size: 1.12rem; color: var(--su-verde); }
.briciole { font-size: 0.92rem; margin-bottom: 0.9rem; color: var(--su-verde-tenue); }
.briciole a { color: var(--su-verde-tenue); }
@media (max-width: 52rem) {
	.titolo-con-foto .titolo-griglia { grid-template-columns: 1fr; }
	.titolo-foto { min-height: 0; height: auto; aspect-ratio: 16 / 10; }
}

.foto-grande { background: linear-gradient(var(--verde) 0 45%, var(--carta) 45% 100%); }
.foto-grande img { width: 100%; height: clamp(16rem, 42vw, 34rem); object-fit: cover; }

.corpo { padding: clamp(2.5rem, 6vw, 4.5rem) 0 clamp(3rem, 7vw, 5.5rem); }
.corpo .contenitore { display: grid; grid-template-columns: minmax(0, 44rem) minmax(0, 19rem); gap: clamp(2rem, 6vw, 5rem); justify-content: space-between; }
.corpo.senza-laterale .contenitore { grid-template-columns: minmax(0, 46rem); }
.corpo.corpo-largo .contenitore { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 52rem) { .corpo .contenitore { grid-template-columns: 1fr; } }

.contenuto h2 { margin-top: 1.6em; font-size: clamp(1.6rem, 3vw, 2rem); }
.contenuto h3 { margin-top: 1.4em; }
.contenuto > :first-child { margin-top: 0; }
.contenuto ul { padding-left: 1.2rem; }
.contenuto li { margin-bottom: 0.35em; }
.contenuto li::marker { color: var(--ottone-scuro); }
.contenuto blockquote { margin: 1.5em 0; padding-left: 1.2rem; border-left: 3px solid var(--ottone); color: var(--grigio); }
.contenuto figure { margin: 1.5em 0; }
.contenuto figcaption, .contenuto .wp-element-caption { display: none; }
.corpo-largo .contenuto > :not(.alignwide):not(.alignfull):not(.fondatore) { max-width: 44rem; }
.contenuto .wp-block-gallery { margin: 1.75rem 0 2.5rem; gap: 1rem; }
.contenuto .wp-block-gallery img { margin: 0; }
.contenuto .wp-block-gallery.is-cropped .wp-block-image img { aspect-ratio: 4 / 3; height: auto; object-fit: cover; }
.contenuto .wp-block-gallery.has-nested-images { display: flex; flex-wrap: wrap; gap: 1rem; }
.contenuto .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) { width: calc(50% - 0.5rem); flex: 0 0 auto; margin: 0; }
.contenuto .wp-block-gallery.has-nested-images.columns-3 figure.wp-block-image:not(#individual-image) { width: calc(33.333% - 0.667rem); }
.contenuto .wp-block-gallery.is-cropped figure.wp-block-image img { width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; }
@media (max-width: 40rem) { .contenuto .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image) { width: 100%; } }

.fondatore { display: grid; grid-template-columns: minmax(0, 20rem) minmax(0, 1fr); gap: clamp(1.5rem, 5vw, 3.5rem); align-items: center; margin: 3.5rem 0; padding: 3rem 0; border-top: 1px solid var(--filo); border-bottom: 1px solid var(--filo); }
.fondatore-foto { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 30%; margin: 0; }
.fondatore-testo h2 { margin-top: 0; }
.fondatore-nome { font-family: var(--serif); font-size: 1.5rem; color: var(--verde); margin-bottom: 0.6em; }
.fondatore-testo { max-width: 38rem; }
@media (max-width: 40rem) { .fondatore { grid-template-columns: 1fr; } .fondatore-foto { max-width: 20rem; } }

.laterale { font-size: 0.98rem; }
.laterale section { border-top: 3px solid var(--ottone); padding-top: 1rem; margin-bottom: 2.25rem; }
.laterale h2 { font-size: 1.4rem; margin-bottom: 0.6em; }
.laterale ul { list-style: none; padding: 0; margin: 0; }
.laterale li { margin-bottom: 0.4rem; }
.laterale li.attuale a { color: var(--inchiostro); font-weight: 600; text-decoration: none; }
.laterale .riquadro-appuntamento { background: var(--pietra); border-top: 0; padding: 1.4rem; }
.laterale .riquadro-appuntamento p { margin-bottom: 0.8rem; }
.laterale-foto-alta img { width: 100%; height: 40rem; max-height: 80vh; object-fit: cover; object-position: 50% 30%; }
@media (max-width: 52rem) { .laterale-foto-alta img { height: 26rem; } }

.contatti-testo { margin-top: 2.5rem; }
.contatti-ingresso { width: 100%; height: 24rem; object-fit: cover; margin-top: 2.5rem; }
.corpo .recapiti { grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); }

.dato-mancante { background: #fde8e4; color: #8a1f11; padding: 0 0.3em; font-weight: 600; }

/* ---------- Piede ---------- */
.piede { background: var(--verde-profondo); color: var(--su-verde-tenue); padding: 3rem 0 2rem; font-size: 0.95rem; }
.piede a { color: var(--su-verde); }
.piede-studio { display: flex; gap: 1rem; align-items: flex-start; }
.piede-simbolo { width: 2.5rem; height: auto; flex: none; margin-top: 0.2rem; }
.piede-griglia { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 2rem; }
.piede h2 { font-family: var(--serif-sc); font-weight: 600; color: #fff; font-size: 1.3rem; margin-bottom: 0.5em; }
.piede p { margin: 0 0 0.35em; }
.piede ul { list-style: none; padding: 0; margin: 0; }
.piede li { margin-bottom: 0.35em; }
.piede-fondo { margin-top: 2.5rem; padding-top: 1.25rem; border-top: 1px solid rgba(185, 199, 191, 0.25); font-size: 0.88rem; }
@media (max-width: 52rem) { .piede-griglia { grid-template-columns: 1fr; } }

/* ---------- Errore 404 ---------- */
.vuoto { padding: clamp(3rem, 8vw, 6rem) 0; }
.vuoto p { max-width: var(--misura); }

@media (prefers-reduced-motion: reduce) {
	* { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}

@media print {
	.testata nav, .nav-interruttore, .azioni, .laterale, .apertura-foto, .titolo-foto { display: none !important; }
	.apertura, .titolo-pagina, .testata, .piede { background: none; color: #000; }
	.apertura h1, .titolo-pagina h1, .piede h2 { color: #000; }
}
