/*
Ergonomia mobile di VisitCaprarola — fase F4.

SCOPO
Tre cose, in quest'ordine: bersagli tattili utilizzabili, tipografia fluida,
comfort di lettura. Niente estetica: colori, famiglie di caratteri e
proporzioni della grafica restano quelli di oggi. Il redesign e una fase
successiva e questo file non lo anticipa.

ORDINE DI CARICAMENTO
Va accodato DOPO library/css/style.css. A parita di specificita vince
l'ultima regola dichiarata, quindi qui non serve alzare i selettori: dove
devo battere vc-foundation-core.css o style.css replico la loro specificita
esatta e mi basta arrivare dopo. In questo file non c'e nessun !important.

NOTA SULLA NORMATIVA, perche in giro si trova scritta male
  - WCAG 2.2, criterio 2.5.8 "Target Size (Minimum)", livello AA:
    24x24 pixel CSS. E questa la soglia obbligatoria.
  - WCAG 2.2, criterio 2.5.5 "Target Size (Enhanced)", livello AAA:
    44x44 pixel CSS. E anche la raccomandazione pratica delle linee guida
    Apple (44pt) e Google Material (48dp).
Il sito oggi e AL LIMITE dell'AA, non sotto: la gran parte dei bersagli
misurati sta fra 20 e 27 pixel di altezza, cioe attorno alla soglia dei 24.
Quello che facciamo qui e portarli a 44, cioe salire da "al limite dell'AA"
a "AAA" dove si puo farlo senza spostare un pixel della grafica.

Attenzione: il commento accanto a --vc-tocco-minimo in vc-tokens.css cita il
2.5.8 per i 44px. E impreciso: 44px sono il 2.5.5 (AAA). Il valore del token
va benissimo, va corretta solo la didascalia, in vc-tokens.css.

DUE TECNICHE, USATE PER MOTIVI DIVERSI
  a) padding verticale + min-height, quando l'elemento non ha bordi ne
     sfondo visibili: il riquadro cresce ma non si vede niente;
  b) pseudo-elemento trasparente sovrapposto, quando l'elemento HA un bordo
     o uno sfondo visibile (il caso delle frecce del carosello): ingrandire
     il riquadro vero cambierebbe il disegno del pulsante.
La (b) si puo usare solo se l'area invisibile non si sovrappone a quella del
bersaglio accanto: un'area sovrapposta e peggio di un bersaglio piccolo,
perche il tocco finisce sul link sbagliato. Ogni volta che la uso ho
verificato la distanza fra i centri.

I BREAKPOINT sono quelli di Foundation 5 gia in uso nel tema: small fino a
40em, medium da 40.063em, large da 64.063em. Le media query non possono
usare var(), quindi i valori sono scritti per esteso come in vc-grid.css.
*/

/* ===============================================================
   0. Scala tipografica fluida — variabili locali

   Stanno qui e non in vc-tokens.css solo perche F4 puo toccare un file
   solo. Quando saranno approvate vanno spostate nei token.

   Come si leggono: clamp(minimo, base + pendenza, massimo).
   Il termine "base" e in rem, non in vw: e la parte che garantisce che il
   testo continui a rispondere allo zoom del browser. Una clamp() fatta di
   soli vw violerebbe il criterio 1.4.4 (Resize Text).
   =============================================================== */

:root {
	/*
	   Corpo del testo: 16px a 320px di viewport, 18px da 1280px in su.
	   Il minimo della clamp e esattamente 1rem, cioe la dimensione di oggi
	   (html font-size:100% e p font-size:1rem in vc-foundation-core.css):
	   sotto i 320px resta 16px, sopra puo solo crescere. Su nessuna
	   larghezza il testo rimpicciolisce.
	*/
	--vc-testo-fluido: clamp(1rem, 0.9583rem + 0.2083vw, 1.125rem);

	/*
	   Titoli. Qui la rampa e diversa: va da 320px a 641px, cioe FINISCE sul
	   breakpoint medium.

	   Perche. Oggi Foundation fa un salto secco sul breakpoint: h1 passa da
	   34px a 44px, h2 da 27px a 37px. Se avessi disteso la rampa fino a
	   1280px, fra 641px e 1280px i titoli sarebbero diventati piu PICCOLI
	   di oggi, cioe una modifica delle proporzioni della grafica su
	   desktop, che il committente ha escluso. Facendo finire la rampa a
	   641px ottengo invece che:
	     - sotto i 641px il salto sparisce e diventa una crescita continua
	       (e il guadagno vero, sui telefoni);
	     - da 641px in su il valore e identico a quello di oggi.
	   Nessuna dimensione renderizzata e piu piccola di oggi, nessuna e piu
	   grande del massimo di oggi.
	*/
	--vc-h1-fluido: clamp(2.125rem, 1.502rem + 3.115vw, 2.75rem);     /* 34 -> 44px */
	--vc-h2-fluido: clamp(1.6875rem, 1.0645rem + 3.115vw, 2.3125rem); /* 27 -> 37px */
	--vc-h3-fluido: clamp(1.375rem, 1.0635rem + 1.558vw, 1.6875rem);  /* 22 -> 27px */
	--vc-h4-fluido: clamp(1.125rem, 0.8135rem + 1.558vw, 1.4375rem);  /* 18 -> 23px */

	/* h5 e h6 oggi non fanno alcun salto (18px e 16px su tutte le
	   larghezze): non c'e niente da addolcire, e ingrandirli sarebbe una
	   modifica estetica. Restano come sono. */
}

