:root {
  --viola: #6F4792;
  --azzurro: #00A6D9;
  --ciano: #3BBCD6;
  --arancio: #F67220;
  --arancio-nido: #DE7E12;
  --oliva: #C9C300;
  --verde: #008A29;
  --verde-chiaro: #82B849;
  --rosa: #DC5F9A;
  --salmone: #EC8D6C;
  --testo: #676767;
  --testo-su-chiaro: #17222B;
  --azzurro-accessibile: #00789F;
  --ciano-accessibile: #08778D;
  --titolo-scuro: #575656;
  --table-head: #D9EDF7;
  --table-stripe: #F9F9F9;
  --header-height: 88px;
  --container: 930px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 88px; }
body { margin: 0; color: var(--testo); background: #fff; font: 400 18px/1.55 "Dosis", sans-serif; }
button, input { font: inherit; }
a { color: var(--viola); text-decoration: none; }
a:hover { color: var(--ciano-accessibile); }
button, a { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
button:disabled { cursor: default; }
:focus-visible { outline: 3px solid var(--viola); outline-offset: 5px; }
img { max-width: 100%; height: auto; }
p { margin: 0 0 1.1em; }
h1, h2, h3 { margin: 0 0 .4em; line-height: 1.15; }
h2, h3 { font-family: "Amatic SC", cursive; font-weight: 700; }
section[id], article[id] { scroll-margin-top: 88px; }
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: 20px; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
[hidden] { display: none !important; }
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 3000; padding: 10px 18px; background: #fff; transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }

/* Shared sticky header. Fixed outer height avoids scroll-triggered layout jumps. */
.site-header { position: sticky; top: calc(65px - var(--header-height)); z-index: 1030; height: var(--header-height); background: #f5f5f5; }
.header-surface { position: absolute; inset: 0 0 auto; background: rgba(255, 255, 255, .8); }
.site-navbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; min-height: var(--header-height); padding-block: 7px; }
.navbar-brand { display: flex; align-items: center; padding: 0; margin: 0; }
.header-logo { display: block; width: 82px; height: 73px; object-fit: contain; transition: width .2s, height .2s; }
.navbar-toggler { padding: 10px 12px; border: 1px solid #ddd; border-radius: 3px; background: transparent; color: var(--titolo-scuro); }
.toggler-bars, .toggler-bars::before, .toggler-bars::after { display: block; height: 2px; width: 23px; background: currentColor; }
.toggler-bars { position: relative; margin-block: 8px; }
.toggler-bars::before, .toggler-bars::after { content: ""; position: absolute; left: 0; }
.toggler-bars::before { top: -7px; }
.toggler-bars::after { top: 7px; }
.navbar-collapse { flex-basis: 100%; }
.navbar-collapse.collapse:not(.show) { display: none; }
.navbar-nav { display: flex; flex-direction: column; gap: 0; margin: 0; padding: 12px 0; list-style: none; }
.nav-item { position: relative; }
.nav-item-main { display: flex; align-items: center; }
.site-navbar .nav-link { display: flex; align-items: center; gap: 12px; padding: 9px 8px; color: var(--titolo-scuro); font-size: 22px; line-height: 1.2; }
.site-navbar .nav-link:hover, .site-navbar .nav-link.active { color: var(--viola); }
.nav-icon { width: 28px; text-align: center; font-size: 25px; }
.nav-about .nav-icon { color: var(--arancio); }
.nav-nursery .nav-icon { color: var(--arancio-nido); }
.nav-infant .nav-icon { color: var(--verde); }
.nav-times .nav-icon { color: var(--azzurro); }
.nav-contact .nav-icon { color: #6F4B91; }
.submenu-toggle { padding: 10px; border: 0; color: var(--titolo-scuro); background: transparent; }
.submenu-toggle::after { display: inline-block; content: ""; width: 6px; height: 6px; border-right: 1px solid; border-bottom: 1px solid; transform: rotate(45deg); vertical-align: .15em; }
.submenu { display: none; padding: 6px 16px 10px 46px; margin: 0; list-style: none; background: #fff; }
.submenu.show { display: block; }
.submenu a { display: block; padding: 7px 0; font-size: 18px; color: var(--titolo-scuro); }
.submenu a:hover, .submenu a[aria-current] { color: var(--viola); }
.site-header.is-compact .header-surface { top: calc(var(--header-height) - 65px); box-shadow: 0 2px 5px #0000000d; }
.site-header.is-compact .site-navbar { min-height: 65px; padding-block: 4px; }
.site-header.is-compact .header-logo { width: 63px; height: 56px; }

.page-title { display: grid; place-items: center; min-height: 125px; padding: 25px 20px; background: var(--azzurro-accessibile); color: #fff; text-align: center; }
.page-title h1 { margin: 0; font: 700 clamp(30px, 6vw, 42px)/1.15 "Dosis", sans-serif; text-transform: uppercase; }
.section-heading { color: var(--viola); text-align: center; font-size: clamp(42px, 8vw, 62px); }
.underlined::after { content: ""; display: block; width: 125px; height: 3px; margin: 22px auto 30px; background: var(--ciano); }
.line-purple::after { background: var(--viola); }
.line-white::after { background: #fff; }
.btn { display: inline-block; border: 1px solid transparent; border-radius: 0; padding: 10px 24px; font-family: "Dosis", sans-serif; font-size: 18px; font-weight: 700; text-align: center; text-decoration: none; transition: background .2s, color .2s; }
.btn-cyan { background: var(--ciano-accessibile); color: #fff; }
.btn-cyan:hover { background: var(--viola); color: #fff; }
.btn-white { border-color: #fff; color: #fff; background: transparent; }
.btn-white:hover { background: #fff; color: var(--viola); }
.btn-white:disabled { opacity: .75; color: #fff; background: transparent; }

/* Bootstrap carousel; core geometry also remains readable if the CDN is unavailable. */
.hero-carousel { position: relative; background: #f5f5f5; }
.carousel-inner { position: relative; overflow: hidden; width: 100%; }
.carousel-item { position: relative; display: none; float: left; width: 100%; margin-right: -100%; }
.carousel-item.active, .carousel-item-next, .carousel-item-prev { display: block; }
.hero-image { display: block; width: 100%; height: clamp(330px, 48vw, 580px); object-fit: cover; }
.hero-caption { position: absolute; top: 50%; left: 50%; width: min(88%, 820px); transform: translate(-50%, -50%); text-align: center; color: #fff; font-family: "Open Sans", sans-serif; font-weight: 700; }
.hero-caption p { display: table; margin: 0 auto 8px; padding: 12px 20px; background: rgba(0, 64, 120, .9); font-size: clamp(21px, 3.2vw, 42px); line-height: 1.3; }
.hero-caption p + p { font-size: clamp(16px, 2vw, 26px); }
.carousel-control-prev, .carousel-control-next { position: absolute; top: 0; bottom: 0; z-index: 2; display: grid; place-items: center; width: 8%; border: 0; color: #fff; background: transparent; font-size: 32px; opacity: .8; }
.carousel-control-prev { left: 0; }
.carousel-control-next { right: 0; }
.carousel-indicators { position: absolute; z-index: 2; right: 0; left: 0; bottom: 18px; display: flex; justify-content: center; gap: 9px; margin: 0; }
.carousel-indicators [data-bs-target] { box-sizing: border-box; width: 11px; height: 11px; padding: 0; margin: 0; border: 1px solid #fff; border-radius: 50%; background: transparent; opacity: 1; }
.carousel-indicators .active { background: #fff; }
.carousel-pause { position: absolute; z-index: 3; right: 16px; bottom: 14px; width: 36px; height: 36px; padding: 0; border: 1px solid #fff9; border-radius: 50%; color: #fff; background: #0005; }
.features { display: grid; gap: 42px; padding-block: 60px 50px; border-bottom: 1px solid #e9e9e9; text-align: center; }
.feature-icon { display: block; width: 120px; height: 120px; object-fit: contain; margin: 0 auto 18px; padding: 18px; border-radius: 50%; background: #34BFDB; border-bottom: 4px solid #0F9FBC; }
.feature:nth-child(2) .feature-icon { background: #DA5192; border-color: #BA2B6F; }
.feature:nth-child(3) .feature-icon { background: #EA8360; border-color: #C05631; }
.feature h2 { font-size: 53px; color: var(--viola); }
.feature p { margin: 0; }
.intro-grid { display: grid; gap: 32px; align-items: center; padding-block: 65px; }
.intro-copy { text-align: center; }
.intro-copy h2 { font-size: clamp(44px, 7vw, 62px); color: var(--titolo-scuro); }
.intro-copy h2 span { display: block; color: var(--ciano-accessibile); }
.intro-photo { display: block; width: 100%; height: auto; }
.quote-band { position: relative; padding: 66px 0; background: linear-gradient(#00566aeb, #00566aeb), url("../img/teacherparallax.jpg") center / cover; color: #fff; }
.quote-band blockquote { margin: 0; text-align: center; font: 700 clamp(36px, 6vw, 48px)/1.35 "Amatic SC", cursive; }
.spaces-section { padding-block: 10px 65px; }
.spaces-intro { margin-bottom: 40px; text-align: center; font-weight: 700; }
.class-grid { display: grid; gap: 24px; }
.class-card { display: grid; grid-template-columns: 1fr 1fr; color: #fff; }
.class-photo { position: relative; margin: 0; min-height: 280px; }
.class-photo > img { width: 100%; height: 100%; position: absolute; inset: 0; object-fit: cover; }
.class-stats { position: absolute; bottom: 0; left: 0; right: 0; display: flex; justify-content: space-around; gap: 6px; padding: 10px 6px; background: rgba(0, 0, 0, .8); color: #fff; text-align: center; font-size: 13px; line-height: 1.35; }
.class-stats span { flex: 1; }
.class-stats strong { display: block; font-size: 22px; font-weight: 400; }
.class-stats span + span { border-left: 1px solid #fff8; }
.class-copy { padding: 24px 16px; }
.class-copy h3 { font-size: 42px; }
.class-copy p { line-height: 1.4; font-size: 17px; }
.class-copy .btn { padding: 7px 12px; font-size: 16px; }
.card-nursery { background: var(--viola); }
.card-infant { background: var(--rosa); }
.card-equipment { background: var(--salmone); }
.card-common { background: #86BA4E; }
.instagram-band { padding: 40px 20px 45px; text-align: center; background: var(--verde-chiaro); color: #fff; }
.instagram-band h2 { font-size: clamp(42px, 7vw, 62px); }
/* Conserva gli sfondi vivaci usando testo scuro dove il bianco non è leggibile. */
.card-infant, .card-equipment, .card-common, .instagram-band { color: var(--testo-su-chiaro); }
.card-infant .btn-white, .card-equipment .btn-white, .card-common .btn-white, .instagram-band .btn-white { color: var(--testo-su-chiaro); border-color: currentColor; }
.instagram-band .line-white::after { background: currentColor; }

/* Full-width internal pages, with no gutters between photographs and text. */
.checker-row { display: grid; grid-template-columns: 1fr; }
.checker-photo { margin: 0; min-height: 270px; position: relative; }
.checker-photo img { display: block; position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.color-panel { padding: 32px 24px; color: #fff; text-align: center; }
.textured { background-image: url("../img/bg-vector-small.png"), repeating-linear-gradient(135deg, transparent 0, transparent 5px, #ffffff0d 5px, #ffffff0d 6px); }
.color-panel h2 { font-size: 53px; }
.color-panel p:last-child { margin-bottom: 0; }
.color-panel ul { margin: 0; padding-left: 1.1em; text-align: left; }
.color-panel .underlined::after { margin-block: 16px 24px; }
.panel-orange { background-color: var(--arancio); }
.panel-nursery { background-color: var(--arancio-nido); }
.panel-olive { background-color: var(--oliva); }
.panel-green { background-color: var(--verde); }
.panel-purple { background-color: #6F4B91; }
.panel-orange, .panel-nursery, .panel-olive { color: var(--testo-su-chiaro); }
.panel-orange .line-white::after, .panel-nursery .line-white::after, .panel-olive .line-white::after { background: currentColor; }
.day-band { padding: 34px 20px 28px; text-align: center; background-color: var(--oliva); color: var(--testo-su-chiaro); }
.day-band h2 { margin: 0; font-size: clamp(38px, 6vw, 53px); }
.table-section { padding-block: 45px 60px; }
.table-responsive { overflow-x: auto; }
.school-table { width: 100%; margin: 0; border-collapse: collapse; color: var(--titolo-scuro); font-size: 18px; }
.school-table th, .school-table td { padding: 11px 16px; border: 1px solid #ddd; text-align: left; }
.school-table thead th { background: var(--table-head); font-weight: 700; }
.school-table tbody tr:nth-child(odd) { background: #fff; }
.school-table tbody tr:nth-child(even) { background: var(--table-stripe); }
.school-table td:first-child { white-space: nowrap; }
.times-grid { display: grid; }
.times-grid .color-panel { min-height: 300px; }
.times-grid h2 { font-size: 46px; }
.times-grid p { margin-bottom: .7em; }
.times-grid strong { font-weight: 700; }
.holidays { padding-block: 50px 60px; }
.holidays h2 { font-size: clamp(36px, 6vw, 53px); color: var(--titolo-scuro); }
.holiday-table { max-width: 610px; margin-inline: auto; }
.calendar-empty { min-height: 235px; }
.map-section { position: relative; display: grid; place-items: center; height: 370px; background: #f5f5f5; }
.map-section iframe { display: block; width: 100%; height: 370px; border: 0; }
.map-consent { max-width: 470px; padding: 25px; text-align: center; }
.contact-section { display: grid; padding-block: 50px 65px; }
.contact-copy h2 { color: var(--viola); font-size: clamp(46px, 7vw, 62px); text-align: center; }
.contact-details { margin: 0; font-style: normal; }
.contact-row { display: flex; align-items: center; gap: 18px; margin: 18px 0; }
.contact-icon { display: grid; place-items: center; flex: 0 0 52px; height: 52px; border-radius: 50%; background: var(--ciano-accessibile); color: #fff; font-size: 22px; }
.contact-row:nth-child(2) .contact-icon { background: #B52D71; }
.contact-row a { color: var(--testo); overflow-wrap: anywhere; }
.contact-row a:hover { color: var(--viola); }
.reading-container { max-width: 850px; padding-block: 48px 65px; color: var(--titolo-scuro); }
.reading-container h2 { margin-top: 1.4em; font-family: "Dosis", sans-serif; font-size: 25px; }
.reading-container h2:first-child { margin-top: 0; }
.reading-container h3 { font: 700 22px/1.4 "Dosis", sans-serif; }
.reading-container a { text-decoration: underline; overflow-wrap: anywhere; }
.reading-container .school-table { table-layout: fixed; }
.reading-container .school-table th, .reading-container .school-table td { overflow-wrap: anywhere; white-space: normal; }
.reading-container .cookie-settings-link { color: var(--viola); font-size: 18px; }
.policy-updated { color: var(--testo); font-size: 16px; }

.site-footer { position: relative; border-top: 6px solid #de7e12; padding-block: 44px 24px; background: var(--azzurro-accessibile); color: #fff; }
.site-footer::before { content: ""; position: absolute; top: 5px; left: 0; width: 100%; border-top: 2px dotted #fff9; }
.footer-grid { display: grid; gap: 32px; }
.footer-column h2 { margin-bottom: 0; font-size: 36px; }
.footer-column h2::after { margin: 15px 0 23px; width: 70px; }
.footer-column p, .footer-column li { font-size: 17px; line-height: 1.6; }
.footer-column a { color: #fff; }
.footer-column a:hover { text-decoration: underline; }
.footer-column ul { padding: 0; margin: 0; list-style: none; }
.footer-column li { margin-bottom: 6px; }
.footer-column address { font-style: normal; }
.footer-column address p { margin-bottom: 12px; overflow-wrap: anywhere; }
.footer-logo { display: block; width: 145px; height: 130px; object-fit: contain; margin-top: 18px; }
.footer-column .btn { padding: 10px 12px; font-size: 16px; }
.cookie-settings-link { margin-top: 26px; padding: 0; border: 0; background: transparent; color: #fff; text-decoration: underline; font-size: 15px; }
.back-to-top { position: fixed; right: 20px; bottom: 20px; z-index: 1035; display: grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 50%; background: var(--ciano-accessibile); color: #fff; box-shadow: 0 2px 7px #0002; }
.back-to-top:hover { background: var(--viola); }

.cookie-banner { position: fixed; left: 15px; bottom: 15px; z-index: 1050; width: min(460px, calc(100% - 30px)); padding: 24px; background: #fff; border: 1px solid #eee; box-shadow: 0 4px 25px #0003; color: #555; font: 400 14px/1.55 Arial, sans-serif; }
.cookie-banner h2 { margin-bottom: 12px; color: #333; font: 700 17px/1.4 Arial, sans-serif; }
.cookie-banner p { margin-bottom: 18px; }
.cookie-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.cookie-actions button { flex: 1 1 auto; min-height: 40px; padding: 8px 11px; border: 1px solid #1863dc; border-radius: 3px; color: #1863dc; background: #fff; font: 700 12px/1.4 Arial, sans-serif; }
.cookie-actions .accept-cookies { background: #1863dc; color: #fff; }
.cookie-dialog { width: min(520px, calc(100% - 32px)); max-height: 85vh; padding: 28px; border: 0; border-radius: 4px; color: #555; font-family: "Dosis", sans-serif; }
.cookie-dialog::backdrop { background: #0007; }
.cookie-dialog h2 { padding-right: 25px; font: 700 25px "Dosis", sans-serif; }
.dialog-close { position: absolute; top: 12px; right: 12px; padding: 4px 10px; background: transparent; border: 0; font-size: 24px; }
.cookie-option { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding-block: 16px; border-top: 1px solid #ddd; }
.cookie-option input { width: 20px; height: 20px; accent-color: var(--viola); }
.cookie-dialog .cookie-actions { margin-top: 20px; }

@media (min-width: 576px) {
  .footer-grid, .times-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 768px) {
  .features { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 30px; }
  .intro-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 35px; }
  .class-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .checker-row { grid-template-columns: repeat(2, minmax(0, 1fr)); min-height: 330px; }
  .checker-photo { min-height: 330px; }
  .color-panel { display: flex; flex-direction: column; justify-content: center; padding: 30px clamp(28px, 4vw, 65px); }
  .checker-row--nursery { min-height: 620px; }
  .checker-row--infant { min-height: 490px; }
  .contact-section { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contact-copy { grid-column: 2; }
  .quote-band { background-attachment: fixed; }
}
@media (min-width: 992px) {
  :root { --header-height: 150px; }
  .header-logo { width: 140px; height: 125px; }
  .navbar-toggler { display: none; }
  .site-navbar .navbar-collapse { flex: 0 0 auto; display: block !important; }
  .navbar-nav { flex-direction: row; gap: 20px; padding: 0; }
  .site-navbar .nav-link { flex-direction: column; gap: 10px; padding: 10px 0; text-align: center; }
  .nav-icon { font-size: 30px; }
  .submenu-toggle { padding: 9px 0 0 7px; align-self: flex-end; margin-bottom: 12px; }
  .submenu { position: absolute; top: 100%; left: -15px; min-width: 205px; padding: 10px 18px; box-shadow: 0 5px 15px #0002; border-top: 3px solid var(--viola); }
  .site-header.is-compact .nav-link { flex-direction: row; gap: 7px; font-size: 19px; }
  .site-header.is-compact .nav-icon { font-size: 21px; width: auto; }
  .site-header.is-compact .submenu-toggle { margin-bottom: 10px; }
  .footer-grid { grid-template-columns: 1.2fr 1fr 1.2fr 1fr; gap: 25px; }
  .times-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .times-grid .color-panel { padding: 32px 25px; min-height: 360px; justify-content: flex-start; }
  .times-grid h2 { min-height: 106px; display: flex; flex-direction: column; justify-content: flex-end; }
  .quote-band { padding-block: 78px; }
}
@media (max-width: 991.98px) {
  .navbar-collapse.show, .navbar-collapse.collapsing { max-height: calc(100dvh - 90px); overflow-y: auto; }
}
@media (max-width: 380px) {
  .class-card { grid-template-columns: 1fr; }
  .class-photo { min-height: 220px; }
  .cookie-banner { padding: 18px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
  .quote-band { background-attachment: scroll; }
}
