/* NPT Gestione – sito pubblico. Colori NPT: navy #1A2B41, arancio #CF5C2A.
   Il tema può sovrascrivere le variabili qui sotto. */
:root {
	--npt-navy: #1A2B41;
	--npt-arancio: #CF5C2A;
	--npt-chiaro: #F5F3F1;
	--npt-bordo: #E2DED9;
	--npt-testo: #1A2B41;
	--npt-testo-tenue: #5B6573;
	--npt-vinta: #2E7D4F;
	--npt-persa: #B23A2B;
}

.npt-tabella {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.95em;
	color: var(--npt-testo);
}
.npt-tabella th,
.npt-tabella td {
	padding: 8px 10px;
	border-bottom: 1px solid var(--npt-bordo);
	text-align: center;
}
.npt-tabella thead th {
	background: var(--npt-navy);
	color: #fff;
	font-weight: 600;
	border-bottom: 0;
}
.npt-tabella .npt-sx,
.npt-calendario td:nth-child(3),
.npt-calendario th:nth-child(3) { text-align: left; }
.npt-tabella tr.npt-noi td {
	background: #FCEFE8;
	font-weight: 700;
}
.npt-tabella tr.npt-noi td:first-child { box-shadow: inset 4px 0 0 var(--npt-arancio); }
.npt-calendario tr.npt-in-casa td:nth-child(3) a { font-weight: 700; }
.npt-scorri { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.npt-nota, .npt-vuoto { color: var(--npt-testo-tenue); font-size: 0.9em; }

.npt-esito {
	display: inline-block;
	min-width: 1.6em;
	padding: 0 4px;
	border-radius: 3px;
	color: #fff;
	font-size: 0.8em;
	font-weight: 700;
	text-align: center;
}
.npt-esito-v { background: var(--npt-vinta); }
.npt-esito-p { background: var(--npt-persa); }

/* Prossima partita */
.npt-prossima {
	border-left: 4px solid var(--npt-arancio);
	background: var(--npt-chiaro);
	padding: 16px 20px;
	color: var(--npt-testo);
}
.npt-prossima-etichetta { text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.8em; color: var(--npt-arancio); font-weight: 700; }
.npt-prossima-titolo { font-size: 1.4em; font-weight: 700; margin: 4px 0; }
.npt-prossima-titolo a { color: inherit; text-decoration: none; }
.npt-prossima-data { font-weight: 600; }
.npt-prossima-campo { color: var(--npt-testo-tenue); margin-top: 4px; }

/* Ultimi risultati */
.npt-risultati { list-style: none; margin: 0; padding: 0; }
.npt-risultati li { padding: 8px 0; border-bottom: 1px solid var(--npt-bordo); }
.npt-risultati-data { color: var(--npt-testo-tenue); font-size: 0.9em; margin-right: 6px; }

/* Un solo risultato (box "Ultima partita"): data a sinistra; squadre, punteggio ed esito centrati uno sotto l'altro */
.npt-risultati-una li { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; border-bottom: 0; padding: 0; }
.npt-risultati-una .npt-risultati-data { align-self: flex-start; justify-self: start; text-align: left; margin: 0 0 8px; }
.npt-risultati-una .npt-risultati-partita { font-weight: 600; font-size: 1.15em; color: var(--npt-testo); text-decoration: none; }
.npt-risultati-una .npt-risultati-partita:hover { color: var(--npt-arancio); }
.npt-risultati-una .npt-risultati-punteggio { font-family: "Barlow Condensed", sans-serif; font-weight: 800; font-size: 2.6em; line-height: 1; color: #B04A1F; }
.npt-risultati-una .npt-esito { min-width: 0; padding: 4px 14px; border-radius: 999px; font-size: 0.9em; font-weight: 700; }
.npt-risultati-una .npt-esito-v { background: #FBE6DA; color: #B04A1F; }
.npt-risultati-una .npt-esito-p { background: var(--npt-chiaro); color: var(--npt-testo-tenue); }

/* Scheda partita */
.npt-scheda-partita { margin-bottom: 24px; color: var(--npt-testo); }
.npt-sp-intesta {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 16px;
	background: var(--npt-navy);
	color: #fff;
	padding: 20px;
	border-radius: 6px;
}
.npt-sp-squadra { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; font-weight: 600; }
.npt-sp-squadra.npt-noi span { color: #F5A062; }
.npt-sp-punteggio { font-size: 2.4em; font-weight: 800; white-space: nowrap; }
.npt-sp-trattino { margin: 0 0.25em; opacity: 0.6; }
.npt-sp-vs { font-size: 1.2em; text-transform: uppercase; opacity: 0.85; }
.npt-logo { width: 64px; height: 64px; object-fit: contain; background: #fff; border-radius: 50%; padding: 4px; }
.npt-parziali { margin-top: 12px; }
.npt-parziali tbody th { text-align: left; }
.npt-sp-info { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 16px 0; }
.npt-sp-info dt { font-weight: 700; color: var(--npt-testo-tenue); }
.npt-sp-info dd { margin: 0; }
.npt-sp-info ul { margin: 0; padding-left: 1.1em; }
@media (max-width: 600px) {
	.npt-sp-intesta { grid-template-columns: 1fr; }
	.npt-sp-info { grid-template-columns: 1fr; }
}

/* Roster */
.npt-roster {
	list-style: none;
	margin: 0 0 24px;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 16px;
}
.npt-roster-scheda a {
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: var(--npt-testo);
	border: 1px solid var(--npt-bordo);
	border-radius: 6px;
	overflow: hidden;
	background: #fff;
	position: relative;
}
.npt-roster-foto, .npt-roster-segnaposto { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; display: block; background: var(--npt-chiaro); }
.npt-roster-numero {
	position: absolute;
	top: 8px;
	left: 8px;
	background: var(--npt-arancio);
	color: #fff;
	font-weight: 800;
	min-width: 2em;
	text-align: center;
	padding: 2px 6px;
	border-radius: 3px;
}
.npt-roster-nome { font-weight: 700; padding: 8px 10px 0; }
.npt-roster-ruolo { color: var(--npt-testo-tenue); font-size: 0.9em; padding: 0 10px 10px; }

/* Staff */
.npt-staff { list-style: none; margin: 0 0 24px; padding: 0; }
.npt-staff li { padding: 6px 0; border-bottom: 1px solid var(--npt-bordo); }
.npt-staff-funzione { display: inline-block; min-width: 14em; color: var(--npt-testo-tenue); }
.npt-titolo-sezione { color: var(--npt-navy); }

/* Organigramma – [npt_organigramma]
   Card con foto 4:5, funzione in arancio e nome in maiuscolo.
   Il font Barlow Condensed viene dal tema (Elementor); se manca si usa un sans-serif. */
.npt-organigramma { color: var(--npt-testo); }
.npt-org-area { margin: 0 0 64px; }
.npt-org-area:last-child { margin-bottom: 0; }
.npt-org-titolo {
	margin: 0 0 28px;
	font-family: "Barlow Condensed", sans-serif;
	font-weight: 800;
	font-style: italic;
	font-size: 40px;
	line-height: 1;
	text-transform: uppercase;
	color: var(--npt-navy);
}
.npt-org-titolo::after {
	content: "";
	display: block;
	width: 48px;
	height: 4px;
	margin-top: 10px;
	border-radius: 2px;
	background: var(--npt-arancio);
}
.npt-org-sottotitolo {
	margin: 32px 0 20px;
	font-family: "Barlow Condensed", sans-serif;
	font-weight: 700;
	font-size: 24px;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: #36516B;
}
.npt-org-griglia {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: 24px;
}
.npt-org-griglia + .npt-org-griglia { margin-top: 24px; }
.npt-org-scheda { margin: 0; padding: 0; list-style: none; }
.npt-org-scheda > a,
.npt-org-scheda > div {
	display: flex;
	flex-direction: column;
	height: 100%;
	background: #fff;
	border: 1px solid var(--npt-bordo);
	border-radius: 12px;
	overflow: hidden;
	color: var(--npt-testo);
	text-decoration: none;
	transition: transform .2s ease, box-shadow .2s ease;
}
.npt-org-scheda > a:hover,
.npt-org-scheda > a:focus-visible {
	transform: translateY(-4px);
	box-shadow: 0 14px 30px rgba(26, 43, 65, .18);
}
.npt-org-scheda > a:focus-visible { outline: 3px solid var(--npt-arancio); outline-offset: 3px; }
.npt-org-foto-box {
	position: relative;
	display: block;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: radial-gradient(circle at 50% 38%, #36516B 0, var(--npt-navy) 70%);
}
.npt-org-foto {
	position: absolute;
	inset: 0;
	width: 100% !important;
	height: 100% !important;
	max-width: none;
	object-fit: cover;
	object-position: 50% 20%;
	border-radius: 0;
	transition: transform .4s ease;
}
.npt-org-scheda > a:hover .npt-org-foto { transform: scale(1.04); }
.npt-org-segnaposto {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: flex-end;
	justify-content: center;
}
.npt-org-segnaposto svg { width: 62%; height: auto; fill: rgba(255, 255, 255, .12); }
.npt-org-testo {
	min-width: 0;
	overflow-wrap: anywhere;
	hyphens: auto;
	display: flex;
	flex-direction: column;
	gap: 4px;
	flex: 1;
	padding: 16px 18px 20px;
	border-top: 4px solid #36516B;
}
.npt-org-evidenza .npt-org-testo { border-top-color: var(--npt-arancio); }
.npt-org-funzione {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 1.5px;
	line-height: 1.3;
	text-transform: uppercase;
	color: #B04A1F;
}
.npt-org-nome {
	font-family: "Barlow Condensed", sans-serif;
	font-weight: 700;
	font-size: 22px;
	line-height: 1.1;
	text-transform: uppercase;
	color: var(--npt-navy);
}
@media (max-width: 767px) {
	.npt-org-area { margin-bottom: 48px; }
	.npt-org-titolo { font-size: 32px; }
	.npt-org-griglia { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
	.npt-org-griglia + .npt-org-griglia { margin-top: 12px; }
	.npt-org-testo { padding: 12px 12px 14px; }
	.npt-org-funzione { font-size: 11px; letter-spacing: 1px; }
	.npt-org-nome { font-size: 18px; }
}
@media (prefers-reduced-motion: reduce) {
	.npt-org-scheda > a, .npt-org-foto { transition: none; }
	.npt-org-scheda > a:hover { transform: none; }
	.npt-org-scheda > a:hover .npt-org-foto { transform: none; }
}

/* Sponsor – [npt_sponsor]
   Ogni livello è una sezione. "grande": loghi grandi centrati (naming sponsor).
   "griglia": riquadri bianchi tutti uguali, il logo è centrato e ridimensionato dentro,
   così loghi orizzontali, quadrati o JPG con sfondo bianco restano allineati.
   Le righe incomplete (es. un solo sponsor) restano centrate. */
.npt-sponsor { color: var(--npt-testo); }
.npt-sponsor-livello { margin: 0 0 56px; text-align: center; }
.npt-sponsor-livello:last-child { margin-bottom: 0; }
.npt-sponsor-titolo {
	margin: 0 0 28px;
	font-family: "Barlow Condensed", sans-serif;
	font-weight: 800;
	font-style: italic;
	font-size: 32px;
	line-height: 1;
	text-transform: uppercase;
	color: var(--npt-navy);
}
.npt-sponsor-titolo::after {
	content: "";
	display: block;
	width: 48px;
	height: 4px;
	margin: 10px auto 0;
	border-radius: 2px;
	background: var(--npt-arancio);
}
.npt-sponsor-loghi {
	--npt-sponsor-colonne: 4;
	--npt-sponsor-spazio: 20px;
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--npt-sponsor-spazio);
}
.npt-sponsor-grande .npt-sponsor-loghi { --npt-sponsor-spazio: 24px; }
.npt-sponsor-voce {
	margin: 0;
	padding: 0;
	list-style: none;
	flex: 0 0 calc((100% - (var(--npt-sponsor-colonne) - 1) * var(--npt-sponsor-spazio)) / var(--npt-sponsor-colonne));
	min-width: 0;
}
.npt-sponsor-grande .npt-sponsor-voce { flex: 0 1 560px; }
.npt-sponsor-voce > a,
.npt-sponsor-voce > div {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
	aspect-ratio: 3 / 2;
	box-sizing: border-box;
	padding: 18px 22px;
	background: #fff;
	border: 1px solid var(--npt-bordo);
	border-radius: 12px;
	color: var(--npt-testo);
	text-decoration: none;
	transition: transform .2s ease, box-shadow .2s ease;
}
.npt-sponsor-grande .npt-sponsor-voce > a,
.npt-sponsor-grande .npt-sponsor-voce > div {
	aspect-ratio: 8 / 3;
	padding: 28px 40px;
}
.npt-sponsor-voce > a:hover,
.npt-sponsor-voce > a:focus-visible {
	transform: translateY(-4px);
	box-shadow: 0 14px 30px rgba(26, 43, 65, .14);
}
.npt-sponsor-voce > a:focus-visible { outline: 3px solid var(--npt-arancio); outline-offset: 3px; }
.npt-sponsor-logo {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: 100%;
	object-fit: contain;
	border-radius: 0;
}
.npt-sponsor-nome {
	min-width: 0;
	font-family: "Barlow Condensed", sans-serif;
	font-weight: 700;
	font-size: 20px;
	line-height: 1.1;
	text-transform: uppercase;
	color: var(--npt-navy);
	overflow-wrap: break-word;
	hyphens: auto;
}
.npt-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Senza riquadro (cornice="no"), es. striscia di loghi nel footer. */
.npt-sponsor-senza-cornice .npt-sponsor-voce > a,
.npt-sponsor-senza-cornice .npt-sponsor-voce > div {
	background: transparent;
	border-color: transparent;
	padding: 8px 12px;
}
.npt-sponsor-senza-cornice .npt-sponsor-voce > a:hover,
.npt-sponsor-senza-cornice .npt-sponsor-voce > a:focus-visible { box-shadow: none; }

/* Sfondo scuro (sfondo="scuro"), es. header o footer blu. */
.npt-sponsor-scuro .npt-sponsor-titolo,
.npt-sponsor-scuro .npt-sponsor-nome { color: #fff; }
.npt-sponsor-scuro .npt-sponsor-voce > a,
.npt-sponsor-scuro .npt-sponsor-voce > div {
	background: rgba(255, 255, 255, .06);
	border-color: rgba(255, 255, 255, .16);
}
.npt-sponsor-scuro.npt-sponsor-senza-cornice .npt-sponsor-voce > a,
.npt-sponsor-scuro.npt-sponsor-senza-cornice .npt-sponsor-voce > div {
	background: transparent;
	border-color: transparent;
}
/* Su sfondo scuro, chi non ha il logo per sfondo scuro tiene il riquadro bianco. */
.npt-sponsor-scuro .npt-sponsor-fondo-bianco > a,
.npt-sponsor-scuro .npt-sponsor-fondo-bianco > div,
.npt-sponsor-scuro.npt-sponsor-senza-cornice .npt-sponsor-fondo-bianco > a,
.npt-sponsor-scuro.npt-sponsor-senza-cornice .npt-sponsor-fondo-bianco > div {
	background: #fff;
	border-color: #fff;
	padding: 12px 16px;
}

@media (max-width: 1024px) {
	.npt-sponsor-loghi { --npt-sponsor-colonne: 3; }
}
@media (max-width: 767px) {
	.npt-sponsor-livello { margin-bottom: 40px; }
	.npt-sponsor-titolo { font-size: 26px; margin-bottom: 20px; }
	.npt-sponsor-loghi { --npt-sponsor-colonne: 2; --npt-sponsor-spazio: 12px; }
	.npt-sponsor-voce > a,
	.npt-sponsor-voce > div { padding: 12px 14px; border-radius: 10px; }
	.npt-sponsor-grande .npt-sponsor-voce > a,
	.npt-sponsor-grande .npt-sponsor-voce > div { padding: 18px 20px; }
	.npt-sponsor-nome { font-size: 17px; }
}
@media (prefers-reduced-motion: reduce) {
	.npt-sponsor-voce > a { transition: none; }
	.npt-sponsor-voce > a:hover { transform: none; }
}

/* Risultato ufficioso (0.4.2) */
.npt-ufficioso {
	display: inline-block;
	margin-left: 4px;
	padding: 1px 8px;
	border: 1px dashed currentColor;
	border-radius: 999px;
	font-size: 0.75em;
	font-style: italic;
	opacity: 0.8;
	vertical-align: middle;
}
.npt-risultati-una .npt-ufficioso { margin: 4px 0 0; }
.npt-sp-ufficioso { text-align: center; font-size: 0.9em; font-style: italic; color: var(--npt-testo-tenue, #555); margin: 8px 0 4px; }