/* ===============================================================
   1. BERSAGLI TATTILI
   =============================================================== */

/* ---------------------------------------------------------------
   1.1 Menu off-canvas (telefono)

   vc-foundation-core.css da gia a queste voci padding .66667rem su una riga
   di 24px, cioe circa 45px di altezza: sono gia conformi. Il min-height qui
   e una rete di sicurezza, non una correzione: serve perche se un domani
   qualcuno tocca il padding o l'interlinea il menu non scenda sotto la
   soglia senza che nessuno se ne accorga.

   Specificita replicata da vc-foundation-core.css (ul.off-canvas-list li a):
   con il solo .off-canvas-list li a perderei il confronto. Non tocco
   display, padding, colori e bordi: restano di Foundation.
   --------------------------------------------------------------- */
ul.off-canvas-list li a {
	min-height: var(--vc-tocco-minimo, 44px);
}

/*
   Nota sul selettore di lingua, per non rifare l'errore.

   Il rilievo di F4 aveva concluso che da telefono la lingua non si poteva
   cambiare, perche hide-for-medium-down in header.php nasconde la tendina
   della testata. La conclusione era sbagliata: il menu di navigazione, che
   nel menu a scomparsa c'e tutto, contiene gia una voce con i cinque link di
   lingua e le rispettive bandiere, aggiunta dal pannello di WordPress.
   Verificato sull'HTML di produzione precedente all'intervento: cinque link
   e sei bandiere dentro l'aside .left-off-canvas-menu.

   Non serve quindi aggiungerne un secondo. Qui non c'e nessuna regola.
*/

/*
   Rete di sicurezza per eventuali <select> nel menu: Foundation impone loro
   height 2.3125rem, cioe 37px, e min-height vince su height a parita di
   elemento. Oggi nel menu off-canvas non ce ne sono; la tendina delle lingue
   della testata desktop sta fuori di qui.
*/
.off-canvas-list select {
	min-height: var(--vc-tocco-minimo, 44px);
}

/* ---------------------------------------------------------------
   1.2 Barra di navigazione desktop

   Anche qui siamo gia a norma: line-height 2.8125rem = 45px. Rete di
   sicurezza, per lo stesso motivo del menu mobile. Dentro la media query
   medium-up perche sotto i 641px questa barra e nascosta
   (.show-for-medium-up).
   --------------------------------------------------------------- */
@media only screen and (min-width: 40.063em) {

	.top-bar-section li a {
		min-height: var(--vc-tocco-minimo, 44px);
	}
}

/* ---------------------------------------------------------------
   1.3 Paginazione

   Questa invece e una correzione vera. vc-foundation-core.css fissa
   ul.pagination li { height: 1.5rem } (24px) e da al link un padding di
   appena 1px in verticale: i numeri di pagina sono bersagli di circa
   28x23px, cioe sotto anche la soglia AA di 24.

   SCELTA, ed e la piu invasiva del file. Qui NON posso usare uno
   pseudo-elemento invisibile: le pagine sono affiancate con 5px di margine,
   i centri distano circa 33px e due aree da 44px si sovrapporrebbero di
   11px, quindi si finirebbe sulla pagina sbagliata. Devo percio ingrandire
   i riquadri veri. Conseguenza visibile: la pillola blu della pagina
   corrente diventa 44x44 invece di 28x23 e la barra di paginazione si alza
   di circa 20px. E l'unico punto in cui l'ergonomia costa un cambiamento
   grafico, ed e inevitabile.

   Specificita replicata da vc-foundation-core.css.
   --------------------------------------------------------------- */
