/* ==========================================================================
   Einsteinz Music — main.css
   Playful & Premium design system. See DESIGN.md.
   Editable copy lives in native blocks; all decoration lives here as CSS.
   ========================================================================== */

:root {
	--cobalt:        var(--wp--preset--color--cobalt);
	--cobalt-dark:   var(--wp--preset--color--cobalt-dark);
	--cobalt-soft:   var(--wp--preset--color--cobalt-soft);
	--tang:          var(--wp--preset--color--tangerine);
	--tang-dark:     var(--wp--preset--color--tangerine-dark);
	--tang-soft:     var(--wp--preset--color--tangerine-soft);
	--sun:           var(--wp--preset--color--sunshine);
	--sun-soft:      var(--wp--preset--color--sunshine-soft);
	--ink:           var(--wp--preset--color--ink);
	--muted:         var(--wp--preset--color--muted);
	--paper:         var(--wp--preset--color--paper);
	--white:         var(--wp--preset--color--white);
	--line:          var(--wp--preset--color--line);
	--r-sm: 12px;
	--r-md: 18px;
	--r-lg: 26px;
	/* Age-group palette — used by the locations calendar, the
	   [ez_class_finder] widget, and anywhere age groups are tagged.
	   Cool → warm → bright maps to youngest → oldest. */
	--age-babies-bg:        var(--cobalt-soft);
	--age-babies-fg:        var(--cobalt-dark);
	--age-toddlers-bg:      var(--tang-soft);
	--age-toddlers-fg:      var(--tang-dark);
	--age-preschoolers-bg:  var(--sun-soft);
	--age-preschoolers-fg:  #7a5a00;
	--font-display: var(--wp--preset--font-family--display);
	--font-sans: var(--wp--preset--font-family--sans);
	/* Form error palette — a deep crimson that reads as error without
	   fighting tangerine. Used by vita-form .is-error fields and the
	   summary banner. */
	--error:      #C8243C;
	--error-soft: #FCE7EB;
}

/* --- base ----------------------------------------------------------------- */
html { scroll-behavior: smooth; }
body { background: var(--paper); color: var(--ink); }
body.home main, body.page main { overflow-x: clip; }
img { max-width: 100%; height: auto; }
.ez-section *, .ez-header *, .ez-footer *, .ez-btn { box-sizing: border-box; }

.ez-wrap { max-width: 1180px; margin-inline: auto; padding-inline: 30px; width: 100%; box-sizing: border-box; }

/* Neutralise WordPress flow auto-margins inside our designed components,
   so our own grid gaps / margins are the single source of spacing. */
.ez-hero-grid > *, .ez-hero-copy > *, .ez-bento > *, .ez-why-grid > *,
.ez-steps > *, .ez-vids > *, .ez-tcards > *, .ez-morebento > *,
.ez-bubbles > *, .ez-card > *, .ez-feat > *, .ez-step > *, .ez-tcard > *,
.ez-mcard > *, .ez-band > *, .ez-shead > *, .ez-news-copy > * { margin-block: 0; }

.ez-eyebrow {
	display: inline-flex; align-items: center; gap: 8px;
	font-family: var(--font-sans); font-weight: 600; font-size: 13px;
	letter-spacing: .13em; text-transform: uppercase; color: var(--cobalt);
}

/* headings — explicit, Fraunces display family */
.ez-section :is(h1,h2,h3,h4) { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.012em; }
.ez-hero h1 { font-size: clamp(2.6rem, 1.7rem + 3.6vw, 3.75rem); line-height: 1.08; margin: 0 0 18px; }
.ez-shead h2 { font-size: clamp(1.9rem, 1.35rem + 1.9vw, 2.65rem); line-height: 1.12; margin: 12px 0; }
.ez-band h2 { font-size: clamp(1.9rem, 1.4rem + 1.9vw, 2.65rem); line-height: 1.12; }
.ez-card h3, .ez-step h3, .ez-mcard h3, .ez-news h3 { font-size: 1.4rem; line-height: 1.22; margin: 0; }
.ez-feat h3 { font-size: 1.16rem; line-height: 1.25; margin: 0; }

