/*
Theme Name: New Campus
Theme URI: https://www.newcampusgestioni.it/
Author: New Campus Gestioni S.r.l.
Description: Tema a blocchi del sito New Campus Gestioni (L'Aquila). Token di design in theme.json; contenuti modificabili dall'editor.
Requires at least: 6.7
Tested up to: 7.1
Requires PHP: 7.4
Version: 0.5.3
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: newcampus
*/

/* ------------------------------------------------------------------ base */

/* L'header blu è fisso sopra i 700 px (alto 73 px): gli scorrimenti si fermano sotto di lui. Lo spazio in più lo
   decide l'elemento di arrivo con scroll-margin-top (es. la galleria della home: 16 px). */
html {
	scroll-padding-top: var(--wp--custom--header-altezza);
}

@media (max-width: 699px) {
	html {
		scroll-padding-top: 0; /* header non fisso */
	}
}

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

/* Titoli semi-expanded (larghezza 115–125): richiama il carattere "varsity" del logo senza imitarlo */
h1, h2, h3, h4, h5, h6,
.wp-block-heading,
.wp-block-post-title {
	font-stretch: 120%;
	text-wrap: balance;
}

p,
li {
	text-wrap: pretty;
}

/* Le sezioni principali (header, contenuto, invito, footer) si toccano: gli spazi li gestisce ogni sezione */
.wp-site-blocks > * {
	margin-block-start: 0;
}

/* Focus sempre visibile (WCAG 2.4.7) */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: var(--wp--custom--focus);
	outline-offset: 2px;
	border-radius: 2px;
}

.screen-reader-text:focus,
.skip-link:focus {
	background: var(--wp--preset--color--bianco);
	color: var(--wp--preset--color--blu-notte);
	z-index: 100000;
}

img {
	height: auto;
	max-width: 100%;
}

/* Foto e pannelli: raggio 10 px; bottoni e input: 6 px */
.wp-block-image img,
.wp-block-cover,
.wp-block-gallery .wp-block-image img,
.nc-pannello {
	border-radius: var(--wp--custom--raggio--media);
}

.wp-block-cover.alignfull,
.alignfull > .wp-block-cover {
	border-radius: 0;
}

input,
select,
textarea {
	border-radius: var(--wp--custom--raggio--ui);
	font: inherit;
}

/* ------------------------------------------------------------------ icone (Lucide, ISC) */

.nc-icona::before,
.nc-btn-icona .wp-block-button__link::before {
	content: "";
	display: inline-block;
	flex: none;
	width: 1.25em;
	height: 1.25em;
	background-color: currentColor;
	-webkit-mask: var(--nc-icona) center / contain no-repeat;
	mask: var(--nc-icona) center / contain no-repeat;
}

.nc-icona-telefono {
	--nc-icona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
}

.nc-icona-mail {
	--nc-icona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E");
}

.nc-icona-posizione {
	--nc-icona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}

/* WhatsApp: icona "messaggio" generica (nessun marchio di terzi) */
.nc-icona-whatsapp {
	--nc-icona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.9 20A9 9 0 1 0 4 16.1L2 22Z'/%3E%3C/svg%3E");
}

.nc-icona-calendario {
	--nc-icona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M16 2v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/svg%3E");
}

.nc-btn-icona .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
}

/* ------------------------------------------------------------------ header */
/* Header blu, uguale su tutte le pagine (anteprima cliccabile del 22/10/2026): nessun logo (sta nell'hero della home e
   nell'intestazione delle pagine interne), menu a sinistra con lo stesso margine della fascia dell'hero, "EN" e
   "Prenota una visita" a destra. Testo bianco su Blu Campus: 8,6:1. Sotto i 700 px tutto centrato su tre righe. */

.nc-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: var(--wp--preset--color--blu-campus);
	color: var(--wp--preset--color--bianco);
}

.admin-bar .nc-header {
	top: var(--wp-admin--admin-bar--height, 32px);
}

.nc-header__riga {
	padding: 14px max(24px, min(62px, 4.3vw));
	gap: 1rem 2rem;
}

.nc-header .nc-nav {
	flex: 1 1 420px;
}

