/* =====================================================================
   cinquepermilleonlus.it — Redesign 2026
   Layer di override moderno sopra Bootstrap 3. Non modifica la griglia.
   Tema: non profit / 5x1000, sobrio, verde solidarietà, accessibile WCAG 2.2.
   ===================================================================== */

:root{
	--ink:#16241d;
	--ink-soft:#4a5a52;
	--paper:#f6f4ee;
	--surface:#ffffff;
	--green:#15683f;
	--green-700:#0f5231;
	--green-300:#7bbf99;
	--green-50:#e8f3ec;
	--gold:#c8920f;
	--line:#e3ded3;
	--ring:#2f9e69;
	--radius:14px;
	--radius-sm:10px;
	--shadow-sm:0 1px 2px rgba(22,36,29,.06), 0 2px 8px rgba(22,36,29,.05);
	--shadow-md:0 6px 22px rgba(22,36,29,.10);
	--shadow-lg:0 18px 48px rgba(22,36,29,.16);
	--sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,"Helvetica Neue",Arial,sans-serif;
	--maxw:1180px;
}

/* ---------- Base ---------- */
body{
	font-family:var(--sans) !important;
	font-size:17px;
	line-height:1.6;
	color:var(--ink);
	background:
		radial-gradient(1200px 480px at 78% -8%, var(--green-50), transparent 60%),
		var(--paper);
	-webkit-font-smoothing:antialiased;
	text-rendering:optimizeLegibility;
}
.container{ max-width:var(--maxw); }

h1,h2,h3,h4{ color:var(--ink); letter-spacing:-.01em; line-height:1.2; }
h1{ font-size:clamp(1.8rem,1.2rem + 2.2vw,2.6rem); font-weight:800; text-align:center; padding:34px 0 8px; }
h2{ font-size:1.5rem; font-weight:750; }
h3{ font-size:1.18rem; font-weight:700; }
p{ color:var(--ink-soft); }
a{ color:var(--green-700); transition:color .15s ease; }
a:hover{ color:var(--green); }

/* Accessibilità: focus sempre visibile (WCAG 2.2 — 2.4.11/2.4.13) */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible{
	outline:3px solid var(--ring);
	outline-offset:2px;
	border-radius:4px;
}

/* Skip link (2.4.1) */
.skip-link{
	position:absolute; left:-9999px; top:auto; width:1px; height:1px; overflow:hidden;
}
.skip-link:focus{
	position:fixed; top:10px; left:10px; z-index:100000;
	width:auto; height:auto; padding:.6rem 1rem;
	background:var(--ink); color:#fff; border-radius:8px; box-shadow:var(--shadow-md);
}

/* ---------- Header / Nav ---------- */
header.site-header, header{
	background:var(--surface) !important;
	border-bottom:1px solid var(--line);
	box-shadow:var(--shadow-sm);
	padding-top:14px !important;
	position:sticky; top:0; z-index:900;
}
.logo, header .logo{ max-height:64px; width:auto; }