ul.pagination li {
	height: auto;
	min-height: var(--vc-tocco-minimo, 44px);
}

ul.pagination li a,
ul.pagination li button {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: var(--vc-tocco-minimo, 44px);
	min-height: var(--vc-tocco-minimo, 44px);
	/* Il padding orizzontale e quello di Foundation, ripetuto perche il
	   passaggio a flex ricentra il contenuto e senza questo i numeri a piu
	   cifre resterebbero attaccati ai bordi. */
	padding: 0.0625rem 0.625rem;
}

/* ---------------------------------------------------------------
   1.4 Icone social del footer

   Markup: <li class="list-inline-item"><a><svg class="vc-icona-social">.
   L'icona e 36x36 (vc-grid.css), quindi il link e 36x36: sopra la soglia
   AA, sotto quella AAA.

   SCELTA. Non posso agire su .list-inline-item a, perche la stessa classe e
   usata anche per la riga legale in fondo al footer
   (" | Privacy | Cookie Policy | Accessibilita"), dove i link sono testo
   dentro una frase e vanno lasciati stare. Agisco quindi sul riquadro
   dell'SVG: il link e inline e avvolge l'icona, quindi ingrandendo l'icona
   si ingrandisce l'area cliccabile del link.

   box-sizing: content-box e obbligatorio perche vc-grid.css imposta
   border-box su *, e con border-box il padding mangerebbe i 36px
   dell'icona rimpicciolendo il disegno. Cosi invece il disegno resta 36x36
   e cresce solo il riquadro: 36 + 4 + 4 = 44.

   Costo visivo: il blocco "Seguici" si alza di 8px e le tre icone si
   distanziano di 8px. Non si sovrappongono: fra un <li> e l'altro restano i
   5px di padding-right gia previsti da style.css.
   --------------------------------------------------------------- */
.list-inline-item a .vc-icona-social {
	box-sizing: content-box;
	padding: 4px;
}

/* ---------------------------------------------------------------
   1.5 Icone social della testata (solo desktop)

   Sono le tre PNG da 16x16 dentro il paragrafo
   "Comune di Caprarola | About Us | [f] [y] [i]" di header.php, misurate
   16x20 nel rilievo.

   SCELTA, ed e una rinuncia consapevole: qui NON arrivo a 44px. Due ragioni.
   1. Il criterio 2.5.8 prevede un'eccezione esplicita, "Inline": un
      bersaglio dentro una riga di testo, la cui dimensione e determinata
      dall'interlinea del testo che lo circonda, e escluso dal requisito.
      Questi link sono esattamente quel caso.
   2. Portarli a 44px vorrebbe dire o sovrapporre le aree delle tre icone
      (distano circa 4px l'una dall'altra), o far debordare un'area
      invisibile di 12px sopra e sotto il paragrafo, dove passa la barra di
      navigazione: ruberebbe click al menu. Un bersaglio piccolo e un
      problema; un bersaglio che intercetta i click di un altro e un guasto.

   Faccio quindi la cosa misurata: li porto a 24x24, cioe alla soglia AA,
   con la stessa tecnica del footer. Le tre icone crescono di 4px per lato e
   restano separate dallo spazio gia presente nel markup. La soluzione
   completa (portarli fuori dal paragrafo, in una lista propria) e una
   modifica di header.php: non e un lavoro da foglio di stile e va messa in
   conto al redesign.
   --------------------------------------------------------------- */
#inner-header p a img {
	box-sizing: content-box;
	padding: 4px;
}

/* ---------------------------------------------------------------
   1.6 Frecce del carosello "Da vedere anche"

   .vc-related-btn e 40x40 con bordo visibile e border-radius 999px: e un
   cerchio disegnato. Portarlo a 44x44 con min-width/min-height
   ingrandirebbe il cerchio, cioe cambierebbe la grafica.

   SCELTA: pseudo-elemento trasparente centrato sul pulsante. Il cerchio
   resta 40px, l'area sensibile diventa 44x44. I due pulsanti hanno gap
   0.45rem (7.2px): i centri distano 47.2px, due aree da 44px lasciano 3.2px
   di margine e non si toccano. In verticale l'area deborda di 2px, dove non
   c'e nient'altro di cliccabile.

   Lo pseudo-elemento non intercetta il click al posto del pulsante: e figlio
   del <button>, quindi il click arriva comunque al bottone.
   --------------------------------------------------------------- */
.vc-related-btn {
	position: relative;
}

