/* latin */
@font-face {
  font-family: 'Droid Sans';
  font-style: normal;
  font-weight: 400;
  src: url(/assets/7ae78c423476a7.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
  font-family: 'Droid Sans';
  font-style: normal;
  font-weight: 700;
  src: url(/assets/ad2aa2367d2845.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Epilogue';
  font-style: italic;
  font-weight: 400;
  src: url(/assets/e5151c4f396978.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Epilogue';
  font-style: italic;
  font-weight: 400;
  src: url(/assets/75715863f3e735.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Epilogue';
  font-style: italic;
  font-weight: 400;
  src: url(/assets/3846f448cae41a.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Epilogue';
  font-style: italic;
  font-weight: 700;
  src: url(/assets/e5151c4f396978.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Epilogue';
  font-style: italic;
  font-weight: 700;
  src: url(/assets/75715863f3e735.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Epilogue';
  font-style: italic;
  font-weight: 700;
  src: url(/assets/3846f448cae41a.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Epilogue';
  font-style: normal;
  font-weight: 400;
  src: url(/assets/67e3778ece9eda.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Epilogue';
  font-style: normal;
  font-weight: 400;
  src: url(/assets/0a00d92e196853.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Epilogue';
  font-style: normal;
  font-weight: 400;
  src: url(/assets/facd6bc83f42b5.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Epilogue';
  font-style: normal;
  font-weight: 700;
  src: url(/assets/67e3778ece9eda.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Epilogue';
  font-style: normal;
  font-weight: 700;
  src: url(/assets/0a00d92e196853.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Epilogue';
  font-style: normal;
  font-weight: 700;
  src: url(/assets/facd6bc83f42b5.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* === css-only marquee (parity replacement for frozen SQS JS marquee) === */
.cssmarquee {
  overflow: hidden;
  width: 100%;
  display: flex;
  align-items: center;
  white-space: nowrap;
  line-height: 1.4;
}
.cssmarquee__track {
  display: inline-flex;
  flex: 0 0 auto;
  width: max-content;
  align-items: center;
  will-change: transform;
  animation: cssmarquee-scroll var(--cssmarquee-duration, 40s) linear infinite;
}
.cssmarquee[data-direction="right"] .cssmarquee__track { animation-direction: reverse; }
.cssmarquee__item {
  flex: 0 0 auto;
  white-space: nowrap;
  padding: 0 0.28em;           /* spacing around each word / separator */
  /* font-family + text-transform come from the .cssmarquee inline style;
     font-size + color inherit from the .Marquee context per page. */
}
@keyframes cssmarquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .cssmarquee__track { animation: none; transform: translateX(0); }
}
/* === end css-only marquee === */
/* === native HTML5 background video (replaces dead SQS plyr player) === */
.sqs-video-background-native .jc-bg-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  border: 0;
  background: transparent;
  pointer-events: none;
}


/* === self-hosted homepage gallery carousel === */
/* carousel.js hides the Squarespace reel list and builds a clean .jc-track of
   plain <img>s inside the wrapper. The wrapper is the clipping viewport; the
   track is absolutely positioned so height:100% resolves against the wrapper's
   definite height and it can grow wider than the viewport (translateX scrolls
   it). Slides are sized by their image at the reel height -> natural aspect
   ratio, variable width, matching the live reel. */
.jc-carousel .gallery-reel-wrapper {
  position: relative !important;
  overflow: hidden !important;
}
.jc-carousel .jc-track {
  position: absolute;
  top: 0; left: 0;
  height: 100%;
  width: max-content;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  transform: translateX(0);
  will-change: transform;
}
.jc-carousel.jc-anim .jc-track {
  transition: transform 600ms cubic-bezier(.4, 0, .2, 1);
}
.jc-carousel .jc-slide {
  flex: 0 0 auto;
  height: 100%;
  margin: 0 6px;
  display: flex;
  align-items: center;
}
.jc-carousel .jc-slide img {
  height: 100%;
  width: auto;
  max-width: none;
  display: block;
  object-fit: cover;
}
/* keep the existing arrow controls clickable above the track */
.jc-carousel .gallery-reel-controls { position: relative; z-index: 2; pointer-events: none; }
.jc-carousel .gallery-reel-control-btn { pointer-events: auto; cursor: pointer; }
@media (prefers-reduced-motion: reduce) {
  .jc-carousel.jc-anim .jc-track { transition: none !important; }
}
/* === end homepage gallery carousel === */


/* === self-hosted image lightbox === */
.jc-lb[hidden] { display: none; }
.jc-lb {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: center; justify-content: center;
}
.jc-lb__backdrop {
  position: absolute; inset: 0;
  background: rgba(12, 10, 20, 0.94);
  cursor: zoom-out;
}
.jc-lb__stage {
  position: relative; z-index: 1; margin: 0;
  display: flex; flex-direction: column; align-items: center;
  max-width: 92vw; max-height: 88vh;
}
.jc-lb__img {
  max-width: 92vw; max-height: 82vh; width: auto; height: auto;
  object-fit: contain; display: block; border-radius: 2px;
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.55);
}
.jc-lb__img--in { animation: jc-lb-in .25s ease; }
@keyframes jc-lb-in { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }
.jc-lb__count {
  margin-top: 14px; color: #fff;
  font-family: "Epilogue", Arial, sans-serif; font-size: 14px; letter-spacing: .05em;
}
.jc-lb__close, .jc-lb__nav {
  position: absolute; z-index: 2; border: 0; cursor: pointer; color: #fff;
  background: rgba(255, 255, 255, 0.14); line-height: 1;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s ease, transform .15s ease;
}
.jc-lb__close:hover, .jc-lb__nav:hover { background: #ee1baf; }
.jc-lb__close:focus-visible, .jc-lb__nav:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.jc-lb__close {
  top: 18px; right: 22px; width: 44px; height: 44px; border-radius: 50%; font-size: 26px;
}
.jc-lb__nav {
  top: 50%; transform: translateY(-50%); width: 54px; height: 54px; border-radius: 50%; font-size: 34px;
}
.jc-lb__nav:hover { transform: translateY(-50%) scale(1.06); }
.jc-lb__prev { left: 22px; }
.jc-lb__next { right: 22px; }
@media (max-width: 600px) {
  .jc-lb__nav { width: 44px; height: 44px; font-size: 28px; }
  .jc-lb__prev { left: 8px; } .jc-lb__next { right: 8px; }
  .jc-lb__img { max-width: 96vw; }
  .jc-lb__close { top: 10px; right: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .jc-lb__img--in { animation: none; }
  .jc-lb__close, .jc-lb__nav { transition: none; }
}
/* === end image lightbox === */


/* === form validation + submit states === */
.jc-form-err {
  color: #b00020;
  font-family: 'Epilogue', Arial, sans-serif;
  font-size: 0.8rem;
  line-height: 1.35;
  margin: 6px 0 0;
}
.jc-form-err[hidden] { display: none; }
[data-jc-form] [aria-invalid="true"] {
  outline: 2px solid #b00020;
  outline-offset: 1px;
}
.jc-form-status {
  font-family: 'Epilogue', Arial, sans-serif;
  font-size: 0.95rem;
  line-height: 1.45;
  padding: 14px 18px;
  border-radius: 6px;
  margin: 0 0 18px;
}
.jc-form-status:focus { outline: 2px solid hsl(318, 86%, 52%); outline-offset: 2px; }
.jc-form-status--ok {
  background: hsl(318, 86%, 96%);
  border: 1px solid hsl(318, 86%, 85%);
  color: hsl(229.71, 43.21%, 15.88%);
}
.jc-form-status--err {
  background: #fdecea;
  border: 1px solid #f5c6cb;
  color: #8a1c1c;
}
.jc-form-status a { color: hsl(318, 86%, 42%); font-weight: 700; }
[data-jc-form] button[disabled] { opacity: 0.6; cursor: progress; }
.jc-turnstile { margin: 4px 0 18px; display: flex; flex-direction: column; align-items: center; }
.jc-turnstile:focus { outline: none; }
.jc-turnstile .jc-form-err { text-align: center; }
/* === end form validation === */


/* === class schedule component === */
.jc-schedule {
  --jc-navy: hsl(229.71, 43.21%, 15.88%);   /* site "black" */
  --jc-pink: hsl(318, 86%, 52%);            /* brand hot pink */
  display: block;
  width: 100%;
}
.jc-schedule__panel {
  max-width: 1180px;
  margin: 0 auto;
  background: rgba(255, 255, 255, 0.97);    /* near-solid: legible over motion */
  border-radius: 6px;
  padding: clamp(20px, 3.2vw, 40px);
  box-shadow: 0 12px 44px rgba(0, 0, 0, 0.38);
}
.jc-schedule__head { text-align: center; margin-bottom: clamp(18px, 2.4vw, 28px); }
.jc-schedule__title {
  font-family: 'Droid Sans', Arial, sans-serif;
  font-weight: 700;
  color: var(--jc-navy);
  margin: 0 0 8px;
  font-size: clamp(1.5rem, 1rem + 2vw, 2.25rem);
  line-height: 1.15;
}
.jc-schedule__note {
  display: inline-block;
  font-family: 'Epilogue', Arial, sans-serif;
  font-weight: 700;
  color: var(--jc-pink);
  background: hsl(318, 86%, 96%);
  border: 1px solid hsl(318, 86%, 88%);
  border-radius: 4px;
  padding: 6px 14px;
  margin: 0 0 18px;
  font-size: 0.9rem;
  letter-spacing: 0.02em;
}
/* Legend --------------------------------------------------------------- */
.jc-legend {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 18px;
}
.jc-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: 'Epilogue', Arial, sans-serif;
  color: var(--jc-navy);
  font-size: 0.82rem;
}
.jc-legend__swatch {
  width: 14px; height: 14px;
  border-radius: 3px;
  background: var(--band);
  flex: 0 0 auto;
}
.jc-legend__label { font-weight: 700; }
.jc-legend__age { opacity: 0.72; }
/* Day grid ------------------------------------------------------------- */
.jc-schedule__grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);   /* day COLUMNS on desktop */
  gap: 14px;
  align-items: start;
}
.jc-day {
  min-width: 0;
  background: #fff;
  border: 1px solid hsl(318, 30%, 90%);
  border-radius: 6px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.jc-day__name {
  margin: 0;
  background: var(--jc-navy);
  color: #fff;
  font-family: 'Droid Sans', Arial, sans-serif;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.82rem;
  text-align: center;
  padding: 9px 6px;
}
.jc-day__list {
  list-style: none;
  margin: 0;
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1 1 auto;
}
/* Class tile ----------------------------------------------------------- */
.jc-class {
  display: flex;
  flex-direction: column;
  gap: 2px;
  border-left: 6px solid var(--band);
  background: var(--band-wash);
  border-radius: 4px;
  padding: 8px 10px;
  color: var(--jc-navy);
}
.jc-class__time {
  font-family: 'Epilogue', Arial, sans-serif;
  font-weight: 700;
  font-size: 0.8rem;
  color: var(--jc-navy);
}
.jc-class__name {
  font-family: 'Epilogue', Arial, sans-serif;
  font-weight: 600;
  font-size: 0.9rem;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.jc-class__age {
  font-family: 'Epilogue', Arial, sans-serif;
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--jc-navy);
  opacity: 0.78;
}
/* Friday / closed ------------------------------------------------------ */
.jc-day--closed { opacity: 0.96; }
.jc-day__closed {
  margin: 0;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 18px 10px;
  min-height: 84px;
  background: repeating-linear-gradient(
    -45deg,
    hsl(229, 22%, 96%),
    hsl(229, 22%, 96%) 8px,
    hsl(229, 22%, 93%) 8px,
    hsl(229, 22%, 93%) 16px
  );
  font-family: 'Droid Sans', Arial, sans-serif;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--jc-navy);
  font-size: 0.9rem;
}
.jc-day__closed-sub {
  font-family: 'Epilogue', Arial, sans-serif;
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  font-size: 0.72rem;
  opacity: 0.7;
}
/* Age-band colour tokens (brand palette only) -------------------------- */
.jc-class--preschool { --band: hsl(318, 86%, 72%); --band-wash: hsl(318, 86%, 97%); }
.jc-class--mini      { --band: hsl(318, 86%, 58%); --band-wash: hsl(318, 84%, 95%); }
.jc-class--youth     { --band: hsl(318, 86%, 50%); --band-wash: hsl(318, 82%, 93%); }
.jc-class--teen      { --band: hsl(318, 74%, 37%); --band-wash: hsl(318, 45%, 93%); }
.jc-class--adult     { --band: hsl(229.71, 40%, 32%); --band-wash: hsl(229, 22%, 95%); }
/* Responsive: stacked day cards on tablet / phone ---------------------- */
@media (max-width: 991px) {
  .jc-schedule__grid { grid-template-columns: 1fr 1fr; gap: 12px; }
}
@media (max-width: 599px) {
  .jc-schedule__grid { grid-template-columns: 1fr; }   /* fully stacked on phones */
  .jc-class__name { font-size: 0.95rem; }
  .jc-class__time { font-size: 0.85rem; }
}
/* === end class schedule component === */

/* === pricing tables component === */
.jc-ptable {
  --jc-navy: hsl(229.71, 43.21%, 15.88%);
  width: 100%;
  border-collapse: collapse;
  background: #fff;
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 12px 44px rgba(0, 0, 0, 0.30);
  font-family: 'Epilogue', Arial, sans-serif;
  color: var(--jc-navy);
  margin: 8px 0;
}
.jc-ptable caption {
  caption-side: top;
  background: var(--jc-navy);
  color: #fff;
  font-family: 'Droid Sans', Arial, sans-serif;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.95rem;
  padding: 12px 14px;
  text-align: center;
}
.jc-ptable thead th {
  background: hsl(318, 86%, 96%);
  color: var(--jc-navy);
  font-family: 'Droid Sans', Arial, sans-serif;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  font-size: 0.76rem;
  padding: 10px 14px;
  border-bottom: 2px solid hsl(318, 40%, 88%);
}
.jc-ptable th, .jc-ptable td {
  padding: 11px 14px;
  border-bottom: 1px solid hsl(318, 30%, 92%);
  font-size: 0.95rem;
}
.jc-ptable tbody th { text-align: left; font-weight: 700; }
.jc-ptable thead th:last-child,
.jc-ptable td { text-align: right; }
.jc-ptable td { font-weight: 700; font-variant-numeric: tabular-nums; }
.jc-ptable tbody tr:nth-child(even) { background: hsl(318, 86%, 98.5%); }
.jc-ptable tbody tr:last-child th,
.jc-ptable tbody tr:last-child td { border-bottom: 0; }
/* release the old Squarespace image-block wrappers that framed the JPGs */
.image-block-outer-wrapper:has(.jc-ptable),
.fluid-image-component-root:has(.jc-ptable),
.fluid-image-animation-wrapper:has(.jc-ptable),
.fluid-image-container:has(.jc-ptable),
.js-content-mode-element-wrapper:has(.jc-ptable),
.js-content-mode-element:has(.jc-ptable) {
  height: auto !important;
  min-height: 0 !important;
  aspect-ratio: auto !important;
}
/* === end pricing tables component === */