/* --- buttons -------------------------------------------------------------- */
.ez-btn, .ez-section .wp-block-button__link {
	display: inline-flex; align-items: center; gap: 9px;
	font-family: var(--font-sans); font-weight: 600; font-size: 15.5px;
	border-radius: 999px; padding: 13px 24px; text-decoration: none;
	border: 0; cursor: pointer; transition: transform .13s ease, box-shadow .13s ease;
	line-height: 1;
}
.ez-btn:hover { transform: translateY(-2px); }
.ez-btn-primary { background: var(--tang); color: #fff; box-shadow: 0 10px 22px -10px rgba(255,138,61,.85); }
.ez-btn-primary:hover { box-shadow: 0 14px 26px -10px rgba(255,138,61,.95); color: #fff; }
.ez-btn-cobalt { background: var(--cobalt); color: #fff; box-shadow: 0 10px 22px -10px rgba(47,107,224,.7); }
.ez-btn-cobalt:hover { color: #fff; }
.ez-btn-ghost { background: #fff; color: var(--ink); border: 1.7px solid var(--ink); }
.ez-btn-ghost:hover { background: var(--ink); color: #fff; }

/* --- utility bar ---------------------------------------------------------- */
.ez-utilbar { background: var(--ink); color: #cdd2e0; font-size: 13px; }
.ez-utilbar-inner { display: flex; align-items: center; gap: 20px; padding-block: 8px; }
.ez-utilbar a { color: #cdd2e0; text-decoration: none; }
.ez-utilbar a:hover { color: #fff; }
.ez-utilbar-right { margin-left: auto; display: flex; gap: 18px; align-items: center; }
.ez-stars { color: var(--sun); letter-spacing: 1px; }

/* --- header --------------------------------------------------------------- */
.ez-header {
	position: sticky; top: 0; z-index: 50;
	background: rgba(255,255,255,.95); backdrop-filter: blur(9px);
	border-bottom: 1px solid var(--line);
}
.ez-header-inner { display: flex; align-items: center; gap: 34px; padding-block: 10px; }
.ez-logo { display: block; flex: none; }
.ez-logo img { height: 62px; width: auto; display: block; }
.ez-nav { display: flex; gap: 2px; margin-left: auto; align-items: center; }
.ez-nav-item { position: relative; }
.ez-nav-item > a {
	display: block; font-family: var(--font-sans); font-weight: 500; font-size: 15.5px;
	color: var(--muted); text-decoration: none; padding: 9px 14px; border-radius: 10px;
	white-space: nowrap;
}
.ez-nav-item > a:hover { color: var(--ink); background: var(--paper); }
.ez-has-sub > a::after { content: " ▾"; color: var(--muted); font-size: 11px; }
.ez-sub {
	position: absolute; top: 100%; left: 0; min-width: 224px;
	background: #fff; border: 1px solid var(--line); border-radius: var(--r-md);
	box-shadow: 0 22px 44px -20px rgba(23,32,55,.5); padding: 8px;
	opacity: 0; visibility: hidden; transform: translateY(6px);
	transition: opacity .14s ease, transform .14s ease; z-index: 60;
}
.ez-nav-item:hover .ez-sub, .ez-nav-item:focus-within .ez-sub {
	opacity: 1; visibility: visible; transform: translateY(0);
}
.ez-sub a {
	display: block; padding: 9px 12px; border-radius: 9px; white-space: nowrap;
	font-size: 14.5px; font-weight: 500; color: var(--muted); text-decoration: none;
}
.ez-sub a:hover { background: var(--cobalt-soft); color: var(--cobalt-dark); }
.ez-header-actions { display: flex; align-items: center; gap: 12px; }
.ez-navtoggle {
	display: none; background: none; border: 0; font-size: 24px;
	color: var(--ink); cursor: pointer; line-height: 1; padding: 4px;
}

/* --- section scaffold ----------------------------------------------------- */
/* Kill WordPress flow auto-margins between the header, main, footer and the
   homepage sections — they otherwise show as paper-coloured seams. */
.wp-site-blocks > * { margin-block-start: 0; }
.ez-section { position: relative; margin-block: 0; }
.ez-pad { padding-block: clamp(54px, 8vw, 82px); }
.ez-shead { text-align: center; max-width: 640px; margin: 0 auto 46px; }
.ez-shead p { color: var(--muted); font-size: 17px; margin: 0; }

/* mid-page CTA strip */
.ez-midcta { background: var(--cobalt-soft); }
.ez-midcta-inner {
	display: flex; align-items: center; justify-content: center; gap: 22px;
	flex-wrap: wrap; padding-block: 28px; text-align: center;
}
.ez-midcta-inner p {
	margin: 0; font-family: var(--font-display); font-weight: 600;
	font-size: clamp(1.1rem, 1rem + 0.5vw, 1.4rem); color: var(--ink);
}

/* --- hero ----------------------------------------------------------------- */
.ez-hero { overflow: hidden; }
.ez-hero-grid {
	display: grid; grid-template-columns: 1.04fr .96fr; gap: 54px;
	align-items: center; padding-block: 56px 84px; position: relative; z-index: 2;
}
.ez-hero-deco { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.ez-blob { position: absolute; border-radius: 50%; }
.ez-doodle { position: absolute; }
.ez-kick {
	display: inline-flex; align-items: center; gap: 9px;
	background: var(--cobalt-soft); color: var(--cobalt-dark);
	font-weight: 600; font-size: 13.5px; padding: 7px 15px;
	border-radius: 999px; margin: 0 0 22px; transform: rotate(-1.5deg);
	font-family: var(--font-sans);
}
.ez-hero h1 em {
	font-style: normal; color: var(--cobalt); white-space: nowrap;
	background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 22" fill="none"><path d="M5 14C56 4 120 4 168 9c33 3 52 6 67 1" stroke="%23FF8A3D" stroke-width="6" stroke-linecap="round"/></svg>') no-repeat center bottom;
	background-size: 100% .34em; padding-bottom: .12em;
}
.ez-hero-lede { font-size: 18.5px; color: var(--muted); max-width: 33ch; margin: 0 0 24px; }
.ez-proof { display: flex; align-items: center; gap: 10px; margin: 18px 0 0; color: var(--muted); font-size: 14px; }
.ez-proof b { color: var(--ink); }

/* finder card */
.ez-finder {
	position: relative; background: var(--white); border: 1px solid var(--line);
	border-radius: var(--r-lg); padding: 22px;
	box-shadow: 0 26px 52px -34px rgba(23,32,55,.6); transform: rotate(-1deg);
}
.ez-finder-title { font-family: var(--font-display); font-size: 18px; font-weight: 600; margin: 0 0 14px; display: flex; align-items: center; gap: 8px; }
.ez-finder-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: stretch; }
.ez-agebtn {
	position: relative;
	flex: 1; min-width: 0;
	border: 1.6px solid var(--line); background: var(--paper);
	border-radius: var(--r-sm); padding: 22px 8px; text-align: center; cursor: pointer;
	font-family: inherit; transition: all .12s ease;
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
}
.ez-agebtn .em { display: block; font-size: 21px; line-height: 1.1; }
.ez-agebtn .lb { display: block; font-weight: 600; font-size: 13px; color: var(--ink); line-height: 1.2; }
.ez-agebtn .ag { display: block; font-size: 11px; color: var(--muted); line-height: 1.2; white-space: nowrap; }
.ez-agebtn:hover:not(.on):not(:has(input:checked)) { border-color: var(--ink); background: #fff; }
.ez-agebtn.on { border-color: var(--cobalt); background: var(--cobalt-soft); }
.ez-agebtn.on .lb { color: var(--cobalt-dark); }
.ez-finder select {
	width: 100%; box-sizing: border-box; margin-top: 10px;
	border: 1.6px solid var(--line); background: var(--paper);
	border-radius: var(--r-sm); padding: 12px 40px 12px 14px;
	font-family: inherit; font-size: 15.5px; color: var(--ink);
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 8" fill="none"><path d="M1 1.5 6 6.5 11 1.5" stroke="%23586079" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>');
	background-repeat: no-repeat; background-position: right 15px center; background-size: 12px 8px;
}
.ez-finder .ez-btn { margin-top: 12px; width: 100%; justify-content: center; }
.ez-finder-tag {
	position: absolute; top: -16px; right: -14px; background: var(--sun); color: var(--ink);
	font-weight: 700; font-size: 12px; padding: 7px 13px; border-radius: 999px;
	transform: rotate(8deg); box-shadow: 0 8px 16px -8px rgba(23,32,55,.5);
}

/* hero art */
.ez-hero-art { position: relative; }
.ez-photo {
	position: relative; border-radius: 34px; overflow: hidden; aspect-ratio: 1 / 1.05;
	border: 1px solid var(--line); box-shadow: 0 36px 66px -34px rgba(23,32,55,.55);
	transform: rotate(2.5deg); background: var(--cobalt-soft);
}
.ez-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ez-cap {
	position: absolute; bottom: 16px; left: 16px; background: rgba(255,255,255,.92);
	font-size: 12px; font-weight: 600; color: var(--muted); padding: 5px 12px; border-radius: 999px;
}
.ez-float {
	position: absolute; background: #fff; border: 1px solid var(--line); border-radius: 16px;
	padding: 11px 15px; box-shadow: 0 16px 32px -18px rgba(23,32,55,.5);
	font-weight: 600; font-size: 13.5px; display: flex; align-items: center; gap: 9px; z-index: 3;
}
.ez-float .em { width: 34px; height: 34px; border-radius: 11px; display: grid; place-items: center; font-size: 17px; }
.ez-float-1 { top: 14px; left: -30px; transform: rotate(-6deg); }
.ez-float-1 .em { background: var(--tang-soft); }
.ez-float-2 { bottom: 46px; right: -26px; transform: rotate(5deg); }
.ez-float-2 .em { background: var(--cobalt-soft); }

.ez-curve { display: block; width: 100%; height: 70px; margin-bottom: -2px; position: relative; z-index: 2; }

/* --- stats bubbles -------------------------------------------------------- */
.ez-stats { background: var(--white); border-bottom: 1px solid var(--line); padding: 14px 0 56px; }
.ez-bubbles { display: flex; justify-content: center; gap: 30px; flex-wrap: wrap; }
.ez-bubble {
	width: 172px; height: 172px; border-radius: 50%;
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	text-align: center; padding: 18px;
}
.ez-bubble:nth-child(1) { background: var(--cobalt-soft); transform: translateY(-4px); }
.ez-bubble:nth-child(2) { background: var(--tang-soft); transform: translateY(20px); }
.ez-bubble:nth-child(3) { background: var(--sun-soft); transform: translateY(-8px); }
.ez-bubble:nth-child(4) { background: var(--cobalt-soft); transform: translateY(14px); }
.ez-bubble .n { font-family: var(--font-display); font-size: 33px; font-weight: 600; color: var(--ink); line-height: 1; }
.ez-bubble .l { font-size: 12.5px; color: var(--muted); margin-top: 6px; }

/* Google-backed rating badge. Drops inside an .ez-bubble to inherit the
   round cream chip, or stands alone (still styled as a circle so the
   layout stays consistent if the shortcode is reused elsewhere). */
.ez-rating-badge { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 6px; }
.ez-bubble > .ez-rating-badge { width: 100%; height: 100%; }
.ez-rating-badge__num { font-family: var(--font-display); font-size: 33px; font-weight: 600; color: var(--ink); line-height: 1; letter-spacing: -0.01em; }
.ez-rating-badge__star { color: var(--sun); margin-left: 2px; }
.ez-rating-badge__sub { font-size: 12.5px; color: var(--muted); line-height: 1.25; max-width: 130px; }

/* --- age bento ------------------------------------------------------------ */
.ez-bento { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; align-items: start; }
.ez-card {
	position: relative; background: var(--white); border: 1px solid var(--line);
	border-radius: var(--r-lg); padding: 38px 26px 28px;
	transition: transform .16s ease, box-shadow .16s ease;
}
.ez-card:hover { transform: translateY(-7px) rotate(0deg) !important; box-shadow: 0 30px 52px -30px rgba(23,32,55,.5); }
.ez-card-1 { transform: rotate(-1.8deg); }
.ez-card-2 { margin-top: -34px; padding-top: 48px; }
.ez-card-3 { transform: rotate(1.8deg); }
/* emoji badge */
.ez-card::before {
	position: absolute; top: -26px; left: 26px; width: 64px; height: 64px;
	border-radius: 18px; display: grid; place-items: center; font-size: 30px;
	box-shadow: 0 12px 22px -12px rgba(23,32,55,.5); transform: rotate(-8deg);
}
.ez-card-1::before { content: "\1F37C"; background: var(--cobalt-soft); }
.ez-card-2::before { content: "\1F9F8"; background: var(--tang-soft); }
.ez-card-3::before { content: "\1F3A8"; background: var(--sun-soft); }
.ez-card .age { font-weight: 600; color: var(--tang-dark); font-size: 13.5px; margin: 0 0 10px; }
.ez-card p { color: var(--muted); font-size: 15px; margin: 0 0 14px; }
.ez-card .ez-cardlink { margin: 4px 0 0; }
.ez-card .ez-cardlink a { color: var(--ink); font-weight: 600; font-size: 14.5px; text-decoration: none; border-bottom: 2.5px solid var(--tang); padding-bottom: 2px; }
.ez-card .ez-cardlink a:hover { color: var(--cobalt); }

/* --- why ------------------------------------------------------------------ */
.ez-why { background: var(--white); border-block: 1px solid var(--line); }
.ez-why-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 42px 28px; margin-top: 34px; }
.ez-feat { position: relative; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-md); padding: 34px 22px 22px; text-align: center; }
.ez-feat::before {
	position: absolute; top: -24px; left: 50%; transform: translateX(-50%);
	width: 54px; height: 54px; border-radius: 50%; display: grid; place-items: center;
	font-size: 24px; border: 3px solid #fff; box-shadow: 0 10px 18px -10px rgba(23,32,55,.4);
}
.ez-feat-1::before { content: "\1F3BB"; background: var(--cobalt-soft); }
.ez-feat-2::before { content: "\1F465"; background: var(--tang-soft); }
.ez-feat-3::before { content: "\1F4C5"; background: var(--sun-soft); }
.ez-feat-4::before { content: "\1F381"; background: var(--cobalt-soft); }
.ez-feat-5::before { content: "\1F476"; background: var(--tang-soft); }
.ez-feat-6::before { content: "\1F4F1"; background: var(--sun-soft); }
.ez-feat p { color: var(--muted); font-size: 14.5px; margin: 6px 0 0; }

/* --- steps ---------------------------------------------------------------- */
.ez-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; position: relative; }
.ez-steps::before {
	content: ""; position: absolute; top: 32px; left: 16%; right: 16%; height: 0;
	border-top: 3.5px dashed var(--tang); z-index: 0;
}
.ez-step {
	position: relative; z-index: 2; background: var(--white); border: 1px solid var(--line);
	border-radius: var(--r-lg); padding: 50px 26px 26px; text-align: center; counter-increment: ez-step;
}
.ez-step-2 { margin-top: 54px; }
.ez-step::before {
	content: counter(ez-step); position: absolute; top: -32px; left: 50%;
	transform: translateX(-50%) rotate(-7deg);
	font-family: var(--font-display); font-size: 24px; font-weight: 600;
	width: 62px; height: 62px; border-radius: 50%; background: var(--ink); color: #fff;
	display: grid; place-items: center; border: 4px solid var(--paper);
}
.ez-steps { counter-reset: ez-step; }
.ez-step-2::before { background: var(--tang); }
.ez-step-3::before { background: var(--cobalt); }
.ez-step p { color: var(--muted); font-size: 15px; margin: 5px 0 0; }

/* --- see in action -------------------------------------------------------- */
.ez-action { background: var(--ink); color: #fff; overflow: hidden; }
.ez-action .ez-shead h2 { color: #fff; }
.ez-action .ez-shead p { color: #aeb6cc; }
.ez-action .ez-eyebrow { color: var(--tang); }
.ez-vids { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.ez-vid {
	aspect-ratio: 4 / 3; border-radius: var(--r-md); border: 1px solid #2f3a5c;
	position: relative; overflow: hidden; background-size: cover; background-position: center;
	display: flex; align-items: flex-end; padding: 14px;
}
.ez-vid::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(23,32,55,.05), rgba(23,32,55,.65)); }
.ez-action-more { text-align: center; margin-top: 34px; }
.ez-vid p { position: relative; z-index: 2; font-size: 13px; font-weight: 600; color: #fff; margin: 0; }
.ez-vid-1 { transform: rotate(-2.5deg); background-image: url('../images/photos/MG_6164.jpg'); }
.ez-vid-2 { transform: rotate(1.5deg) translateY(-12px); background-image: url('../images/photos/einsteinz-header.jpg'); }
.ez-vid-3 { transform: rotate(2.5deg); background-image: url('../images/photos/MG_6348.jpg'); }

/* --- testimonials --------------------------------------------------------- */
.ez-tcards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; margin-top: 10px; }
.ez-tcard { position: relative; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-md); padding: 30px 24px 24px; }
.ez-tcard-1 { transform: rotate(-2.6deg); }
.ez-tcard-2 { transform: rotate(1.4deg) translateY(14px); }
.ez-tcard-3 { transform: rotate(2.4deg); }
.ez-tcard::before {
	content: ""; position: absolute; top: -11px; left: 50%; transform: translateX(-50%) rotate(-4deg);
	width: 84px; height: 24px; background: rgba(255,138,61,.32);
	border: 1px dashed rgba(232,111,31,.5); border-radius: 3px;
}
.ez-tquote { font-size: 15.5px; margin: 0 0 16px; color: var(--ink); }
.ez-tquote::before { content: "\201C"; font-family: var(--font-display); font-size: 46px; color: var(--tang); display: block; line-height: .2; margin: 6px 0 14px; }
.ez-tcite { font-size: 13px; color: var(--muted); margin: 0; line-height: 1.5; }
.ez-tcite strong { display: block; color: var(--ink); font-weight: 600; font-size: 14.5px; }

/* --- more (bento) --------------------------------------------------------- */
.ez-morebento { display: grid; grid-template-columns: 1.35fr 1fr; grid-template-rows: auto auto; gap: 24px; }
.ez-mcard {
	border-radius: var(--r-lg); padding: 30px; color: #fff; position: relative;
	overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; min-height: 172px;
}
.ez-mcard-tall { grid-row: 1 / 3; min-height: 260px; }
.ez-mcard-1 { background: linear-gradient(160deg, #2F6BE0, #2353BE); }
.ez-mcard-2 { background: linear-gradient(150deg, #FF8A3D, #E86F1F); }
.ez-mcard-3 { background: linear-gradient(150deg, #172037, #283356); justify-content: flex-start; }
.ez-mcard h3 { color: #fff; }
.ez-mcard p { font-size: 14.5px; opacity: .94; max-width: 36ch; margin: 6px 0 0; }
.ez-mcard .links { display: flex; gap: 14px; margin-top: 12px; }
.ez-mcard .links a { color: #fff; font-weight: 600; font-size: 14px; }
.ez-mcard-art { width: 100%; max-width: 232px; border-radius: var(--r-md); display: block; margin: 0 auto 16px; }
.ez-mcard::before {
	position: absolute; top: 22px; right: 24px; font-size: 40px;
}
.ez-mcard-2::before { content: "\1F3EB"; }

/* Photo slot — drop a wp:image with className "ez-mcard-photo" into any
   .ez-mcard and it becomes a full-bleed photo card with a dark bottom
   gradient so the heading/copy stay legible. Swap or remove the image
   block from the editor; the underlying gradient acts as fallback. */
.ez-mcard .ez-mcard-photo {
	position: absolute; inset: 0; margin: 0; z-index: 0;
}
.ez-mcard .ez-mcard-photo img {
	width: 100%; height: 100%; object-fit: cover; object-position: center 35%;
	display: block;
}
.ez-mcard:has(.ez-mcard-photo)::after {
	content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: linear-gradient(180deg, rgba(23,32,55,0) 35%, rgba(23,32,55,.82) 100%);
}
.ez-mcard:has(.ez-mcard-photo) > :not(.ez-mcard-photo, .ez-mcard-link) {
	position: relative; z-index: 2;
}
.ez-mcard:has(.ez-mcard-photo)::before { display: none; }

/* Whole-tile overlay link: drop an <a class="ez-mcard-link" href="..."> as a
   direct child of an .ez-mcard to make the entire tile clickable. The link
   covers the tile, hover lifts the card, and keyboard focus is visible. */
.ez-mcard-link {
	position: absolute; inset: 0; z-index: 4;
	border-radius: inherit;
	text-decoration: none; color: transparent;
}
.ez-mcard-link .screen-reader-text {
	position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.ez-mcard:has(.ez-mcard-link) { cursor: pointer; transition: transform .18s ease, box-shadow .18s ease; }
.ez-mcard:has(.ez-mcard-link):hover { transform: translateY(-3px); box-shadow: 0 18px 30px -12px rgba(23,32,55,.4); }
.ez-mcard-link:focus-visible { outline: 3px solid var(--sun); outline-offset: -3px; }

/* --- cta band ------------------------------------------------------------- */
.ez-band {
	background: var(--cobalt); color: #fff; border-radius: 34px;
	padding: clamp(48px, 7vw, 66px) 40px; text-align: center; position: relative; overflow: hidden;
}
.ez-band .ez-blob { opacity: .55; }
.ez-band h2 { color: #fff; margin: 0 0 12px; position: relative; }
.ez-band p { color: #d4dffa; margin: 0 0 26px; font-size: 17.5px; position: relative; }
.ez-band .wp-block-buttons { justify-content: center; position: relative; }
.ez-band-call { position: relative; margin: 16px 0 0; color: #d4dffa; font-size: 15px; }
.ez-band-call a { color: #fff; font-weight: 700; }

/* --- newsletter ----------------------------------------------------------- */
.ez-news {
	position: relative; display: flex; align-items: center; gap: 30px;
	background: var(--tang-soft); border-radius: var(--r-lg); padding: 36px;
	flex-wrap: wrap; transform: rotate(-.8deg);
}
.ez-news h3 { margin: 0 0 4px; }
.ez-news p { color: var(--muted); font-size: 15px; margin: 0; }
.ez-news form { display: flex; gap: 10px; margin-left: auto; flex-wrap: wrap; align-items: center; }
.ez-news input { border: 1.6px solid #f0cdb0; background: #fff; border-radius: 999px; padding: 13px 20px; font-family: inherit; font-size: 15px; min-width: 230px; box-sizing: border-box; }
.ez-news fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.ez-news .vita-form__steps { flex: 1 1 230px; }
.ez-news .vita-form__field { display: block; }
.ez-news .vita-form__input { width: 100%; max-width: 100%; }
.ez-news .vita-form__label {
	position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.ez-news .vita-form__error:not(:empty) { font-size: 13px; color: var(--tang-dark); padding: 6px 4px 0; margin: 0; }
.ez-news .vita-form__nav { margin: 0; padding: 0; }
.ez-news .vita-form__submit {
	display: inline-flex; align-items: center; justify-content: center;
	font-family: var(--font-sans); font-weight: 600; font-size: 15.5px;
	line-height: 1; letter-spacing: 0;
	background: var(--tang); color: #fff;
	border: 0; border-radius: 999px;
	padding: 16px 28px; cursor: pointer;
	box-shadow: 0 10px 22px -10px rgba(255,138,61,.85);
	transition: transform .13s ease, box-shadow .13s ease;
}
.ez-news .vita-form__submit:hover { transform: translateY(-2px); box-shadow: 0 14px 26px -10px rgba(255,138,61,.95); }
.ez-news .vita-form__submit:focus-visible { outline: 2px solid var(--cobalt); outline-offset: 2px; }

/* --- footer --------------------------------------------------------------- */
.ez-footer { background: var(--ink); color: #aab2c8; padding: 56px 0 30px; font-size: 14px; }
.ez-footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 30px; padding-bottom: 32px; }
.ez-footer h4 { font-family: var(--font-sans); font-size: 13px; letter-spacing: .1em; text-transform: uppercase; color: #fff; margin: 0 0 14px; font-weight: 600; }
.ez-footer a { display: block; text-decoration: none; color: #aab2c8; padding: 3px 0; }
.ez-footer a:hover { color: #fff; }
.ez-footer-brand p { max-width: 32ch; margin: 0 0 12px; }
.ez-footer-logo { background: #fff; border-radius: 14px; padding: 8px; display: inline-block; margin-bottom: 12px; }
.ez-footer-logo img { height: 74px; width: auto; display: block; }
.ez-footer-social { display: flex; gap: 14px; }
.ez-footer-social a { display: inline; }
.ez-footer-bar { border-top: 1px solid #2c3658; padding-top: 22px; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; font-size: 13px; }
.ez-footer-bar a { display: inline; color: #aab2c8; }

/* --- standard page (page.html / single location) ------------------------ */
.ez-page-hero {
	position: relative; overflow: hidden; background: var(--cobalt-soft);
	padding-block: clamp(46px, 7vw, 74px) 0;
}
.ez-page-hero::before {
	content: ""; position: absolute; width: 300px; height: 300px; border-radius: 50%;
	background: var(--tang-soft); top: -130px; right: -70px; opacity: .7;
}
.ez-page-hero::after {
	content: ""; position: absolute; width: 150px; height: 150px; border-radius: 50%;
	background: var(--sun-soft); bottom: 8px; left: -56px; opacity: .85;
}
.ez-page-hero .ez-wrap { position: relative; z-index: 2; text-align: center; }
.ez-page-hero .ez-eyebrow { margin-bottom: 10px; }
.ez-page-hero .wp-block-post-title {
	font-family: var(--font-display); font-weight: 600; color: var(--ink);
	font-size: clamp(2.1rem, 1.5rem + 2.6vw, 3.1rem); line-height: 1.1; margin: 0;
}
.ez-page-curve { display: block; width: 100%; height: 56px; position: relative; z-index: 2;
	margin-top: clamp(26px, 5vw, 46px); margin-bottom: -1px; }

.ez-page-body { padding-block: clamp(34px, 5vw, 52px) clamp(50px, 8vw, 84px); padding-inline: clamp(20px, 5vw, 30px); }
.ez-page-body > * { margin-block: 1.15rem 0; }
.ez-page-body > :first-child { margin-top: 0; }
.ez-page-body h2 {
	font-size: clamp(1.55rem, 1.2rem + 1.1vw, 2.05rem); margin-top: 2.6rem; color: var(--ink);
}
.ez-page-body h2::after {
	content: ""; display: block; width: 52px; height: 5px; border-radius: 999px;
	background: var(--tang); margin-top: 12px;
}
.ez-page-body h3 { font-size: 1.3rem; margin-top: 2rem; color: var(--cobalt-dark); }
.ez-page-body p, .ez-page-body li { font-size: 16.5px; }
.ez-page-body .ez-lead {
	font-size: clamp(1.1rem, 1rem + 0.5vw, 1.35rem); color: var(--ink);
	line-height: 1.55; font-weight: 500;
}
.ez-page-body ul, .ez-page-body ol { padding-left: 0; list-style: none; }
.ez-page-body ol { counter-reset: ez-ol; }
.ez-page-body li { margin: .55em 0; padding-left: 1.9em; position: relative; }
.ez-page-body ul li::before {
	content: "\266A"; position: absolute; left: .15em; top: 0; color: var(--tang);
	font-size: 1.05em; font-weight: 700;
}
/* Suppress music-note bullet on grids that use <ul> as layout containers.
   Specificity raised to .ez-page-body + ul.<class> + li::before so it
   beats the generic .ez-page-body ul li::before bullet rule above. */
.ez-page-body ul.ez-clients-grid li::before,
.ez-page-body ul.ez-centre-pitch-grid li::before,
.ez-page-body ul.ez-centre-facts__grid li::before { content: none; }
.ez-page-body ol li { counter-increment: ez-ol; }
.ez-page-body ol li::before {
	content: counter(ez-ol); position: absolute; left: 0; top: .05em;
	width: 1.4em; height: 1.4em; border-radius: 50%; background: var(--cobalt); color: #fff;
	font-size: .8em; font-weight: 700; display: grid; place-items: center;
}
.ez-page-body .wp-block-buttons { margin-top: 1.9rem; }
.ez-page-body .wp-block-separator {
	border: 0; border-top: 2px dashed var(--line); max-width: none; margin: 2.8rem 0;
}

/* callout box */
.ez-callout {
	background: var(--cobalt-soft); border-radius: var(--r-md);
	padding: 22px 26px; margin-block: 1.8rem;
}
.ez-callout > * { margin-block: .6rem 0; }
.ez-callout > :first-child { margin-top: 0; }

/* FAQ accordion (wp:details) */
.ez-page-body .wp-block-details {
	background: var(--white); border: 1px solid var(--line); border-radius: var(--r-md);
	padding: 4px 22px; margin: 12px 0;
}
.ez-page-body .wp-block-details summary {
	font-family: var(--font-display); font-weight: 600; font-size: 1.08rem;
	padding: 16px 0; cursor: pointer; list-style-position: inside;
}
.ez-page-body .wp-block-details[open] summary { border-bottom: 1px solid var(--line); margin-bottom: 8px; }
.ez-page-body .wp-block-details p { margin: 0 0 14px; color: var(--muted); }

/* teacher headings on Meet the Teachers read as cards-ish */
.ez-page-body .wp-block-image img { border-radius: var(--r-md); }

/* --- responsive ----------------------------------------------------------- */
@media (max-width: 980px) {
	.ez-hero-grid { grid-template-columns: 1fr; gap: 40px; padding-block: 36px 64px; }
	.ez-nav, .ez-utilbar { display: none; }
	.ez-navtoggle { display: block; }
	.ez-header-actions { margin-left: auto; }
	.ez-header.nav-open .ez-nav {
		display: flex; position: absolute; top: 100%; left: 0; right: 0;
		flex-direction: column; gap: 0; background: #fff; border-bottom: 1px solid var(--line);
		padding: 10px 30px 20px; align-items: stretch; max-height: 78vh; overflow-y: auto;
	}
	.ez-header.nav-open .ez-nav-item { width: 100%; border-bottom: 1px solid var(--line); }
	.ez-header.nav-open .ez-nav-item > a { padding: 13px 0; }
	.ez-header.nav-open .ez-sub {
		position: static; opacity: 1; visibility: visible; transform: none;
		box-shadow: none; border: 0; padding: 0 0 10px 14px; min-width: 0;
	}
	.ez-header.nav-open .ez-sub a { padding: 8px 0; }
	.ez-bento, .ez-why-grid, .ez-steps, .ez-vids, .ez-tcards { grid-template-columns: 1fr 1fr; }
	.ez-card-2 { margin-top: 0; }
	.ez-step-2 { margin-top: 0; }
	.ez-steps::before { display: none; }
	.ez-morebento { grid-template-columns: 1fr; }
	.ez-mcard-tall { grid-row: auto; }
	.ez-news form { margin-left: 0; }
}
@media (max-width: 600px) {
	.ez-wrap { padding-inline: 20px; }
	.ez-bento, .ez-why-grid, .ez-steps, .ez-vids, .ez-tcards { grid-template-columns: 1fr; }
	.ez-bubbles { gap: 16px; }
	.ez-card-1, .ez-card-3, .ez-finder, .ez-news { transform: none; }
	.ez-footer-grid { grid-template-columns: 1fr 1fr; }
}

/* --- finder form (radio-based, from the plugin) --------------------------- */
.ez-agebtn input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.ez-agebtn:has(input:checked) { border-color: var(--cobalt); background: var(--cobalt-soft); }
.ez-agebtn:has(input:checked) .lb { color: var(--cobalt-dark); }
.ez-agebtn:has(input:focus-visible) { outline: 2px solid var(--cobalt); outline-offset: 2px; }

/* --- locations grid (the /locations/ page) -------------------------------- */
.ez-loc-results { margin-top: 14px; }
.ez-loc-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.ez-loc-card {
	display: block; background: var(--white); border: 1px solid var(--line);
	border-radius: var(--r-lg); padding: 24px; text-decoration: none; color: var(--ink);
	transition: transform .15s ease, box-shadow .15s ease;
}
.ez-loc-card:hover { transform: translateY(-5px); box-shadow: 0 26px 46px -28px rgba(23,32,55,.5); }
.ez-loc-card-region { font-family: var(--font-sans); font-weight: 600; font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--cobalt); }
.ez-loc-card h3 { font-family: var(--font-display); font-weight: 600; font-size: 1.4rem; margin: 6px 0 4px; }
.ez-loc-card-venue { font-weight: 600; font-size: 14px; margin: 0 0 2px; }
.ez-loc-card-addr { color: var(--muted); font-size: 13.5px; margin: 0 0 12px; }
.ez-loc-card-ages { display: inline-block; background: var(--tang-soft); color: var(--tang-dark); font-weight: 600; font-size: 12px; padding: 4px 10px; border-radius: 999px; }
.ez-loc-card-tag { display: inline-block; background: var(--sun-soft); color: #8a6300; font-weight: 700; font-size: 12px; padding: 4px 10px; border-radius: 999px; }
.ez-loc-card-go { display: block; margin-top: 14px; font-weight: 600; font-size: 14px; color: var(--cobalt-dark); }
.ez-loc-card-planned { border-style: dashed; }
.ez-loc-soon-head { font-family: var(--font-display); font-size: 1.4rem; margin: 44px 0 18px; }
.ez-loc-empty { background: var(--cobalt-soft); border-radius: var(--r-md); padding: 22px; color: var(--ink); }

/* --- single location details --------------------------------------------- */
.ez-loc-rating { font-size: 15px; color: var(--muted); margin: 0 0 16px; }
.ez-loc-rating-stars { color: var(--sun); letter-spacing: 1px; }
.ez-loc-rating strong { color: var(--ink); }
.ez-loc-details { margin-top: 30px; }
.ez-loc-details h2 { font-family: var(--font-display); font-size: 1.6rem; margin: 0 0 12px; }
.ez-loc-venue, .ez-loc-schedule { margin: 26px 0; }
.ez-loc-venue-name { font-weight: 600; font-size: 1.05rem; margin: 0 0 2px; }
.ez-loc-address { color: var(--muted); margin: 0 0 12px; }
.ez-loc-parking { color: var(--muted); font-size: 14.5px; }
.ez-location-map {
	aspect-ratio: 16 / 9;
	width: 100%;
	margin: 14px 0 18px;
	border-radius: var(--r-md);
	overflow: hidden;
	border: 1px solid var(--line);
	background: var(--haze, #f3f4f7);
}
.ez-location-map iframe {
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
}
.ez-loc-note { border-radius: var(--r-md); padding: 16px 20px; font-weight: 500; }
.ez-loc-note-closed { background: var(--sun-soft); color: #8a6300; }
.ez-loc-note-planned { background: var(--cobalt-soft); color: var(--cobalt-dark); }
.ez-timetable { width: 100%; border-collapse: collapse; margin: 8px 0 12px; }
.ez-timetable th, .ez-timetable td { text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--line); font-size: 15px; }
.ez-timetable th { font-family: var(--font-sans); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.ez-timetable tr:last-child td { border-bottom: 0; }
.ez-loc-fineprint { color: var(--muted); font-size: 13.5px; }

/* register-interest form on new/upcoming location pages */
.ez-loc-interest {
	background: var(--white); border: 1px solid var(--line);
	border-radius: var(--r-lg); padding: 32px 30px; margin: 26px 0;
	box-shadow: 0 22px 44px -32px rgba(23,32,55,.55);
}
.ez-loc-interest h2 { margin-top: 0; }
.ez-loc-interest > p { color: var(--ink); margin-bottom: 4px; }

/* "can't find the right fit" lead-capture block on the locations page */
.ez-loc-help {
	background: var(--tang-soft); border-radius: var(--r-lg);
	padding: 34px 32px; margin-top: 46px;
}
.ez-loc-help h2 { margin-top: 0; }
.ez-loc-help > p { color: var(--ink); }

/* link from a Google rating to the reviews themselves — kept subtle */
.ez-google-link { color: inherit; text-decoration: none; border-bottom: 1px dotted currentColor; }
.ez-google-link:hover { border-bottom-style: solid; }

@media (max-width: 600px) {
	.ez-loc-interest, .ez-loc-help { padding: 24px 20px; }
}

@media (max-width: 980px) { .ez-loc-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .ez-loc-grid { grid-template-columns: 1fr; } }

/* --- forms (Vitasiti Forms, in page content) ----------------------------- */
:is(.ez-page-body, .ez-lp-form) form { margin-top: 16px; }
:is(.ez-page-body, .ez-lp-form) form label { font-weight: 600; font-size: 14.5px; display: block; margin-bottom: 5px; }
:is(.ez-page-body, .ez-lp-form) form input[type="text"],
:is(.ez-page-body, .ez-lp-form) form input[type="email"],
:is(.ez-page-body, .ez-lp-form) form input[type="tel"],
:is(.ez-page-body, .ez-lp-form) form input[type="number"],
:is(.ez-page-body, .ez-lp-form) form input[type="url"],
:is(.ez-page-body, .ez-lp-form) form input[type="password"],
:is(.ez-page-body, .ez-lp-form) form input[type="date"],
:is(.ez-page-body, .ez-lp-form) form input[type="time"],
:is(.ez-page-body, .ez-lp-form) form input[type="datetime-local"],
:is(.ez-page-body, .ez-lp-form) form input[type="month"],
:is(.ez-page-body, .ez-lp-form) form input[type="week"],
:is(.ez-page-body, .ez-lp-form) form input[type="search"],
:is(.ez-page-body, .ez-lp-form) form select,
:is(.ez-page-body, .ez-lp-form) form textarea {
	width: 100%; box-sizing: border-box; border: 1.6px solid var(--line);
	background: var(--white); border-radius: var(--r-sm); padding: 12px 14px;
	font-family: inherit; font-size: 15.5px; color: var(--ink);
}
:is(.ez-page-body, .ez-lp-form) form input:focus,
:is(.ez-page-body, .ez-lp-form) form select:focus,
:is(.ez-page-body, .ez-lp-form) form textarea:focus { outline: 0; border-color: var(--cobalt); }
:is(.ez-page-body, .ez-lp-form) form textarea { min-height: 120px; resize: vertical; }
/* Native <select> and <input type="date"> ship with browser shadow-DOM
   internals (spinner, datetime-edit field, picker indicator) that shove
   their own height/padding through cascade boundaries — so they render
   subtly shorter/taller than text inputs even with identical CSS.
   appearance:none strips that shadow chrome so the box obeys our padding
   and font-size, producing pixel-identical heights across types. */
:is(.ez-page-body, .ez-lp-form) form select,
:is(.ez-page-body, .ez-lp-form) form input[type="date"],
:is(.ez-page-body, .ez-lp-form) form input[type="time"],
:is(.ez-page-body, .ez-lp-form) form input[type="datetime-local"],
:is(.ez-page-body, .ez-lp-form) form input[type="month"],
:is(.ez-page-body, .ez-lp-form) form input[type="week"] {
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
}
/* Custom chevron icon on <select> (replaces the native one stripped above) */
:is(.ez-page-body, .ez-lp-form) form select {
	padding-right: 40px;
	background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 8" fill="none"><path d="M1 1.5 6 6.5 11 1.5" stroke="%23586079" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>');
	background-repeat: no-repeat; background-position: right 15px center; background-size: 12px 8px;
}
/* Custom calendar icon on date-family inputs (Chrome's native picker still
   opens when the field is clicked — the icon is purely cosmetic now). */
:is(.ez-page-body, .ez-lp-form) form input[type="date"],
:is(.ez-page-body, .ez-lp-form) form input[type="datetime-local"],
:is(.ez-page-body, .ez-lp-form) form input[type="month"],
:is(.ez-page-body, .ez-lp-form) form input[type="week"] {
	padding-right: 40px;
	background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none"><rect x="2" y="3.5" width="12" height="11" rx="1.5" stroke="%23586079" stroke-width="1.5"/><path d="M2 7h12M5.5 2v3M10.5 2v3" stroke="%23586079" stroke-width="1.5" stroke-linecap="round"/></svg>');
	background-repeat: no-repeat; background-position: right 14px center; background-size: 16px 16px;
}
/* Chrome's date picker indicator becomes an overlay button. Hide it
   (clicking the field still opens the picker) and use our custom icon. */
:is(.ez-page-body, .ez-lp-form) form input[type="date"]::-webkit-calendar-picker-indicator,
:is(.ez-page-body, .ez-lp-form) form input[type="datetime-local"]::-webkit-calendar-picker-indicator {
	opacity: 0;
	cursor: pointer;
}
/* Flatpickr — themed date picker that replaces the native (unstylable)
   one. Variables override flatpickr's defaults; sizes bumped up so the
   calendar feels generous on a desktop form. */
.flatpickr-calendar {
	font-family: inherit;
	font-size: 15.5px;
	border-radius: var(--r-lg, 16px);
	box-shadow: 0 18px 40px -12px rgba(31, 35, 48, 0.22), 0 4px 12px -4px rgba(31, 35, 48, 0.08);
	border: 1px solid var(--line, #ECE7DF);
	padding: 8px;
	width: 360px;
}
.flatpickr-calendar.arrowTop:before,
.flatpickr-calendar.arrowTop:after { border-bottom-color: var(--line, #ECE7DF); }
.flatpickr-months {
	padding: 8px 0 6px;
	align-items: center;
}
.flatpickr-month {
	color: var(--ink, #1F2330);
	background: transparent;
	height: 44px;
}
.flatpickr-current-month {
	font-size: 1.05rem;
	font-weight: 700;
	padding: 6px 0 0;
	color: var(--ink, #1F2330);
}
.flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-current-month input.cur-year {
	font-family: inherit;
	font-weight: 700;
	font-size: 1rem;
	color: var(--ink, #1F2330);
}
.flatpickr-prev-month,
.flatpickr-next-month {
	color: var(--cobalt, #2F6BE0);
	fill: var(--cobalt, #2F6BE0);
	padding: 8px 14px;
	height: 44px;
	font-size: 22px;
	line-height: 1;
}
.flatpickr-prev-month:hover svg,
.flatpickr-next-month:hover svg { fill: var(--tang, #FF8A3D); }
.flatpickr-weekdays { height: 36px; }
span.flatpickr-weekday {
	color: var(--muted, #6B7280);
	font-weight: 600;
	font-size: 0.82rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.flatpickr-days { width: 100% !important; }
.dayContainer {
	width: 100% !important;
	min-width: 0;
	max-width: none;
	padding: 4px 0;
	gap: 2px;
	justify-content: space-between;
}
.flatpickr-day {
	border-radius: 999px;
	max-width: 44px;
	height: 44px;
	line-height: 44px;
	font-size: 0.98rem;
	color: var(--ink, #1F2330);
	border: 0;
}
.flatpickr-day:hover,
.flatpickr-day:focus {
	background: var(--cobalt-soft, #EAF1FE);
	color: var(--cobalt-dark, #1F4FB0);
}
.flatpickr-day.today {
	border: 1.6px solid var(--tang, #FF8A3D);
	color: var(--tang-dark, #C56424);
	background: transparent;
}
.flatpickr-day.today:hover { background: var(--tang-soft, #FFE8D6); }
.flatpickr-day.selected,
.flatpickr-day.selected:hover,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
	background: var(--tang, #FF8A3D);
	border-color: var(--tang, #FF8A3D);
	color: #fff;
}
.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
	color: var(--muted, #6B7280);
	opacity: 0.5;
}
.flatpickr-day.disabled,
.flatpickr-day.disabled:hover {
	color: var(--muted, #6B7280);
	opacity: 0.35;
	background: transparent;
}
/* When Flatpickr swaps the native input for its altInput, both end up
   in the DOM (the original input is hidden via .flatpickr-input class).
   Make sure the visible alt input inherits our form-input styling. */
.flatpickr-input.flatpickr-mobile { display: block; }
input.flatpickr-input + input.flatpickr-input:not(.flatpickr-mobile) {
	/* alt input — already styled via .ez-page-body form input[type="text"] */
}

/* The ::-webkit-datetime-edit wrapper inside type=date inputs adds
   ~2px of vertical space even after appearance:none. Zero out its
   internal padding/margin so the input box matches text inputs
   pixel-for-pixel (measured 53.11px → 51.11px). */
:is(.ez-page-body, .ez-lp-form) form input[type="date"]::-webkit-datetime-edit,
:is(.ez-page-body, .ez-lp-form) form input[type="datetime-local"]::-webkit-datetime-edit,
:is(.ez-page-body, .ez-lp-form) form input[type="time"]::-webkit-datetime-edit,
:is(.ez-page-body, .ez-lp-form) form input[type="month"]::-webkit-datetime-edit,
:is(.ez-page-body, .ez-lp-form) form input[type="week"]::-webkit-datetime-edit {
	padding: 0;
	margin: 0;
	line-height: inherit;
}
:is(.ez-page-body, .ez-lp-form) form input[type="date"]::-webkit-datetime-edit-fields-wrapper,
:is(.ez-page-body, .ez-lp-form) form input[type="datetime-local"]::-webkit-datetime-edit-fields-wrapper {
	padding: 0;
	margin: 0;
}
:is(.ez-page-body, .ez-lp-form) form button,
:is(.ez-page-body, .ez-lp-form) form input[type="submit"] {
	display: inline-flex; align-items: center; gap: 9px; font-family: var(--font-sans);
	font-weight: 600; font-size: 15.5px; border-radius: 999px; padding: 13px 28px;
	background: var(--tang); color: #fff; border: 0; cursor: pointer; margin-top: 6px;
	box-shadow: 0 10px 22px -10px rgba(255,138,61,.85); transition: transform .13s ease;
}
:is(.ez-page-body, .ez-lp-form) form button:hover,
:is(.ez-page-body, .ez-lp-form) form input[type="submit"]:hover { transform: translateY(-2px); }
:is(.ez-page-body, .ez-lp-form) form button[disabled] { opacity: .55; }
/* Vitasiti multi-step nav / secondary buttons stay subtle */
:is(.ez-page-body, .ez-lp-form) form .vita-step-nav button,
:is(.ez-page-body, .ez-lp-form) form button.vita-prev { background: var(--cobalt-soft); color: var(--cobalt-dark); box-shadow: none; }

/* --- landing page (mid-term enrolments etc.) ----------------------------- */
.ez-lp-hero { background: var(--cobalt-soft); overflow: hidden; position: relative; }
.ez-lp-hero .ez-wrap {
	display: grid; grid-template-columns: 1.05fr .95fr; gap: 50px; align-items: center;
	padding-block: clamp(38px, 6vw, 64px) clamp(26px, 4vw, 40px); position: relative; z-index: 2;
}
.ez-lp-hero h1 {
	font-family: var(--font-display); font-weight: 600; color: var(--ink);
	font-size: clamp(2.3rem, 1.6rem + 3vw, 3.4rem); line-height: 1.07; margin: 14px 0;
}
.ez-lp-sub { font-size: clamp(1.05rem, 1rem + 0.45vw, 1.3rem); color: var(--muted); margin: 0 0 20px; max-width: 32ch; }
.ez-lp-cta { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin: 4px 0 0; }
.ez-lp-call {
	font-weight: 700; font-size: 15.5px; color: var(--cobalt-dark); text-decoration: none;
	display: inline-flex; align-items: center; gap: 6px; padding: 8px 4px;
}
.ez-lp-call:hover { color: var(--ink); }
.ez-lp-hero .ez-proof { margin-top: 20px; }
.ez-lp-hero .ez-photo { aspect-ratio: 1 / .92; }
.ez-lp-hero .ez-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* reassurance strip */
.ez-lp-points-sec { background: var(--white); border-bottom: 1px solid var(--line); }
.ez-lp-points { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; padding-block: 30px; }
.ez-lp-point { display: flex; gap: 13px; align-items: center; }
.ez-lp-point .ic {
	flex: none; width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center;
	font-size: 22px; background: var(--cobalt-soft);
}
.ez-lp-point:nth-child(2) .ic { background: var(--tang-soft); }
.ez-lp-point:nth-child(3) .ic { background: var(--sun-soft); }
.ez-lp-point b { display: block; font-family: var(--font-display); font-size: 1.05rem; }
.ez-lp-point span { color: var(--muted); font-size: 13.5px; }

/* value prose */
.ez-lp-prose { max-width: 760px; margin-inline: auto; }
.ez-lp-prose > * { margin-block: 1.15rem 0; }
.ez-lp-prose > :first-child { margin-top: 0; }
.ez-lp-prose h2 {
	font-family: var(--font-display); font-weight: 600; color: var(--ink);
	font-size: clamp(1.55rem, 1.2rem + 1.1vw, 2.05rem); margin-top: 2.4rem;
}
.ez-lp-prose h2::after {
	content: ""; display: block; width: 52px; height: 5px; border-radius: 999px;
	background: var(--tang); margin-top: 12px;
}
.ez-lp-prose p, .ez-lp-prose li { font-size: 16.5px; }
.ez-lp-prose ul { list-style: none; padding-left: 0; }
.ez-lp-prose li { margin: .55em 0; padding-left: 1.9em; position: relative; }
.ez-lp-prose ul li::before {
	content: "\266A"; position: absolute; left: .15em; top: 0; color: var(--tang); font-weight: 700;
}

/* honest urgency callout */
.ez-lp-urgency {
	background: var(--tang-soft); border: 1.6px dashed var(--tang); border-radius: var(--r-md);
	padding: 20px 24px; margin-top: 2rem;
}
.ez-lp-urgency p { margin: 0; font-size: 16px; }
.ez-lp-urgency strong { color: var(--tang-dark); }

/* testimonial band */
.ez-lp-quote { background: var(--ink); color: #fff; text-align: center; }
.ez-lp-quote .ez-wrap { max-width: 760px; }
.ez-lp-quote blockquote {
	font-family: var(--font-display); font-weight: 500; font-size: clamp(1.3rem, 1rem + 1.2vw, 1.85rem);
	line-height: 1.4; margin: 0 0 16px;
}
.ez-lp-quote .stars { color: var(--sun); letter-spacing: 2px; display: block; margin-bottom: 14px; }
.ez-lp-quote cite { font-style: normal; font-weight: 600; color: #cdd2e0; font-size: 14.5px; }

/* form section */
.ez-lp-form { background: var(--cobalt-soft); }
.ez-lp-form .ez-wrap { max-width: 720px; }
.ez-lp-form .ez-lp-formcard {
	background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg);
	padding: clamp(26px, 4vw, 40px); box-shadow: 0 26px 52px -34px rgba(23,32,55,.5);
}
.ez-lp-form h2 { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.7rem,1.3rem+1.4vw,2.2rem); margin: 0 0 6px; }
.ez-lp-form .ez-lp-formintro { color: var(--muted); margin: 0 0 8px; }
.ez-lp-form .ez-lp-altlink { text-align: center; margin: 18px 0 0; font-size: 14.5px; color: var(--muted); }

@media (max-width: 860px) {
	.ez-lp-hero .ez-wrap { grid-template-columns: 1fr; gap: 30px; }
	.ez-lp-points { grid-template-columns: 1fr; gap: 14px; }
}

/* --- team grid (Meet the Teachers) --------------------------------------- */
.ez-team-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.ez-team-grid > * { margin-block: 0; }
.ez-teacher {
	background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg);
	overflow: hidden; transition: transform .15s ease, box-shadow .15s ease;
}
.ez-teacher:hover { transform: translateY(-5px); box-shadow: 0 28px 50px -30px rgba(23,32,55,.5); }
.ez-teacher .ez-teacher-photo {
	margin: 0; aspect-ratio: 1 / 1; background-color: var(--cobalt-soft);
	overflow: hidden;
}
.ez-teacher .ez-teacher-photo img {
	display: block; width: 100%; height: 100%;
	object-fit: cover; object-position: center 16%;
}
.ez-teacher-body { padding: 20px 22px 24px; }
.ez-teacher-body h3 {
	font-family: var(--font-display); font-weight: 600; font-size: 1.3rem;
	margin: 0 0 3px; color: var(--ink);
}
.ez-teacher-role {
	color: var(--tang-dark); font-weight: 700; font-size: 11.5px; letter-spacing: .1em;
	text-transform: uppercase; margin: 0 0 11px;
}
.ez-teacher-body p:not(.ez-teacher-role) { color: var(--muted); font-size: 14.5px; margin: 0; line-height: 1.62; }
@media (max-width: 900px) { .ez-team-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .ez-team-grid { grid-template-columns: 1fr; } }

/* ============================================================
 * [ez_video_carousel] — peek-tile video carousel
 * ========================================================== */

/* Full-bleed: the .alignfull class on <section> opts out of the
 * is-layout-constrained max-width + auto margins; the negative margins
 * then break out to viewport edges. */
.ez-vcarousel {
	position: relative;
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	background: var(--ink);
	color: #fff;
	padding: 78px 0 88px;
	overflow: hidden;
}
/* Page-body context: keep the full-bleed dark band but breathe between it
 * and the surrounding text so paragraphs don't hug its edges. */
.ez-page-body .ez-vcarousel { margin-block: clamp(40px, 6vw, 64px); }
.ez-page-body .ez-vcarousel__heading { color: #fff; margin-top: 0; }
.ez-page-body .ez-vcarousel__heading::after { display: none; }
.ez-page-body .ez-vcarousel p { font-size: 16px; }
.ez-vcarousel::before,
.ez-vcarousel::after {
	content: "";
	position: absolute;
	border-radius: 50%;
	filter: blur(70px);
	opacity: .18;
	pointer-events: none;
}
.ez-vcarousel::before { width: 520px; height: 520px; background: var(--cobalt); top: -180px; left: -160px; }
.ez-vcarousel::after  { width: 480px; height: 480px; background: var(--tang);   bottom: -220px; right: -180px; }

.ez-vcarousel__doodle { position: absolute; color: rgba(255,255,255,.12); pointer-events: none; }
.ez-vcarousel__doodle--a { top: 54px; left: 6%;   transform: rotate(-12deg); }
.ez-vcarousel__doodle--b { bottom: 46px; right: 7%; transform: rotate(14deg); }

.ez-vcarousel__inner { position: relative; z-index: 2; max-width: 1180px; margin: 0 auto; padding: 0 30px; }

.ez-vcarousel__head { text-align: center; margin-bottom: 42px; }
.ez-vcarousel__eyebrow {
	font: 600 13px/1 'DM Sans', sans-serif;
	letter-spacing: .13em;
	text-transform: uppercase;
	color: var(--sun);
}
.ez-vcarousel__heading {
	font-family: 'Fraunces', Georgia, serif;
	font-weight: 600;
	font-size: clamp(30px, 4vw, 42px);
	line-height: 1.1;
	letter-spacing: -.012em;
	color: #fff;
	margin: 12px 0 8px;
}
.ez-vcarousel__sub { color: #cdd2e0; font-size: 16px; max-width: 56ch; margin: 0 auto; }

.ez-vcarousel__track {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 520px;
	perspective: 1400px;
}
.ez-vcarousel__slot {
	position: absolute;
	transition: transform .55s cubic-bezier(.22,.85,.3,1.05), opacity .4s ease, filter .4s ease;
	cursor: pointer;
	will-change: transform, opacity;
}
.ez-vcarousel__tile {
	position: relative;
	background: #000;
	border-radius: var(--r-md);
	overflow: hidden;
	border: 6px solid #fff;
	box-shadow: 0 24px 50px -22px rgba(0,0,0,.7), 0 6px 16px -8px rgba(0,0,0,.5);
	width: 560px;
	aspect-ratio: 16/9;
}
.ez-vcarousel__tile img,
.ez-vcarousel__tile iframe {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border: 0;
}
.ez-vcarousel__nojs {
	position: absolute; inset: 0; display: grid; place-items: center;
	color: #fff; font-weight: 600; text-decoration: underline; background: rgba(0,0,0,.55);
}

/* Position slots: centre, peek left, peek right, hidden */
.ez-vcarousel__slot.is-c  { transform: translateX(0) scale(1) rotate(0); z-index: 5; }
.ez-vcarousel__slot.is-l  { transform: translateX(-440px) scale(.66) rotate(-3deg); z-index: 3; opacity: .85; }
.ez-vcarousel__slot.is-r  { transform: translateX(440px)  scale(.66) rotate(3deg);  z-index: 3; opacity: .85; }
.ez-vcarousel__slot.is-ll { transform: translateX(-720px) scale(.46) rotate(-5deg); z-index: 2; opacity: 0; pointer-events: none; }
.ez-vcarousel__slot.is-rr { transform: translateX(720px)  scale(.46) rotate(5deg);  z-index: 2; opacity: 0; pointer-events: none; }
.ez-vcarousel__slot.is-hidden { transform: translateX(0) scale(.4); opacity: 0; pointer-events: none; z-index: 1; }

.ez-vcarousel__slot.is-l:hover,
.ez-vcarousel__slot.is-r:hover { filter: brightness(1.1); }

/* Washi tape (only on centre) */
.ez-vcarousel__washi {
	position: absolute;
	width: 130px; height: 26px;
	background: repeating-linear-gradient(45deg, var(--sun) 0 8px, #ffd96a 8px 16px);
	top: -14px; left: 50%;
	transform: translateX(-50%) rotate(-2deg);
	opacity: .92;
	border-radius: 2px;
	box-shadow: 0 6px 14px -6px rgba(0,0,0,.4);
	z-index: 6;
	display: none;
}
.ez-vcarousel__slot.is-c .ez-vcarousel__washi { display: block; }

/* Play overlay */
.ez-vcarousel__play { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; }
.ez-vcarousel__playbtn {
	width: 88px; height: 88px;
	border-radius: 50%;
	background: rgba(255,255,255,.95);
	display: grid; place-items: center;
	box-shadow: 0 14px 30px -12px rgba(0,0,0,.6);
	transition: transform .15s ease;
}
.ez-vcarousel__slot.is-c .ez-vcarousel__play { pointer-events: auto; cursor: pointer; }
.ez-vcarousel__slot.is-c:hover .ez-vcarousel__playbtn { transform: scale(1.08); }
.ez-vcarousel__playbtn svg { width: 34px; height: 34px; color: var(--tang); margin-left: 5px; }
.ez-vcarousel__slot:not(.is-c) .ez-vcarousel__playbtn { width: 54px; height: 54px; background: rgba(255,255,255,.85); }
.ez-vcarousel__slot:not(.is-c) .ez-vcarousel__playbtn svg { width: 22px; height: 22px; margin-left: 3px; }

/* Nav arrows — inside the track so they centre on it cleanly */
.ez-vcarousel__track { position: relative; }
.ez-vcarousel__nav {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 14px;
	pointer-events: none;
	z-index: 10;
}
.ez-vcarousel__navbtn {
	pointer-events: auto;
	width: 54px; height: 54px;
	border-radius: 50%;
	border: 0;
	background: rgba(255,255,255,.92);
	color: var(--ink);
	display: grid; place-items: center;
	cursor: pointer;
	box-shadow: 0 14px 28px -14px rgba(0,0,0,.6);
	transition: transform .15s ease, background .15s ease;
}
.ez-vcarousel__navbtn:hover { transform: scale(1.07); background: #fff; }
.ez-vcarousel__navbtn svg { width: 22px; height: 22px; }

/* Dots + counter */
.ez-vcarousel__crumbs {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 14px;
	margin-top: 38px;
}
.ez-vcarousel__dots { display: flex; gap: 10px; }
.ez-vcarousel__dot {
	width: 10px; height: 10px;
	border-radius: 50%;
	background: rgba(255,255,255,.28);
	border: 0; padding: 0;
	cursor: pointer;
	transition: background .2s, transform .2s;
}
.ez-vcarousel__dot.is-on { background: var(--sun); transform: scale(1.3); }
.ez-vcarousel__counter {
	font-size: 13.5px;
	color: #cdd2e0;
	letter-spacing: .06em;
	font-variant-numeric: tabular-nums;
	margin-left: 6px;
}

/* No-JS fallback: stack vertically */
.no-js .ez-vcarousel__track,
.ez-vcarousel__track:not([data-vcarousel-track]) { display: block; min-height: 0; }
.no-js .ez-vcarousel__slot { position: static; transform: none !important; opacity: 1 !important; margin: 0 auto 32px; }
.no-js .ez-vcarousel__nav,
.no-js .ez-vcarousel__crumbs { display: none; }

/* Responsive */
@media (max-width: 980px) {
	.ez-vcarousel__track { min-height: 420px; }
	.ez-vcarousel__tile { width: min(82vw, 520px); }
	.ez-vcarousel__slot.is-l { transform: translateX(-72%) scale(.6) rotate(-3deg); }
	.ez-vcarousel__slot.is-r { transform: translateX(72%)  scale(.6) rotate(3deg); }
}
@media (max-width: 640px) {
	.ez-vcarousel { padding: 56px 0 64px; }
	.ez-vcarousel__track { min-height: 300px; }
	.ez-vcarousel__nav { padding: 0 4px; }
	.ez-vcarousel__tile { width: min(86vw, 420px); border-width: 5px; }
	.ez-vcarousel__slot.is-l, .ez-vcarousel__slot.is-r { opacity: 0; pointer-events: none; }
	.ez-vcarousel__navbtn { width: 46px; height: 46px; }
	.ez-vcarousel__playbtn { width: 68px; height: 68px; }
	.ez-vcarousel__playbtn svg { width: 26px; height: 26px; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	* { transition: none !important; }
}

/* ==========================================================================
   Client feedback round (2026-05-26)
   ========================================================================== */

/* Auto-linked phone numbers — keep inline-natural; underline only on hover */
.ez-tel {
	color: inherit;
	text-decoration: none;
	border-bottom: 1px dotted currentColor;
}
.ez-tel:hover,
.ez-tel:focus-visible {
	text-decoration: underline;
	border-bottom-color: transparent;
}

/* Daycares & Schools — logo grid */
.ez-clients {
	margin-block: var(--wp--preset--spacing--40, 2.5rem);
}
.ez-clients-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem;
}
@media (max-width: 900px) {
	.ez-clients-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
	.ez-clients-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 360px) {
	.ez-clients-grid { grid-template-columns: 1fr; }
}
.ez-clients-tile {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.5rem;
	background: #ffffff;
	border: 1px solid var(--line, #ECE7DF);
	border-radius: 12px;
	min-height: 112px;
	transition: box-shadow 180ms ease, transform 180ms ease;
}
.ez-clients-tile a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	text-decoration: none;
}
.ez-clients-tile img {
	max-width: 180px;
	max-height: 64px;
	width: auto;
	height: auto;
	filter: grayscale(100%);
	opacity: 0.85;
	transition: filter 220ms ease, opacity 220ms ease;
}
.ez-clients-tile:hover img,
.ez-clients-tile:focus-within img {
	filter: none;
	opacity: 1;
}
.ez-clients-tile:hover,
.ez-clients-tile:focus-within {
	box-shadow: 0 6px 18px rgba(47, 107, 224, 0.08);
	transform: translateY(-2px);
}
.ez-clients-name {
	font-weight: 600;
	font-size: 1.05rem;
	color: var(--ink, #1F2330);
	text-align: center;
	line-height: 1.3;
}

/* Vita-form input height normalisation — WebKit renders type="date" / "time" /
   "datetime-local" shorter than text/email/number/select by default. Force a
   uniform height so date pickers don't visually shrink in side-by-side rows. */
.vita-form__input,
.vita-form__field textarea,
.vita-form__field select {
	min-height: 2.75rem;
	box-sizing: border-box;
	font: inherit;
}
.vita-form__field textarea {
	min-height: 6rem;
}

/* --- vita-form error highlighting ---------------------------------------- */
/* The JS adds .is-error to .vita-form__field when validation fails.
   We highlight the input, label, message, and summary so users see
   exactly which fields need attention. */
.vita-form__field.is-error .vita-form__input,
.vita-form__field.is-error textarea,
.vita-form__field.is-error select {
	border-color: var(--error);
	background: var(--error-soft);
}
.vita-form__field.is-error .vita-form__input:focus,
.vita-form__field.is-error textarea:focus,
.vita-form__field.is-error select:focus {
	outline: 2px solid var(--error);
	outline-offset: 1px;
}
.vita-form__field.is-error .vita-form__label,
.vita-form__field.is-error > legend {
	color: var(--error);
}
.vita-form__field.is-error .vita-form__error {
	color: var(--error);
	font-weight: 500;
}
/* Checkbox / radio: tint the option labels and the native control */
.vita-form__field.is-error .vita-form__options label {
	color: var(--error);
}
.vita-form__field.is-error input[type="checkbox"],
.vita-form__field.is-error input[type="radio"] {
	accent-color: var(--error);
	outline: 2px solid var(--error);
	outline-offset: 2px;
	border-radius: 2px;
}
/* Signature canvas */
.vita-form__field.is-error canvas {
	border-color: var(--error);
}

/* Summary banner shown above the submit button when one or more fields
   fail validation. The plugin toggles the [hidden] attribute on this
   element; we only need to style its visible state. */
.vita-form__error-summary {
	color: var(--error);
	background: var(--error-soft);
	border: 1px solid rgba(200, 36, 60, 0.35);
	border-radius: var(--r-md, 18px);
	padding: 12px 16px;
	font-size: 14.5px;
	margin: 12px 0 0;
	white-space: pre-line;
}

/* Bring-music CTA on the Daycares & Schools page */
.ez-cta-bring-music {
	margin-top: var(--wp--preset--spacing--50, 3rem);
	padding: var(--wp--preset--spacing--50, 3rem) var(--wp--preset--spacing--40, 2.5rem);
	background: var(--cobalt-soft, #EAF1FE);
	border-radius: 16px;
	text-align: center;
}
.ez-cta-bring-music h2 {
	margin-top: 0;
}

/* Daycares & Schools — "we take the load off" pitch */
.ez-centre-pitch {
	margin-block: var(--wp--preset--spacing--60, 4rem);
}
.ez-centre-pitch h2 {
	margin-top: 0;
}
.ez-centre-pitch-lead {
	max-width: 48rem;
	margin-inline: auto;
	color: var(--wp--preset--color--muted, #586079);
}
/* Logo-grid caption — small muted line above .ez-clients */
.ez-centre-clients-cap {
	font-size: 0.9rem;
	color: var(--muted, #6B7280);
	margin: 0 0 18px;
}

/* Start Strong funding callout — tangerine-soft card with icon chip */
.ez-funding-callout {
	margin-block: var(--wp--preset--spacing--60, 4rem);
	background: var(--tang-soft);
	border: 1px solid rgba(255, 138, 61, 0.25);
	border-radius: var(--r-lg, 16px);
	padding: 36px 40px;
	display: grid;
	grid-template-columns: 56px 1fr;
	gap: 24px;
	align-items: start;
}
.ez-funding-callout__icon {
	width: 56px;
	height: 56px;
	border-radius: 999px;
	background: var(--tang);
	color: #fff;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 28px;
	font-weight: 700;
}
.ez-funding-callout h2 {
	margin: 0 0 8px;
}
.ez-funding-callout p {
	margin: 0;
	max-width: 56ch;
}
@media (max-width: 560px) {
	.ez-funding-callout {
		grid-template-columns: 1fr;
		padding: 24px 22px;
	}
}

/* Daycare / schools enquiry form section — white card */
.ez-centre-form {
	margin-block: var(--wp--preset--spacing--60, 4rem);
	background: #fff;
	border: 1px solid var(--line);
	border-radius: var(--r-lg, 16px);
	padding: 48px;
	box-shadow: 0 8px 24px rgba(23, 32, 55, 0.05);
}
@media (max-width: 760px) {
	.ez-centre-form { padding: 28px 22px; }
}
.ez-centre-form h2 {
	margin-top: 0;
}
.ez-centre-form > p {
	max-width: 44rem;
	margin-inline: auto;
}
.ez-centre-form .vita-form {
	max-width: 44rem;
	margin-inline: auto;
}
.ez-centre-phone-cta {
	margin-top: 24px;
	padding-top: 20px;
	border-top: 1px dashed var(--line);
	font-size: 0.95rem;
	color: var(--muted);
	text-align: center;
}
.ez-centre-phone-cta a {
	color: var(--cobalt-dark);
	font-weight: 600;
	text-decoration: none;
}
.ez-centre-phone-cta a:hover { text-decoration: underline; }

/* ==========================================================================
   Daycares & Schools — polish (2026-05-26)
   New component rules that match the class-name contract agreed with the
   pattern-file agent. Tasks: hero actions, eyebrow, pitch-card grid, facts
   block, sticker pill, focus/reduced-motion for logo tiles, lead scoping.
   ========================================================================== */

/* Task 3: Focus ring on logo tiles */
.ez-clients-tile a:focus-visible {
	outline: 2px solid var(--cobalt);
	outline-offset: 3px;
	border-radius: 12px;
}

/* Task 4: Reduced motion — disable logo tile transitions */
@media (prefers-reduced-motion: reduce) {
	.ez-clients-tile,
	.ez-clients-tile:hover,
	.ez-clients-tile img,
	.ez-clients-tile:hover img { transition: none; transform: none; }
}

/* Task 6: Hero CTA button row */
.ez-centre-hero-actions {
	margin-top: 28px;
}

/* Task 7: Eyebrow above H1 */
.ez-centre-eyebrow {
	display: inline-block;
	margin-bottom: 14px;
	font-family: var(--font-sans);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--cobalt);
}

/* Task 8: Lead paragraph scoped to Daycares & Schools page */
.page-daycares-schools .ez-lead {
	max-width: 56ch;
	margin-left: auto;
	margin-right: auto;
}

/* Task 9: Pitch card grid — 3-col cobalt-soft cards with icon chip */
.ez-centre-pitch-grid {
	list-style: none;
	margin: 32px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}
.ez-centre-pitch-card {
	background: var(--cobalt-soft);
	border-radius: var(--r-md);
	padding: 28px 24px;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.ez-centre-pitch-card__icon {
	width: 44px;
	height: 44px;
	border-radius: 999px;
	background: var(--tang);
	color: #fff;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 22px;
	margin-bottom: 4px;
}
.ez-centre-pitch-card h3 {
	font-family: var(--font-sans);
	font-weight: 600;
	font-size: 1.0625rem;
	color: var(--ink);
	margin: 0;
	line-height: 1.3;
}
.ez-centre-pitch-card p {
	margin: 0;
	font-size: 0.95rem;
	line-height: 1.5;
	color: var(--ink);
}
@media (max-width: 900px) {
	.ez-centre-pitch-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
	.ez-centre-pitch-grid { grid-template-columns: 1fr; }
}

/* Task 11: "Start Strong eligible" sticker pill */
.ez-centre-sticker {
	display: inline-block;
	background: var(--sun, #FFD66B);
	color: var(--ink);
	font-family: var(--font-sans);
	font-weight: 700;
	font-size: 13px;
	padding: 8px 14px;
	border-radius: 999px;
	transform: rotate(-2deg);
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}

/* Task 12: "What a visit looks like" 4-up facts grid */
.ez-centre-facts {
	margin-block: var(--wp--preset--spacing--50, 3rem);
}
.ez-centre-facts__grid {
	list-style: none;
	margin: 24px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 18px;
}
.ez-centre-facts__item {
	background: #fff;
	border: 1px solid var(--line);
	border-radius: var(--r-md);
	padding: 20px 18px;
	text-align: left;
}
.ez-centre-facts__item strong {
	display: block;
	font-family: var(--font-sans);
	font-weight: 700;
	font-size: 1.3rem;
	color: var(--cobalt-dark);
	line-height: 1.1;
	margin-bottom: 4px;
}
.ez-centre-facts__item span {
	font-size: 0.9rem;
	color: var(--muted);
}
@media (max-width: 760px) {
	.ez-centre-facts__grid { grid-template-columns: repeat(2, 1fr); }
}

/* ==========================================================================
   Locations: 5-day class calendar (replaces the old 3-col timetable)
   ========================================================================== */

/* Reusable age chip — used by the calendar today, but designed so any future
   surface that tags a class by age can drop in <span class="ez-age-chip
   ez-age-chip--toddlers">Toddlers</span> and pick up the brand colour. */
.ez-age-chip {
	display: inline-flex;
	align-items: center;
	font-family: var(--font-sans);
	font-weight: 600;
	font-size: 0.85rem;
	letter-spacing: 0.01em;
	padding: 6px 12px;
	border-radius: 999px;
	line-height: 1.1;
	white-space: nowrap;
}
.ez-age-chip--babies       { background: var(--age-babies-bg);       color: var(--age-babies-fg); }
.ez-age-chip--toddlers     { background: var(--age-toddlers-bg);     color: var(--age-toddlers-fg); }
.ez-age-chip--preschoolers { background: var(--age-preschoolers-bg); color: var(--age-preschoolers-fg); }

/* Calendar grid — 6 columns (time gutter + 5 days), N rows of class times.
   Implemented with CSS grid on the wrapper + flat row markup; each row is
   itself a 6-col grid for clean column alignment between header + body. */
.ez-loc-cal {
	margin: 18px 0 6px;
	border: 1px solid var(--line);
	border-radius: var(--r-md);
	background: #fff;
	overflow: hidden;
}
.ez-loc-cal__row {
	display: grid;
	grid-template-columns: 92px repeat(5, minmax(0, 1fr));
	border-top: 1px solid var(--line);
}
.ez-loc-cal__row:first-child {
	border-top: 0;
}
.ez-loc-cal__row--head {
	background: var(--paper);
	font-family: var(--font-sans);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--muted);
}
.ez-loc-cal__time,
.ez-loc-cal__day {
	padding: 12px 10px;
	display: flex;
	align-items: center;
	justify-content: flex-start;
	border-right: 1px solid var(--line);
}
.ez-loc-cal__day { justify-content: center; }
.ez-loc-cal__time {
	font-family: var(--font-sans);
	font-weight: 600;
	font-size: 0.92rem;
	color: var(--ink);
	background: var(--paper);
}
.ez-loc-cal__cell {
	padding: 12px 10px;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	align-items: center;
	justify-content: center;
	border-right: 1px solid var(--line);
	min-height: 56px;
}
/* Anchor chips (aggregate calendar uses <a class="ez-age-chip"…>):
   strip the default link decoration so the chip reads as a chip, not text. */
a.ez-age-chip { text-decoration: none; }
a.ez-age-chip:hover,
a.ez-age-chip:focus-visible {
	transform: translateY(-1px);
	box-shadow: 0 4px 12px -6px rgba(31, 35, 48, 0.25);
	transition: transform 120ms ease, box-shadow 120ms ease;
}

/* Colour-key legend above the aggregate calendar — the chips themselves
   on that view show venue names, so the colour is the only age signal. */
.ez-age-legend {
	list-style: none;
	margin: 8px 0 14px;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 10px 22px;
	font-family: var(--font-sans);
}
.ez-age-legend li {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}
.ez-age-legend__age {
	color: var(--muted);
	font-size: 0.85rem;
}

/* Empty-state for the aggregate calendar when filters return nothing */
.ez-loc-cal-empty {
	padding: 24px 28px;
	background: var(--paper);
	border: 1px dashed var(--line);
	border-radius: var(--r-md);
	color: var(--muted);
	font-size: 0.95rem;
	margin: 18px 0;
}
.ez-loc-cal-empty a { color: var(--cobalt); }
.ez-loc-cal__row > :last-child,
.ez-loc-cal__row--head > :last-child {
	border-right: 0;
}

/* Mobile (≤760px): collapse the grid to per-day stacked cards. Each "row"
   becomes a section showing day + (time → chip) pairs. Header row hides. */
@media (max-width: 760px) {
	.ez-loc-cal {
		border: 0;
		background: transparent;
		display: flex;
		flex-direction: column;
		gap: 14px;
	}
	.ez-loc-cal__row {
		display: grid;
		grid-template-columns: 90px 1fr;
		grid-auto-rows: auto;
		background: #fff;
		border: 1px solid var(--line);
		border-radius: var(--r-md);
		padding: 8px 0;
	}
	/* Header-row hide must come AFTER the generic .ez-loc-cal__row rule —
	   same specificity, so source order decides. */
	.ez-loc-cal__row--head { display: none; }
	.ez-loc-cal__row > .ez-loc-cal__time {
		grid-column: 1;
		grid-row: 1 / span 5;
		border-right: 1px solid var(--line);
		justify-content: center;
	}
	.ez-loc-cal__cell {
		grid-column: 2;
		border-right: 0;
		padding: 6px 14px;
		min-height: 0;
		justify-content: flex-start;
		gap: 8px;
	}
	/* Hide empty mobile cells so each row collapses to just the times that
	   actually have a class. Empty cells have no .ez-age-chip child. */
	.ez-loc-cal__cell:not(:has(.ez-age-chip)) { display: none; }
	.ez-loc-cal__cell::before {
		content: attr(data-day) " — ";
		font-family: var(--font-sans);
		font-size: 0.78rem;
		font-weight: 700;
		letter-spacing: 0.08em;
		text-transform: uppercase;
		color: var(--muted);
	}
}
/* Header CTA — audience-aware swap. The header renders both CTAs always;
   CSS shows the one that matches the page. Default = parent-facing
   (Book a trial class). Daycares & Schools page swaps in the centre CTA.
   WordPress auto-adds body classes `page-<slug>` for static pages, which
   gives us the hook. */
.ez-cta-centre { display: none; }
.page-daycares-schools .ez-cta-parent { display: none; }
.page-daycares-schools .ez-cta-centre { display: inline-flex; }

/* ==========================================================================
   CRO round (2026-05-26) — location pages
   ========================================================================== */

/* Hide the centre-targeted header CTA on every locations page (the
   /locations/ root and every /locations/<slug>/ single page). On those
   pages the audience is parents, not centre directors. */
.singular-ez_location .ez-cta-centre,
.page-locations .ez-cta-centre { display: none; }
.singular-ez_location .ez-cta-parent,
.page-locations .ez-cta-parent { display: inline-flex; }

/* Per-venue: schedule heading + dynamic term subtitle */
.ez-loc-schedule h2 { margin-bottom: 4px; }
.ez-loc-schedule-sub {
	margin: 0 0 18px;
	font-family: var(--font-sans);
	font-size: 0.95rem;
	color: var(--muted);
}
.ez-loc-schedule-cta {
	margin: 0 0 18px;
}

/* Per-venue: clickable Google rating block */
a.ez-loc-rating-link {
	text-decoration: none;
	color: inherit;
}
a.ez-loc-rating-link:hover,
a.ez-loc-rating-link:focus-visible {
	text-decoration: underline;
}

/* Per-venue: sticky mobile "Book a trial" bar.
   Only renders on screens ≤760px (body content area is tall on
   venue pages — schedule + map + parking — so a persistent CTA
   removes the "scroll to find the button" friction). */
.ez-loc-sticky-cta {
	display: none;
}
@media (max-width: 760px) {
	.ez-loc-sticky-cta {
		display: block;
		position: fixed;
		left: 16px;
		right: 16px;
		bottom: 16px;
		padding: 14px 18px;
		background: var(--tang);
		color: #fff;
		text-decoration: none;
		font-family: var(--font-sans);
		font-weight: 700;
		font-size: 1rem;
		text-align: center;
		border-radius: 999px;
		box-shadow: 0 10px 28px -10px rgba(255, 138, 61, 0.85);
		z-index: 60;
	}
	/* Push the page footer up so the sticky CTA never covers content */
	.ez-footer { padding-bottom: 96px; }
}

/* /locations/ — finder lives in the hero band now */
.ez-loc-hero {
	position: relative;
	padding: 56px 0 40px;
	background: var(--cobalt-soft);
	overflow: hidden;
}
.ez-loc-hero::before,
.ez-loc-hero::after {
	content: '';
	position: absolute;
	border-radius: 50%;
	pointer-events: none;
}
.ez-loc-hero::before {
	width: 200px; height: 200px;
	background: var(--sun-soft);
	left: -60px; top: 40px;
	opacity: 0.7;
}
.ez-loc-hero::after {
	width: 280px; height: 280px;
	background: var(--tang-soft);
	right: -80px; top: -40px;
	opacity: 0.7;
}
.ez-loc-hero-inner {
	position: relative;
	z-index: 1;
	max-width: 880px;
	margin-inline: auto;
	padding-inline: 24px;
	text-align: center;
}
.ez-loc-hero h1 {
	margin: 0 0 12px;
	font-family: var(--font-display);
	font-size: clamp(2rem, 1.4rem + 2.2vw, 3.2rem);
	line-height: 1.1;
}
.ez-loc-hero-lead {
	margin: 0 auto 28px;
	max-width: 56ch;
	color: var(--ink);
	font-size: 1.05rem;
	line-height: 1.45;
}

/* Browse-by-venue anchor link — small, sits under the finder */
.ez-loc-browse-link {
	display: inline-block;
	margin-top: 18px;
	font-family: var(--font-sans);
	font-size: 0.95rem;
	color: var(--cobalt-dark);
}

/* Trust strip above the calendar */
.ez-loc-credibility {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 14px;
	justify-content: center;
	align-items: center;
	margin: 14px 0 24px;
	padding: 12px 18px;
	background: #fff;
	border: 1px solid var(--line);
	border-radius: var(--r-md);
	font-family: var(--font-sans);
	font-size: 0.9rem;
	color: var(--ink);
}
.ez-loc-credibility span {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}
.ez-loc-credibility span + span::before {
	content: '·';
	margin-right: 14px;
	color: var(--line);
}

/* Parent testimonial near the lead — small, italic, attributed */
.ez-loc-testimonial {
	margin: 18px auto 24px;
	max-width: 56ch;
	padding: 18px 22px;
	background: var(--paper);
	border-left: 4px solid var(--tang);
	border-radius: 0 var(--r-md) var(--r-md) 0;
	font-style: italic;
	color: var(--ink);
}
.ez-loc-testimonial cite {
	display: block;
	margin-top: 6px;
	font-style: normal;
	font-size: 0.85rem;
	color: var(--muted);
}

/* Unfiltered-calendar prompt: parents land on /locations/ and we
   don't show the firehose. They get a clear next step. */
.ez-loc-cal-prompt {
	margin: 14px 0 22px;
	padding: 28px 32px;
	background: var(--cobalt-soft);
	border-radius: var(--r-md);
	text-align: center;
	font-family: var(--font-sans);
}
.ez-loc-cal-prompt p { margin: 0; }
.ez-loc-cal-prompt p + p { margin-top: 10px; }
.ez-loc-cal-prompt-sub {
	font-size: 0.95rem;
	color: var(--muted);
}
.ez-loc-cal-prompt-sub a {
	color: var(--cobalt-dark);
	text-decoration: underline;
}

/* --- Trials & Casuals CRO blocks ----------------------------------------- */

/* CTA pair — used by [ez_trial_hero] (hero) and [ez_trial_final_cta] (final). */
.ez-trial-cta {
	margin: 22px 0 32px;
	text-align: center;
}
.ez-trial-cta__buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	justify-content: center;
	align-items: center;
}
.ez-trial-cta__primary,
.ez-trial-cta__secondary {
	font-size: 1rem;
	padding: 14px 26px;
	border-radius: var(--r-md);
	font-weight: 600;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	line-height: 1.2;
}
.ez-trial-cta__glyph {
	font-size: 1.05em;
	transform: translateY(-1px);
}
.ez-trial-cta__alt {
	margin: 14px 0 0;
	font-size: 0.95rem;
	color: var(--muted);
}
.ez-trial-cta__alt a {
	color: var(--cobalt-dark);
	text-decoration: underline;
}
.ez-trial-cta__micro {
	margin: 14px 0 0;
	font-size: 0.95rem;
	color: var(--muted);
	font-style: italic;
}

/* Larger variant for the bottom-of-page final CTA. */
.ez-trial-cta--final {
	margin: 36px 0 12px;
	padding: 32px 24px;
	background: var(--cobalt-soft);
	border-radius: var(--r-md);
}
.ez-trial-cta--final .ez-trial-cta__primary,
.ez-trial-cta--final .ez-trial-cta__secondary {
	font-size: 1.05rem;
	padding: 16px 30px;
}

/* 3-tile facts strip. */
.ez-trial-facts {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
	margin: 18px 0 28px;
	font-family: var(--font-sans);
}
.ez-trial-facts__tile {
	background: var(--cobalt-soft);
	border-radius: var(--r-md);
	padding: 22px 20px;
	text-align: center;
}
.ez-trial-facts__tile p { margin: 0; line-height: 1.35; }
.ez-trial-facts__tile p + p { margin-top: 6px; }
.ez-trial-facts__tile strong {
	color: var(--ink);
	font-size: 1.05rem;
}
.ez-trial-facts__sub {
	font-size: 0.92rem;
	color: var(--muted);
}
@media (max-width: 640px) {
	.ez-trial-facts { grid-template-columns: 1fr; }
}

/* Centre the rating badge in its strip. */
.ez-trial-social {
	margin: 36px auto 28px;
	display: flex;
	justify-content: center;
}

/* Aggregate timetable — term tabs */
.ez-loc-cal-tabs {
	display: flex;
	gap: 8px;
	margin: 16px 0 12px;
	flex-wrap: wrap;
}
.ez-loc-cal-tab {
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 999px;
	padding: 8px 18px;
	font: inherit;
	font-weight: 600;
	color: var(--ink);
	cursor: pointer;
}
.ez-loc-cal-tab.is-active {
	background: var(--cobalt);
	color: var(--white);
	border-color: transparent;
}
.ez-loc-cal-tablink {
	background: none;
	border: 0;
	color: var(--cobalt);
	font: inherit;
	text-decoration: underline;
	cursor: pointer;
	padding: 0;
}
.ez-loc-cal-panel[hidden] {
	display: none;
}

/* Locations dropdown — region grouping */
.ez-sub--regions {
	min-width: 520px;
	padding: 16px 20px;
	display: grid;
	grid-template-columns: repeat(2, minmax(180px, 1fr));
	gap: 16px 28px;
}
.ez-sub--regions > a {
	grid-column: 1 / -1;
	font-weight: 600;
	padding-bottom: 8px;
	border-bottom: 1px solid var(--line);
	margin-bottom: 0;
}
.ez-sub-region {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.ez-sub-region__name {
	display: block;
	font-size: 0.78rem;
	font-family: var(--font-display);
	font-weight: 600;
	letter-spacing: -0.012em;
	color: var(--ink);
	margin-bottom: 6px;
}
.ez-sub-region__name::after {
	content: "";
	display: block;
	width: 24px;
	height: 3px;
	border-radius: 999px;
	background: var(--tang);
	margin-top: 4px;
}
@media (max-width: 900px) {
	.ez-sub--regions {
		grid-template-columns: 1fr;
		min-width: 0;
	}
}

/* Per-location schedule — next-term block spacing */
.ez-loc-schedule--next {
	margin-top: 48px;
	padding-top: 32px;
	border-top: 1px solid var(--line);
}
.ez-loc-schedule--next > h2 {
	margin-top: 0;
}