.navbar.navbar-default{
	background:transparent !important;
	border:none !important;
	text-transform:none !important;
	margin-bottom:6px;
	min-height:auto;
}
.navbar .nav.navbar-nav{ display:flex; flex-wrap:wrap; gap:6px; float:right; }
.navbar .navbar-nav > li > a{
	color:var(--ink) !important;
	font-weight:650;
	font-size:.98rem;
	padding:10px 16px !important;
	border-radius:999px;
	min-height:44px;            /* target size 2.5.8 */
	display:flex; align-items:center;
}
.navbar .navbar-nav > li > a:hover{ background:var(--green-50) !important; color:var(--green-700) !important; }
.navbar .navbar-nav > li.active > a{ background:var(--green) !important; color:#fff !important; }
.navbar-toggle{ border-radius:8px; border:1px solid var(--line); }
.navbar-toggle .icon-bar{ background:var(--ink); }

/* ---------- Search hero ---------- */
section.grigio_c{
	background:transparent !important;
	padding:16px 0 4px;
}
.search.container{
	background:var(--surface);
	border:1px solid var(--line);
	border-radius:var(--radius);
	box-shadow:var(--shadow-sm);
	padding:16px 18px 18px;
	margin-top:10px;
}
.search .ricerca h2{
	text-align:center; margin:2px 0 14px; font-size:1.15rem; color:var(--green-700);
}
.search .ricerca h3{
	text-align:center; margin:6px 0 12px; font-size:1rem; color:var(--green-700);
}
.search .filtri{ margin-bottom:10px; }

/* Form compatto e meno invadente nelle pagine interne (non home/cerca) */
body:not(.page-home):not(.page-cerca) section.grigio_c{ padding:10px 0 0; }
body:not(.page-home):not(.page-cerca) .search.container{ padding:12px 16px; margin-top:8px; box-shadow:none; }
body:not(.page-home):not(.page-cerca) .search .ricerca h2{ font-size:.98rem; margin:0 0 10px; }
body:not(.page-home):not(.page-cerca) .search .ricerca > .row:last-child{ display:none; } /* nasconde "Ricerca Avanzata" */
.search .filtri label{
	display:block; font-weight:650; color:var(--ink); margin-bottom:6px; font-size:.92rem;
}
.search .form-control{
	height:42px; border-radius:var(--radius-sm); border:1.5px solid var(--line);
	background:#fff; color:var(--ink); font-size:1rem; padding:8px 14px;
	box-shadow:none; transition:border-color .15s ease, box-shadow .15s ease;
}
.search .form-control:focus{
	border-color:var(--green-300); box-shadow:0 0 0 4px var(--green-50);
}
.button-ricerca{
	width:100%; min-height:48px; border:none; cursor:pointer;
	background:linear-gradient(180deg,var(--green),var(--green-700));
	color:#fff; font-weight:750; font-size:1rem; letter-spacing:.01em;
	border-radius:var(--radius-sm); padding:10px 18px; margin-top:22px;
	box-shadow:var(--shadow-sm); transition:transform .12s ease, box-shadow .2s ease, filter .15s ease;
}
.button-ricerca:hover{ filter:brightness(1.05); box-shadow:var(--shadow-md); transform:translateY(-1px); }
.button-ricerca:active{ transform:translateY(0); }

/* Bootstrap buttons used in admin / pagination */
.btn-primary{
	background:var(--green) !important; border-color:var(--green-700) !important;
	border-radius:var(--radius-sm); font-weight:650; min-height:44px;
}
.btn-primary:hover{ background:var(--green-700) !important; }

/* ---------- Region / Province / Town cards ---------- */
.regioni{ padding-top:8px; }
.regioni h3{ text-align:center; margin:18px 0; color:var(--ink); }

.region, .province, .town{
	display:block;
	background:var(--surface);
	border:1px solid var(--line);
	border-radius:var(--radius-sm);
	padding:14px 12px;
	margin:8px 0;
	min-height:48px;
	font-weight:650;
	color:var(--green-700) !important;
	text-align:center;
	box-shadow:var(--shadow-sm);
	transition:transform .14s ease, box-shadow .2s ease, border-color .15s ease, background .15s ease;
}
.region:hover, .province:hover, .town:hover{
	transform:translateY(-2px);
	box-shadow:var(--shadow-md);
	border-color:var(--green-300);
	background:var(--green-50);
	color:var(--green-700) !important;
}
.text-center.region, .text-center.province, .text-center .town{ text-align:center; }

/* region block (regione/provincia listing) */
.regionprovince{
	background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
	padding:16px; margin:14px 0; box-shadow:var(--shadow-sm);
}
.reglink{ display:flex; align-items:center; gap:14px; font-size:1.25rem; font-weight:750; color:var(--ink) !important; margin-bottom:8px; }
.reglink:hover{ color:var(--green-700) !important; }
.mapregion img{ height:48px; width:auto; max-width:60px; object-fit:contain; }

/* ---------- Italy map ---------- */
.mappa{
	background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
	padding:16px; box-shadow:var(--shadow-sm);
}
#Livello_1 polygon{ fill:#cfe4d7; stroke:#fff; stroke-width:1.2; transition:fill .15s ease; }
#Livello_1 polygon:hover{ cursor:pointer; fill:var(--green); }

.lista-reg ul{ list-style:none; padding:0; margin:0; }
.lista-reg li a{ display:block; padding:7px 10px; border-radius:8px; color:var(--ink) !important; font-weight:600; }
.lista-reg li a:hover{ background:var(--green-50); color:var(--green-700) !important; }

.intro{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:20px; box-shadow:var(--shadow-sm); }
.intro h3{ color:var(--green-700); }

/* ---------- SEO link blocks ---------- */
.all ul, .pop_link ul{ list-style:none; padding:0; margin:0; }
.all li a, .pop_link a{ color:var(--ink-soft); }
.all li a:hover, .pop_link a:hover{ color:var(--green-700); }
.pop_link .title{ font-weight:750; color:var(--ink); margin:18px 0 8px; }
.sep_b{ border-top:1px solid var(--line); margin:14px 0; }

/* ---------- Pagination ---------- */
.pagination{ display:inline-flex; gap:6px; flex-wrap:wrap; padding-left:0; }
.pagination > li > a, .pagination > li > span{
	border:1px solid var(--line) !important; border-radius:8px !important;
	color:var(--green-700) !important; min-width:44px; min-height:44px;
	display:flex; align-items:center; justify-content:center;
}
.pagination > li.active > span{ background:var(--green) !important; border-color:var(--green) !important; color:#fff !important; }
.pagination > li.disabled > a{ opacity:.45; }

/* ---------- Footer ---------- */
footer.site-footer{ background:var(--ink); color:#d9e2dc; margin-top:48px; }
footer.site-footer .ft-grid{ max-width:var(--maxw); margin:0 auto; padding:32px 20px 8px;
	display:grid; grid-template-columns:1fr; gap:24px; }
@media (min-width:768px){ footer.site-footer .ft-grid{ grid-template-columns:minmax(220px,1fr) minmax(0,1.7fr); } }
footer.site-footer .ft-about p{ color:#9fb3a8; font-size:.9rem; margin:0 0 12px; }
footer.site-footer .ft-links{ display:flex; flex-wrap:wrap; gap:0 4px; }
footer.site-footer .ft-links a{ padding:7px 8px; font-size:.85rem; border-radius:6px; }
footer.site-footer .ft-links a:hover{ background:rgba(255,255,255,.08); color:#fff; }
footer.site-footer h4{ color:#fff; font-size:1rem; margin:0 0 12px; }
footer.site-footer ul{ list-style:none; padding:0; margin:0; }
footer.site-footer li{ padding:0; }
footer.site-footer li a{ display:inline-block; padding:9px 2px; min-height:40px; line-height:1.4; }
footer.site-footer a{ color:#bcd2c5; font-size:.92rem; }
footer.site-footer a:hover{ color:#fff; }
footer.site-footer .ft-legal a{ display:inline-block; padding:6px 4px; }
footer.site-footer .ft-brand{ font-weight:800; font-size:1.15rem; color:#fff; }
footer.site-footer .ft-legal{ border-top:1px solid rgba(255,255,255,.12); margin-top:18px;
	padding:16px 20px; text-align:center; font-size:.86rem; color:#9fb3a8; }
footer.site-footer .ft-legal a{ color:#cfe0d6; }

/* ---------- GEO/AEO: breadcrumb, quick answer, FAQ ---------- */
.aeo{ margin:18px 0 6px; }
.aeo-breadcrumb{ font-size:.9rem; color:var(--ink-soft); margin-bottom:14px; }
.aeo-breadcrumb a{ color:var(--green-700); }
.aeo-breadcrumb span[aria-current]{ color:var(--ink); font-weight:650; }
.aeo-quick{
	background:var(--green-50); border:1px solid var(--green-300); border-left:4px solid var(--green);
	border-radius:var(--radius-sm); padding:16px 18px; margin:0 0 22px;
}
.aeo-quick p{ margin:0; color:var(--ink); font-size:1.02rem; }
.aeo-faq{ margin:24px 0; }
.aeo-faq h2{ font-size:1.35rem; margin:0 0 12px; }
.aeo-faq details{
	background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-sm);
	padding:0; margin:8px 0; box-shadow:var(--shadow-sm); overflow:hidden;
}
.aeo-faq summary{
	cursor:pointer; padding:14px 18px; font-weight:650; color:var(--ink);
	list-style:none; position:relative; min-height:44px; display:flex; align-items:center;
}
.aeo-faq summary::-webkit-details-marker{ display:none; }
.aeo-faq summary::after{ content:"+"; position:absolute; right:18px; font-size:1.3rem; color:var(--green); }
.aeo-faq details[open] summary::after{ content:"\2212"; }
.aeo-faq summary:focus-visible{ outline:3px solid var(--ring); outline-offset:-3px; }
.aeo-faq .aeo-a{ padding:0 18px 16px; color:var(--ink-soft); }

/* ---------- Fix accessibilità: contrasto + touch target (home) ---------- */
/* Bottoni-regione: bianco su #148914 = 3.9:1 (fail). Verde scuro = 6.9:1. */
.lista-reg ul li a{
	background-color:var(--green); color:#fff;
	padding:10px 8px; border-radius:8px; margin-bottom:4px;
	min-height:44px; display:flex; align-items:center; justify-content:center;
}
.lista-reg ul li a:hover,
.lista-reg ul li a:focus-visible{ background-color:var(--green-700); color:#fff; }

/* Link "parole chiave" in fondo: bianco su verde chiaro -> verde scuro */
.all ul li a{ background-color:var(--green); color:#fff; padding:6px 10px; line-height:1.6; }
.all ul li a:hover{ background-color:var(--green-700); color:#fff; }

/* Link diretti (province): tap target piu' grandi e distanziati */
.link_diretti ul li{ display:inline-block; }
.link_diretti ul li a{
	display:inline-block; padding:8px 10px; min-height:40px; line-height:1.5;
	color:var(--green-700); letter-spacing:normal;
}
.link_diretti ul li .a1{ color:var(--ink-soft); }
.link_diretti ul li a:hover{ color:var(--ink); }

/* ---------- Motion (rispetta prefers-reduced-motion) ---------- */
@media (prefers-reduced-motion:no-preference){
	.search.container, .regionprovince, .mappa, .intro{ animation:cpmRise .5s ease both; }
	@keyframes cpmRise{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:none; } }
}

/* ---------- Responsive ---------- */
@media (max-width:767px){
	.navbar .nav.navbar-nav{ float:none; }
	.button-ricerca{ margin-top:12px; }
	h1{ padding-top:22px; }
}