.nc-header .nc-nav,
.nc-header .nc-nav .wp-block-navigation__container {
	justify-content: flex-start;
}

.nc-header__cta {
	gap: 1rem;
}

/* se va a capo (700-1100 px) resta a destra; serve la doppia classe per battere ".is-layout-flex > *" */
.nc-header .nc-header__cta {
	margin-left: auto;
}

.nc-lingue {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	letter-spacing: 0.02em;
	white-space: nowrap;
}

.nc-header .nc-lingue a {
	color: var(--wp--preset--color--bianco);
	text-decoration: none;
	padding: 0.5rem 0.25rem;
}

/* Navigazione principale */
.nc-nav .wp-block-navigation-item__content {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	color: var(--wp--preset--color--bianco);
	text-decoration: none;
	padding: 0.625rem 0;
}

.nc-nav .wp-block-navigation__container {
	gap: 0.25rem 1.75rem;
}

/* Hover: sottolineatura bianca */
.nc-header .nc-nav .wp-block-navigation-item__content:hover,
.nc-header .nc-lingue a:hover {
	color: var(--wp--preset--color--bianco);
	text-decoration: underline;
	text-underline-offset: 5px;
}

/* Pagina corrente: bianca con sottolineatura spessa bianca (aria-current="page" aggiunto da functions.php) */
.nc-nav .current-menu-item > .wp-block-navigation-item__content,
.nc-nav [aria-current="page"] {
	color: var(--wp--preset--color--bianco);
	box-shadow: inset 0 -3px 0 var(--wp--preset--color--bianco);
}

/* Focus visibile bianco sul fondo blu */
.nc-header :where(a, button):focus-visible {
	outline: 3px solid var(--wp--preset--color--bianco);
	outline-offset: 2px;
}

.nc-header .nc-btn-cta .wp-block-button__link {
	background: var(--wp--preset--color--verde-campus);
	color: var(--wp--preset--color--bianco);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	padding: 0.75rem 1.25rem;
	white-space: nowrap;
}

.nc-header .nc-btn-cta .wp-block-button__link:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}

@media (max-width: 699px) {
	/* Su smartphone l'header alto tre righe non resta fisso: occuperebbe troppo schermo */
	.nc-header {
		position: static;
	}

	.nc-header__riga {
		justify-content: center;
		padding: 12px 16px;
		gap: 6px 0;
	}

	.nc-header .nc-nav,
	.nc-header .nc-nav .wp-block-navigation__container {
		flex: 1 1 100%;
		justify-content: center;
	}

	.nc-nav .wp-block-navigation__container {
		gap: 0 22px;
	}

	/* Due righe fisse: "Il complesso · Alloggi · Posizione" e sotto "Soluzioni · Contatti" */
	.nc-nav .wp-block-navigation__container::after {
		content: "";
		order: 2;
		flex-basis: 100%;
		height: 0;
	}

	.nc-nav .wp-block-navigation__container > .wp-block-navigation-item:nth-child(n+4) {
		order: 3;
	}

	.nc-header__cta {
		flex: 1 1 100%;
		position: relative;
		justify-content: center;
	}

	.nc-header .nc-header__cta {
		margin-left: 0;
	}

	/* senza "EN" (nascosto fino alla versione inglese) il pulsante resta centrato */
	.nc-header__cta .nc-lingue {
		position: absolute;
		left: 0;
		top: 50%;
		transform: translateY(-50%);
	}
}

/* ------------------------------------------------------------------ intestazione delle pagine interne */
/* Fascia azzurra con titolo a sinistra e logo a destra (link alla home); sotto i 700 px il logo va sopra. */

.nc-intestazione {
	background: var(--wp--preset--color--cielo);
}

.nc-intestazione__riga {
	max-width: var(--wp--style--global--wide-size, 1240px);
	margin-inline: auto;
	padding: 64px 32px 60px;
	box-sizing: border-box;
	gap: 24px 48px;
}

.nc-intestazione .nc-intestazione__testo {
	flex: 1 1 0%;
	min-width: 0;
}

/* da 700 px in su il logo resta sempre a destra del testo, anche con titoli lunghi */
@media (min-width: 700px) {
	.nc-intestazione .nc-intestazione__riga {
		flex-wrap: nowrap;
	}
}

