/* Centro Odontoiatrico Garau - componenti delle pagine (caricati ovunque).
   Le sezioni riproducono la griglia del vecchio sito: sezione > contenitore centrato > colonne > blocchi,
   con lo spazio tra colonne di 15 px ("esteso") o 10 px ("predefinito"). */

/* ---------- Griglia delle sezioni ---------- */
.cg-sec { position: relative; }
.cg-con { position: relative; display: flex; max-width: var(--cg-con, 1140px); margin-inline: auto; }
.cg-col { position: relative; display: flex; min-height: 1px; }
.cg-pop { position: relative; display: flex; flex-wrap: wrap; align-content: flex-start; width: 100%; }
.cg-pop > * { position: relative; width: 100%; }
.cg-pop > *:not(.cg-sec):not(:last-child) { margin-block-end: 20px; }
.gap-ext > .cg-col > .cg-pop { padding: 15px; }
.gap-def > .cg-col > .cg-pop { padding: 10px; }
.gap-no > .cg-col > .cg-pop { padding: 0; }
.cg-con.is-full { max-width: none; }
/* Colonna vuota: come in Elementor non ha spaziatura interna. */
.cg-pop:empty { padding: 0 !important; }
@media (min-width: 768px) {
	.cg-col { width: var(--cg-w, 100%); }
}
@media (min-width: 768px) and (max-width: 1024px) {
	.cg-col[style*="--cg-wt"] { width: var(--cg-wt); }
}
@media (max-width: 1024px) {
	.cg-con { flex-wrap: wrap; }
}
@media (max-width: 767px) {
	.cg-col { width: 100%; }
}

/* Testo dell'editor dentro le sezioni */
.cg-text { font-family: Rubik, sans-serif; font-size: 17px; font-weight: 300; }
.cg-text > :last-child { margin-bottom: 0; }

/* ---------- Titolo con occhiello (kicker, titolo, sottotitolo) ---------- */
.cg-title .before-heading { margin: 0; color: var(--cg-accent); font-family: Rubik, sans-serif; font-size: 16px; font-weight: 500; line-height: 1em; letter-spacing: 4px; text-transform: uppercase; }
.cg-title .heading { position: relative; z-index: 1; display: inline-block; margin: 11px 0 0; padding: 0; color: var(--cg-primary); }
.cg-title .sub-title { position: relative; z-index: 1; padding: 0; color: var(--cg-primary); }
.cg-title .sub-title p { margin: 0; }
.cg-title.is-center { text-align: center; }

/* ---------- Riquadro con icona ---------- */
.cg-iconbox { position: relative; transition: all .3s ease-in-out; }
.cg-iconbox .wrap-icon, .cg-iconbox .content { position: relative; z-index: 2; }
.cg-iconbox .wrap-icon-inner { position: relative; display: inline-flex; align-items: center; justify-content: center; font-size: 50px; transition: all .3s ease-in-out; }
.cg-iconbox .title, .cg-iconbox .description { transition: all .3s ease-in-out; }
.cg-iconbox.left { display: flex; flex-direction: row; align-items: flex-start; text-align: left; }
.cg-iconbox.left .wrap-icon { display: inline-flex; flex: 0 0 auto; margin-right: 30px; }
.cg-iconbox.left .content { flex-grow: 1; }
.cg-iconbox.top { text-align: center; }
.cg-iconbox.top .wrap-icon { display: block; margin-bottom: 17px; }
@media (max-width: 767px) {
	.cg-iconbox.left { display: block; }
	.cg-iconbox.left .wrap-icon { margin-right: auto !important; margin-bottom: 30px; margin-left: auto !important; }
}

/* ---------- Pulsanti ---------- */
.cg-btn {
	display: inline-block;
	padding: 12px 24px;
	border-radius: 3px;
	background-color: var(--cg-secondary);
	color: #fff;
	font-size: 15px;
	line-height: 1;
	text-align: center;
	transition: all .3s;
}
.cg-btn:hover, .cg-btn:focus { color: #fff; }
/* Effetto dei pulsanti del tema precedente: al passaggio del mouse un colore scorre da sinistra. */
.themesflat-button, .cg-sweep { position: relative; z-index: 1; display: inline-block; overflow: hidden; border-radius: 5px; color: #fff; transition: all .3s linear; }
.themesflat-button:hover, .themesflat-button:focus, .cg-sweep:hover, .cg-sweep:focus { color: #fff; }
.themesflat-button::before, .cg-sweep::before {
	content: "";
	position: absolute; inset: 0; z-index: -1;
	background-color: var(--cg-primary);
	transform: scale(0, 1);
	transform-origin: right top;
	transition: transform 500ms ease;
}
.themesflat-button:hover::before, .themesflat-button:focus::before, .cg-sweep:hover::before, .cg-sweep:focus::before { transform: scale(1, 1); transform-origin: left top; }
.themesflat-button { padding: 15px 30px; background-color: var(--cg-secondary); font-family: Rubik, sans-serif; font-size: 16px; font-weight: 500; line-height: 1.2; }

/* ---------- Comparsa allo scroll (come gli effetti Themesflat) ---------- */
.js .cg-reveal-item { opacity: 0; transform: translateY(25px); transition: all .8s; }
.js .cg-reveal-item.is-in { opacity: 1 !important; transform: translate(0, 0) !important; }

/* Immagini che ondeggiano lentamente */
@keyframes cgMove4 { 0% { transform: translate(0); } 50% { transform: translate(-30px); } 100% { transform: translate(0); } }
@keyframes cgMove5 { 0% { transform: translateY(0); } 50% { transform: translateY(-20px); } 100% { transform: translateY(0); } }
.cg-move4 img { animation: cgMove4 5s infinite linear; }
.cg-move5, .cg-move5-img img { animation: cgMove5 5s infinite linear; }

@media (prefers-reduced-motion: reduce) {
	.js .cg-reveal-item { opacity: 1; transform: none; transition: none; }
	.cg-move4 img, .cg-move5, .cg-move5-img img { animation: none; }
}

/* Icona che scende e rientra dall'alto al passaggio del mouse (effetto "top-to-bottom" dei riquadri) */
@keyframes cgToBottomFromTop { 49% { transform: translateY(100%); } 50% { opacity: 0; transform: translateY(-100%); } 51% { opacity: 1; } }
.cg-iconbox.anim-ttb .wrap-icon-inner { overflow: hidden; }
.cg-iconbox.anim-ttb:hover .wrap-icon-inner i, .cg-iconbox.anim-ttb:hover .wrap-icon-inner svg { animation: cgToBottomFromTop .5s forwards; }
@media (prefers-reduced-motion: reduce) {
	.cg-iconbox.anim-ttb:hover .wrap-icon-inner i, .cg-iconbox.anim-ttb:hover .wrap-icon-inner svg { animation: none; }
}
