/* FONT INTER (locale, no dipendenze esterne) */
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/inter-latin-ext-400-normal.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/inter-latin-400-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/inter-latin-ext-500-normal.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/inter-latin-500-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/inter-latin-ext-600-normal.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/inter-latin-600-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/inter-latin-ext-700-normal.woff2') format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/inter-latin-700-normal.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* CENTRI CAF - Stili responsive, mobile-first. Ottimizzato per PWA/TWA */

/* LEAFLET CSS (v1.9.4 — incluso direttamente per evitare dipendenze di path) */
/* required styles */

.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
	position: absolute;
	left: 0;
	top: 0;
	}
.leaflet-container {
	overflow: hidden;
	}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
	-webkit-user-select: none;
	   -moz-user-select: none;
	        user-select: none;
	  -webkit-user-drag: none;
	}
/* Prevents IE11 from highlighting tiles in blue */
.leaflet-tile::selection {
	background: transparent;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
	image-rendering: -webkit-optimize-contrast;
	}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
	width: 1600px;
	height: 1600px;
	-webkit-transform-origin: 0 0;
	}
.leaflet-marker-icon,
.leaflet-marker-shadow {
	display: block;
	}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg {
	max-width: none !important;
	max-height: none !important;
	}
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer,
.leaflet-container .leaflet-tile {
	max-width: none !important;
	max-height: none !important;
	width: auto;
	padding: 0;
	}

.leaflet-container img.leaflet-tile {
	/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
	mix-blend-mode: plus-lighter;
}

.leaflet-container.leaflet-touch-zoom {
	-ms-touch-action: pan-x pan-y;
	touch-action: pan-x pan-y;
	}
.leaflet-container.leaflet-touch-drag {
	-ms-touch-action: pinch-zoom;
	/* Fallback for FF which doesn't support pinch-zoom */
	touch-action: none;
	touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
	-ms-touch-action: none;
	touch-action: none;
}
.leaflet-container {
	-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
	filter: inherit;
	visibility: hidden;
	}
.leaflet-tile-loaded {
	visibility: inherit;
	}
.leaflet-zoom-box {
	width: 0;
	height: 0;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	z-index: 800;
	}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
	-moz-user-select: none;
	}

.leaflet-pane         { z-index: 400; }

.leaflet-tile-pane    { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane  { z-index: 500; }
.leaflet-marker-pane  { z-index: 600; }
.leaflet-tooltip-pane   { z-index: 650; }
.leaflet-popup-pane   { z-index: 700; }

.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg    { z-index: 200; }

.leaflet-vml-shape {
	width: 1px;
	height: 1px;
	}
.lvml {
	behavior: url(#default#VML);
	display: inline-block;
	position: absolute;
	}


/* control positioning */

.leaflet-control {
	position: relative;
	z-index: 800;
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}
.leaflet-top,
.leaflet-bottom {
	position: absolute;
	z-index: 1000;
	pointer-events: none;
	}
.leaflet-top {
	top: 0;
	}
.leaflet-right {
	right: 0;
	}
.leaflet-bottom {
	bottom: 0;
	}
.leaflet-left {
	left: 0;
	}
.leaflet-control {
	float: left;
	clear: both;
	}
.leaflet-right .leaflet-control {
	float: right;
	}
.leaflet-top .leaflet-control {
	margin-top: 10px;
	}
.leaflet-bottom .leaflet-control {
	margin-bottom: 10px;
	}
.leaflet-left .leaflet-control {
	margin-left: 10px;
	}
.leaflet-right .leaflet-control {
	margin-right: 10px;
	}


/* zoom and fade animations */

.leaflet-fade-anim .leaflet-popup {
	opacity: 0;
	-webkit-transition: opacity 0.2s linear;
	   -moz-transition: opacity 0.2s linear;
	        transition: opacity 0.2s linear;
	}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
	opacity: 1;
	}
.leaflet-zoom-animated {
	-webkit-transform-origin: 0 0;
	    -ms-transform-origin: 0 0;
	        transform-origin: 0 0;
	}
svg.leaflet-zoom-animated {
	will-change: transform;
}

.leaflet-zoom-anim .leaflet-zoom-animated {
	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
	}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
	-webkit-transition: none;
	   -moz-transition: none;
	        transition: none;
	}

.leaflet-zoom-anim .leaflet-zoom-hide {
	visibility: hidden;
	}


/* cursors */

.leaflet-interactive {
	cursor: pointer;
	}
.leaflet-grab {
	cursor: -webkit-grab;
	cursor:    -moz-grab;
	cursor:         grab;
	}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
	cursor: crosshair;
	}
.leaflet-popup-pane,
.leaflet-control {
	cursor: auto;
	}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
	cursor: move;
	cursor: -webkit-grabbing;
	cursor:    -moz-grabbing;
	cursor:         grabbing;
	}

/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
	pointer-events: none;
	}

.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive,
svg.leaflet-image-layer.leaflet-interactive path {
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}

/* visual tweaks */

.leaflet-container {
	background: #ddd;
	outline-offset: 1px;
	}
.leaflet-container a {
	color: #0078A8;
	}
.leaflet-zoom-box {
	border: 2px dotted #38f;
	background: rgba(255,255,255,0.5);
	}


/* general typography */
.leaflet-container {
	font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-size: 0.75rem;
	line-height: 1.5;
	}


/* general toolbar styles */

.leaflet-bar {
	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
	border-radius: 4px;
	}
.leaflet-bar a {
	background-color: #fff;
	border-bottom: 1px solid #ccc;
	width: 26px;
	height: 26px;
	line-height: 26px;
	display: block;
	text-align: center;
	text-decoration: none;
	color: black;
	}
.leaflet-bar a,
.leaflet-control-layers-toggle {
	background-position: 50% 50%;
	background-repeat: no-repeat;
	display: block;
	}
.leaflet-bar a:hover,
.leaflet-bar a:focus {
	background-color: #f4f4f4;
	}
.leaflet-bar a:first-child {
	border-top-left-radius: 4px;
	border-top-right-radius: 4px;
	}
.leaflet-bar a:last-child {
	border-bottom-left-radius: 4px;
	border-bottom-right-radius: 4px;
	border-bottom: none;
	}
.leaflet-bar a.leaflet-disabled {
	cursor: default;
	background-color: #f4f4f4;
	color: #bbb;
	}

.leaflet-touch .leaflet-bar a {
	width: 30px;
	height: 30px;
	line-height: 30px;
	}
.leaflet-touch .leaflet-bar a:first-child {
	border-top-left-radius: 2px;
	border-top-right-radius: 2px;
	}
.leaflet-touch .leaflet-bar a:last-child {
	border-bottom-left-radius: 2px;
	border-bottom-right-radius: 2px;
	}

/* zoom control */

.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
	font: bold 18px 'Lucida Console', Monaco, monospace;
	text-indent: 1px;
	}

.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
	font-size: 22px;
	}


/* layers control */

.leaflet-control-layers {
	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
	background: #fff;
	border-radius: 5px;
	}
.leaflet-control-layers-toggle {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC");
	width: 36px;
	height: 36px;
	}
.leaflet-retina .leaflet-control-layers-toggle {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=");
	background-size: 26px 26px;
	}
.leaflet-touch .leaflet-control-layers-toggle {
	width: 44px;
	height: 44px;
	}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
	display: none;
	}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
	display: block;
	position: relative;
	}
.leaflet-control-layers-expanded {
	padding: 6px 10px 6px 6px;
	color: #333;
	background: #fff;
	}
.leaflet-control-layers-scrollbar {
	overflow-y: scroll;
	overflow-x: hidden;
	padding-right: 5px;
	}
.leaflet-control-layers-selector {
	margin-top: 2px;
	position: relative;
	top: 1px;
	}
.leaflet-control-layers label {
	display: block;
	font-size: 13px;
	font-size: 1.08333em;
	}
.leaflet-control-layers-separator {
	height: 0;
	border-top: 1px solid #ddd;
	margin: 5px -10px 5px -6px;
	}

/* Default icon URLs */
.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=");
	}


/* attribution and scale controls */

.leaflet-container .leaflet-control-attribution {
	background: #fff;
	background: rgba(255, 255, 255, 0.8);
	margin: 0;
	}
.leaflet-control-attribution,
.leaflet-control-scale-line {
	padding: 0 5px;
	color: #333;
	line-height: 1.4;
	}
.leaflet-control-attribution a {
	text-decoration: none;
	}
.leaflet-control-attribution a:hover,
.leaflet-control-attribution a:focus {
	text-decoration: underline;
	}
.leaflet-attribution-flag {
	display: inline !important;
	vertical-align: baseline !important;
	width: 1em;
	height: 0.6669em;
	}
.leaflet-left .leaflet-control-scale {
	margin-left: 5px;
	}
.leaflet-bottom .leaflet-control-scale {
	margin-bottom: 5px;
	}
.leaflet-control-scale-line {
	border: 2px solid #777;
	border-top: none;
	line-height: 1.1;
	padding: 2px 5px 1px;
	white-space: nowrap;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	background: rgba(255, 255, 255, 0.8);
	text-shadow: 1px 1px #fff;
	}
.leaflet-control-scale-line:not(:first-child) {
	border-top: 2px solid #777;
	border-bottom: none;
	margin-top: -2px;
	}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
	border-bottom: 2px solid #777;
	}

.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	box-shadow: none;
	}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	border: 2px solid rgba(0,0,0,0.2);
	background-clip: padding-box;
	}


/* popup */

.leaflet-popup {
	position: absolute;
	text-align: center;
	margin-bottom: 20px;
	}
.leaflet-popup-content-wrapper {
	padding: 1px;
	text-align: left;
	border-radius: 12px;
	}
.leaflet-popup-content {
	margin: 13px 24px 13px 20px;
	line-height: 1.3;
	font-size: 13px;
	font-size: 1.08333em;
	min-height: 1px;
	}
.leaflet-popup-content p {
	margin: 17px 0;
	margin: 1.3em 0;
	}
.leaflet-popup-tip-container {
	width: 40px;
	height: 20px;
	position: absolute;
	left: 50%;
	margin-top: -1px;
	margin-left: -20px;
	overflow: hidden;
	pointer-events: none;
	}
.leaflet-popup-tip {
	width: 17px;
	height: 17px;
	padding: 1px;

	margin: -10px auto 0;
	pointer-events: auto;

	-webkit-transform: rotate(45deg);
	   -moz-transform: rotate(45deg);
	    -ms-transform: rotate(45deg);
	        transform: rotate(45deg);
	}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
	background: white;
	color: #333;
	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
	}
.leaflet-container a.leaflet-popup-close-button {
	position: absolute;
	top: 0;
	right: 0;
	border: none;
	text-align: center;
	width: 24px;
	height: 24px;
	font: 16px/24px Tahoma, Verdana, sans-serif;
	color: #757575;
	text-decoration: none;
	background: transparent;
	}
.leaflet-container a.leaflet-popup-close-button:hover,
.leaflet-container a.leaflet-popup-close-button:focus {
	color: #585858;
	}
.leaflet-popup-scrolled {
	overflow: auto;
	}

.leaflet-oldie .leaflet-popup-content-wrapper {
	-ms-zoom: 1;
	}
.leaflet-oldie .leaflet-popup-tip {
	width: 24px;
	margin: 0 auto;

	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
	}

.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
	border: 1px solid #999;
	}


/* div icon */

.leaflet-div-icon {
	background: #fff;
	border: 1px solid #666;
	}


/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
	position: absolute;
	padding: 6px;
	background-color: #fff;
	border: 1px solid #fff;
	border-radius: 3px;
	color: #222;
	white-space: nowrap;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	pointer-events: none;
	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
	}
.leaflet-tooltip.leaflet-interactive {
	cursor: pointer;
	pointer-events: auto;
	}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	position: absolute;
	pointer-events: none;
	border: 6px solid transparent;
	background: transparent;
	content: "";
	}

/* Directions */

.leaflet-tooltip-bottom {
	margin-top: 6px;
}
.leaflet-tooltip-top {
	margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
	left: 50%;
	margin-left: -6px;
	}
.leaflet-tooltip-top:before {
	bottom: 0;
	margin-bottom: -12px;
	border-top-color: #fff;
	}
.leaflet-tooltip-bottom:before {
	top: 0;
	margin-top: -12px;
	margin-left: -6px;
	border-bottom-color: #fff;
	}
.leaflet-tooltip-left {
	margin-left: -6px;
}
.leaflet-tooltip-right {
	margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	top: 50%;
	margin-top: -6px;
	}
.leaflet-tooltip-left:before {
	right: 0;
	margin-right: -12px;
	border-left-color: #fff;
	}
.leaflet-tooltip-right:before {
	left: 0;
	margin-left: -12px;
	border-right-color: #fff;
	}

/* Printing */

@media print {
	/* Prevent printers from removing background-images of controls. */
	.leaflet-control {
		-webkit-print-color-adjust: exact;
		print-color-adjust: exact;
		}
	}

:root {
    --color-primary: #0d47a1;
    --color-primary-light: #1565c0;
    --color-primary-dark: #0a1f5c;
    --color-caf: #2e7d32;
    --color-patronato: #c62828;
    --color-bg: #fafafa;
    --color-surface: #ffffff;
    --color-text: #212121;
    --color-text-muted: #616161;
    --color-border: #e0e0e0;
    --radius: 8px;
    --shadow: 0 1px 3px rgba(0,0,0,0.08);
    --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
    --safe-top: env(safe-area-inset-top);
    --safe-bottom: env(safe-area-inset-bottom);
}

*, *::before, *::after { box-sizing: border-box; }
html { font-size: 100%; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
    margin: 0;
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 1rem;
    line-height: 1.5;
    color: var(--color-text);
    background: var(--color-bg);
    padding-bottom: var(--safe-bottom);
}

/* Header */
.site-header {
    background: #0a1f5c;
    color: #fff;
    position: sticky;
    top: 0;
    z-index: 1100;
    padding: 0.9rem 1rem;
    padding-top: max(0.9rem, var(--safe-top));
    box-shadow: 0 2px 12px rgba(0,0,0,0.2);
}
.header-inner {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.logo {
    color: inherit;
    text-decoration: none;
    font-weight: 700;
    font-size: 1.1rem;
}
.nav a {
    color: inherit;
    text-decoration: none;
    padding: 0.5rem;
}
.nav-toggle {
    display: flex;
    flex-direction: column;
    gap: 5px;
    background: none;
    border: none;
    color: inherit;
    padding: 0.5rem;
    cursor: pointer;
}
.nav-toggle span {
    width: 22px;
    height: 2px;
    background: currentColor;
    border-radius: 1px;
}
@media (min-width: 768px) {
    .nav-toggle { display: none; }
    .nav { display: flex; gap: 0.5rem; }
    .nav-close  { display: none; }
    .nav-overlay { display: none !important; }
}

/* ── Overlay ── */
.nav-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.45);
    z-index: 1050;
}
.nav-open .nav-overlay {
    display: block;
    animation: nav-fade-in .2s ease;
}
@keyframes nav-fade-in { from { opacity: 0; } to { opacity: 1; } }

/* ── Hamburger → X ── */
.nav-toggle span { transition: transform .25s, opacity .2s; }
.nav-toggle.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle.open span:nth-child(2) { opacity: 0; }
.nav-toggle.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 767px) {
    /* Drawer slide-in da sinistra */
    .nav {
        display: flex;
        flex-direction: column;
        position: fixed;
        top: 0; left: 0; bottom: 0;
        width: 270px;
        max-width: 82vw;
        background: #0a1f5c;
        z-index: 1200;
        padding: 1.5rem 1rem 2rem;
        transform: translateX(-100%);
        transition: transform .28s cubic-bezier(.4, 0, .2, 1);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        box-shadow: none;
        gap: 0;
    }
    .nav.open {
        transform: translateX(0);
        box-shadow: 4px 0 24px rgba(0,0,0,0.35);
    }

    /* Pulsante chiudi in cima al drawer */
    .nav-close {
        display: flex;
        align-self: flex-end;
        align-items: center;
        justify-content: center;
        width: 30px; height: 30px;
        background: rgba(255,255,255,0.1);
        border: none;
        border-radius: 50%;
        color: rgba(255,255,255,0.8);
        font-size: 1rem;
        cursor: pointer;
        margin-bottom: 1rem;
        flex-shrink: 0;
        transition: background .15s;
    }
    .nav-close:hover { background: rgba(255,255,255,0.2); }

    /* Link diretti nel nav */
    .nav a {
        padding: 0.8rem 0.5rem;
        font-size: 0.95rem;
        border-bottom: 1px solid rgba(255,255,255,0.08);
    }

    /* Link nel dropdown utente: forza colore bianco su sfondo scuro */
    .nav-dropdown__menu a { color: rgba(255,255,255,0.85) !important; }
    .nav-dropdown__menu hr { border-top-color: rgba(255,255,255,0.1) !important; }
}

/* Main */
.page-wrap { min-height: calc(100vh - 120px); }
.main-content {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1rem;
}
.main-content--detail { padding-bottom: 2rem; }