.nc-intestazione h1 {
	margin: 0 0 14px;
	font-size: clamp(36px, 3.2vw, 52px);
	line-height: 1.05;
	color: var(--wp--preset--color--blu-campus);
}

.nc-intestazione .nc-intestazione__logo {
	flex: none;
}

.nc-intestazione .nc-intestazione__logo img,
.nc-intestazione .nc-intestazione__logo .custom-logo {
	display: block;
	width: clamp(200px, 18vw, 260px);
	height: auto;
}

@media (max-width: 699px) {
	.nc-intestazione__riga {
		padding: 40px 16px 44px;
		justify-content: flex-start;
	}

	.nc-intestazione .nc-intestazione__logo {
		order: -1;
		flex-basis: 100%;
	}

	.nc-intestazione .nc-intestazione__logo img,
	.nc-intestazione .nc-intestazione__logo .custom-logo {
		width: 200px;
	}

	.nc-intestazione h1 {
		font-size: 36px;
	}
}

/* ------------------------------------------------------------------ footer */

.nc-footer {
	color: var(--wp--preset--color--bianco);
	background: var(--wp--preset--color--blu-notte);
	font-size: var(--wp--preset--font-size--small);
}

.nc-footer .wp-block-heading {
	margin-bottom: 0.75rem;
}

.nc-footer a {
	color: var(--wp--preset--color--bianco);
	text-decoration-color: rgb(255 255 255 / 0.5);
	text-underline-offset: 0.2em;
}

.nc-footer a:hover {
	color: var(--wp--preset--color--verde-chiaro);
	text-decoration-color: currentColor;
}

.nc-footer :where(h2, h3, .wp-block-heading) {
	color: var(--wp--preset--color--bianco);
}

.nc-footer :focus-visible {
	outline-color: var(--wp--preset--color--bianco);
}

.nc-footer__logo img {
	width: 132px;
	height: auto;
}

.nc-footer__contatti p {
	margin: 0 0 0.25rem;
}

.nc-footer__contatti .nc-icona::before {
	margin-top: 0.2em;
	opacity: 0.85;
}

.nc-footer__fondo {
	border-top: 1px solid rgb(255 255 255 / 0.18);
	font-size: var(--wp--preset--font-size--small);
	color: rgb(255 255 255 / 0.85);
}

/* ------------------------------------------------------------------ WhatsApp fisso (mobile) */

.nc-whatsapp-fisso {
	display: none;
}

@media (max-width: 781px) {
	.nc-whatsapp-fisso {
		display: inline-flex;
		position: fixed;
		right: 16px;
		bottom: calc(16px + env(safe-area-inset-bottom));
		z-index: 60;
		align-items: center;
		gap: 0.5rem;
		padding: 0.75rem 1rem;
		border-radius: 999px;
		background: var(--wp--preset--color--verde-campus);
		color: var(--wp--preset--color--bianco);
		font-weight: 600;
		text-decoration: none;
		box-shadow: 0 4px 16px rgb(14 36 64 / 0.25);
	}

	.nc-whatsapp-fisso:hover,
	.nc-whatsapp-fisso:focus-visible {
		background: var(--wp--custom--verde-campus-hover);
		color: var(--wp--preset--color--bianco);
	}

	/* spazio in fondo perché il pulsante non copra il footer */
	.nc-footer__fondo {
		padding-bottom: 5rem !important;
	}
}

/* ------------------------------------------------------------------ invito "Prenota una visita" */

.nc-cta-visita {
	background: var(--wp--preset--color--cielo);
}

/* ------------------------------------------------------------------ movimento ridotto */

@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;
	}
}

/* I numeri di telefono non vanno mai a capo */
a[href^="tel:"] {
	white-space: nowrap;
}

/* Footer come l'anteprima approvata: titoli brevi in larghezza normale, note più tenui */
.nc-footer .wp-block-heading {
	font-stretch: 100%;
	font-weight: 600;
	letter-spacing: 0;
}

.nc-footer__nota {
	color: rgb(255 255 255 / 0.75);
}