.vc-related-btn::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: var(--vc-tocco-minimo, 44px);
	height: var(--vc-tocco-minimo, 44px);
	transform: translate(-50%, -50%);
}

/* ---------------------------------------------------------------
   1.7 Miniature della galleria

   .vc-gallery-item contiene un'immagine alta 180px in una griglia a colonne
   minimo 180px: e gia largamente sopra soglia. Rete di sicurezza per il caso
   in cui l'immagine non carichi, quando il pulsante collasserebbe a pochi
   pixel.
   --------------------------------------------------------------- */
.vc-gallery-item {
	min-width: var(--vc-tocco-minimo, 44px);
	min-height: var(--vc-tocco-minimo, 44px);
}

/* ---------------------------------------------------------------
   1.8 Titoli-link delle schede

   Sono i bersagli citati nel rilievo: 96x27 "La Via Diritta", 287x27
   "Chiesa di San Marco...", 185x27 "Fontana del Mascherone". Il markup e
   <h2 class="page-title"><a>Titolo</a></h2>: il link e inline, quindi la sua
   area e alta quanto la riga di testo.

   Sono elementi di navigazione autonomi, non link dentro una frase:
   rientrano in pieno fra quelli da ingrandire. display:block porta l'area a
   tutta la larghezza della scheda, min-height la porta a 44px. Il testo non
   si sposta di un pixel — un blocco parte dallo stesso angolo in alto a
   sinistra dove partiva la riga inline — e l'h2 che li contiene ha gia
   height:4.2em (circa 67px) in loop-homepage.php, quindi i 44px ci stanno
   dentro senza allargare nulla. Costo grafico: zero.

   Uso il selettore figlio e qualifico con h2 per non toccare h1.page-title,
   che e il titolo di pagina e non contiene link.
   --------------------------------------------------------------- */
h2.page-title > a,
.vc-news-title > a {
	display: block;
	min-height: var(--vc-tocco-minimo, 44px);
}

/*
   "Leggi tutto" delle schede news: e una chiamata all'azione a se stante,
   non un link dentro una frase. inline-flex + min-height invece di padding,
   cosi il riquadro cresce senza spostare la linea di base del testo. Nelle
   schede a min-height 460px la crescita viene assorbita dallo spazio libero
   del flex (.vc-news-excerpt ha flex: 1 1 auto); su telefono, dove
   .vc-news-card ha min-height 0, la scheda si alza di circa 19px. Tutte allo
   stesso modo: la griglia resta allineata.
*/
.vc-news-more > a {
	display: inline-flex;
	align-items: center;
	min-height: var(--vc-tocco-minimo, 44px);
}

/*
   NON toccati di proposito: i link dentro il corpo del testo
   (.entry-content p a) e i link della riga legale del footer. Sono bersagli
   "Inline" ai sensi del 2.5.8 e ingrandirli scompaginerebbe l'interlinea dei
   paragrafi in cui vivono.
*/

/* ===============================================================
   2. TIPOGRAFIA FLUIDA
   =============================================================== */

/*
   SCELTA di fondo: la scala si applica agli elementi di testo, NON a html o
   a body.

   Alzare la misura di root o di body sarebbe la strada breve, ma in questo
   tema e la piu pericolosa: mezzo style.css e dimensionato in em
   (#homepage h1 a 1.4em, #footervs h4 a 0.878em, gli height:4.2em in linea
   nei template) e ci sono contenitori ad altezza fissa con overflow:hidden,
   come .top-bar a 2.8125rem. Cambiare il riferimento comune farebbe muovere
   tutto insieme, comprese le parti di interfaccia che devono restare ferme,
   e la verifica sarebbe un confronto a tappeto su 33 template. Applicando la
   scala solo dove c'e testo da leggere ottengo lo stesso guadagno con un
   raggio d'azione che si controlla a occhio.

   Sui selettori: p e h1..h4 hanno specificita (0,0,1), la stessa che hanno
   in vc-foundation-core.css sia nel blocco base sia in quello dentro la
   media query medium-up. Le media query non aggiungono specificita, quindi
   arrivando dopo vinco entrambi senza !important. Tutte le regole del tema
   che qualificano un titolo con una classe o un id (.vc-related-title,
   .vc-news-title, #homepage h1, #homepage h2, #footervs h4,
   .vc-social-simple-title) hanno specificita piu alta e continuano a
   vincere: quei titoli restano esattamente come sono.
*/

p {
	font-size: var(--vc-testo-fluido);
	/* line-height NON toccata: resta l'1.6 di Foundation. L'interlinea piu
	   ampia la do solo ai testi lunghi, piu sotto, per non cambiare il ritmo
	   verticale delle schede. */
}

