
/* Shared visual language: identical component rules across all page templates. */
:root {
  --orange: #f76009;
  --orange-dark: #ad3e00;
  --orange-hover: #873000;
  --orange-soft: #fff0df;
  --body-font: system-ui, -apple-system, "Segoe UI", sans-serif;
  --handwriting: "Gochi Hand", "Comic Sans MS", cursive;
  --section-title-size: clamp(1.75rem, calc(1.35rem + 1.1vw), 2.25rem);
  --subheading-size: clamp(1.125rem, calc(1rem + .45vw), 1.375rem);
  --card-title-size: 1.125rem;
  --compact-section-title-size: clamp(1.5rem, calc(1.25rem + .6vw), 1.75rem);
  --page-title-size: clamp(2rem, calc(1.25rem + 2.2vw), 3.25rem);
}
/* A softly warmed grey background shared by every hero template. */
body :is(.hero, .page-hero, .news-archive-hero, .news-single-hero) {
  position: relative;
  background: linear-gradient(135deg, #f5f4f2, #eeece8);
}
/* Soft sorbet clouds give the home carousel a playful, airy backdrop. */
body .hero.hero-slider {
  background:
    radial-gradient(ellipse at 2% 6%, rgb(249 210 226 / 62%), transparent 48%),
    radial-gradient(ellipse at 38% 110%, rgb(255 211 173 / 65%), transparent 53%),
    radial-gradient(ellipse at 98% 92%, rgb(180 226 210 / 62%), transparent 52%),
    radial-gradient(ellipse at 76% -15%, rgb(255 231 162 / 55%), transparent 47%),
    linear-gradient(120deg, #fffaf7, #f9fcf8);
}
body .news-single-hero :is(.news-single-meta, .news-single-byline) { color: #486174; }
/* Playful primary headings; one readable typeface for every tertiary heading. */
body :is(main, .footer-venues, .site-footer) :is(h1, h2),
.footer-establishments-copy > strong {
  font-family: var(--handwriting) !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  line-height: 1.12;
  text-wrap: balance;
}
/* Shared hierarchy: sections, subheadings and compact card labels. */
body main h2 { font-size: var(--section-title-size); }
body main h3 { font-size: var(--subheading-size); }
body main :is(h4, h5, h6) {
  font-family: var(--body-font);
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.4;
}
/* One compact, fluid scale for page titles and all home hero slides. */
body main h1,
body main .hero h2 { font-size: var(--page-title-size); line-height: 1.12; }
body :is(main, .footer-venues, .site-footer) h3 {
  font-family: var(--body-font) !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  line-height: 1.35;
  text-wrap: wrap;
}
/* Let news card titles fill each line before wrapping. */
body main .news-card h3 { text-wrap: wrap; }
body :is(.eyebrow, .site-type, .registration-tag),
.footer-establishments-copy > span {
  font-family: var(--body-font);
  font-size: .75rem;
  font-weight: 750;
  letter-spacing: .06em;
  line-height: 1.3;
  text-transform: none;
  color: var(--orange-dark);
}
body .eyebrow, body .registration-tag {
  padding: 7px 14px;
  border: 1px solid #f6c79f;
  border-radius: 999px;
  background: var(--orange-soft);
}
body :is(.button, .wp-block-button__link),
body .menu .button.is-active {
  background: var(--orange-dark);
  border-color: var(--orange-dark);
  color: white;
  box-shadow: 0 7px 18px rgb(173 62 0 / 18%);
  font-family: inherit;
  font-weight: 750;
  border-radius: 999px;
}
body :is(.button, .wp-block-button__link):hover,
body .menu .button:hover, body .menu .button.is-active:hover {
  background: var(--orange-hover);
  border-color: var(--orange-hover);
  color: white;
  box-shadow: 0 9px 22px rgb(173 62 0 / 23%);
}
body .button.alt { background: transparent; color: var(--orange-dark); border-color: var(--orange-dark); box-shadow: none; }
body .button.alt:hover { background: var(--orange-dark); color: white; }

/* Playful pink and orange actions for the home carousel. */
body .hero-actions { gap: 18px; }
body .hero-actions .button {
  --hero-button-color: #d11760;
  --hero-button-shade: #b91c5d;
  --hero-button-hover: #c61759;
  --hero-button-edge: #ff9c57;
  position: relative;
  gap: 12px;
  min-height: 50px;
  padding: 10px 16px 10px 20px;
  border: 2px solid var(--hero-button-color);
  background: linear-gradient(135deg, var(--hero-button-color), var(--hero-button-shade));
  color: #fff;
  font-weight: 800;
  line-height: 1.3;
  box-shadow: 0 5px 0 var(--hero-button-edge), 0 10px 20px rgb(206 36 103 / 20%), inset 0 1px 0 rgb(255 255 255 / 18%);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
body .hero-actions .button.alt {
  --hero-button-color: #c44900;
  --hero-button-shade: #a73c00;
  --hero-button-hover: #bb4200;
  --hero-button-edge: #ff9dc4;
  border-color: var(--hero-button-color);
  background: linear-gradient(135deg, var(--hero-button-color), var(--hero-button-shade));
  color: #fff;
  box-shadow: 0 5px 0 var(--hero-button-edge), 0 10px 20px rgb(196 78 6 / 20%), inset 0 1px 0 rgb(255 255 255 / 18%);
}
body .hero-actions .button::after {
  content: "";
  flex: 0 0 26px;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--hero-button-edge) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%2316324b' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 10h12m-5-5 5 5-5 5'/%3E%3C/svg%3E") center / 17px 17px no-repeat;
  transition: transform .18s ease;
  pointer-events: none;
}
body .hero-actions .button:hover {
  border-color: var(--hero-button-hover);
  background: var(--hero-button-hover);
  color: #fff;
  box-shadow: 0 8px 0 var(--hero-button-edge), 0 14px 22px rgb(179 35 85 / 22%), inset 0 1px 0 rgb(255 255 255 / 18%);
  transform: translateY(-3px) rotate(-1deg);
}
body .hero-actions .button:hover::after { transform: translateX(2px) rotate(-8deg); }
body .hero-actions .button:active { transform: translateY(3px); box-shadow: 0 2px 0 var(--hero-button-edge); }
body .hero-actions .button:focus-visible {
  outline: 3px solid var(--navy);
  outline-offset: 7px;
  box-shadow: 0 5px 0 var(--hero-button-edge), 0 0 0 6px #fff;
}
@media (prefers-reduced-motion: reduce) {
  body .hero-actions .button,
  body .hero-actions .button::after { transition: none; }
  body .hero-actions .button:is(:hover, :active),
  body .hero-actions .button:hover::after { transform: none; }
}
body :is(.text-link, .news-card-link, .breadcrumbs a, .nursery-facts a, .contact-details a) { color: var(--orange-dark); }
body .icon { background: var(--orange); color: #16324b; }
body .solution-cards .icon { background: linear-gradient(190deg, #d62c8f 0%, #f2295b 100%); color: #fff; }
body .solution-cards .card:nth-child(2) .icon { background: linear-gradient(310deg, #f76009 0%, #ed8a28 100%); }
body .solution-cards .card:nth-child(3) .icon { background: linear-gradient(310deg, #86c13e 0%, #34a35e 100%); }
body :is(.section-number, .activity-grid article > span, .value-grid span, .footer-card-arrow) {
  background: var(--orange-soft); color: var(--orange-dark); border-radius: 12px;
}
body :is(.section-number, .activity-grid article > span, .value-grid span) {
  font-family: var(--handwriting); font-size: 1.25rem; font-weight: 400; letter-spacing: 0;
}
body :is(.nursery-note, .soft-callout, .publication-status, .news-single-summary) {
  background: var(--orange-soft); border-left: 5px solid var(--orange); border-radius: 0 20px 20px 0;
}
body :is(.opening-announcement-card, .club-vacances-feature) { background: var(--orange-soft); }
body .opening-announcement-logo { box-shadow: 0 0 0 5px #ffd6b3; }
body .footer-establishment-logos > a::before { background: var(--orange); }
body .footer-establishment-logos > a:hover .footer-card-arrow { background: var(--orange-dark); color: white; }
body :is(.source-gallery figcaption, .footer-handwritten-note) { font-family: var(--handwriting); color: var(--orange-dark); font-size: 1.35rem; font-style: normal; }
body .page-qui-sommes-nous .classic-quote { font-family: var(--handwriting); font-style: normal; }
body :is(.registration-card, .registration-card:nth-child(2), .registration-card:nth-child(3)) { background: #fffaf4; border: 1px solid #f4dac4; }
body .registration-card h3 { font-size: var(--subheading-size); }
body .prose h3 { font-size: var(--subheading-size); }
body main .nursery-section-lead h3 { font-size: var(--card-title-size); line-height: 1.4; }
body main :is(.team-roles, .activity-grid, .nursery-value-grid, .about-expertise, .about-approach, .charter, .contact-values) h3 { font-size: var(--card-title-size); }
body .prose h2 { font-size: var(--section-title-size); }
body .menu a.is-active:not(.button), body .menu a:hover { color: var(--orange-dark); }
body .submenu a.is-active { background: var(--orange-soft); color: var(--orange-dark); }
body :is(a, button, input, textarea, select):focus-visible { outline: 3px solid var(--orange-dark); outline-offset: 4px; }
body .site-footer a:focus-visible { outline-color: #ffb77d; }
@media (max-width: 700px) {
  body .hero-title-lock { white-space: normal; }
}

/* One shared item style throughout the phone navigation panel. */
@media (max-width: 767px) {
  body .site-header .menu {
    gap: 7px;
    padding: 18px 14px 18px;
    border: 1px solid #efb3c6;
    border-radius: 0 0 26px 26px;
    background: linear-gradient(100deg, #d11760, #f76009) top / 100% 5px no-repeat,
      linear-gradient(145deg, #fffafd, #fff4e8);
    box-shadow: 0 5px 0 #ffd0a2, 0 18px 36px rgb(22 50 75 / 18%);
  }
  body .site-header .menu > a,
  body .site-header .menu > a.is-active,
  body .site-header .menu-group {
    min-height: 48px;
    margin: 0;
    border: 1px solid #f5d8bb;
    border-radius: 16px;
    background: #fff0df;
    color: var(--navy);
    box-shadow: none;
  }
  body .site-header .menu > a {
    justify-content: flex-start;
    gap: 10px;
    padding: 9px 12px;
    line-height: 1.35;
    text-align: left;
  }
  body .site-header .menu > a::after {
    content: "";
    position: static;
    display: block;
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    margin-left: auto;
    border-radius: 50%;
    background: #ffd2e4 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%2316324b' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 10h12m-5-5 5 5-5 5'/%3E%3C/svg%3E") center / 15px 15px no-repeat;
    transform: none;
    pointer-events: none;
  }
  body .site-header .menu > a.is-active,
  body .site-header .menu-group.is-active .menu-parent { color: #941746; }
  body .site-header .menu > a:hover,
  body .site-header .menu > a.is-active:hover,
  body .site-header .menu-group:hover {
    border-color: #efb3c6;
    background: #ffe2ee;
    color: #941746;
    box-shadow: none;
  }
  body .site-header .menu-group { padding: 0 2px 0 0; }
  body .site-header .menu .menu-parent {
    min-height: 46px;
    padding: 9px 12px;
    line-height: 1.35;
    color: var(--navy);
  }
  body .site-header .menu .menu-parent:hover { color: #941746; }
  body .site-header .menu .menu-parent::after { display: none; }
  body .site-header .submenu-toggle {
    border-radius: 0;
    background: radial-gradient(circle, #ffd2e4 12px, transparent 12.5px);
    color: var(--navy);
  }
  body .site-header .menu .submenu {
    width: calc(100% - 14px);
    margin: 2px 7px 7px;
    padding: 5px;
    gap: 3px;
    border-color: #f2c6d6;
    background: #fff;
  }
  body .site-header .submenu > .menu-group {
    min-height: 44px;
    padding: 0;
    border: 0;
    border-radius: 10px;
    background: transparent;
  }
  body .site-header .submenu .menu-parent { min-width: 0; white-space: normal; }
  body .site-header .submenu .submenu {
    width: auto;
    margin: 2px 0 7px 8px;
    padding: 3px 0 3px 6px;
    border: 0;
    border-left: 2px solid #f2c6d6;
    border-radius: 0;
  }
  body .site-header .submenu a:hover,
  body .site-header .submenu a.is-active { background: #fff0f6; color: #941746; }
  body .site-header .submenu a small { color: #526777; }
  body .site-header .menu-toggle[aria-expanded="true"] {
    background: #d11760;
    border-color: #d11760;
    color: #fff;
    box-shadow: 0 3px 0 #ffbf8c;
  }
  body .site-header .menu :is(a, button):focus-visible {
    outline: 3px solid var(--navy);
    outline-offset: 2px;
    box-shadow: 0 0 0 4px #fff;
  }
}

/* Review: calm card surfaces and functional labels in the body typeface. */
@media (min-width: 1201px) {
  .site-header::before { width: max(490px, calc((100vw - 1180px) / 2 + 490px)); }
}
body main :is(.activity-grid, .psu-simulator) h3 {
  font-size: var(--card-title-size);
  line-height: 1.4;
  text-wrap: initial;
}
body :is(.nursery-value-grid, .activity-grid) article,
body :is(.nursery-value-grid, .activity-grid) article:nth-child(even) {
  background: #fffaf4;
  border: 1px solid #efdfd0;
}
.footer-social-links { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 10px; margin: 0; }
body .site-footer .footer-social {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 44px;
  margin: 0;
  padding: 8px 12px;
  border: 1px solid rgba(255,255,255,.35);
  border-radius: 12px;
  color: #fff;
  background: rgba(255,255,255,.06);
  font-size: .9rem;
  font-weight: 650;
  text-decoration: none;
  white-space: nowrap;
}
body .site-footer .footer-social:hover {
  background: rgba(255,255,255,.14);
  border-color: #ffb77d;
  color: #fff;
}
.footer-social svg { width: 19px; height: 19px; flex: 0 0 19px; }


/* Accessibility: visible keyboard focus, bypass link and reduced motion. */
.skip-link{position:fixed;top:8px;left:8px;z-index:10000;padding:12px 18px;background:#16324b;color:#fff;transform:translateY(-180%);border-radius:8px}
.skip-link:focus{transform:none}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid #16324b;outline-offset:4px;box-shadow:0 0 0 6px #fff}
#main-content:focus{outline:none}
.map-privacy-note{color:#16324b;font-size:1rem;line-height:1.6}
.hero-slider-controls{flex-wrap:wrap}
#contact-privacy,#contact-required{font-size:1rem;line-height:1.6;color:#16324b}
#contact-privacy a{text-decoration:underline}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal{opacity:1!important;transform:none!important}
}

.contact-hours strong{color:#17695d!important}
.prose small{color:#405765}

/* Let content wrap within narrow grid columns (320 CSS pixels). */
.page-content-grid>*,.contact-location,.contact-location-body,.contact-form-section>*{min-width:0}
.prose{overflow-wrap:anywhere}
.prose .button{white-space:normal;max-width:100%}
.contact-form input,.contact-form select,.contact-form textarea{min-width:0;max-width:100%}

.contact-feedback{grid-column:1/-1}
.contact-feedback:focus{outline:3px solid #16324b;outline-offset:4px}
.contact-feedback[hidden]{display:none}
.contact-feedback a{text-decoration:underline}
.contact-field-error{display:block;color:#981d38;font-size:.95rem;font-weight:600}
.contact-form [aria-invalid="true"]{border:2px solid #981d38}
.contact-form button:disabled{opacity:.7;cursor:wait}

/* PSU simulation card */
body .nursery-note.psu-simulator {
  margin: 34px 0;
  padding: clamp(28px, 4vw, 42px);
  border: 1px solid #ead9c7;
  border-radius: 24px;
  background: linear-gradient(145deg, #fffaf3, #fff);
  box-shadow: 0 10px 30px rgba(22, 50, 75, .05);
  text-align: center;
}
body main .psu-simulator h3 {
  margin: 0 0 16px;
  color: var(--navy);
  font-size: var(--subheading-size);
  line-height: 1.25;
}
body .psu-simulator .psu-simulator-copy {
  max-width: 58ch;
  margin: 0 auto;
  color: #486071;
  font-size: 1rem;
  line-height: 1.75;
}
body .psu-simulator .psu-simulator-action {
  display: flex;
  justify-content: center;
  margin: 26px 0 18px;
}
body .psu-simulator .psu-simulator-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 54px;
  padding: 13px 24px;
  border: 1px solid var(--navy);
  border-radius: 12px;
  background: var(--navy);
  color: #fff;
  box-shadow: 0 6px 16px rgba(22, 50, 75, .13);
  font-weight: 700;
  line-height: 1.4;
  text-decoration: none;
}
body .psu-simulator .psu-simulator-button:hover {
  border-color: #244861;
  background: #244861;
  color: #fff;
  box-shadow: 0 8px 20px rgba(22, 50, 75, .18);
}
body .psu-simulator .psu-simulator-note {
  display: block;
  max-width: 62ch;
  margin: 0 auto;
  color: #526979;
  font-size: .8rem;
  line-height: 1.65;
}

/* Noha educational motto */
.nursery-detail-intro .nursery-motto {
  margin: 18px 0 16px;
  font-family: var(--handwriting);
  font-size: clamp(2rem, 3.5vw, 2.7rem);
  font-weight: 400;
  line-height: 1.15;
  text-wrap: balance;
}
.nursery-motto strong { font-weight: inherit; }
.nursery-motto span { color: var(--pink); }
.nursery-detail-intro .nursery-intro-description {
  margin: 0;
  color: #486071;
  font-size: 1.05rem;
  font-weight: 400;
  line-height: 1.75;
}

/* One capsule pagination for carousels, archives, categories and search. */
body main .ptb-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: fit-content;
  max-width: 100%;
  margin: 8px auto 0;
  padding: 8px;
  border: 1px solid #eadfd7;
  border-radius: 999px;
  background: #fff;
  box-shadow: 0 6px 20px rgb(22 50 75 / 6%);
}
body main .ptb-pagination[hidden] { display: none; }
body main .ptb-pagination :is(.ptb-pagination-pages, .news-carousel-pagination) {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  min-width: 0;
  gap: 4px;
}
body main .ptb-pagination :is(.page-numbers, .news-carousel-button, .news-carousel-page, .hero-slider-arrow) {
  display: grid;
  place-items: center;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 50%;
  background: transparent;
  color: var(--navy);
  font: inherit;
  font-size: .9rem;
  font-weight: 650;
  line-height: 1;
  text-decoration: none;
  transition: background .2s ease, color .2s ease, box-shadow .2s ease;
}
body main .ptb-pagination :is(.ptb-pagination-arrow, .news-carousel-button, .hero-slider-arrow) {
  background: var(--orange-soft);
  color: var(--orange-dark);
}
body main .ptb-pagination svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
body main .ptb-pagination :is(a, button):not(.hero-slider-dot):hover:not(:disabled) {
  background: var(--orange-soft);
  color: var(--orange-dark);
  border-color: #f6c79f;
  transform: none;
}
body main .ptb-pagination :is(.page-numbers.current, [aria-current="true"]):not(.hero-slider-dot) {
  background: var(--orange-dark);
  color: #fff;
  box-shadow: 0 3px 8px rgb(173 62 0 / 18%);
}
body main .ptb-pagination :is(:disabled, [aria-disabled="true"]) {
  background: #f6f5f3;
  color: #a4adb4;
  cursor: not-allowed;
}
body main .ptb-pagination :is(a, button):focus-visible {
  outline: 3px solid var(--navy);
  outline-offset: 3px;
}
body main .ptb-pagination .dots { flex-basis: 24px; min-width: 24px; width: 24px; }
@media (max-width: 700px) {
  body main .ptb-pagination { gap: 6px; padding: 6px; }
  body main .ptb-pagination .news-carousel-page:not([data-near-current]) { display: none; }
}