/* HERO SEARCH */
/* HERO SEARCH — design istituzionale */
.hero-search {
    background: linear-gradient(160deg, #0a1f5c 0%, #1565c0 60%, #1976d2 100%);
    padding: 3.5rem 1rem 5rem;
    margin: -1rem -1rem 0;
    position: relative;
}
@media (min-width: 768px) {
    .hero-search { padding: 4.5rem 1rem 6rem; }
}


/* Raccordo hero con clip-path */
.hero-search {
    clip-path: ellipse(120% 100% at 50% 0%);
}

.hero-search__inner {
    max-width: 760px;
    margin: 0 auto;
    text-align: center;
    position: relative;
    z-index: 1;
}

.hero-search h1 {
    margin: 0 0 0.6rem;
    font-size: 1.75rem;
    color: #fff;
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -0.02em;
    text-shadow: 0 2px 12px rgba(0,0,0,0.18);
}
@media (min-width: 600px) {
    .hero-search h1 { font-size: 2.25rem; }
}
@media (min-width: 900px) {
    .hero-search h1 { font-size: 2.6rem; }
}

.hero-search__sub {
    margin: 0 0 2rem;
    color: rgba(255,255,255,0.82);
    font-size: 0.95rem;
    letter-spacing: 0.01em;
}
.hero-search__sub strong { color: #fff; font-weight: 600; }

/* Sezione servizi homepage */
.srv-entry { background:#fff; border-bottom:1px solid #e8eaf0; padding:3rem 1.5rem; }
.srv-entry__inner { max-width:1000px; margin:0 auto; }
.srv-entry__head { text-align:center; margin-bottom:2rem; }
.srv-entry__head h2 { font-size:clamp(1.4rem,3vw,2rem); font-weight:800; color:#0a1f5c; margin:0 0 .6rem; }
.srv-entry__head p { color:var(--color-text-muted); font-size:1rem; max-width:560px; margin:0 auto; line-height:1.6; }
.srv-entry__head p strong { color:#0d47a1; }
.srv-entry__grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:.75rem; margin-bottom:1.5rem; }
.srv-chip { display:flex; flex-direction:column; align-items:center; gap:.5rem; background:#f5f7fb; border:1.5px solid #e0e4ef; border-radius:12px; padding:1.1rem .75rem; text-decoration:none; color:#0a1f5c; transition:border-color .15s,background .15s,transform .12s,box-shadow .15s; }
.srv-chip:hover { background:#e8f0fe; border-color:#0d47a1; transform:translateY(-2px); box-shadow:0 4px 12px rgba(13,71,161,.12); }
.srv-chip__icon { width:34px; height:34px; flex-shrink:0; color:#1a56db; }
.srv-chip__label { font-size:.82rem; font-weight:600; text-align:center; line-height:1.3; }
.srv-entry__all { display:block; text-align:center; color:#0d47a1; font-weight:600; font-size:.95rem; text-decoration:none; }
.srv-entry__all:hover { text-decoration:underline; }
@media (max-width:600px) {
    .srv-entry__grid { grid-template-columns:repeat(2,1fr); gap:.5rem; }
    .srv-chip { padding:.85rem .5rem; }
    .srv-chip__icon { width:28px; height:28px; }
    .srv-chip__label { font-size:.75rem; }
}

/* FORM */
.hero-form { width: 100%; }

.hero-form__row {
    display: flex;
    gap: 0.6rem;
    align-items: stretch;
}
.hero-form__field { flex: 1; min-width: 0; }

/* Input wrap */
.hero-input-wrap {
    display: flex;
    align-items: center;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.22);
    overflow: visible;
    transition: box-shadow .2s;
    height: 58px;
    position: relative;
}
/* Mantieni border-radius visivo sui bordi interni */
.hero-input-wrap > *:first-child { border-radius: 12px 0 0 12px; }
.hero-input-wrap > *:last-child  { border-radius: 0 12px 12px 0; }
@media (min-width: 600px) {
    .hero-input-wrap { height: 62px; }
}
.hero-input-wrap:focus-within {
    box-shadow: 0 8px 32px rgba(0,0,0,0.28), 0 0 0 3px rgba(255,255,255,0.5);
}

.hero-input-icon {
    flex-shrink: 0;
    margin-left: 1rem;
    color: #bbb;
    pointer-events: none;
}

.hero-input {
    flex: 1;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    padding: 0 0.75rem;
    font-size: 1rem;
    font-family: inherit;
    background: transparent;
    min-width: 0;
    color: #212121;
    height: 100%;
}
@media (min-width: 600px) {
    .hero-input { font-size: 1.05rem; }
}
.hero-input::placeholder { color: #bbb; }

/* Bottone Localizzami — solo icona + label piccola */
.btn-geolocate {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0 0.85rem;
    background: none;
    border: none;
    border-left: 1px solid #ebebeb;
    color: #1565c0;
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 600;
    font-family: inherit;
    white-space: nowrap;
    transition: color .15s, background .15s;
    height: 100%;
    flex-shrink: 0;
}
.btn-geolocate:hover { background: #f0f5ff; color: #0a1f5c; }
.btn-geolocate:disabled { opacity: 0.5; cursor: wait; }
@media (max-width: 520px) {
    .geo-label { display: none; }
    .btn-geolocate { padding: 0 0.65rem; }
}

/* Bottone CERCA — accent arancio per massima visibilità */
.btn-cerca {
    flex-shrink: 0;
    padding: 0 1.6rem;
    background: #ff6f00;
    color: #fff;
    border: none;
    border-radius: 12px;
    font-size: 1rem;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    box-shadow: 0 4px 16px rgba(255,111,0,0.4);
    transition: background .15s, box-shadow .15s, transform .1s;
    white-space: nowrap;
    height: 58px;
    letter-spacing: 0.01em;
}
@media (min-width: 600px) {
    .btn-cerca { height: 62px; padding: 0 2rem; }
}
.btn-cerca:hover {
    background: #e65100;
    box-shadow: 0 6px 20px rgba(255,111,0,0.5);
    transform: translateY(-1px);
}
.btn-cerca:active { transform: translateY(0); }
@media (max-width: 480px) {
    .btn-cerca { padding: 0 1rem; font-size: 0.9rem; }
}

/* Geo status */
.geo-status {
    display: block;
    font-size: 0.78rem;
    margin-top: 0.45rem;
    padding: 0.25rem 0.65rem;
    border-radius: 6px;
    text-align: left;
}
.geo-status--ok    { color: #1b5e20; background: rgba(255,255,255,0.92); }
.geo-status--info  { color: #0d47a1; background: rgba(255,255,255,0.88); }
.geo-status--error { color: #b71c1c; background: rgba(255,255,255,0.92); }

/* Toggle filtri avanzati */
.advanced-toggle {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    margin-top: 1rem;
    justify-content: center;
}
.btn-advanced-toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: rgba(255,255,255,0.12);
    border: 1px solid rgba(255,255,255,0.3);
    color: rgba(255,255,255,0.9);
    border-radius: 20px;
    padding: 0.4rem 1rem;
    font-size: 0.82rem;
    font-family: inherit;
    cursor: pointer;
    transition: background .15s;
    letter-spacing: 0.01em;
}
.btn-advanced-toggle:hover { background: rgba(255,255,255,0.22); color: #fff; }
.btn-reset-filters {
    color: rgba(255,255,255,0.65);
    font-size: 0.8rem;
    text-decoration: none;
    transition: color .15s;
}
.btn-reset-filters:hover { color: #fff; }

/* Pannello filtri avanzati */
.advanced-filters {
    background: #fff;
    border-radius: 14px;
    padding: 1.25rem 1.1rem 1rem;
    margin-top: 0.85rem;
    text-align: left;
    box-shadow: 0 8px 32px rgba(0,0,0,0.18);
}
.filters-area-toggle {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 1rem;
}
.area-label {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    cursor: pointer;
    font-size: 0.88rem;
    font-weight: 500;
    color: #616161;
    padding: 0.35rem 0.9rem;
    border-radius: 20px;
    border: 1.5px solid #e0e0e0;
    transition: all .15s;
    user-select: none;
}
.area-label.active,
.area-label:has(input:checked) {
    background: #0a1f5c;
    border-color: #0a1f5c;
    color: #fff;
}
.area-label input[type="radio"] { display: none; }
.filters-grid {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: 1fr 1fr;
}
@media (min-width: 600px) {
    .filters-grid { grid-template-columns: repeat(3, 1fr); }
}

/* GUIDE */
.home-guides {
    margin: 2.5rem 0 1.5rem;
}
.home-guides h2 {
    font-size: 1.15rem;
    font-weight: 700;
    margin: 0 0 1rem;
    color: #1a2744;
    letter-spacing: -0.01em;
}
.guide-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1rem;
}
@media (min-width: 768px) {
    .guide-list { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
.guide-card {
    background: #fff;
    border-radius: 10px;
    border-top: 3px solid #1565c0;
    box-shadow: 0 2px 8px rgba(0,0,0,0.07);
    padding: 1.1rem 1.1rem 1rem;
    font-size: 0.9rem;
    transition: box-shadow .2s, transform .2s;
}
.guide-card:hover {
    box-shadow: 0 6px 20px rgba(0,0,0,0.11);
    transform: translateY(-2px);
}
.guide-card h3 {
    margin: 0 0 0.4rem;
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.3;
}
.guide-card h3 a { color: #0a1f5c; text-decoration: none; }
.guide-card h3 a:hover { color: #1565c0; text-decoration: underline; }
.guide-card p { margin: 0; color: #757575; line-height: 1.5; }

.sr-only {
    position: absolute; width: 1px; height: 1px;
    padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0,0,0,0); border: 0;
}
.home-guides {
    margin: 2rem 0 1.5rem;
}
.home-guides h2 {
    font-size: 1.1rem;
    margin: 0 0 0.75rem;
    color: var(--color-text);
}
.guide-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.75rem;
}
@media (min-width: 768px) {
    .guide-list { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
.guide-card {
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 0.9rem 1rem;
    font-size: 0.9rem;
}
.guide-card h3 {
    margin: 0 0 0.35rem;
    font-size: 0.95rem;
    color: var(--color-primary-dark);
}
.guide-card p { margin: 0; color: var(--color-text-muted); }

/* Search form */
.search-section { margin-bottom: 1.5rem; }

/* Campo ricerca + bottone localizzami */
.search-input-wrap {
    display: flex;
    align-items: stretch;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    overflow: hidden;
    transition: box-shadow .2s, border-color .2s;
}
.search-input-wrap:focus-within {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(13,71,161,0.15);
}
.search-input-wrap input[type="search"] {
    flex: 1;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 0.6rem 0.75rem;
    font-size: 1rem;
    background: var(--color-surface);
    min-width: 0;
}
.search-input-wrap input[type="search"]:focus {
    outline: none;
    box-shadow: none !important;
}
.btn-geolocate {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0 1rem;
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-left: 1px solid rgba(255,255,255,0.2);
    cursor: pointer;
    font-size: 0.875rem;
    font-weight: 500;
    white-space: nowrap;
    transition: background .2s;
    flex-shrink: 0;
}
.btn-geolocate:hover { background: var(--color-primary-light); }
.btn-geolocate:disabled { opacity: 0.7; cursor: wait; }
@media (max-width: 480px) {
    .geo-label { display: none; }
    .btn-geolocate { padding: 0 0.75rem; }
}
.geo-status {
    display: block;
    font-size: 0.8rem;
    margin-top: 0.35rem;
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
}
.geo-status--ok    { color: #2e7d32; background: #e8f5e9; }
.geo-status--info  { color: #1565c0; background: #e3f2fd; }
.geo-status--error { color: #c62828; background: #ffebee; }
.search-form {
    background: var(--color-surface);
    padding: 1.25rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}
.form-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: 1fr;
}
@media (min-width: 600px) {
    .form-grid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 900px) {
    .form-grid { grid-template-columns: 1fr 1fr 1fr; }
}
.form-group--full { grid-column: 1 / -1; }
.form-group label {
    display: block;
    font-size: 0.875rem;
    font-weight: 500;
    margin-bottom: 0.35rem;
    color: var(--color-text-muted);
}
.form-group input:not([type="checkbox"]):not([type="radio"]),
.form-group select {
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    font-size: 1rem;
    background: var(--color-surface);
    -webkit-appearance: none;
    appearance: none;
}
.form-group input:not([type="checkbox"]):not([type="radio"]):focus,
.form-group select:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(13,71,161,0.15);
}
.form-group input[type="checkbox"],
.form-group input[type="radio"] {
    width: auto;
    height: 1.1rem;
    margin: 0;
    vertical-align: middle;
    -webkit-appearance: auto;
    appearance: auto;
}
.form-actions {
    margin-top: 1.25rem;
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}
.btn {
    display: inline-block;
    padding: 0.6rem 1.25rem;
    border-radius: var(--radius);
    font-size: 1rem;
    font-weight: 500;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: background 0.2s, color 0.2s;
}
.btn-primary { background: var(--color-primary); color: #fff; }
.btn-primary:hover { background: var(--color-primary-light); }
.btn-secondary { background: var(--color-border); color: var(--color-text); }
.btn-secondary:hover { background: #d0d0d0; }
.btn-outline {
    background: transparent;
    color: var(--color-primary);
    border: 1px solid var(--color-primary);
}
.btn-outline:hover { background: rgba(13,71,161,0.08); }

/* Results */
.results-section { margin-top: 1.5rem; }
.results-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1rem;
}
.results-header h2 { margin: 0; font-size: 1.15rem; }
.count { color: var(--color-text-muted); font-weight: 400; }
.view-toggle { display: flex; }
.view-btn {
    padding: 0.4rem 0.75rem;
    border: 1px solid var(--color-border);
    background: var(--color-surface);
    font-size: 0.9rem;
    cursor: pointer;
}
.view-btn:first-child { border-radius: var(--radius) 0 0 var(--radius); }
.view-btn:last-child { border-radius: 0 var(--radius) var(--radius) 0; border-left: none; }
.view-btn.active { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }

.map-container {
    display: none;
    height: 400px;
    margin-bottom: 1rem;
    border-radius: var(--radius);
    overflow: hidden;
    background: #e8e8e8;
}
.map-container.is-visible { display: block; }
@media (max-width: 599px) {
    .map-container { height: 300px; }
}

.results-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.results-list.is-hidden { display: none; }
.result-card {
    background: var(--color-surface);
    padding: 1rem 1.25rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    position: relative;
}
.result-card__badge {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
}
.result-card { padding-right: 130px; }
.result-card__actions { position: absolute; right: 0.75rem; bottom: 0.75rem; }
@media (max-width: 580px) {
    .result-card { padding-right: 1.25rem; }
    .result-card__actions { position: static; margin-top: 0.75rem; }
}
.result-card__badge--caf { background: #e8f5e9; color: var(--color-caf); }
.result-card__badge--patronato { background: #ffebee; color: var(--color-patronato); }
.result-card__title { margin: 0 0 0.35rem; font-size: 1.05rem; }
.result-card__title a { color: var(--color-primary); text-decoration: none; }
.result-card__title a:hover { text-decoration: underline; }
.result-card__responsabile { font-size: 0.85rem; color: var(--color-text-muted); margin-top: 0.25rem; }
.result-card__organizzazione { margin: 0.2rem 0 0; font-size: 0.85rem; color: var(--color-primary); font-weight: 500; }
.result-card__meta { margin: 0; font-size: 0.9rem; color: var(--color-text-muted); }
.result-card__address,
.result-card__contact { margin: 0.25rem 0 0; font-size: 0.9rem; }
.result-card__contact a { color: var(--color-primary); }
.no-results { text-align: center; color: var(--color-text-muted); padding: 2rem; }

.search-stats {
    margin-top: 1rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 0.75rem 1rem;
    font-size: 0.9rem;
}
.search-stats__row { margin: 0.25rem 0 0; }

.pagination { margin-top: 1.5rem; }
.pagination__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35rem; }
.pagination__link { display: inline-block; padding: 0.4rem 0.75rem; border: 1px solid var(--color-border); border-radius: var(--radius); background: var(--color-surface); color: var(--color-primary); text-decoration: none; font-size: 0.9rem; }
.pagination__link:hover { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.pagination__link--current { background: var(--color-primary); color: #fff; border-color: var(--color-primary); pointer-events: none; }
.pagination__prev { margin-right: 0.5rem; }
.pagination__next { margin-left: 0.25rem; }

/* Detail page */
.breadcrumb {
    font-size: 0.9rem;
    margin-bottom: 1rem;
    color: var(--color-text-muted);
}
.breadcrumb a { color: var(--color-primary); text-decoration: none; }
.detail-card {
    background: var(--color-surface);
    padding: 1.5rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    position: relative;
}
.detail-card__badge {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.25rem 0.6rem;
    border-radius: 4px;
    margin-bottom: 0.5rem;
}
.detail-card__badge--caf { background: #e8f5e9; color: var(--color-caf); }
.detail-card__badge--patronato { background: #ffebee; color: var(--color-patronato); }
.detail-card__title { margin: 0 0 0.25rem; font-size: 1.35rem; }
.detail-card__organizzazione { margin: 0 0 0.25rem; font-size: 0.95rem; color: var(--color-primary); font-weight: 500; }
.detail-card__meta { margin: 0 0 0.2rem; font-size: 0.9rem; color: var(--color-text-muted); }
.detail-card__legal { margin: 0 0 1rem; font-size: 0.9rem; color: var(--color-text-muted); }
.detail-block--responsabile { border-left: 3px solid var(--color-primary); padding-left: 14px; }
.contact-list__name { font-weight: 600; color: var(--color-text); }
.detail-claim { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--color-border); }
.claim-cta { display: inline-block; font-weight: 600; color: var(--color-primary); }
.claim-cta:hover { text-decoration: underline; }
.claim-hint { margin: 0.5rem 0 0; font-size: 0.9rem; color: var(--color-text-muted); }
.claim-card__title { margin-bottom: 1rem; }
.claim-card__intro { margin-bottom: 1rem; }
.claim-card__benefits { margin: 1rem 0; padding-left: 1.25rem; }
.claim-card__note { margin-top: 1.5rem; padding: 0.75rem; background: #f5f5f5; border-radius: 6px; font-size: 0.9rem; color: var(--color-text-muted); }
.result-card__claim { margin: 0.25rem 0 0; font-size: 0.8rem; }
.claim-link { color: var(--color-primary); }
.claim-link:hover { text-decoration: underline; }
.detail-grid {
    display: grid;
    gap: 1.25rem;
    margin-top: 1.25rem;
}
.detail-block h2 { font-size: 1rem; margin: 0 0 0.5rem; color: var(--color-text-muted); }
.contact-list { list-style: none; margin: 0; padding: 0; }
.contact-list li { margin: 0.35rem 0; line-height: 1.5; }
.contact-list a { color: var(--color-primary); }
.contact-list .contact-as-image { vertical-align: middle; height: 1.75rem; width: auto; display: inline-block; }
.contact-list .contact-as-image--email { height: 1.95rem; vertical-align: middle; margin-top: -4px; }
.contact-list__icon { display: inline-flex; align-items: center; vertical-align: middle; margin-right: 0.4rem; color: var(--color-primary, #2563eb); }
.contact-list__icon svg { flex-shrink: 0; }
.service-tags { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.service-tag {
    background: #e3f2fd;
    color: var(--color-primary);
    padding: 0.25rem 0.6rem;
    border-radius: 999px;
    font-size: 0.85rem;
}
.service-tag--custom {
    background: #f3e5f5;
    color: #6a1b9a;
}
.detail-map-wrap { margin-top: 1.5rem; }
.detail-map-wrap h2 { font-size: 1rem; margin: 0 0 0.5rem; color: var(--color-text-muted); }
.detail-map {
    height: 280px;
    width: 100%;
    border-radius: var(--radius);
    margin-bottom: 0.75rem;
    background: #e8e8e8;
}
@media (max-width: 599px) {
    .detail-map { height: 220px; }
}

/* Auth (login, registrati, confirm) */
.auth-page { max-width: 420px; margin: 0 auto 2rem; }
.auth-card { background: var(--color-surface); padding: 1.5rem; border-radius: var(--radius); box-shadow: var(--shadow); }
.auth-card h1 { margin: 0 0 1rem; font-size: 1.25rem; }
.auth-form .form-group { margin-bottom: 1rem; }
.auth-form label { display: block; margin-bottom: 0.25rem; font-weight: 500; }
.auth-form input[type="text"],
.auth-form input[type="email"],
.auth-form input[type="password"],
.auth-form textarea { width: 100%; padding: 0.5rem; border: 1px solid var(--color-border); border-radius: 4px; box-sizing: border-box; }
.auth-error { color: #c62828; margin-bottom: 1rem; }
.auth-success { color: #2e7d32; margin-bottom: 1rem; }
.auth-message { margin-bottom: 1rem; padding: 0.75rem; border-radius: 4px; }
.auth-message--success { color: #2e7d32; background: #e8f5e9; }
.auth-message--error { color: #c62828; background: #ffebee; }
.auth-message--info { color: #1565c0; background: #e3f2fd; }
.auth-hint { font-size: 0.9rem; color: var(--color-text-muted); margin-top: 0.5rem; }
.auth-hint a { color: var(--color-primary); }
.auth-intro { color: var(--color-text-muted); font-size: 0.95rem; margin-bottom: 1rem; }
.auth-divider { text-align: center; margin: 1rem 0; color: var(--color-text-muted); font-size: 0.9rem; }
.btn-secondary { background: var(--color-text-muted); color: #fff; margin-bottom: 0.5rem; }
.btn-secondary:hover { background: #424242; color: #fff; }
.auth-oauth { text-align: center; }
.auth-oauth-note { font-size: 0.8rem; color: var(--color-text-muted); margin-left: 0.5rem; }
.auth-footer { margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--color-border); text-align: center; font-size: 0.9rem; }
.auth-footer a { color: var(--color-primary); }
.btn-block { width: 100%; display: block; text-align: center; }
.btn-google { background: #fff; color: #444; border: 1px solid #ddd; }
.btn-google:hover { background: #f5f5f5; }
.field-error { display: block; font-size: 0.85rem; color: #c62828; margin-top: 0.25rem; }
.fetch-result { margin-top: 1rem; }
.fetch-log { background: #f5f5f5; padding: 1rem; border-radius: 6px; overflow-x: auto; font-size: 0.9rem; white-space: pre-wrap; max-height: 20em; overflow-y: auto; }
.fetch-form { max-width: 320px; margin: 1rem 0; }
.fetch-form .checkbox-label { display: flex; align-items: flex-start; gap: 0.5rem; cursor: pointer; }
.fetch-form .checkbox-label input[type="checkbox"] { margin-top: 0.25rem; }
.fetch-form .radio-group { display: flex; flex-wrap: wrap; gap: 1rem; }
.fetch-form .radio-label { display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer; }
.fetch-form .radio-label input[type="radio"] { margin: 0; }
.fetch-form .form-group .fetch-hint { display: block; margin-top: 0.35rem; }
.search-form .radio-group { display: flex; flex-wrap: wrap; gap: 1rem; }
.search-form .radio-label { display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer; font-size: 0.9rem; color: var(--color-text); }
.search-form .radio-label input[type="radio"] { margin: 0; }
.fetch-hint { font-size: 0.9rem; color: var(--color-text-muted); margin-top: 0.5rem; }
.fetch-divider { margin: 2rem 0; border: 0; border-top: 1px solid var(--color-border); }
.fetch-auto { margin-top: 1.5rem; }
.crawl-progress { margin-top: 1rem; padding: 1rem; background: var(--color-surface); border-radius: var(--radius); box-shadow: var(--shadow); }
.crawl-progress p { margin: 0.25rem 0; }
.crawl-log { margin: 0.5rem 0 0; padding-left: 1.25rem; max-height: 12rem; overflow-y: auto; font-size: 0.9rem; }
.crawl-log .crawl-err { color: #c62828; }
.crawl-done { margin-top: 1rem; }
.crawl-done .btn { margin-right: 0.5rem; }

/* Area utente */
.area-utente { max-width: 640px; }
.area-utente__welcome { margin-bottom: 1.5rem; }
.area-utente__block { margin-bottom: 2rem; }
.area-utente__block h2 { font-size: 1rem; margin: 0 0 0.5rem; color: var(--color-text-muted); }
.reclamazioni-list { list-style: none; margin: 0; padding: 0; }
.reclamazioni-list__item { padding: 0.5rem 0; border-bottom: 1px solid var(--color-border); display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.reclamazioni-list__item a { color: var(--color-primary); }
.reclamazioni-list__stato { font-size: 0.8rem; padding: 0.2rem 0.5rem; border-radius: 4px; }
.reclamazioni-list__stato--in_attesa { background: #fff3e0; color: #e65100; }
.reclamazioni-list__stato--approvata { background: #e8f5e9; color: #2e7d32; }
.reclamazioni-list__stato--rifiutata { background: #ffebee; color: #c62828; }

/* Admin layout */
.admin-layout {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 1.5rem;
}
@media (max-width: 767px) {
    .admin-layout {
        grid-template-columns: 1fr;
    }
}
.admin-sidebar {
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 1rem;
}
.admin-sidebar h2 {
    margin: 0 0 0.75rem;
    font-size: 1rem;
}
.admin-nav {
    list-style: none;
    margin: 0;
    padding: 0;
}
.admin-nav a {
    display: block;
    padding: 0.4rem 0.25rem;
    font-size: 0.9rem;
    color: var(--color-text);
    text-decoration: none;
}
.admin-nav a:hover {
    color: var(--color-primary);
}
.admin-main {
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 1rem 1.25rem;
}
.admin-main h1 {
    margin: 0 0 1rem;
    font-size: 1.2rem;
}
.admin-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 1rem;
    margin: 1.5rem 0;
}
.admin-stat-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1rem;
    box-shadow: var(--shadow);
}
.admin-stat-value {
    display: block;
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--color-primary);
}
.admin-stat-label {
    font-size: 0.9rem;
    color: var(--color-text-muted);
}
.admin-stat-sublabel {
    display: block;
    font-size: 0.8rem;
    color: var(--color-text-muted);
    margin-top: 0.25rem;
}
.admin-actions {
    list-style: none;
    margin: 1rem 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}
.admin-actions .btn { margin: 0; }
.admin-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}
.admin-table th,
.admin-table td {
    padding: 0.45rem 0.4rem;
    border-bottom: 1px solid var(--color-border);
    text-align: left;
}
.admin-table th {
    font-weight: 600;
    color: var(--color-text-muted);
}
.admin-table a {
    color: var(--color-primary);
    text-decoration: none;
}
.admin-table a:hover { text-decoration: underline; }
.admin-badge {
    display: inline-block;
    padding: 0.15rem 0.4rem;
    border-radius: 999px;
    font-size: 0.75rem;
    background: #f5f5f5;
}
.admin-badge--pubblicato { background: #e8f5e9; color: var(--color-caf); }
.admin-badge--bozza { background: #fff8e1; color: #f9a825; }
.admin-badge--archiviato { background: #eceff1; color: #607d8b; }
.admin-form {
    margin-top: 1.5rem;
}
.admin-form h2 {
    margin: 0 0 0.75rem;
    font-size: 1.05rem;
}
.admin-form .form-group textarea {
    min-height: 180px;
    font-family: monospace;
}
.admin-form .form-row { margin-bottom: 1rem; }
.admin-form .form-row--flex { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end; }
.admin-form .form-row--flex .form-group { margin-bottom: 0; }
.admin-form .form-group--wide { flex: 1; min-width: 200px; }
.admin-form .form-row--checkboxes { display: flex; flex-wrap: wrap; gap: 0.75rem 1.5rem; }
.admin-form .form-row--checkboxes .form-checkbox { margin: 0; }
.form-checkbox { display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer; font-size: 0.9rem; }
.form-checkbox__code { color: var(--color-text-muted); font-size: 0.85rem; }
.admin-form .form-actions { margin-top: 1.5rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }
.admin-stats-inline { margin: 0.5rem 0 1rem; font-size: 0.95rem; color: var(--color-text-muted); }
.admin-message { margin-bottom: 1rem; font-size: 0.9rem; }
.admin-message--success { color: #2e7d32; }
.admin-message--error { color: #c62828; }

/* Claim form */
.claim-form { margin-top: 1rem; }
.claim-form textarea { width: 100%; padding: 0.5rem; border: 1px solid var(--color-border); border-radius: 4px; box-sizing: border-box; resize: vertical; }

/* Commenti (dettaglio) */
.detail-block--commenti { margin-top: 1.5rem; }
.commenti-form { margin-bottom: 1rem; }
.commenti-form textarea { width: 100%; padding: 0.5rem; border: 1px solid var(--color-border); border-radius: 4px; box-sizing: border-box; resize: vertical; }
.commenti-login { font-size: 0.9rem; color: var(--color-text-muted); }
.commenti-empty { font-size: 0.9rem; color: var(--color-text-muted); margin: 0.5rem 0 0; }
.commenti-list { list-style: none; margin: 1rem 0 0; padding: 0; }
.commenti-list__item { padding: 0.75rem 0; border-bottom: 1px solid var(--color-border); }
.commenti-list__user { font-weight: 600; margin-right: 0.5rem; }
.commenti-list__date { font-size: 0.85rem; color: var(--color-text-muted); }
.commenti-list__testo { margin: 0.35rem 0 0; font-size: 0.95rem; }

/* Footer */

/* PULSANTE CHIAMA */
.btn-call,
.contact-list .btn-call,
.contact-list a.btn-call {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-left: 0.5rem;
    padding: 0.25rem 0.7rem;
    background: #2e7d32;
    color: #fff !important;
    border-radius: 4px;
    font-size: 0.78rem;
    font-weight: 600;
    text-decoration: none !important;
    vertical-align: middle;
    transition: background .15s;
    white-space: nowrap;
}
.btn-call:hover,
.contact-list a.btn-call:hover { background: #1b5e20; color: #fff !important; }
.btn-call svg { flex-shrink: 0; color: #fff; }

/* AD SLOT DETTAGLIO TOP */
.ad-wrap--dettaglio-top {
    margin: 0.75rem 0 1.25rem;
}
/* AD SLOT generici */
.ad-wrap { margin: 1.25rem 0; min-height: 0; overflow: hidden; }
.ad-wrap--detail { margin: 1.5rem 0; }
.ad-wrap--article { margin: 1.75rem 0 1rem; }
.ad-wrap ins { display: block; }
/* Annuncio dentro la lista risultati */
.result-card--ad { padding: 0; background: transparent; border: none; box-shadow: none; }
.ad-wrap--list { margin: .5rem 0; width: 100%; }
.ad-wrap--guide { margin: 1.25rem 0 1.75rem; }
.home-ad { max-width: 1100px; margin: 1.5rem auto; padding: 0 1rem; }
.ad-wrap--home { margin: 0; }
/* FOOTER */
.site-footer {
    background: #0a1f5c;
    color: rgba(255,255,255,0.75);
    margin-top: 3rem;
    padding-bottom: max(0px, var(--safe-bottom));
}
.footer-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 3rem 1.25rem 0;
}

/* Griglia 4 colonne */
.footer-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
    padding-bottom: 2.5rem;
    border-bottom: 1px solid rgba(255,255,255,0.1);
}
@media (min-width: 540px) {
    .footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 900px) {
    .footer-grid { grid-template-columns: 2fr 1fr 1fr 1fr; }
}

/* Colonna brand */
.footer-col--brand { }
.footer-logo {
    display: inline-block;
    font-size: 1.1rem;
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    margin-bottom: 0.75rem;
    letter-spacing: -0.01em;
}
.footer-tagline {
    font-size: 0.82rem;
    line-height: 1.6;
    color: rgba(255,255,255,0.6);
    margin: 0;
    max-width: 260px;
}

/* Titoli colonne */
.footer-col__title {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: rgba(255,255,255,0.45);
    margin: 0 0 0.85rem;
}

/* Liste link */
.footer-links {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.footer-links a {
    color: rgba(255,255,255,0.72);
    text-decoration: none;
    font-size: 0.875rem;
    transition: color .15s;
}
.footer-links a:hover { color: #fff; }

/* Striscia copyright */
.footer-bottom {
    padding: 1.25rem 0;
    text-align: center;
}
.footer-bottom p {
    margin: 0;
    font-size: 0.78rem;
    color: rgba(255,255,255,0.4);
}

/* Leaflet overrides for mobile */
.leaflet-control-zoom { border: none !important; }
.leaflet-control-zoom a {
    width: 36px !important;
    height: 36px !important;
    line-height: 36px !important;
    font-size: 18px !important;
}

/* Import page */
.import-form { max-width: 480px; margin: 1.5rem 0; }
.message { padding: 1rem; border-radius: var(--radius); margin: 1rem 0; }
.message--success { background: #e8f5e9; color: #2e7d32; }
.message--error { background: #ffebee; color: #c62828; }
.message--warning { background: #fff3e0; color: #e65100; }
.message--info { background: #e3f2fd; color: #1565c0; }
.error-list { margin: 0.5rem 0; padding-left: 1.5rem; font-size: 0.9rem; color: var(--color-text-muted); }
.preview-section { margin-top: 2rem; }
.preview-table-wrap { overflow-x: auto; margin: 1rem 0; }
.preview-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.preview-table th, .preview-table td { padding: 0.5rem; border: 1px solid var(--color-border); text-align: left; }
.preview-table th { background: var(--color-bg); }
.help-section { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--color-border); font-size: 0.9rem; color: var(--color-text-muted); }
.help-section code { background: #eee; padding: 0.2rem 0.4rem; border-radius: 4px; }

/* SEZIONE SERVIZI PIÙ CERCATI */
.services-section {
    margin: 2rem 0 1.5rem;
}
.services-title {
    font-size: 1.15rem;
    font-weight: 700;
    margin: 0 0 1rem;
    color: #1a2744;
    letter-spacing: -0.01em;
}
.services-grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem;
}
@media (min-width: 480px) {
    .services-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 768px) {
    .services-grid { grid-template-columns: repeat(6, 1fr); }
}
.service-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.5rem;
    padding: 1.1rem 0.75rem;
    background: #fff;
    border-radius: 10px;
    border: 1.5px solid #e8edf5;
    text-decoration: none;
    color: #1a2744;
    font-size: 0.82rem;
    font-weight: 600;
    transition: border-color .15s, box-shadow .15s, transform .15s;
    line-height: 1.2;
}
.service-card:hover {
    border-color: #1565c0;
    box-shadow: 0 4px 16px rgba(21,101,192,0.12);
    transform: translateY(-2px);
    color: #1565c0;
}
.service-card__icon {
    width: 38px;
    height: 38px;
    color: #1a56db;
    flex-shrink: 0;
}
.service-card__label {
    font-weight: 700;
    font-size: 0.85rem;
}
.service-card__desc {
    font-size: 0.75rem;
    font-weight: 400;
    color: #757575;
    line-height: 1.3;
}

/* ── BILLING TOGGLE — piani.php ── */
.gp-billing-toggle {
    display: inline-flex;
    gap: 0;
    background: #e8eef8;
    border: 2px solid #b8cef0;
    border-radius: 50px;
    padding: 4px;
    margin: 0 auto 2rem;
}
/* centra il toggle quando è figlio diretto di un blocco */
.lp-section__inner > .gp-billing-toggle,
.gestione-main > .gp-billing-toggle {
    display: flex;
    width: fit-content;
}
.gp-billing-toggle__btn {
    padding: .6rem 1.5rem;
    border: none;
    border-radius: 50px;
    background: transparent;
    font-size: .9rem;
    font-weight: 600;
    color: #5a6a84;
    cursor: pointer;
    transition: background .18s, color .18s, box-shadow .18s;
    display: flex;
    align-items: center;
    gap: .5rem;
    white-space: nowrap;
}
.gp-billing-toggle__btn--active {
    background: #0a3fa8;
    color: #fff;
    box-shadow: 0 2px 8px rgba(10,63,168,.35);
}
.gp-billing-toggle__btn--active .gp-billing-toggle__save {
    background: rgba(255,255,255,.22);
    color: #fff;
}
.gp-billing-toggle__save {
    font-size: .75rem;
    font-weight: 700;
    background: #d4edda;
    color: #1a6b2f;
    padding: .2rem .55rem;
    border-radius: 50px;
    letter-spacing: .01em;
}
.gp-price__saving {
    display: block;
    font-size: .8rem;
    font-weight: 600;
    color: #2e7d32;
    margin-top: .15rem;
}

/* CTA GESTORE STRIP — sopra il footer, visibile agli utenti non loggati */
.gestore-strip {
    background: #eef3fb;
    border-top: 1px solid #d0dff5;
    padding: 1.25rem 1rem;
}
.gestore-strip__inner {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
}
.gestore-strip__text {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.gestore-strip__text strong {
    font-size: 1rem;
    color: #0a1f5c;
}
.gestore-strip__text span {
    font-size: 0.9rem;
    color: #444;
}
.gestore-strip__btn {
    flex-shrink: 0;
    background: #0a3fa8;
    color: #fff;
    padding: 0.65rem 1.4rem;
    border-radius: 6px;
    font-size: 0.9rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
    transition: background .15s;
}
.gestore-strip__btn:hover { background: #0830a0; color: #fff; }
@media (max-width: 640px) {
    .gestore-strip__inner { flex-direction: column; align-items: flex-start; }
    .gestore-strip__btn   { width: 100%; text-align: center; }
}
/* PARTNER STRIP (cross-promo benzinaitalia) */
.partner-strip {
    background: #fff8ed;
    border-top: 1px solid #f0d9a8;
    padding: 1.1rem 1rem;
}
.partner-strip__inner {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
}
.partner-strip__text {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.partner-strip__text strong {
    font-size: 0.95rem;
    color: #7c3d00;
}
.partner-strip__text span {
    font-size: 0.85rem;
    color: #666;
}
.partner-strip__btn {
    flex-shrink: 0;
    background: #b45309;
    color: #fff;
    padding: 0.6rem 1.3rem;
    border-radius: 6px;
    font-size: 0.88rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
    transition: background .15s;
}
.partner-strip__btn:hover { background: #92400e; color: #fff; }
@media (max-width: 640px) {
    .partner-strip__inner { flex-direction: column; align-items: flex-start; }
    .partner-strip__btn   { width: 100%; text-align: center; }
}
/* PERCORSO / INDICAZIONI STRADALI */

/* Tab Mappa / Percorso */
.detail-tabs {
    margin-top: 1.5rem;
    border: 1.5px solid var(--color-border);
    border-radius: 10px;
    overflow: hidden;
    background: var(--color-surface);
}
.detail-tabs__bar {
    display: flex;
    border-bottom: 1.5px solid var(--color-border);
}
.detail-tab {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    padding: 0.75rem 1rem;
    background: #f8f9fa;
    border: none;
    border-right: 1px solid var(--color-border);
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--color-text-muted);
    font-family: inherit;
    transition: background .15s, color .15s;
}
.detail-tab:last-child { border-right: none; }
.detail-tab:hover { background: #e8f0fe; color: #1565c0; }
.detail-tab.active { background: #fff; color: #0a1f5c; border-bottom: 2px solid #1565c0; }

.detail-tab__panel { padding: 1rem; }

/* Mini mappa di conferma */
.route-confirm-map {
    height: 180px;
    border-radius: 8px;
    margin: 0.75rem 0;
    background: #eee;
}
.route-confirm-text {
    font-size: 0.92rem;
    font-weight: 500;
    margin: 0 0 0.35rem;
    color: var(--color-text);
}
.route-confirm-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

/* Prompt geoloc iniziale */
.route-geo-prompt {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.5rem 0;
}

/* Ricerca manuale */
.route-manual-label {
    display: block;
    font-size: 0.88rem;
    font-weight: 500;
    margin-bottom: 0.5rem;
    color: var(--color-text-muted);
}
.route-manual-input-wrap {
    position: relative;
}
.route-manual-input {
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: 1.5px solid var(--color-border);
    border-radius: 8px;
    font-size: 0.95rem;
    font-family: inherit;
    box-sizing: border-box;
}
.route-manual-input:focus {
    outline: none;
    border-color: #1565c0;
    box-shadow: 0 0 0 3px rgba(21,101,192,0.15);
}

/* Step panel */
.route-step-panel { padding: 0.25rem 0; }

/* Loading */
.route-loading {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 1rem;
    font-size: 0.9rem;
    color: var(--color-text-muted);
}
.route-loading__spinner {
    width: 18px;
    height: 18px;
    border: 2px solid #e0e0e0;
    border-top-color: #1565c0;
    border-radius: 50%;
    animation: route-spin .7s linear infinite;
    flex-shrink: 0;
}
@keyframes route-spin { to { transform: rotate(360deg); } }

/* Errore */
.route-error {
    padding: 0.85rem 1rem;
    background: #ffebee;
    color: #c62828;
    font-size: 0.88rem;
}

/* Riepilogo */
.route-summary {
    padding: 0.85rem 1rem;
    background: #e8f5e9;
    font-size: 0.9rem;
    color: #1b5e20;
    border-bottom: 1px solid #c8e6c9;
}

/* Mappa percorso */
.route-map-container {
    height: 240px;
    width: 100%;
    background: #e8e8e8;
}
@media (min-width: 600px) {
    .route-map-container { height: 300px; }
}

/* Tabella istruzioni */
.route-steps-wrap {
    overflow-x: auto;
}
.route-directions-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}
.route-step {
    border-bottom: 1px solid #f0f0f0;
}
.route-step:last-child { border-bottom: none; }
.route-step__icon {
    padding: 0.6rem 0.5rem 0.6rem 1rem;
    color: #1565c0;
    vertical-align: middle;
    width: 36px;
}
.route-step__text {
    padding: 0.6rem 0.5rem;
    vertical-align: middle;
    line-height: 1.4;
}
.route-step__num {
    color: var(--color-text-muted);
    font-size: 0.78rem;
    margin-right: 0.2rem;
}
.route-step__dist {
    padding: 0.6rem 1rem 0.6rem 0.5rem;
    text-align: right;
    white-space: nowrap;
    color: var(--color-text-muted);
    font-size: 0.82rem;
    vertical-align: middle;
}

/* PAGINE STATICHE (privacy, faq, contatti ecc.) */
.static-page h1 {
    font-size: 1.6rem;
    font-weight: 700;
    color: #0a1f5c;
    margin: 0 0 0.5rem;
    letter-spacing: -0.02em;
}
.static-page__lead {
    font-size: 1rem;
    color: var(--color-text-muted);
    margin: 0 0 1.5rem;
    line-height: 1.6;
}
.static-page__updated {
    font-size: 0.82rem;
    color: var(--color-text-muted);
    margin: 0 0 1.5rem;
}
.static-page .detail-block h2 {
    font-size: 1rem;
    font-weight: 700;
    color: #0a1f5c;
}
.static-page .detail-block ul {
    margin: 0.5rem 0 0 1.25rem;
    padding: 0;
}
.static-page .detail-block li {
    margin-bottom: 0.4rem;
    line-height: 1.6;
}

/* Cookie table */
.cookie-table-wrap { overflow-x: auto; margin: 0.75rem 0; }
.cookie-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}
.cookie-table th {
    background: #0a1f5c;
    color: #fff;
    padding: 0.5rem 0.75rem;
    text-align: left;
    font-weight: 600;
}
.cookie-table td {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--color-border);
    vertical-align: top;
}
.cookie-table tr:last-child td { border-bottom: none; }
.cookie-table code {
    background: #f0f0f0;
    border-radius: 3px;
    padding: 0.1rem 0.35rem;
    font-size: 0.82rem;
}

/* Griglia contatti */
.contact-grid {
    display: grid;
    gap: 1.5rem;
    grid-template-columns: 1fr;
}
@media (min-width: 768px) {
    .contact-grid { grid-template-columns: 1fr 1.5fr; }
}
.contact-info-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}
.contact-info-list li {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9rem;
}
.contact-info-list svg { flex-shrink: 0; color: #1565c0; }
.contact-info-list small { color: var(--color-text-muted); display: block; font-size: 0.78rem; }

/* Form contatti textarea */
.contact-form textarea,
.auth-form textarea {
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    font-size: 1rem;
    font-family: inherit;
    resize: vertical;
    min-height: 120px;
}
.contact-form textarea:focus,
.auth-form textarea:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(13,71,161,0.15);
}

/* AUTOSUGGEST */
.suggest-dropdown {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: #fff;
    border: 1.5px solid #d0d8f0;
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.14);
    list-style: none;
    margin: 0;
    padding: 0.35rem 0;
    z-index: 1200;
    max-height: 320px;
    overflow-y: auto;
}
.suggest-item {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.55rem 1rem;
    cursor: pointer;
    font-size: 0.9rem;
    transition: background .1s;
}
.suggest-item:hover,
.suggest-item--active {
    background: #f0f4ff;
}
.suggest-icon { font-size: 1rem; flex-shrink: 0; }
.suggest-label { flex: 1; color: #212121; }
.suggest-type {
    font-size: 0.72rem;
    color: #9e9e9e;
    background: #f5f5f5;
    border-radius: 3px;
    padding: 0.1rem 0.4rem;
    flex-shrink: 0;
}

/* Banner risultati geo */
.geo-results-banner {
    background: #e3f2fd;
    border: 1px solid #90caf9;
    border-radius: 8px;
    padding: 0.6rem 1rem;
    font-size: 0.88rem;
    color: #0d47a1;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Distanza nei result-card */
.result-card__distance {
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 600;
    color: #1565c0;
    background: #e3f2fd;
    border-radius: 4px;
    padding: 0.1rem 0.45rem;
    margin-top: 0.25rem;
}

/* AUTOSUGGEST */
.suggest-dropdown {
    position: fixed;
    background: #fff;
    border: 1.5px solid #e0e0e0;
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.2);
    list-style: none;
    margin: 0;
    padding: 0.35rem 0;
    z-index: 99999;
    max-height: 320px;
    overflow-y: auto;
}
.suggest-dropdown li {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 1rem;
    cursor: pointer;
    font-size: 0.9rem;
    transition: background .1s;
}
.suggest-dropdown li:hover,
.suggest-dropdown li.active {
    background: #f0f4ff;
}
.suggest-icon { flex-shrink: 0; font-size: 0.95rem; }
.suggest-label { flex: 1; color: var(--color-text); }
.suggest-count {
    font-size: 0.75rem;
    color: var(--color-text-muted);
    background: #f0f0f0;
    border-radius: 10px;
    padding: 0.1rem 0.45rem;
    flex-shrink: 0;
}

/* Notice prossimità */
.proximity-notice {
    font-size: 0.88rem;
    color: #1565c0;
    background: #e3f2fd;
    border-radius: 6px;
    padding: 0.45rem 0.85rem;
    margin-bottom: 0.75rem;
    display: inline-block;
}

/* Guide - blocco trova centro */
.guide-find-center {
    background: #e8f5e9;
    border-radius: 10px;
    border-left: 4px solid #2e7d32;
    padding: 1.25rem 1.25rem 1rem;
    margin-top: 1.5rem;
}
.guide-find-center h2 {
    color: #1b5e20 !important;
    margin-bottom: 0.5rem !important;
}
.guide-find-center p { color: #2e7d32; margin-bottom: 0.75rem; }
.guide-find-center__action {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}
.guide-find-center__note {
    font-size: 0.82rem !important;
    color: #558b2f !important;
    margin: 0 !important;
}

/* Link aggiuntivi guide in homepage */
.guide-all-links {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
    font-size: 0.85rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.75rem;
    color: var(--color-text-muted);
}
.guide-all-links strong {
    color: var(--color-text);
    white-space: nowrap;
}
.guide-all-links a {
    color: var(--color-primary);
    text-decoration: none;
    white-space: nowrap;
}
.guide-all-links a:hover { text-decoration: underline; }

/* Conferma posizione */
.route-confirm-label {
    font-size: 0.82rem;
    color: var(--color-text-muted);
    margin: 0 0 0.25rem;
}
.route-confirm-address {
    font-size: 1rem;
    font-weight: 600;
    color: var(--color-text);
    margin: 0 0 0.85rem;
    line-height: 1.4;
}
.route-confirm-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

/* Ricerca manuale */
.route-manual-label {
    display: block;
    font-size: 0.88rem;
    font-weight: 500;
    margin-bottom: 0.5rem;
    color: var(--color-text-muted);
}
.route-manual-input-wrap { position: relative; }
.route-manual-input {
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: 1.5px solid var(--color-border);
    border-radius: 8px;
    font-size: 0.95rem;
    font-family: inherit;
    box-sizing: border-box;
}
.route-manual-input:focus {
    outline: none;
    border-color: #1565c0;
    box-shadow: 0 0 0 3px rgba(21,101,192,0.15);
}

/* Tab istruzioni/mappa dentro il pannello percorso */
.route-tabs {
    display: flex;
    border-bottom: 1.5px solid var(--color-border);
    margin: 0.75rem 0 0;
}
.route-tab {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.6rem 1rem;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    cursor: pointer;
    font-size: 0.875rem;
    font-weight: 600;
    font-family: inherit;
    color: var(--color-text-muted);
    transition: color .15s;
}
.route-tab:hover { color: #1565c0; }
.route-tab.active { color: #0a1f5c; border-bottom-color: #1565c0; }
.route-tab--reset {
    margin-left: auto;
    font-weight: 400;
    font-size: 0.82rem;
    color: var(--color-text-muted);
}
.route-tab--reset:hover { color: #c62828; }
.route-tab-panel { padding: 0.75rem 0 0; }

/* I pannelli tab del percorso usano visibility per non ingannare Leaflet */
.route-tab-panel {
    display: block;
}
.route-tab-panel.hidden {
    position: absolute;
    visibility: hidden;
    pointer-events: none;
    height: 0;
    overflow: hidden;
}

/* Pagine SEO citta/regione */
.city-page { max-width: 900px; margin: 0 auto; padding: 1.5rem 1rem; }
.city-page__header { margin-bottom: 1.5rem; }
.city-page__header h1 { font-size: 1.6rem; font-weight: 700; color: #0a1f5c; margin: 0 0 0.35rem; }
.city-page__count { font-size: 0.9rem; color: var(--color-text-muted); margin: 0 0 0.75rem; }
.city-page__header p { font-size: 0.92rem; margin: 0 0 0.5rem; line-height: 1.6; }
.city-page__comuni {
    margin-bottom: 1.25rem;
    font-size: 0.88rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 0.6rem;
    align-items: center;
}
.city-page__comuni a {
    color: var(--color-primary);
    text-decoration: none;
    padding: 0.15rem 0.5rem;
    border-radius: 12px;
    background: #e8f0fe;
    font-size: 0.82rem;
}
.city-page__comuni a:hover { background: #1565c0; color: #fff; }
.city-page__related {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
    font-size: 0.88rem;
    color: var(--color-text-muted);
}
.city-page__related a { color: var(--color-primary); }
.city-page__empty { color: var(--color-text-muted); padding: 2rem 0; }

/* Pagine servizio */
.service-page { max-width: 900px; margin: 0 auto; padding: 1.5rem 1rem; }
.service-page__header { margin-bottom: 1.5rem; }
.service-page__header h1 { font-size: 1.6rem; font-weight: 700; color: #0a1f5c; margin: 0 0 0.35rem; }
.service-page__sub { font-size: 0.92rem; color: var(--color-text-muted); margin: 0; }
.service-page__guida { margin-bottom: 1.5rem; }
.service-page__guida h2 { font-size: 1.2rem; font-weight: 700; color: #0a1f5c; }
.service-page__guida-content { font-size: 0.92rem; line-height: 1.7; }
.service-page__guida-content h2 { font-size: 1rem; margin-top: 1rem; }
.service-page__guida-link { margin-top: 1rem; }
.service-page__centri { margin-top: 1.5rem; }
.service-page__centri h2 { font-size: 1.1rem; font-weight: 700; color: #0a1f5c; margin-bottom: 0.5rem; }
.service-page__centri-note {
    font-size: 0.85rem;
    color: var(--color-text-muted);
    margin-bottom: 1rem;
    padding: 0.6rem 0.85rem;
    background: #fff8e1;
    border-left: 3px solid #f9a825;
    border-radius: 0 6px 6px 0;
}
.service-page__related {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
    font-size: 0.85rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 0.75rem;
    align-items: center;
    color: var(--color-text-muted);
}
.service-page__related a { color: var(--color-primary); text-decoration: none; }
.service-page__related a:hover { text-decoration: underline; }

/* Piani abbonamento */
.piani-page { max-width: 960px; margin: 0 auto; padding: 2rem 1rem; }
.piani-header { text-align: center; margin-bottom: 2.5rem; }
.piani-header h1 { font-size: 1.8rem; font-weight: 700; color: #0a1f5c; margin: 0 0 0.5rem; }
.piani-centro { font-size: 0.95rem; color: var(--color-text-muted); margin: 0 0 0.35rem; }
.piani-subtitle { font-size: 1rem; color: var(--color-text-muted); margin: 0; }
.piani-note { text-align: center; font-size: 0.82rem; color: var(--color-text-muted); margin-top: 1.5rem; }

.piani-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}
@media (min-width: 640px) { .piani-grid { grid-template-columns: repeat(3, 1fr); } }

.piano-card {
    background: var(--color-surface);
    border: 1.5px solid var(--color-border);
    border-radius: 12px;
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    position: relative;
}
.piano-card--featured {
    border-color: #1565c0;
    box-shadow: 0 4px 20px rgba(21,101,192,0.15);
}
.piano-card--attivo { border-color: #2e7d32; background: #f1f8e9; }
.piano-card__badge {
    position: absolute;
    top: -12px;
    left: 50%;
    transform: translateX(-50%);
    background: #1565c0;
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
    padding: 0.2rem 0.85rem;
    border-radius: 20px;
    white-space: nowrap;
}
.piano-card__header { margin-bottom: 1.25rem; }
.piano-card__header h2 { font-size: 1.2rem; font-weight: 700; color: #0a1f5c; margin: 0 0 0.5rem; }
.piano-card__prezzo { display: flex; align-items: baseline; gap: 0.2rem; }
.piano-card__euro { font-size: 2rem; font-weight: 700; color: #0a1f5c; }
.piano-card__mese { font-size: 0.85rem; color: var(--color-text-muted); }
.piano-card__features { list-style: none; margin: 0 0 1.5rem; padding: 0; flex: 1; }
.piano-card__features li { padding: 0.35rem 0; font-size: 0.88rem; display: flex; align-items: center; gap: 0.5rem; }
.piano-card__features li::before { font-size: 0.9rem; flex-shrink: 0; }
.piano-card__features li.ok::before { content: "✓"; color: #2e7d32; font-weight: 700; }
.piano-card__features li.no::before { content: "✗"; color: #ccc; }
.piano-card__features li.no { color: var(--color-text-muted); }
.piano-card__btn { width: 100%; text-align: center; }

/* Piano badge */
.piano-badge { display: inline-block; padding: 0.15rem 0.6rem; border-radius: 12px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; }
.piano-badge--free { background: #f0f0f0; color: #666; }
.piano-badge--standard { background: #e3f2fd; color: #1565c0; }
.piano-badge--premium { background: #fff8e1; color: #f57f17; }

/* Gestione layout */
.gestione-layout { display: grid; grid-template-columns: 220px 1fr; gap: 1.5rem; max-width: 1100px; margin: 1.5rem auto; padding: 0 1rem; }
@media (max-width: 700px) { .gestione-layout { grid-template-columns: 1fr; } }

.gestione-sidebar { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 10px; padding: 1rem; height: fit-content; }
.gestione-sidebar__centri { margin-bottom: 1rem; font-size: 0.82rem; }
.gestione-sidebar__centro { display: block; padding: 0.35rem 0.5rem; border-radius: 6px; font-size: 0.85rem; text-decoration: none; color: var(--color-text); margin-top: 0.25rem; }
.gestione-sidebar__centro.active, .gestione-sidebar__centro:hover { background: #e8f0fe; color: #1565c0; }
.gestione-nav { display: flex; flex-direction: column; gap: 0.15rem; }
.gestione-nav__item { padding: 0.5rem 0.75rem; border-radius: 6px; text-decoration: none; font-size: 0.9rem; color: var(--color-text); transition: background .15s; }
.gestione-nav__item:hover, .gestione-nav__item.active { background: #e8f0fe; color: #1565c0; }
.gestione-nav__item--locked { color: var(--color-text-muted); cursor: default; }
.gestione-nav__item--locked:hover { background: none; color: var(--color-text-muted); }
.gestione-nav__item--danger { color: #c62828; }
.gestione-nav__item--danger:hover { background: #fff0f0; color: #b71c1c; }
.gestione-sidebar__footer { margin-top: 1.25rem; padding-top: 0.75rem; border-top: 1px solid var(--color-border); font-size: 0.82rem; }
.gestione-sidebar__footer a { color: var(--color-text-muted); text-decoration: none; }
.gestione-sidebar__footer a:hover { color: var(--color-primary); }

/* Danger zone */
.danger-zone {
    background: #fff8f8;
    border: 1.5px solid #ffcdd2;
    border-radius: 10px;
    padding: 1.5rem;
    max-width: 560px;
}
.danger-zone__header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1rem; }
.danger-zone__header h2 { font-size: 1.1rem; font-weight: 700; color: #b71c1c; margin: 0; }
.danger-zone__icon { font-size: 1.3rem; }
.danger-zone p { font-size: 0.92rem; margin: 0 0 0.75rem; }
.danger-zone__list { font-size: 0.9rem; margin: 0 0 1rem 1.25rem; padding: 0; line-height: 1.7; }
.danger-zone__alert {
    background: #fff3e0; border: 1px solid #ffe0b2; border-radius: 6px;
    padding: 0.75rem 1rem; font-size: 0.875rem; margin-bottom: 1rem;
    color: #e65100;
}
.danger-zone__form { display: flex; flex-direction: column; gap: 0.75rem; margin-top: 1.25rem; }
.danger-zone__form label { font-size: 0.875rem; font-weight: 500; }
.danger-zone__form input[type="text"] {
    padding: 0.5rem 0.75rem; border: 1.5px solid #ef9a9a; border-radius: 8px;
    font-size: 0.95rem; background: #fff; width: 100%; box-sizing: border-box;
}
.danger-zone__form input[type="text"]:focus { outline: none; border-color: #c62828; }
.danger-zone__actions { display: flex; gap: 0.75rem; align-items: center; flex-wrap: wrap; }

/* btn-danger */
.btn-danger {
    background: #c62828; color: #fff; border: none; border-radius: 8px;
    padding: 0.55rem 1.2rem; font-size: 0.9rem; font-weight: 600; cursor: pointer;
    transition: background .15s;
}
.btn-danger:hover:not(:disabled) { background: #b71c1c; }
.btn-danger:disabled { opacity: 0.45; cursor: not-allowed; }

.gestione-header { margin-bottom: 1.5rem; }
.gestione-header h1 { font-size: 1.4rem; font-weight: 700; color: #0a1f5c; margin: 0 0 0.25rem; }
.gestione-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }
.gestione-card { background: var(--color-surface); border: 1.5px solid var(--color-border); border-radius: 10px; padding: 1.25rem; text-decoration: none; color: var(--color-text); transition: box-shadow .15s, border-color .15s; }
.gestione-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.1); border-color: #1565c0; }
.gestione-card--locked { opacity: 0.75; }
div.gestione-card--locked { cursor: default; }
div.gestione-card--locked:hover { box-shadow: none; border-color: var(--color-border); }
.gestione-card__icon { font-size: 2rem; margin-bottom: 0.5rem; }
.gestione-card h3 { font-size: 0.95rem; font-weight: 700; margin: 0 0 0.35rem; }
.gestione-card p { font-size: 0.82rem; color: var(--color-text-muted); margin: 0 0 0.75rem; }

/* Scheda form gestore */
.scheda-form__section {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 10px;
    padding: 1.25rem;
    margin-bottom: 1.25rem;
}
.scheda-form__section h2 {
    font-size: 1rem;
    font-weight: 700;
    color: #0a1f5c;
    margin: 0 0 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--color-border);
}
.scheda-form__hint {
    font-size: 0.82rem;
    color: var(--color-text-muted);
    margin: -0.5rem 0 0.75rem;
}
.form-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.75rem;
}
@media (min-width: 600px) {
    .form-row { grid-template-columns: repeat(3, 1fr); }
    .form-group--wide { grid-column: span 2; }
}
.scheda-form__actions {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    padding-top: 0.5rem;
}
.servizi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 0.5rem;
}
.servizio-check {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.875rem;
    cursor: pointer;
    padding: 0.35rem 0.5rem;
    border-radius: 6px;
    transition: background .1s;
}
.servizio-check:hover { background: #f0f4ff; }
.servizio-check input { flex-shrink: 0; }

/* Servizi personalizzati (chips) */
.servizi-custom-wrap { display: flex; flex-direction: column; gap: 0.75rem; }
.servizi-custom-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; min-height: 1.5rem; }
.servizio-chip {
    display: inline-flex; align-items: center; gap: 0.3rem;
    background: #e8f0fe; color: #1a3a6b; border: 1px solid #c0d0f0;
    border-radius: 20px; padding: 0.25rem 0.6rem 0.25rem 0.75rem;
    font-size: 0.82rem; font-weight: 500; white-space: nowrap;
}
.chip-remove {
    background: none; border: none; cursor: pointer; padding: 0;
    color: #6b7a99; font-size: 0.75rem; line-height: 1;
    display: inline-flex; align-items: center; justify-content: center;
    width: 1rem; height: 1rem; border-radius: 50%;
    transition: background .1s, color .1s;
}
.chip-remove:hover { background: #c0d0f0; color: #1a3a6b; }
.servizi-custom-add { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.servizi-custom-add input[type="text"] {
    flex: 1; min-width: 180px; max-width: 360px;
    padding: 0.45rem 0.75rem; border: 1px solid var(--color-border);
    border-radius: 8px; font-size: 0.9rem; background: var(--color-surface);
    color: var(--color-text);
}
.servizi-custom-add input[type="text"]:focus { outline: none; border-color: var(--color-primary); }

/* Bottone prenota */
.btn-prenota {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.5rem;
    background: #e8f5e9;
    color: #2e7d32;
    border: 1.5px solid #a5d6a7;
    border-radius: 8px;
    padding: 0.55rem 1rem;
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
    transition: background .15s;
}
.btn-prenota:hover { background: #c8e6c9; }

/* Disponibilita */
.disponibilita-grid { display: grid; grid-template-columns: 1fr; gap: 0.75rem; }
@media (min-width: 600px) { .disponibilita-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .disponibilita-grid { grid-template-columns: repeat(3, 1fr); } }
.disponibilita-giorno {
    border: 1.5px solid var(--color-border);
    border-radius: 8px;
    overflow: hidden;
}
.disponibilita-giorno.has-slot { border-color: #1565c0; }
.disponibilita-giorno__header {
    padding: 0.6rem 0.85rem;
    background: #f8f9fa;
    border-bottom: 1px solid var(--color-border);
}
.disponibilita-toggle { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; font-weight: 600; font-size: 0.9rem; }
.disponibilita-giorno__slots { padding: 0.75rem; }
.slot-row { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.5rem; font-size: 0.85rem; }
.slot-row input[type="time"] { padding: 0.3rem 0.5rem; border: 1px solid var(--color-border); border-radius: 6px; font-size: 0.85rem; }
.slot-row select { padding: 0.3rem 0.5rem; border: 1px solid var(--color-border); border-radius: 6px; font-size: 0.85rem; }
.btn-remove-slot { background: none; border: none; color: #c62828; cursor: pointer; font-size: 1rem; padding: 0.1rem 0.3rem; }
.btn-add-slot { margin-top: 0.35rem; font-size: 0.82rem; }

/* Prenotazioni lista */
.prenotazioni-list { display: flex; flex-direction: column; gap: 0.75rem; }
.prenotazione-card {
    border: 1.5px solid var(--color-border);
    border-radius: 8px;
    padding: 1rem;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 0.75rem;
}
.prenotazione-card--in_attesa { border-color: #ff9800; background: #fff8e1; }
.prenotazione-card--confermata { border-color: #4caf50; background: #f1f8e9; }
.prenotazione-card--annullata { opacity: 0.6; }
.prenotazione-card__data { font-size: 1rem; margin-bottom: 0.25rem; }
.prenotazione-card__utente { font-size: 0.85rem; color: var(--color-text-muted); }
.prenotazione-card__servizio, .prenotazione-card__note { font-size: 0.82rem; color: var(--color-text-muted); margin-top: 0.2rem; }
.prenotazione-card__actions { display: flex; flex-direction: column; gap: 0.4rem; }
.prenotazione-nota { padding: 0.3rem 0.5rem; border: 1px solid var(--color-border); border-radius: 6px; font-size: 0.82rem; width: 100%; }

/* Form prenota */
.prenota-form { max-width: 500px; }
.logo {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 1.1rem;
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
}
.logo__img {
    width: 36px;
    height: 36px;
    object-fit: contain;
    flex-shrink: 0;
}
.logo__text {
    line-height: 1.2;
}

/* Pagina estero */
.estero-page { max-width: 960px; margin: 0 auto; padding: 1.5rem 1rem; }
.estero-header { margin-bottom: 1.5rem; }
.estero-header h1 { font-size: 1.6rem; font-weight: 700; color: #0a1f5c; margin: 0 0 0.35rem; }
.estero-subtitle { font-size: 0.95rem; color: var(--color-text-muted); margin: 0; }

.paesi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 0.85rem;
}

.paese-card {
    background: var(--color-surface);
    border: 1.5px solid var(--color-border);
    border-radius: 10px;
    padding: 1rem 1.1rem;
    text-decoration: none;
    color: var(--color-text);
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    transition: border-color .15s, box-shadow .15s;
}
.paese-card:hover {
    border-color: #1565c0;
    box-shadow: 0 3px 10px rgba(21,101,192,0.12);
}
.paese-card__nome {
    font-weight: 700;
    font-size: 1rem;
    color: #0a1f5c;
}
.paese-card__info {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    flex-wrap: wrap;
}
.paese-card__totale {
    font-size: 0.82rem;
    color: var(--color-text-muted);
    margin-right: 0.2rem;
}
.badge--sm {
    font-size: 0.68rem;
    padding: 0.1rem 0.4rem;
}
.estero-list { margin-top: 1rem; }

/* Pagina sedi estero */
.estero-page { max-width: 960px; margin: 0 auto; padding: 1.5rem 1rem; }
.estero-header { margin-bottom: 2rem; }
.estero-header h1 { font-size: 1.6rem; font-weight: 700; color: #0a1f5c; margin: 0 0 0.5rem; }
.estero-subtitle { font-size: 0.95rem; color: var(--color-text-muted); margin: 0 0 1rem; }
.estero-paesi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 1rem;
}
.estero-paese-card {
    background: var(--color-surface);
    border: 1.5px solid var(--color-border);
    border-radius: 10px;
    padding: 1.1rem 1rem;
    text-decoration: none;
    color: var(--color-text);
    transition: border-color .15s, box-shadow .15s;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.estero-paese-card:hover {
    border-color: #1565c0;
    box-shadow: 0 4px 12px rgba(21,101,192,0.12);
}
.estero-paese-card__nome {
    font-weight: 700;
    font-size: 0.95rem;
    color: #0a1f5c;
}
.estero-paese-card__count {
    font-size: 0.8rem;
    color: var(--color-text-muted);
}
/* ============================================================
   Statistiche — classi da aggiungere a style.css
   ============================================================ */

/* Layout pagina gestione */
.gestione-main {
    min-width: 0;   
    padding: 2rem 1rem;
}

.gestione-header {
    margin-bottom: 2rem;
}

.gestione-header h1 {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--color-primary-dark);
    margin: 0 0 0.35rem;
}

.gestione-header p {
    font-size: 0.95rem;
    color: var(--color-text-muted);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Sezione statistica */
.stat-section {
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}

.stat-section h2 {
    font-size: 1rem;
    font-weight: 700;
    color: var(--color-primary-dark);
    margin: 0 0 1.1rem;
}

/* Griglia card */
.stat-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 1rem;
}

/* Singola card */
.stat-card {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1rem;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.3rem;
}

.stat-card--primary {
    background: #e3f2fd;
    border-color: #90caf9;
}

.stat-card--ok {
    background: #e8f5e9;
    border-color: #a5d6a7;
}

.stat-card--warning {
    background: #fff8e1;
    border-color: #ffe082;
}

.stat-card--danger {
    background: #ffebee;
    border-color: #ef9a9a;
}

.stat-card__icon {
    font-size: 1.4rem;
    line-height: 1;
}

.stat-card__value {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.1;
}

.stat-card--primary .stat-card__value { color: #1565c0; }
.stat-card--ok      .stat-card__value { color: #2e7d32; }
.stat-card--warning .stat-card__value { color: #e65100; }
.stat-card--danger  .stat-card__value { color: #c62828; }

.stat-card__label {
    font-size: 0.78rem;
    color: var(--color-text-muted);
    line-height: 1.3;
}

/* Barra progresso */
.stat-progress {
    width: 100%;
    height: 6px;
    background: var(--color-border);
    border-radius: 3px;
    overflow: hidden;
    margin-top: 0.4rem;
}

.stat-progress__bar {
    height: 100%;
    border-radius: 3px;
    background: var(--color-primary);
    transition: width 0.4s ease;
}

/* Grafico */
.stat-chart {
    position: relative;
    width: 100%;
}
.stat-chart-wrap {
    margin-top: 1.25rem;
    background: #f7f9fc;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    padding: 0.75rem 0.5rem 0.25rem;
    overflow: hidden;
}
.stat-chart-wrap svg circle { transition: r .15s; cursor: default; }
.stat-chart-wrap svg circle:hover { r: 5; }

/* Hint / suggerimento */
.stat-hint {
    font-size: 0.83rem;
    color: var(--color-text-muted);
    margin: 1rem 0 0;
}

.stat-hint a {
    color: var(--color-primary);
    text-decoration: none;
    font-weight: 600;
}

.stat-hint a:hover {
    text-decoration: underline;
}

/* ── UPSELL FREE — banner contestuale in statistiche ── */
.stat-upgrade-banner {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    background: #eef3fb;
    border: 1.5px solid #bad1f7;
    border-radius: 10px;
    padding: 1.1rem 1.25rem;
    margin-bottom: 1.5rem;
}
.stat-upgrade-banner__icon { font-size: 1.6rem; flex-shrink: 0; }
.stat-upgrade-banner__body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.stat-upgrade-banner__body strong { font-size: .95rem; color: #0a1f5c; }
.stat-upgrade-banner__body span   { font-size: .86rem; color: #444; }
.stat-upgrade-banner__btn {
    flex-shrink: 0;
    align-self: center;
    background: #0a3fa8;
    color: #fff;
    padding: .6rem 1.2rem;
    border-radius: 6px;
    font-size: .88rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
    transition: background .15s;
}
.stat-upgrade-banner__btn:hover { background: #0830a0; color: #fff; }

/* ── TEASER LOCK — sezioni bloccate con overlay ── */
.stat-section--locked { position: relative; }
.stat-teaser-wrap     { position: relative; }
.stat-teaser-blur     { filter: blur(4px); pointer-events: none; user-select: none; }
.stat-teaser-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.72);
    border-radius: 8px;
}
.stat-teaser-overlay__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
    text-align: center;
    padding: 1rem;
}
.stat-teaser-overlay__icon   { font-size: 1.5rem; }
.stat-teaser-overlay__inner strong { font-size: .95rem; color: #0a1f5c; }
.stat-teaser-overlay__inner span   { font-size: .84rem; color: #555; max-width: 280px; }

/* Responsive */
@media (max-width: 600px) {
    .stat-cards { grid-template-columns: repeat(2, 1fr); }
    .stat-card__value { font-size: 1.4rem; }
    .stat-upgrade-banner { flex-direction: column; }
    .stat-upgrade-banner__btn { width: 100%; text-align: center; }
}

/* Prenotazioni lista  */
.prenotazioni-list {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

.prenotazione-card {
    background: #fff;
    border: 1.5px solid var(--color-border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 1rem 1.25rem;
    display: flex;
    align-items: flex-start;
    gap: 1.25rem;
    flex-wrap: wrap;
}

.prenotazione-card--in_attesa  { border-left: 4px solid #f9a825; }
.prenotazione-card--confermata { border-left: 4px solid #2e7d32; }
.prenotazione-card--annullata  { border-left: 4px solid #bdbdbd; opacity: 0.7; }

.prenotazione-card__info {
    flex: 1;
    min-width: 200px;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.prenotazione-card__data {
    font-size: 1rem;
    color: var(--color-text);
}

.prenotazione-card__utente {
    font-size: 0.88rem;
    color: var(--color-text-muted);
}

.prenotazione-card__telefono {
    font-size: 0.85rem;
    color: var(--color-text-muted);
}

.prenotazione-card__servizio {
    font-size: 0.85rem;
    color: var(--color-primary-dark);
    font-weight: 600;
}

.prenotazione-card__note,
.prenotazione-card__nota-centro {
    font-size: 0.82rem;
    color: var(--color-text-muted);
    font-style: italic;
}

.prenotazione-card__stato {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.2rem 0.6rem;
    border-radius: 12px;
    width: fit-content;
    margin-top: 0.25rem;
}
.stato--in_attesa  { background: #fff8e1; color: #f57f17; }
.stato--confermata { background: #e8f5e9; color: #2e7d32; }
.stato--annullata  { background: #f5f5f5; color: #757575; }

.prenotazione-card__actions {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-width: 200px;
}

.prenotazione-nota {
    border: 1.5px solid var(--color-border);
    border-radius: 6px;
    padding: 0.4rem 0.65rem;
    font-size: 0.85rem;
    width: 100%;
    box-sizing: border-box;
    font-family: inherit;
    color: var(--color-text);
    transition: border-color 0.15s;
}
.prenotazione-nota:focus {
    outline: none;
    border-color: var(--color-primary);
}

.prenotazione-card__actions-btns {
    display: flex;
    gap: 0.5rem;
}

/* Badge contatore filtri */
.filtro-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    border-radius: 9px;
    background: currentColor;
    font-size: 0.68rem;
    font-weight: 700;
    padding: 0 4px;
    margin-left: 0.3rem;
    opacity: 0.85;
}
.btn-primary  .filtro-badge { background: rgba(255,255,255,0.3); color: #fff; }
.btn-outline  .filtro-badge { background: var(--color-border);   color: var(--color-text-muted); }

@media (max-width: 600px) {
    .prenotazione-card { flex-direction: column; }
    .prenotazione-card__actions { min-width: 0; width: 100%; }
}

/* Pagina prenotazione */
.prenota-wrap {
    max-width: 780px;
    margin: 2rem auto;
    padding: 0 1rem 3rem;
}
.prenota-breadcrumb {
    font-size: 0.82rem;
    color: var(--color-text-muted);
    margin-bottom: 1.5rem;
}
.prenota-breadcrumb a { color: var(--color-primary); text-decoration: none; }
.prenota-breadcrumb a:hover { text-decoration: underline; }

.prenota-header { margin-bottom: 2rem; }
.prenota-header h1 {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--color-primary-dark);
    margin: 0 0 0.25rem;
}
.prenota-header .prenota-centro-info {
    font-size: 0.95rem;
    color: var(--color-text-muted);
}

/* Step indicator */
.prenota-steps {
    display: flex;
    align-items: center;
    margin-bottom: 2rem;
}
.prenota-step {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--color-text-muted);
    flex: 1;
}
.prenota-step::after {
    content: '';
    flex: 1;
    height: 2px;
    background: var(--color-border);
    margin: 0 0.5rem;
}
.prenota-step:last-child::after { display: none; }
.prenota-step__num {
    width: 28px; height: 28px;
    border-radius: 50%;
    background: var(--color-border);
    color: var(--color-text-muted);
    display: flex; align-items: center; justify-content: center;
    font-size: 0.8rem; font-weight: 700;
    flex-shrink: 0;
    transition: background 0.2s, color 0.2s;
}
.prenota-step.active { color: var(--color-primary-dark); }
.prenota-step.active .prenota-step__num { background: var(--color-primary); color: #fff; }
.prenota-step.done .prenota-step__num { background: #2e7d32; color: #fff; }
.prenota-step.done::after { background: #2e7d32; }

/* Sezioni */
.prenota-section {
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 1.5rem;
    margin-bottom: 1.25rem;
}
.prenota-section__title {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin: 0 0 1.1rem;
    display: flex; align-items: center; gap: 0.5rem;
}
.prenota-section__title span {
    display: inline-flex;
    width: 22px; height: 22px;
    border-radius: 50%;
    background: var(--color-primary);
    color: #fff;
    font-size: 0.72rem;
    align-items: center; justify-content: center;
}

/* Griglia giorni */
.prenota-giorni {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
    gap: 0.6rem;
}
.prenota-giorno-btn {
    display: flex; flex-direction: column; align-items: center;
    padding: 0.65rem 0.4rem;
    border: 2px solid var(--color-border);
    border-radius: var(--radius);
    background: #fff;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s, transform 0.1s;
    text-align: center; user-select: none;
}
.prenota-giorno-btn:hover { border-color: var(--color-primary); background: #f0f4ff; transform: translateY(-1px); }
.prenota-giorno-btn.selected { border-color: var(--color-primary); background: #e3f0ff; }
.prenota-giorno-btn__dow { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-primary); margin-bottom: 0.2rem; }
.prenota-giorno-btn__num { font-size: 1.4rem; font-weight: 700; color: var(--color-text); line-height: 1; }
.prenota-giorno-btn__mese { font-size: 0.7rem; color: var(--color-text-muted); margin-top: 0.15rem; }
.prenota-giorno-btn__slot { font-size: 0.68rem; color: #2e7d32; font-weight: 600; margin-top: 0.3rem; background: #e8f5e9; border-radius: 10px; padding: 0.1rem 0.4rem; }

/* Slot orari */
.prenota-orari { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.prenota-ora-btn {
    padding: 0.45rem 0.9rem;
    border: 2px solid var(--color-border);
    border-radius: 6px;
    background: #fff;
    font-size: 0.9rem; font-weight: 600;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    color: var(--color-text);
}
.prenota-ora-btn:hover { border-color: var(--color-primary); background: #f0f4ff; }
.prenota-ora-btn.selected { border-color: var(--color-primary); background: var(--color-primary); color: #fff; }

/* Riepilogo */
.prenota-riepilogo {
    display: none;
    background: #e8f0fe;
    border: 1px solid #b3c9f7;
    border-radius: var(--radius);
    padding: 0.75rem 1rem;
    margin-bottom: 1.25rem;
    font-size: 0.9rem; color: var(--color-primary-dark); font-weight: 600;
    align-items: center; gap: 0.5rem;
}
.prenota-riepilogo.visible { display: flex; }

/* Form dati */
.prenota-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
.prenota-form-grid .full { grid-column: 1 / -1; }
.form-group { display: flex; flex-direction: column; gap: 0.3rem; }
.form-group label { font-size: 0.82rem; font-weight: 600; color: var(--color-text-muted); }
.form-group input, .form-group textarea {
    border: 1.5px solid var(--color-border);
    border-radius: 6px;
    padding: 0.55rem 0.75rem;
    font-size: 0.95rem; color: var(--color-text);
    background: #fff;
    transition: border-color 0.15s;
    font-family: inherit; width: 100%; box-sizing: border-box;
}
.form-group input:focus, .form-group textarea:focus { outline: none; border-color: var(--color-primary); }
.form-group textarea { resize: vertical; min-height: 80px; }
.form-group input[readonly] { background: #f5f5f5; color: var(--color-text-muted); cursor: default; }

.prenota-azioni { display: flex; gap: 0.75rem; margin-top: 1.5rem; align-items: center; }

/* Errori */
.prenota-errors {
    background: #ffebee; border: 1px solid #ef9a9a;
    border-radius: var(--radius); padding: 0.75rem 1rem;
    margin-bottom: 1rem; font-size: 0.88rem; color: #c62828;
}

/* Successo */
.prenota-success { text-align: center; padding: 3rem 1rem; }
.prenota-success__icon { font-size: 3.5rem; margin-bottom: 1rem; }
.prenota-success h2 { font-size: 1.5rem; color: #2e7d32; margin: 0 0 0.5rem; }
.prenota-success p { color: var(--color-text-muted); margin: 0 0 1.5rem; }
.prenota-success__btns { display: flex; gap: 0.75rem; justify-content: center; flex-wrap: wrap; }

/* Nessuna disponibilità */
.prenota-empty { text-align: center; padding: 2.5rem 1rem; color: var(--color-text-muted); }
.prenota-empty__icon { font-size: 2.5rem; margin-bottom: 0.75rem; }

@media (max-width: 560px) {
    .prenota-form-grid { grid-template-columns: 1fr; }
    .prenota-giorni { grid-template-columns: repeat(auto-fill, minmax(76px, 1fr)); }
}
.prenotazioni-list { display:flex; flex-direction:column; gap:0.85rem; }

.prenotazione-card {
    background:#fff; border:1.5px solid var(--color-border);
    border-radius:var(--radius); box-shadow:var(--shadow);
    padding:1rem 1.25rem; display:flex; align-items:flex-start; gap:1.25rem; flex-wrap:wrap;
}
.prenotazione-card--in_attesa  { border-left:4px solid #f9a825; }
.prenotazione-card--confermata { border-left:4px solid #2e7d32; }
.prenotazione-card--annullata  { border-left:4px solid #bdbdbd; opacity:0.7; }

.prenotazione-card__info { flex:1; min-width:200px; display:flex; flex-direction:column; gap:0.3rem; }
.prenotazione-card__data { font-size:1rem; color:var(--color-text); }
.prenotazione-card__utente { font-size:0.88rem; color:var(--color-text-muted); }
.prenotazione-card__servizio { font-size:0.85rem; color:var(--color-primary-dark); font-weight:600; }
.prenotazione-card__note,
.prenotazione-card__nota-centro { font-size:0.82rem; color:var(--color-text-muted); font-style:italic; }

.stato-badge {
    display:inline-flex; align-items:center; gap:0.3rem;
    font-size:0.75rem; font-weight:700; text-transform:uppercase; letter-spacing:0.04em;
    padding:0.2rem 0.65rem; border-radius:12px; width:fit-content; margin-top:0.25rem;
}
.stato-badge--in_attesa  { background:#fff8e1; color:#f57f17; }
.stato-badge--confermata { background:#e8f5e9; color:#2e7d32; }
.stato-badge--annullata  { background:#f5f5f5; color:#757575; }

.prenotazione-card__actions { display:flex; flex-direction:column; gap:0.5rem; min-width:220px; }
.prenotazione-nota {
    border:1.5px solid var(--color-border); border-radius:6px;
    padding:0.4rem 0.65rem; font-size:0.85rem; width:100%; box-sizing:border-box;
    font-family:inherit; color:var(--color-text); transition:border-color 0.15s;
}
.prenotazione-nota:focus { outline:none; border-color:var(--color-primary); }
.prenotazione-card__actions-btns { display:flex; gap:0.5rem; margin-top:0.4rem; }

.filtro-cnt {
    display:inline-flex; align-items:center; justify-content:center;
    min-width:18px; height:18px; border-radius:9px;
    font-size:0.68rem; font-weight:700; padding:0 4px; margin-left:0.3rem;
}
.btn-primary .filtro-cnt { background:rgba(255,255,255,0.25); color:#fff; }
.btn-outline .filtro-cnt { background:var(--color-border); color:var(--color-text-muted); }

@media(max-width:600px) {
    .prenotazione-card { flex-direction:column; }
    .prenotazione-card__actions { min-width:0; width:100%; }
}
/* Area utente */
.au-wrap {
    max-width: 860px;
    margin: 2rem auto;
    padding: 0 1rem 3rem;
}
.au-header { margin-bottom: 2rem; }
.au-header h1 { font-size: 1.7rem; font-weight: 700; color: var(--color-primary-dark); margin: 0 0 0.25rem; }
.au-header p  { font-size: 0.95rem; color: var(--color-text-muted); margin: 0; }

/* Sezioni */
.au-section {
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}
.au-section__title {
    font-size: 1rem; font-weight: 700;
    color: var(--color-primary-dark);
    margin: 0 0 1.25rem;
    display: flex; align-items: center; gap: 0.5rem;
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 0.75rem;
}

/* Form profilo */
.au-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.au-form-grid .full { grid-column: 1/-1; }
@media(max-width:560px) { .au-form-grid { grid-template-columns:1fr; } }

.form-group { display:flex; flex-direction:column; gap:0.3rem; }
.form-group label { font-size:0.82rem; font-weight:600; color:var(--color-text-muted); }
.form-group input {
    border: 1.5px solid var(--color-border); border-radius: 6px;
    padding: 0.55rem 0.75rem; font-size: 0.95rem;
    color: var(--color-text); background: #fff;
    transition: border-color 0.15s; font-family: inherit;
    width: 100%; box-sizing: border-box;
}
.form-group input:focus { outline:none; border-color:var(--color-primary); }

.au-actions { display:flex; gap:0.75rem; margin-top:1.25rem; }

/* Alert */
.au-alert {
    padding: 0.75rem 1rem; border-radius: var(--radius);
    font-size: 0.88rem; margin-bottom: 1rem;
}
.au-alert--success { background:#e8f5e9; border:1px solid #a5d6a7; color:#2e7d32; }
.au-alert--error   { background:#ffebee; border:1px solid #ef9a9a; color:#c62828; }
.au-alert ul { margin:0.25rem 0 0 1rem; padding:0; }

/* Rivendicazioni */
.rivend-list { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:0.6rem; }
.rivend-item {
    display:flex; align-items:center; gap:0.75rem; flex-wrap:wrap;
    padding:0.6rem 0.75rem; background:var(--color-bg);
    border:1px solid var(--color-border); border-radius:6px;
    font-size:0.9rem;
}
.rivend-item a { color:#ffffff; text-decoration:none; font-weight:600; flex:1; }
.rivend-item a:hover { text-decoration:underline; }
.rivend-item time { font-size:0.78rem; color:var(--color-text-muted); }
.rivend-stato {
    font-size:0.72rem; font-weight:700; text-transform:uppercase; letter-spacing:0.04em;
    padding:0.15rem 0.55rem; border-radius:10px;
}
.rivend-stato--approvata { background:#e8f5e9; color:#2e7d32; }
.rivend-stato--in_attesa { background:#fff8e1; color:#f57f17; }
.rivend-stato--rifiutata { background:#ffebee; color:#c62828; }

/* Prenotazioni utente */
.mie-pren-list { display:flex; flex-direction:column; gap:0.7rem; }
.mia-pren-card {
    display:flex; align-items:flex-start; gap:1rem; flex-wrap:wrap;
    padding:0.85rem 1rem;
    border:1.5px solid var(--color-border); border-radius:var(--radius);
    background:var(--color-bg);
}
.mia-pren-card--in_attesa  { border-left:4px solid #f9a825; }
.mia-pren-card--confermata { border-left:4px solid #2e7d32; }
.mia-pren-card--annullata  { border-left:4px solid #bdbdbd; opacity:0.7; }

.mia-pren-card__info { flex:1; min-width:180px; display:flex; flex-direction:column; gap:0.2rem; }
.mia-pren-card__centro { font-weight:700; color:var(--color-primary-dark); font-size:0.95rem; }
.mia-pren-card__data   { font-size:0.88rem; color:var(--color-text); }
.mia-pren-card__nota   { font-size:0.8rem; color:var(--color-text-muted); font-style:italic; }

.mia-pren-stato {
    font-size:0.72rem; font-weight:700; text-transform:uppercase; letter-spacing:0.04em;
    padding:0.15rem 0.55rem; border-radius:10px; white-space:nowrap; align-self:flex-start;
}
.mia-pren-stato--in_attesa  { background:#fff8e1; color:#f57f17; }
.mia-pren-stato--confermata { background:#e8f5e9; color:#2e7d32; }
.mia-pren-stato--annullata  { background:#f5f5f5; color:#757575; }

/* Centri gestiti */
.centri-gestiti-list { display:flex; flex-direction:column; gap:0.6rem; }
.centro-gestito-item {
    display:flex; align-items:center; gap:0.75rem; flex-wrap:wrap;
    padding:0.6rem 0.75rem; background:var(--color-bg);
    border:1px solid var(--color-border); border-radius:6px;
}
.centro-gestito-item__nome { flex:1; font-weight:600; color:var(--color-text); font-size:0.9rem; }
.centro-gestito-item__comune { font-size:0.82rem; color:var(--color-text-muted); }
/* Email pending banner */
.email-pending-banner {
    display:flex; align-items:flex-start; gap:0.75rem; flex-wrap:wrap;
    background:#fff8e1; border:1px solid #ffe082; border-radius:var(--radius);
    padding:0.85rem 1rem; margin-bottom:1rem; font-size:0.88rem; color:#5d4037;
}

/* =====================================================
   CTA PRENOTAZIONE (FASE 1 ROADMAP)
   ===================================================== */
.prenota-cta-block {
    margin: 1rem 0 0.5rem;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.35rem;
}
.btn-prenota--hero {
    font-size: 1.05rem;
    padding: 0.75rem 1.4rem;
    border-radius: 10px;
    cursor: pointer;
    font-family: inherit;
}
.prenota-microcopy {
    font-size: 0.82rem;
    color: var(--color-text-muted);
    margin: 0;
}
.prenota-urgency {
    font-size: 0.8rem;
    color: #b45309;
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 6px;
    padding: 0.25rem 0.6rem;
    margin: 0;
}
.prenota-hint {
    font-size: 0.8rem;
    color: #1e40af;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-radius: 6px;
    padding: 0.25rem 0.6rem;
    margin: 0;
}
.richiesta-limit-notice {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-radius: 10px;
    padding: 1rem 1.1rem;
    font-size: 0.9rem;
    color: #1e3a5f;
    line-height: 1.5;
    margin-bottom: 1rem;
}
.richiesta-limit-notice__icon { font-size: 1.3rem; flex-shrink: 0; margin-top: 1px; }

/* ── Verified badge (scheda rivendicata) ── */
.verified-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.7rem;
    background: linear-gradient(135deg, #1b5e20 0%, #2e7d32 60%, #388e3c 100%);
    color: #fff;
    padding: 0.55rem 1.1rem 0.55rem 0.65rem;
    border-radius: 14px;
    box-shadow: 0 3px 12px rgba(27,94,32,0.3);
    font-size: 0.82rem;
}
.verified-badge__icon {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    background: rgba(255,255,255,0.18);
    border-radius: 50%;
    padding: 5px;
}
.verified-badge__title {
    display: block;
    font-weight: 700;
    font-size: 0.9rem;
    line-height: 1.2;
    letter-spacing: 0.015em;
}
.verified-badge__sub {
    display: block;
    font-size: 0.72rem;
    opacity: 0.82;
    line-height: 1.3;
    margin-top: 1px;
}

/* Trust row */
.detail-trust-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    align-items: center;
    margin: 0.75rem 0 1rem;
}
.trust-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 0.2rem 0.6rem;
    border-radius: 20px;
}
.trust-badge--verified {
    background: #e8f5e9;
    color: #2e7d32;
    border: 1px solid #a5d6a7;
}
.trust-badge--prenote {
    background: #e3f2fd;
    color: #1565c0;
    border: 1px solid #90caf9;
}
.trust-visite {
    font-size: 0.8rem;
    color: var(--color-text-muted);
}

/* =====================================================
   POPUP PRENOTAZIONE NON-PREMIUM
   ===================================================== */
.popup-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    z-index: 9000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.popup-overlay[hidden] { display: none; }
.popup-box {
    background: #fff;
    border-radius: 14px;
    padding: 1.75rem 1.5rem 1.5rem;
    max-width: 460px;
    width: 100%;
    position: relative;
    box-shadow: 0 8px 32px rgba(0,0,0,0.18);
}
.popup-box h3 {
    margin: 0 0 0.75rem;
    font-size: 1.1rem;
    line-height: 1.35;
    color: var(--color-text);
    padding-right: 1.5rem;
}
.popup-box p {
    margin: 0 0 1rem;
    font-size: 0.95rem;
    color: var(--color-text-muted);
}
.popup-close {
    position: absolute;
    top: 0.85rem;
    right: 1rem;
    background: none;
    border: none;
    font-size: 1.4rem;
    line-height: 1;
    cursor: pointer;
    color: var(--color-text-muted);
    padding: 0.1rem 0.3rem;
}
.popup-close:hover { color: var(--color-text); }
.popup-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-bottom: 1rem;
}
.popup-actions .btn { flex: 1; min-width: 140px; text-align: center; justify-content: center; }
.popup-note {
    font-size: 0.76rem;
    color: var(--color-text-muted);
    margin: 0;
    text-align: center;
}

/* =====================================================
   PAGINA RICHIESTA MESSAGGIO
   ===================================================== */
.richiesta-card { max-width: 560px; margin: 0 auto; }
.richiesta-destinatario {
    font-size: 0.92rem;
    color: var(--color-text-muted);
    margin: -0.25rem 0 1.25rem;
    padding: 0.5rem 0.75rem;
    background: var(--color-bg);
    border-radius: 6px;
    border-left: 3px solid var(--color-primary);
}
.richiesta-form select {
    width: 100%;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    font-size: 0.95rem;
    font-family: inherit;
    background: #fff;
    color: var(--color-text);
}
.richiesta-privacy {
    font-size: 0.76rem;
    color: var(--color-text-muted);
    text-align: center;
    margin-top: 0.75rem;
}

/* Google OAuth button */
.btn-google {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    justify-content: center;
}
.btn-google::before {
    content: '';
    display: inline-block;
    width: 18px;
    height: 18px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='%234285F4' d='M46.5 24.5c0-1.6-.1-3.1-.4-4.5H24v8.5h12.7c-.5 2.9-2.2 5.4-4.7 7v5.8h7.6c4.5-4.1 7-10.2 7-16.8z'/%3E%3Cpath fill='%2334A853' d='M24 47c6.5 0 11.9-2.1 15.9-5.7l-7.6-5.8c-2.2 1.5-5 2.3-8.3 2.3-6.3 0-11.7-4.3-13.6-10H2.6v6C6.5 41.8 14.7 47 24 47z'/%3E%3Cpath fill='%23FBBC05' d='M10.4 28.8c-.5-1.5-.8-3-.8-4.8s.3-3.3.8-4.8V13H2.6C.9 16.4 0 20.1 0 24s.9 7.6 2.6 11l7.8-6.2z'/%3E%3Cpath fill='%23EA4335' d='M24 9.5c3.5 0 6.6 1.2 9.1 3.6l6.8-6.8C35.9 2.4 30.5 0 24 0 14.7 0 6.5 5.2 2.6 13l7.8 6.2C12.3 13.8 17.7 9.5 24 9.5z'/%3E%3C/svg%3E") no-repeat center/contain;
}
.email-pending-banner__text { flex:1; }
.email-pending-banner strong { color:#e65100; }

/* ── Landing page piani ────────────────────────────── */
.lp-hero { background: linear-gradient(135deg, #0a1f5c 0%, #1565c0 100%); color: #fff; padding: 5rem 1.5rem 4rem; text-align: center; }
.lp-hero__label { display: inline-block; font-size: .75rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #90caf9; margin-bottom: 1.25rem; }
.lp-hero__h1 { font-size: clamp(1.75rem, 4vw, 2.75rem); font-weight: 800; line-height: 1.2; max-width: 720px; margin: 0 auto 1.25rem; }
.lp-hero__sub { font-size: 1.05rem; color: #bbdefb; max-width: 560px; margin: 0 auto 2rem; line-height: 1.7; }
.lp-hero__ctas { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; margin-bottom: 3rem; }
.lp-btn-white { background: #fff; color: #0a1f5c; font-weight: 700; padding: .75rem 1.75rem; border-radius: 8px; text-decoration: none; font-size: .95rem; transition: transform .15s, box-shadow .15s; }
.lp-btn-white:hover { transform: translateY(-1px); box-shadow: 0 4px 16px rgba(0,0,0,.2); }
.lp-btn-ghost { border: 2px solid rgba(255,255,255,.5); color: #fff; font-weight: 600; padding: .7rem 1.6rem; border-radius: 8px; text-decoration: none; font-size: .95rem; transition: border-color .15s, background .15s; }
.lp-btn-ghost:hover { border-color: #fff; background: rgba(255,255,255,.08); }
.lp-stats-bar { display: flex; justify-content: center; gap: 1.5rem; flex-wrap: wrap; }
.lp-stat { background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.2); border-radius: 12px; padding: 1rem 1.75rem; text-align: center; min-width: 150px; }
.lp-stat__num { font-size: 1.6rem; font-weight: 800; color: #fff; }
.lp-stat__label { font-size: .78rem; color: #90caf9; margin-top: .2rem; }

.lp-section { padding: 4rem 1.5rem; }
.lp-section--gray { background: #f7f9fc; }
.lp-section--blue { background: #e8f0fe; }
.lp-section--dark { background: #0a1f5c; color: #fff; text-align: center; padding: 4rem 1.5rem; }
.lp-section__inner { max-width: 1000px; margin: 0 auto; }
.lp-section__h2 { font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 800; color: #0a1f5c; text-align: center; margin: 0 0 .75rem; }
.lp-section--dark .lp-section__h2 { color: #fff; }
.lp-section__lead { text-align: center; color: #555; font-size: 1rem; max-width: 580px; margin: 0 auto 3rem; line-height: 1.7; }
.lp-section--dark .lp-section__lead { color: #90caf9; }

/* Problem cards */
.lp-problems { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; }
.lp-problem { background: #fff; border: 1.5px solid #ffd0cc; border-radius: 12px; padding: 1.5rem; }
.lp-problem__icon { font-size: 1.75rem; margin-bottom: .75rem; }
.lp-problem__title { font-weight: 700; font-size: 1rem; color: #c62828; margin-bottom: .5rem; }
.lp-problem__text { font-size: .875rem; color: #555; line-height: 1.6; }

/* Steps */
.lp-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem; counter-reset: step; }
.lp-step { text-align: center; }
.lp-step__num { width: 2.5rem; height: 2.5rem; border-radius: 50%; background: #1565c0; color: #fff; font-weight: 800; font-size: 1.1rem; display: flex; align-items: center; justify-content: center; margin: 0 auto .75rem; }
.lp-step__title { font-weight: 700; font-size: .95rem; margin-bottom: .35rem; color: #0a1f5c; }
.lp-step__text { font-size: .83rem; color: #555; line-height: 1.5; }

/* Features grid */
.lp-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.25rem; }
.lp-feature { display: flex; gap: 1rem; align-items: flex-start; padding: .75rem 0; }
.lp-feature__icon { font-size: 1.5rem; flex-shrink: 0; }
.lp-feature__title { font-weight: 700; font-size: .95rem; color: #0a1f5c; margin-bottom: .3rem; }
.lp-feature__text { font-size: .84rem; color: #555; line-height: 1.5; }

/* Pricing */
.lp-pricing { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: 1.5rem; align-items: start; }
.lp-plan { background: #fff; border: 1.5px solid var(--color-border); border-radius: 16px; padding: 2rem 1.75rem; }
.lp-plan--featured { border-color: #1565c0; border-width: 2px; position: relative; box-shadow: 0 8px 32px rgba(21,101,192,.15); }
.lp-plan__badge { position: absolute; top: -13px; left: 50%; transform: translateX(-50%); background: #1565c0; color: #fff; font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; padding: .3rem .9rem; border-radius: 20px; white-space: nowrap; }
.lp-plan__name { font-size: 1.1rem; font-weight: 800; color: #0a1f5c; margin-bottom: .5rem; }
.lp-plan__price { margin-bottom: 1.5rem; }
.lp-plan__price-num { font-size: 2.5rem; font-weight: 800; color: #0a1f5c; line-height: 1; }
.lp-plan__price-period { font-size: .85rem; color: #888; margin-left: .25rem; }
.lp-plan__price--free { font-size: 1.5rem; font-weight: 700; color: #388e3c; }
.lp-plan__features { list-style: none; margin: 0 0 1.75rem; padding: 0; display: flex; flex-direction: column; gap: .6rem; }
.lp-plan__features li { font-size: .875rem; display: flex; gap: .5rem; align-items: flex-start; }
.lp-plan__features li.ok { color: #333; }
.lp-plan__features li.no { color: #aaa; }
.lp-plan__features li::before { flex-shrink: 0; }
.lp-plan__features li.ok::before { content: "✓"; color: #388e3c; font-weight: 700; }
.lp-plan__features li.no::before { content: "×"; color: #ccc; }
.feat-info { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; border-radius: 50%; background: #dde3f5; color: #3949ab; font-size: .6rem; font-weight: 700; font-style: normal; cursor: default; position: relative; flex-shrink: 0; margin-left: 4px; vertical-align: middle; line-height: 1; user-select: none; }
.feat-info::after { content: attr(data-tip); position: absolute; bottom: calc(100% + 7px); left: 50%; transform: translateX(-50%); background: #1a237e; color: #fff; font-size: .74rem; font-weight: 400; padding: .45rem .7rem; border-radius: 7px; white-space: normal; width: 210px; text-align: left; line-height: 1.45; pointer-events: none; opacity: 0; transition: opacity .15s; z-index: 20; }
.feat-info:hover::after { opacity: 1; }
.lp-plan__cta { display: block; text-align: center; padding: .7rem 1.5rem; border-radius: 8px; font-weight: 700; font-size: .9rem; text-decoration: none; transition: background .15s, transform .1s; }
.lp-plan__cta--primary { background: #1565c0; color: #fff; }
.lp-plan__cta--primary:hover { background: #0d47a1; transform: translateY(-1px); }
.lp-plan__cta--outline { border: 2px solid #1565c0; color: #1565c0; }
.lp-plan__cta--outline:hover { background: #e8f0fe; }
.lp-pricing-note { text-align: center; font-size: .8rem; color: #888; margin-top: 1.25rem; }

/* FAQ accordion */
.lp-faq { max-width: 700px; margin: 0 auto; display: flex; flex-direction: column; gap: .5rem; }
.lp-faq__item { border: 1px solid var(--color-border); border-radius: 10px; overflow: hidden; }
.lp-faq__q { width: 100%; background: none; border: none; text-align: left; padding: 1rem 1.25rem; font-size: .95rem; font-weight: 600; color: #0a1f5c; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.lp-faq__q:hover { background: #f7f9fc; }
.lp-faq__arrow { flex-shrink: 0; transition: transform .2s; font-size: .75rem; color: #888; }
.lp-faq__item.open .lp-faq__arrow { transform: rotate(180deg); }
.lp-faq__a { max-height: 0; overflow: hidden; transition: max-height .3s ease; }
.lp-faq__item.open .lp-faq__a { max-height: 200px; }
.lp-faq__a p { padding: .25rem 1.25rem 1rem; font-size: .875rem; color: #555; line-height: 1.7; margin: 0; }

/* Dark CTA section */
.lp-cta-btn { display: inline-flex; align-items: center; gap: .5rem; background: #fff; color: #0a1f5c; font-weight: 800; font-size: 1.05rem; padding: .9rem 2.25rem; border-radius: 10px; text-decoration: none; transition: transform .15s, box-shadow .15s; margin-bottom: .75rem; }
.lp-cta-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 24px rgba(255,255,255,.2); }
.lp-cta-small { font-size: .8rem; color: #90caf9; }

/* ── LP Problems section (sezione 2 — Il problema) ─── */
.lp-problems-section { background: #0b1e4a; padding: 4.5rem 1.5rem; }
.lp-problems-section__inner { max-width: 1000px; margin: 0 auto; }
.lp-problems-section__header { text-align: center; margin-bottom: 3rem; }
.lp-problems-section__eyebrow { display: inline-block; font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #fca5a5; background: rgba(252,165,165,.12); padding: .3rem .9rem; border-radius: 20px; margin-bottom: 1.1rem; }
.lp-problems-section__h2 { font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 800; color: #fff; line-height: 1.3; margin: 0; }
.lp-problems-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.lp-problem-card { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1); border-left: 3px solid #f87171; border-radius: 12px; padding: 1.75rem 1.5rem 1.5rem; overflow: hidden; }
.lp-problem-card__num { display: block; font-size: 4.5rem; font-weight: 900; line-height: 1; margin-bottom: .5rem; color: rgba(255,255,255,.07); letter-spacing: -.02em; pointer-events: none; user-select: none; }
.lp-problem-card__title { font-size: 1rem; font-weight: 800; color: #fff; margin: 0 0 .6rem; }
.lp-problem-card__text { font-size: .875rem; color: #94a3b8; line-height: 1.7; margin: 0; }

/* ── LP Timeline (sezione 3 — Come funziona) ─────────── */
.lp-timeline-eyebrow { display: block; text-align: center; font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #1565c0; margin-bottom: .75rem; }
.lp-timeline { display: flex; gap: 0; margin-top: 2.5rem; }
.lp-timeline__step { flex: 1; display: flex; flex-direction: column; align-items: center; text-align: center; }
.lp-timeline__num-wrap { display: flex; align-items: center; width: 100%; margin-bottom: 1.25rem; }
.lp-timeline__num { width: 48px; height: 48px; border-radius: 50%; background: #1565c0; color: #fff; font-weight: 800; font-size: 1.1rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; position: relative; z-index: 1; }
.lp-timeline__num--final { background: #388e3c; }
.lp-timeline__line { flex: 1; height: 2px; background: #c5d8f7; }
.lp-timeline__content { padding: 0 .75rem; }
.lp-timeline__title { display: block; font-size: .95rem; font-weight: 700; color: #0a1f5c; margin-bottom: .4rem; }
.lp-timeline__text { font-size: .8rem; color: #555; line-height: 1.65; margin: 0; }

@media (max-width: 720px) {
    .lp-problems-grid { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
    .lp-timeline { flex-direction: column; }
    .lp-timeline__step { flex-direction: row; align-items: stretch; text-align: left; gap: 1rem; }
    .lp-timeline__num-wrap { flex-direction: column; width: auto; align-items: center; margin-bottom: 0; flex-shrink: 0; }
    .lp-timeline__line { width: 2px; height: auto; flex: 1; min-height: 24px; margin: 4px 0 0; }
    .lp-timeline__step--last .lp-timeline__line { display: none; }
    .lp-timeline__content { padding: .35rem 0 1.25rem; }
}

/* ── Gestione piani (area gestori) ─────────────────── */
.gp-current-plan { background: #e8f0fe; border: 2px solid #1565c0; border-radius: 12px; padding: 1.25rem 1.5rem; margin-bottom: 2rem; display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.gp-current-plan__check { font-size: 1.75rem; }
.gp-current-plan__text { flex: 1; }
.gp-current-plan__title { font-weight: 800; font-size: 1rem; color: #0a1f5c; }
.gp-current-plan__sub { font-size: .85rem; color: #555; margin-top: .2rem; }
.gp-why-upgrade { background: #fffde7; border-left: 4px solid #f9a825; border-radius: 0 8px 8px 0; padding: 1rem 1.25rem; margin-bottom: 2rem; font-size: .9rem; color: #555; line-height: 1.6; }
.gp-why-upgrade strong { color: #e65100; }

/* Tab switcher (segnala-centro) */
.sc-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--color-border); margin-bottom: 2rem; }
.sc-tab { padding: .65rem 1.25rem; font-size: .9rem; font-weight: 600; color: #555; text-decoration: none; border-bottom: 3px solid transparent; margin-bottom: -2px; transition: color .15s, border-color .15s; }
.sc-tab:hover { color: #1565c0; }
.sc-tab.active { color: #1565c0; border-bottom-color: #1565c0; }

/* Duplicate check warning */
.sc-dup-warning { background: #fff8e1; border: 1.5px solid #f9a825; border-radius: 10px; padding: 1rem 1.25rem; margin-top: 1rem; display: none; }
.sc-dup-warning__title { font-weight: 700; color: #e65100; margin-bottom: .6rem; font-size: .9rem; }
.sc-dup-warning__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .5rem; }
.sc-dup-warning__item { font-size: .875rem; display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }

/* ── Richiesta servizio ────────────────────────────────────────────────────── */
.rs-page { padding: 0; max-width: 100%; }

/* Hero */
.rs-hero { background: linear-gradient(135deg,#0d47a1 0%,#1565c0 100%); color:#fff; text-align:center; padding: 3rem 1.5rem 2.5rem; }
.rs-hero h1 { font-size: clamp(1.6rem,4vw,2.4rem); font-weight:800; margin:0 0 .75rem; letter-spacing:-.02em; }
.rs-hero p { font-size:1.05rem; color:rgba(255,255,255,.88); max-width:620px; margin:0 auto; line-height:1.6; }
.rs-hero p strong { color:#fff; }

.rs-error-banner { background:#ffebee; border-left:4px solid #c62828; color:#b71c1c; padding:.85rem 1.25rem; margin:1.25rem 1.5rem 0; border-radius:6px; font-size:.93rem; }

/* Two-column layout */
.rs-layout { display:grid; grid-template-columns:380px 1fr; min-height:calc(100vh - 220px); }

/* LEFT: catalog */
.rs-catalog { background:#f8f9fb; border-right:1px solid #e8eaf0; padding:1.5rem; overflow-y:auto; position:sticky; top:0; max-height:100vh; }
.rs-catalog__title { font-size:1.05rem; font-weight:700; color:#0a1f5c; margin:0 0 .35rem; }

.rs-cat { margin-bottom:1.25rem; }
.rs-cat__title { font-size:.82rem; font-weight:700; color:#546e7a; text-transform:uppercase; letter-spacing:.06em; margin:0 0 .5rem; padding:.4rem 0 .4rem; border-bottom:1px solid #dde1ea; }
.rs-cat__list { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:2px; }

.rs-srv-btn { width:100%; text-align:left; background:none; border:none; padding:.45rem .65rem; border-radius:6px; font-size:.88rem; color:#374151; cursor:pointer; transition:background .12s,color .12s; line-height:1.4; }
.rs-srv-btn:hover { background:#e8eef7; color:#0d47a1; }
.rs-srv-btn.active { background:#0d47a1; color:#fff; font-weight:600; }

/* RIGHT: form */
.rs-form-wrap { padding:2rem 2.5rem; display:flex; flex-direction:column; }
.rs-form-card { background:#fff; border:1px solid #e0e4ef; border-radius:14px; padding:2rem; max-width:540px; width:100%; }

.rs-selected { display:flex; align-items:center; justify-content:space-between; gap:1rem; background:#e8f0fe; border:1.5px solid #0d47a1; border-radius:10px; padding:.85rem 1rem; margin-bottom:1.25rem; }
.rs-selected__inner { display:flex; flex-direction:column; gap:.1rem; }
.rs-selected__label { font-size:.75rem; color:#0d47a1; font-weight:600; text-transform:uppercase; letter-spacing:.05em; }
.rs-selected__nome { font-size:1rem; color:#0a1f5c; font-weight:700; }
.rs-selected__clear { background:none; border:1px solid #0d47a1; color:#0d47a1; border-radius:6px; padding:.3rem .7rem; font-size:.8rem; cursor:pointer; white-space:nowrap; transition:background .12s,color .12s; flex-shrink:0; }
.rs-selected__clear:hover { background:#0d47a1; color:#fff; }

.rs-no-service { display:flex; align-items:center; gap:1rem; background:#f5f7fa; border:2px dashed #c5cae9; border-radius:10px; padding:1.5rem; margin-bottom:1.25rem; color:#6b7c93; }
.rs-no-service__arrow { font-size:1.8rem; color:#0d47a1; }
.rs-no-service p { margin:0; font-size:.95rem; }

.rs-form .form-group { margin-bottom:1rem; }
.rs-submit { font-size:1rem; padding:.85rem; margin-top:.25rem; }

/* Success */
.rs-success-wrap { display:flex; justify-content:center; align-items:flex-start; padding:3rem 1.5rem; min-height:60vh; }
.rs-success-card { background:#fff; border:1px solid #e0e4ef; border-radius:16px; padding:2.5rem 2rem; max-width:540px; width:100%; text-align:center; }
.rs-success__icon { font-size:3.5rem; margin-bottom:.75rem; }
.rs-success-card h1 { font-size:1.75rem; color:#2e7d32; margin:0 0 .75rem; }
.rs-success-card p { color:var(--color-text-muted); margin:0 0 1.25rem; line-height:1.6; }

.rs-centri-list { list-style:none; padding:0; margin:.75rem 0 0; text-align:left; display:flex; flex-direction:column; gap:.5rem; }
.rs-centri-list li { background:#f5f7fa; border-radius:8px; padding:.65rem 1rem; font-size:.93rem; }
.rs-centri-list a { color:var(--color-primary); text-decoration:none; font-weight:600; }
.rs-centri-list a:hover { text-decoration:underline; }
.rs-centri-list__comune { color:var(--color-text-muted); font-weight:400; }

/* Mobilità */
.rs-mobilita { display:flex; flex-direction:column; gap:.5rem; margin-top:.35rem; }
.rs-mob-option { display:flex; align-items:flex-start; gap:.65rem; padding:.65rem .85rem; border:1.5px solid #e0e4ef; border-radius:8px; cursor:pointer; font-size:.9rem; color:#374151; transition:border-color .12s,background .12s; line-height:1.4; }
.rs-mob-option input { margin-top:.15rem; flex-shrink:0; accent-color:#0d47a1; }
.rs-mob-icon { width:20px; height:20px; flex-shrink:0; margin-top:.1rem; color:#1a56db; }
.rs-mob-option:hover { border-color:#0d47a1; background:#f0f4ff; }
.rs-mob-option.selected { border-color:#0d47a1; background:#e8f0fe; color:#0a1f5c; font-weight:600; }

/* Success info riepilogo */
.rs-success-info { background:#f5f7fa; border-radius:10px; padding:1rem 1.1rem; margin:1rem 0; text-align:left; }
.rs-success-info__row { display:flex; gap:.75rem; padding:.35rem 0; border-bottom:1px solid #e8eaf0; font-size:.9rem; }
.rs-success-info__row:last-child { border-bottom:none; }
.rs-success-info__label { font-weight:600; color:#546e7a; min-width:80px; flex-shrink:0; }
.rs-success-note { font-size:.85rem; color:var(--color-text-muted); margin:1rem 0 1.25rem; }
.rs-success-note a { color:#0d47a1; }

/* Mobile */
@media (max-width:899px) {
    .rs-layout { grid-template-columns:1fr; }
    .rs-catalog { position:static; max-height:none; border-right:none; border-bottom:1px solid #e8eaf0; }
    .rs-form-wrap { padding:1.5rem 1rem; }
    .rs-form-card { max-width:100%; }
    .rs-no-service__arrow { display:none; }
}

/* Trustpilot nudge */
.tp-nudge { margin-top: 1.75rem; padding: 1.1rem 1.25rem; background: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 10px; text-align: center; }
.tp-nudge p { margin: 0 0 .75rem; color: var(--color-text-muted); font-size: .93rem; }
.tp-nudge__btn { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem 1.2rem; border: 1.5px solid #00b67a; border-radius: 6px; color: #00b67a; font-weight: 600; font-size: .9rem; text-decoration: none; transition: background .15s, color .15s; }
.tp-nudge__btn:hover { background: #00b67a; color: #fff; }
.sc-dup-warning__item a { color: #1565c0; text-decoration: underline; font-size: .85rem; }

/* Strumenti utili — affiliazione LSB */
.lsb-link {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    background: #fff;
    border: 1px solid #c7d2fe;
    border-radius: 20px;
    padding: .35rem .85rem;
    font-size: .82rem;
    color: #1565c0;
    text-decoration: none;
    white-space: nowrap;
    transition: background .15s, border-color .15s;
}
.lsb-link:hover {
    background: #e8f0fe;
    border-color: #93c5fd;
}

/* ── Pagina indice guide ─────────────────────────────────────────────────── */
.guide-index { max-width: 1000px; margin: 0 auto; padding: 0 1rem 3rem; }
.guide-index__header { margin-bottom: 2.5rem; }
.guide-index__header h1 { font-size: 1.7rem; color: var(--color-primary); margin-bottom: .5rem; }
.guide-index__header p { font-size: 1rem; color: var(--color-text-muted); max-width: 600px; }

.guide-cat { margin-bottom: 2.5rem; }
.guide-cat__title { font-size: 1.05rem; font-weight: 700; color: var(--color-primary); margin-bottom: 1rem; display: flex; align-items: center; gap: .5rem; border-bottom: 2px solid #e8ecf6; padding-bottom: .5rem; }
.guide-cat__icon { font-size: 1.1rem; }

.guide-cat__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .85rem; }

.guide-card-link { text-decoration: none; color: inherit; display: block; }
.guide-card-item { background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 1rem 1.1rem; height: 100%; transition: box-shadow .15s, border-color .15s; }
.guide-card-link:hover .guide-card-item { box-shadow: 0 4px 14px rgba(10,31,92,.09); border-color: #c7d2fe; }
.guide-card-item__tag { display: inline-block; font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: #6366f1; background: #eef2ff; padding: .15rem .5rem; border-radius: 4px; margin-bottom: .5rem; }
.guide-card-item__title { font-size: .95rem; font-weight: 700; color: var(--color-primary); margin: 0 0 .35rem; line-height: 1.3; }
.guide-card-item__desc { font-size: .82rem; color: var(--color-text-muted); margin: 0; line-height: 1.5; }

.guide-index__cta { margin-top: 2rem; padding: 1.1rem 1.4rem; background: #f8faff; border: 1px solid #e2e8f0; border-radius: 10px; font-size: .9rem; color: var(--color-text-muted); }
.guide-index__cta a { color: var(--color-primary); font-weight: 600; text-decoration: none; }
.guide-index__cta a:hover { text-decoration: underline; }

/* Link ancora orari + scroll liscio */
html { scroll-behavior: smooth; }
.orari-anchor-wrap { margin: .75rem 0 0; }
.orari-anchor { display: inline-flex; align-items: center; gap: .35rem; font-size: .88rem; font-weight: 600; color: #0369a1; background: #e0f2fe; border: 1px solid #bae6fd; border-radius: 20px; padding: .4rem .9rem; text-decoration: none; transition: background .15s; }
.orari-anchor:hover { background: #bae6fd; }

/* Tabella orari di apertura */
.orari-section { scroll-margin-top: 80px; }
.orari-tabella { width: 100%; max-width: 420px; border-collapse: collapse; margin-top: .5rem; }
.orari-tabella td { padding: .5rem .75rem; border-bottom: 1px solid #eef2f7; font-size: .92rem; }
.orari-tabella tr:last-child td { border-bottom: none; }
.orari-giorno { font-weight: 600; color: var(--color-primary); width: 40%; }
.orari-ore { color: #334155; }
.orari-chiuso { color: #94a3b8; }
.orari-oggi { background: #f0f9ff; }
.orari-oggi .orari-giorno { color: #0369a1; }
.orari-nota { font-size: .78rem; color: #94a3b8; margin: .75rem 0 0; }

/* Descrizione AI scheda centro */
.detail-descrizione { margin: 0 0 1.25rem; padding: 1rem 1.25rem; background: #fafbff; border-left: 3px solid #c7d2fe; border-radius: 8px; }
.detail-descrizione p { font-size: .92rem; color: #334155; line-height: 1.6; margin: 0 0 .65rem; }
.detail-descrizione p:last-child { margin-bottom: 0; }

/* Centri vicini in dettaglio centro */
.centri-vicini__title { font-size: 1.05rem; font-weight: 700; color: var(--color-primary); margin: 0 0 .35rem; }
.centri-vicini__intro { font-size: .88rem; color: var(--color-text-muted); margin: 0 0 1rem; }
.centri-vicini__list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: .6rem; }
.centri-vicini__item { margin: 0; }
.centri-vicini__link { display: block; padding: .75rem .9rem; background: #fff; border: 1px solid #e2e8f0; border-radius: 9px; text-decoration: none; transition: box-shadow .15s, border-color .15s; height: 100%; }
.centri-vicini__link:hover { box-shadow: 0 3px 12px rgba(10,31,92,.08); border-color: #c7d2fe; }
.centri-vicini__badge { display: inline-block; font-size: .65rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; padding: .12rem .45rem; border-radius: 4px; margin-bottom: .35rem; }
.centri-vicini__badge--caf { background: #e0f2fe; color: #0369a1; }
.centri-vicini__badge--patronato { background: #eef2ff; color: #4338ca; }
.centri-vicini__nome { display: block; font-size: .92rem; font-weight: 600; color: var(--color-primary); margin-bottom: .2rem; line-height: 1.3; }
.centri-vicini__meta { display: block; font-size: .78rem; color: var(--color-text-muted); line-height: 1.4; }
.centri-vicini__all { margin: 1rem 0 0; font-size: .88rem; }
.centri-vicini__all a { color: #6366f1; font-weight: 600; text-decoration: none; }
.centri-vicini__all a:hover { text-decoration: underline; }

/* Guide correlate in dettaglio centro */
.guide-correlate { margin-top: 1.5rem; }
.guide-correlate__title { font-size: .9rem; font-weight: 700; color: var(--color-primary); margin: 0 0 .75rem; }
.guide-correlate__list { display: flex; flex-wrap: wrap; gap: .5rem; }
.guide-correlate__link { display: inline-flex; align-items: center; gap: .3rem; font-size: .82rem; color: #1565c0; text-decoration: none; background: #fff; border: 1px solid #c7d2fe; border-radius: 16px; padding: .3rem .75rem; transition: background .15s; white-space: nowrap; }
.guide-correlate__link:hover { background: #e8f0fe; }
.guide-correlate__all { font-size: .82rem; color: #6366f1; font-weight: 600; text-decoration: none; padding: .3rem .75rem; }
.guide-correlate__all:hover { text-decoration: underline;

}

/* ── Reminder opt-in (post-invio richiesta) ──────────────────────────────── */
.reminder-optin {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    background: linear-gradient(135deg, #f0f4ff 0%, #eef7ff 100%);
    border: 1px solid #c7d2fe;
    border-radius: 12px;
    padding: 1.25rem 1.4rem;
    margin: 1.25rem 0;
}
.reminder-optin__icon { font-size: 1.8rem; line-height: 1; flex-shrink: 0; }
.reminder-optin__body { flex: 1; }
.reminder-optin__body strong { display: block; font-size: 1rem; color: #0a1f5c; margin-bottom: .35rem; }
.reminder-optin__body p { font-size: .88rem; color: #475569; margin: 0 0 .9rem; line-height: 1.5; }
.reminder-optin__actions { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.reminder-optin__actions .btn-primary { font-size: .88rem; padding: .55rem 1.1rem; }
.reminder-optin__skip {
    background: none; border: none; color: #64748b;
    font-size: .85rem; cursor: pointer; text-decoration: underline;
    padding: .4rem .2rem;
}
.reminder-optin__skip:hover { color: #334155; }
.reminder-optin__consent { font-size: .72rem !important; color: #94a3b8 !important; margin: .7rem 0 0 !important; line-height: 1.45 !important; }
.reminder-optin__consent a { color: #6366f1; text-decoration: underline; }
.reminder-optin__feedback { margin: 0; font-size: .9rem; font-weight: 600; }
.reminder-optin__feedback.is-ok  { color: #16a34a; }
.reminder-optin__feedback.is-err { color: #dc2626; }
}