h1 {
	font-size: var(--vc-h1-fluido);
}

h2 {
	font-size: var(--vc-h2-fluido);
}

h3 {
	font-size: var(--vc-h3-fluido);
}

h4 {
	font-size: var(--vc-h4-fluido);
}

/*
   Elenchi dentro il contenuto: stessa misura dei paragrafi, altrimenti in un
   articolo il testo puntato resterebbe fisso a 16px mentre i paragrafi
   crescono. La clamp e assoluta, non in em, quindi gli elenchi annidati non
   si moltiplicano. Lascio fuori dd, che style.css tiene volutamente a 0.9em.
*/
.entry-content ul li,
.entry-content ol li {
	font-size: var(--vc-testo-fluido);
}

/* ===============================================================
   3. COMFORT DI LETTURA
   =============================================================== */

/* ---------------------------------------------------------------
   3.1 Parole lunghe

   Puramente difensivo e senza effetti collaterali: entra in gioco solo
   quando una parola non ci starebbe comunque. Nel dominio turistico capita
   con gli indirizzi web incollati nei contenuti e con i toponimi composti.
   --------------------------------------------------------------- */
h1,
h2,
h3,
h4,
h5,
h6,
p,
li,
dt,
dd,
figcaption,
blockquote,
.entry-content {
	overflow-wrap: break-word;
}

/* ---------------------------------------------------------------
   3.2 Lunghezza di riga e interlinea nei testi lunghi

   ATTENZIONE, e il punto del file su cui chiedere conferma.
   Un limite in ch non ha alcun effetto su telefono: a 492px la riga e gia di
   circa 55 caratteri, dentro l'intervallo consigliato di 45-75. L'unico
   posto dove morde e il desktop, dove la colonna .large-8 misura circa
   831px, cioe piu di 90 caratteri. Quindi questa regola, che il brief mette
   sotto "comfort su telefono", in pratica cambia solo l'aspetto della pagina
   su schermo grande: restringe il testo di circa 130px.

   L'ho scritta lo stesso perche e la richiesta esplicita del punto 3 e
   perche 90 caratteri per riga sono davvero troppi, ma l'ho circoscritta il
   piu possibile:
     - solo .single e .page, cioe articoli e pagine, mai la home, mai gli
       archivi, mai le schede;
     - solo i figli diretti di .entry-content, cosi immagini, mappe, gallerie
       e caroselli restano a piena larghezza;
     - 70ch, non 65, per lasciare il margine piu largo possibile.
   Se il committente preferisce non toccare il desktop si elimina questo
   singolo blocco e tutto il resto del file resta valido.

   Il max-width sta sugli elementi di testo, non su .row, .columns o sulle
   classi di griglia: vc-grid.css non viene sfiorato.
   --------------------------------------------------------------- */
.single .entry-content > p,
.single .entry-content > ul,
.single .entry-content > ol,
.single .entry-content > blockquote,
.page .entry-content > p,
.page .entry-content > ul,
.page .entry-content > ol,
.page .entry-content > blockquote {
	max-width: 70ch;
}

/*
   Interlinea 1.7 (--vc-interlinea-ampia) invece dell'1.6 di Foundation, e
   solo qui. Non uso --vc-interlinea, che vale 1.5: sarebbe piu stretta di
   quella attuale e peggiorerebbe la lettura.
*/
.single .entry-content > p,
.page .entry-content > p {
	line-height: var(--vc-interlinea-ampia, 1.7);
}

/* ---------------------------------------------------------------
   3.3 Blocchi che non si comprimono

   pre: lo scorrimento orizzontale e sempre preferibile al testo tagliato o
   al codice che sfonda la colonna. Additivo, non tocca sfondo, bordo e
   padding gia definiti in style.css.
   --------------------------------------------------------------- */
.entry-content pre {
	max-width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.entry-content iframe {
	max-width: 100%;
}

/*
   Tabelle: solo sotto i 40em.

   display:block su una <table> e la tecnica classica per renderla
   scorrevole, ma cambia il modo in cui la tabella calcola la propria
   larghezza. Su desktop non serve, la colonna e larga e le tabelle ci
   stanno, quindi la limito al telefono, dove l'alternativa e una pagina che
   scorre di lato tutta intera. Rischio su desktop: nullo, la regola non
   esiste.
*/
@media only screen and (max-width: 40em) {

	.entry-content table {
		display: block;
		width: 100%;
		max-width: 100%;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}
}
