/*
Theme Name: S-pression
Theme URI: https://www.s-pression.be/
Author: S-pression
Description: Custom editable WordPress theme for Dans- & balletstudio S-pression.
Version: 1.0.0
Requires at least: 6.7
Requires PHP: 7.3
Text Domain: spression
*/

:root {
  --sp-ink: #180d1d;
  --sp-plum: #4a123e;
  --sp-pink: #d62f73;
  --sp-coral: #ff7664;
  --sp-cream: #fff8ef;
  --sp-white: #fff;
  --sp-border: rgb(24 13 29 / 12%);
  --sp-radius: 1.125rem;
  --sp-container: 1180px;
  --sp-page-title-size: clamp(2.75rem, 5vw, 4.5rem);
  --sp-page-lead-size: clamp(1rem, 1.45vw, 1.18rem);
}

html { scroll-behavior: smooth; }
body { overflow-x: hidden; }
.sp-skip-link { position: fixed; z-index: 100000; top: .5rem; left: .5rem; padding: .65rem .9rem; transform: translateY(-150%); color: var(--sp-white); background: var(--sp-ink); }
.sp-skip-link:focus { transform: translateY(0); }
.wp-site-blocks > header.wp-block-template-part,
.wp-site-blocks > main { margin-block-start: 0; }
a { text-underline-offset: .2em; }
.sp-eyebrow { margin-bottom: .65rem; color: var(--sp-pink); font-size: .75rem; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
.sp-section-heading,
.sp-impression-head h2,
.sp-contact-intro h2 { margin-top: 0; font-size: clamp(2.35rem, 4.2vw, 3.8rem) !important; line-height: 1.02; letter-spacing: -.05em; }
.sp-section-heading { max-width: 13ch; }
.sp-link { font-weight: 750; text-decoration: none; }

/* Keep homepage content away from viewport edges while backgrounds remain full width. */
.home .sp-header-actions,
.home .sp-hero-inner,
.home .sp-welcome-grid,
.home .sp-impression-inner,
.home .sp-styles-head,
.home .sp-style-grid,
.home .sp-practical-grid,
.home .sp-contact-inner {
  width: calc(100% - 2rem);
  max-width: var(--sp-container) !important;
  margin-inline: auto !important;
  box-sizing: border-box;
}

/* Header */
.sp-header { position: absolute; z-index: 20; top: 0; right: 0; left: 0; padding-block: .75rem !important; color: var(--sp-white); }
.home.admin-bar .sp-header { top: 32px; }
.sp-header-actions { width: calc(100% - 2rem); max-width: var(--sp-container); min-height: 11.25rem; display: flex !important; align-items: center; justify-content: space-between; flex-wrap: nowrap; gap: 1.4rem; margin-inline: auto; box-sizing: border-box; border-bottom: 1px solid rgb(255 255 255 / 22%); }
.sp-brand { display: inline-flex; flex: 0 0 auto; align-items: center; gap: .8rem; color: inherit !important; text-decoration: none; }
.sp-brand-logo { display: block; width: 11.25rem; max-width: 11.25rem; height: 11.25rem; object-fit: contain; }
.sp-brand-copy { display: grid !important; gap: .15rem; line-height: 1; }
.sp-brand-copy strong { font-family: var(--wp--preset--font-family--display); font-size: 1.18rem; letter-spacing: -.035em; }
.sp-brand-copy small { font-size: .68rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; opacity: .8; }
.sp-primary-nav { margin-left: auto; }
.sp-menu { display: flex; align-items: center; gap: clamp(.85rem, 1.7vw, 1.55rem); margin: 0; padding: 0; list-style: none; }
.sp-menu > li { position: relative; }
.sp-primary-nav a { color: inherit; font-size: 1rem; font-weight: 700; text-decoration: none; }
.sp-primary-nav a:hover, .sp-primary-nav .current-menu-item > a, .sp-primary-nav .current-menu-ancestor > a { color: var(--sp-coral); }
.sp-menu .menu-item-has-children > a { display: inline-flex; align-items: center; gap: .38rem; }
.sp-menu .menu-item-has-children > a::after { content: ""; width: .38rem; height: .38rem; transform: translateY(-.12rem) rotate(45deg); border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; }
.sp-menu .sub-menu { position: absolute; z-index: 4; top: calc(100% + .65rem); left: 50%; min-width: 13.5rem; visibility: hidden; margin: 0; padding: .45rem; transform: translate(-50%, .4rem); opacity: 0; border: 1px solid rgb(74 18 62 / 12%); border-radius: .8rem; color: var(--sp-ink); background: rgb(255 255 255 / 98%); box-shadow: 0 1.1rem 2.8rem rgb(24 13 29 / 16%); list-style: none; transition: opacity .18s ease, transform .18s ease, visibility .18s ease; backdrop-filter: blur(16px); }
.sp-menu .sub-menu::before { content: ""; position: absolute; right: 0; bottom: 100%; left: 0; height: .8rem; }
.sp-menu li:hover > .sub-menu, .sp-menu li:focus-within > .sub-menu { visibility: visible; transform: translate(-50%, 0); opacity: 1; }
.sp-menu .sub-menu li + li { border-top: 1px solid rgb(24 13 29 / 7%); }
.sp-menu .sub-menu a { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .68rem .72rem; border-radius: .5rem; color: var(--sp-ink); font-size: .84rem; line-height: 1.25; white-space: nowrap; }
.sp-menu .sub-menu a::after { content: "→"; color: var(--sp-pink); font-size: .85rem; opacity: 0; transform: translateX(-.25rem); transition: opacity .18s ease, transform .18s ease; }
.sp-menu .sub-menu a:hover, .sp-menu .sub-menu .current-menu-item > a { color: var(--sp-plum); background: rgb(214 47 115 / 8%); }
.sp-menu .sub-menu a:hover::after, .sp-menu .sub-menu .current-menu-item > a::after { opacity: 1; transform: translateX(0); }
.sp-header-cta { flex: 0 0 auto; padding: .55rem 1rem; color: var(--sp-white); background: var(--sp-pink); font-size: .85rem; font-weight: 800; text-decoration: none; }
.sp-header-cta:hover { color: var(--sp-white); background: var(--sp-plum); }
.sp-menu-toggle { display: none; width: 2.75rem; height: 2.75rem; padding: .65rem; border: 1px solid currentColor; border-radius: 50%; color: inherit; background: transparent; }
.sp-menu-toggle > span:not(.screen-reader-text) { display: block; width: 100%; height: 2px; margin: 3px 0; background: currentColor; }
.home .sp-header-actions { border-bottom-color: transparent; }
body:not(.home) .sp-header { position: relative; color: var(--sp-ink); background: var(--sp-cream); }
body:not(.home) .sp-header-actions { border-color: var(--sp-border); }

/* Hero: the single intentionally large image */
.sp-hero { min-height: 100svh; position: relative; display: grid; grid-template-rows: minmax(0, 1fr) auto; align-items: stretch; gap: 1rem; padding-bottom: 1.5rem; box-sizing: border-box; isolation: isolate; color: var(--sp-white); background-color: var(--sp-plum); background-image: linear-gradient(90deg, rgb(24 13 29 / 76%) 0%, rgb(24 13 29 / 36%) 42%, rgb(24 13 29 / 5%) 76%), var(--sp-hero-image, url("assets/images/hero.webp")); background-position: center, var(--sp-hero-position, center 46%); background-size: cover, cover; background-repeat: no-repeat; }
.sp-hero::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgb(24 13 29 / 22%) 0%, transparent 28%, transparent 68%, rgb(255 248 239 / 12%) 82%, var(--sp-cream) 100%); pointer-events: none; }
.sp-hero::after { content: ""; position: absolute; right: 0; bottom: -1px; left: 0; height: clamp(7rem, 14vw, 12rem); background: linear-gradient(to bottom, transparent, var(--sp-cream)); pointer-events: none; }
.sp-hero-inner { position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; width: 100%; align-self: stretch; padding-top: 12rem; padding-bottom: 3rem; box-sizing: border-box; }
.sp-hero .sp-eyebrow { color: #ffaaa0; }
.sp-hero-inner > .sp-eyebrow { margin-bottom: .15rem; }
.sp-hero-title { max-width: 10ch; margin: .15em 0 0; font-size: clamp(3rem, 6vw, 5.6rem) !important; letter-spacing: -.055em; }
.sp-hero-tagline { margin: .1rem 0 .65rem; color: #ffaaa0; font-family: var(--wp--preset--font-family--display); font-size: clamp(1.5rem, 2.5vw, 2.15rem); font-weight: 750; letter-spacing: -.035em; }
.sp-hero-copy { max-width: 30rem; margin-bottom: 1.5rem; font-size: clamp(1.05rem, 1.6vw, 1.25rem) !important; line-height: 1.5; }
.sp-hero-inner > .sp-hero-copy { margin-top: .5rem; margin-bottom: 0; }
.sp-hero-inner > .sp-hero-copy + .wp-block-buttons { margin-top: 1rem; }
.sp-button-outline .wp-block-button__link { color: inherit; border: 1px solid currentColor; background: transparent; }

/* Editorial news panel, kept visible inside the first viewport. */
.sp-current { position: relative; z-index: 4; width: calc(100% - 2rem); max-width: var(--sp-container); overflow: hidden; display: grid; grid-template-columns: 9.25rem minmax(0, 1fr); margin-inline: auto; border: 1px solid rgb(255 255 255 / 64%); border-radius: var(--sp-radius); background: rgb(255 255 255 / 94%); box-shadow: 0 1.25rem 3.5rem rgb(24 13 29 / 20%); backdrop-filter: blur(18px); }
.sp-current-heading { min-height: 8.5rem; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: .45rem; padding: 1.15rem 1.1rem; box-sizing: border-box; color: var(--sp-white); background: linear-gradient(145deg, var(--sp-pink), #76164f); }
.sp-current a.sp-current-heading { color: var(--sp-white); text-decoration: none; transition: filter .2s ease; }
.sp-current a.sp-current-heading:hover { text-decoration: none; filter: brightness(1.08); }
.sp-current a.sp-current-heading:focus-visible { outline: 3px solid currentColor; outline-offset: -6px; }
.sp-current-heading h2 { margin: 0; color: inherit; font-family: inherit; font-size: .75rem; font-weight: 900; line-height: 1.2; letter-spacing: .14em; text-transform: uppercase; }
.sp-current-heading h2::before { content: none; }
.sp-current-heading strong { max-width: 100%; color: inherit; font-family: var(--wp--preset--font-family--display); font-size: 1.08rem; line-height: 1.2; white-space: normal; text-wrap: balance; }
.sp-current-items { min-width: 0; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); }
.sp-current-items-count-5 { --sp-current-card-span: 4; }
.sp-current-item { position: relative; min-width: 0; flex: 1 1 0; display: grid; align-content: center; gap: .14rem; padding: .8rem 1.05rem; box-sizing: border-box; color: var(--sp-ink); }
.sp-current-item + .sp-current-item { border-left: 1px solid var(--sp-border); }
.sp-current-item { grid-column: span var(--sp-current-card-span, 3); }
.sp-current-item:nth-last-child(-n + 2) { grid-column: span 6; }
.sp-current-item:nth-last-child(2) { border-left: 0; }
.sp-current-item:nth-last-child(-n + 2) { border-top: 1px solid var(--sp-border); }
.sp-current-item:hover { background: rgb(214 47 115 / 4%); }
.sp-current-label { color: var(--sp-pink); font-size: .68rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.sp-current-item h3 { overflow: hidden; display: -webkit-box; margin: 0; font-family: inherit; font-size: clamp(1rem, 1.12vw, 1.1rem); line-height: 1.2; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.sp-current-summary { overflow: hidden; display: -webkit-box; margin: .08rem 0 0; color: rgb(24 13 29 / 58%); font-size: clamp(.76rem, .9vw, .84rem); line-height: 1.28; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.sp-current-actions { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .4rem; }
.sp-current-action { display: inline-flex; align-items: center; gap: .25rem; padding: .36rem .62rem; color: var(--sp-plum) !important; border: 1px solid rgb(74 18 62 / 22%); border-radius: 999px; background: rgb(255 255 255 / 45%); font-size: .74rem; font-weight: 850; line-height: 1.25; text-decoration: none; transition: color .2s ease, border-color .2s ease, background .2s ease; }
.sp-current-action::after { content: none; }
.sp-current-action:hover { color: var(--sp-pink) !important; border-color: var(--sp-pink); background: var(--sp-white); }

/* Restrained welcome section */
.sp-welcome { padding-block: clamp(3.25rem, 5vw, 4.5rem); }
.sp-welcome-grid { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center !important; gap: clamp(2rem, 4vw, 4rem) !important; }
.sp-welcome-copy { max-width: 35rem; }
.sp-welcome-copy .sp-lead { font-size: clamp(1.05rem, 1.6vw, 1.25rem) !important; }
.sp-welcome-visual { flex: 0 1 21rem !important; }
.sp-welcome-image { display: block; width: 100%; height: auto; overflow: hidden; margin: 0; border-radius: var(--sp-radius); }
.sp-welcome-image img { display: block; width: 100%; height: auto; }
.sp-facts { display: flex !important; gap: 2rem; margin-top: 2rem; padding-top: 1.25rem; border-top: 1px solid var(--sp-border); }
.sp-facts > .sp-fact { margin-block-start: 0 !important; }
.sp-fact p { margin: 0; }
.sp-fact strong { display: block; color: var(--sp-plum); font-size: 1.4rem; }
.sp-fact span { font-size: .85rem; }

/* A controlled photo collage that gives an honest impression of the school. */
.sp-impression { position: relative; z-index: 1; padding-block: clamp(3.25rem, 5vw, 4.5rem); background: var(--sp-white); box-shadow: 0 -1.5rem 3.5rem rgb(24 13 29 / 5%); }
.sp-impression-inner { width: calc(100% - 2rem); max-width: var(--sp-container); margin-inline: auto; box-sizing: border-box; }
.sp-impression-head { display: grid; grid-template-columns: 1fr; align-items: start; gap: 1rem; margin-bottom: 2rem; }
.sp-impression-head h2 { max-width: 22ch; margin-bottom: 0; }
.sp-impression-head > div:last-child { padding-bottom: 0; }
.sp-impression-head > div:last-child p { max-width: 42rem; margin: 0; color: rgb(24 13 29 / 68%); }
.sp-impression-collage { display: grid; grid-template-columns: 1.15fr .85fr .85fr; grid-template-rows: 11.5rem 11.5rem; gap: .8rem; }
.sp-impression-photo { position: relative; overflow: hidden; margin: 0; border-radius: var(--sp-radius); background: #eadfe5; }
.sp-impression-photo img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }
.sp-impression-photo:hover img { transform: scale(1.025); }
.sp-impression-main { grid-row: 1 / 3; }
.sp-impression-wide { grid-column: 2 / 4; }

/* Equal and controlled style cards */
.sp-styles { padding-block: clamp(3.75rem, 6vw, 5.5rem); color: var(--sp-white); background: var(--sp-ink); }
.sp-styles-head { margin-bottom: 2rem; }
.sp-styles .sp-section-heading { margin-bottom: 0; }
.sp-styles .sp-link { color: #ffaaa0; }
.sp-style-grid { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 1fr; align-items: stretch; gap: 1.1rem; }
.sp-style-grid > .sp-style-card { margin-block: 0 !important; }
.sp-style-card { min-height: 20rem; height: auto; overflow: hidden; display: flex; flex-direction: column; box-sizing: border-box; border: 1px solid rgb(255 255 255 / 14%); border-radius: var(--sp-radius); background: #24152b; transition: transform .25s ease, border-color .25s ease; }
.sp-style-card > .sp-style-media,
.sp-style-card > .sp-style-content { margin-block-start: 0 !important; }
.sp-style-card:hover { transform: translateY(-4px); border-color: rgb(255 255 255 / 30%); }
.sp-style-media { display: block; flex: 0 0 auto; width: 100%; height: 10.5rem; overflow: hidden; margin: 0; }
.sp-style-media img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.sp-style-content { min-height: 9rem; flex: 1; display: flex; flex-direction: column; padding: 1.25rem; box-sizing: border-box; }
.sp-style-content h3 { height: 1.25em; min-height: 1.25em; display: flex; align-items: flex-end; margin: 0 0 .65rem; font-size: clamp(1.05rem, 1.35vw, 1.25rem); white-space: nowrap; }
.sp-style-content p { margin: 0; color: rgb(255 255 255 / 72%); font-size: .92rem; }
.sp-styles-more { justify-content: center; margin-top: 2.5rem; }
.sp-styles-more .wp-block-button__link { padding: .75rem 1.15rem; font-size: .85rem; }

/* Practical information: compact, scannable navigation cards. */
.sp-practical { padding-block: clamp(3.25rem, 5vw, 4.5rem); background: linear-gradient(180deg, var(--sp-white) 0, var(--sp-cream) 4rem, var(--sp-cream) 100%); }
.sp-practical-grid { display: grid !important; grid-template-columns: minmax(15rem, .62fr) minmax(0, 1.38fr); align-items: stretch !important; gap: clamp(2rem, 5vw, 5rem) !important; }
.sp-practical-grid > .sp-practical-intro,
.sp-practical-grid > .sp-document-list,
.sp-document-list > .sp-document-row,
.sp-document-row > * { margin-block-start: 0 !important; }
.sp-practical-intro { flex: 0 1 35% !important; padding-top: .4rem; }
.sp-practical-intro > :last-child { max-width: 30rem; }
.sp-document-list { flex: 1 1 55% !important; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .85rem; }
.sp-document-row { position: relative; overflow: hidden; min-height: 11.5rem; display: flex; flex-direction: column; align-items: flex-start; padding: 1.15rem; box-sizing: border-box; border: 1px solid var(--sp-border); border-radius: 1rem; background: linear-gradient(155deg, var(--sp-white) 0%, #fff 68%, #fdf7fa 100%); box-shadow: 0 .7rem 2rem rgb(65 17 55 / 6%); transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease, background .22s ease; }
.sp-document-row::after { content: ""; position: absolute; right: -2.1rem; top: -2.1rem; width: 5.5rem; height: 5.5rem; border-radius: 50%; background: rgb(214 47 115 / 8%); pointer-events: none; transition: transform .22s ease, background .22s ease; }
.sp-document-row:hover,
.sp-document-row:focus-within { transform: translateY(-3px); border-color: rgb(214 47 115 / 32%); background: linear-gradient(155deg, var(--sp-white) 0%, #fff 55%, #fcebf3 100%); box-shadow: 0 1rem 2.4rem rgb(65 17 55 / 10%); }
.sp-document-row:hover::after { transform: scale(1.12); background: rgb(214 47 115 / 12%); }
.sp-document-eyebrow { position: relative; z-index: 1; margin: 0 0 .45rem !important; color: var(--sp-pink) !important; font-size: .68rem !important; font-weight: 900; letter-spacing: .105em; line-height: 1.2; text-transform: uppercase; }
.sp-document-copy { position: relative; z-index: 1; margin-top: .65rem !important; }
.sp-document-row h3, .sp-document-row p { margin: 0; }
.sp-document-row h3 { font-size: clamp(1.05rem, 1.3vw, 1.2rem); line-height: 1.15; }
.sp-document-row p { color: rgb(24 13 29 / 62%); font-size: .8rem; line-height: 1.45; }
.sp-document-link { position: static; margin-top: auto !important; padding-top: 1.1rem; }
.sp-document-row a { display: inline-flex; align-items: center; color: var(--sp-plum); font-size: .82rem; font-weight: 800; text-decoration: none; }
.sp-document-row a::after { content: ""; position: absolute; z-index: 3; inset: 0; }
.sp-document-row a:hover { color: var(--sp-pink); }

/* Embedded schedules and other practical documents. */
.sp-document-viewer { width: 100%; min-width: 0; max-width: 100%; overflow: hidden; margin-block: 2.5rem; box-sizing: border-box; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 1.25rem 3.5rem rgb(24 13 29 / 10%); }
.sp-document-toolbar { min-height: 4.25rem; padding: .85rem 1.15rem; color: var(--sp-white); background: var(--sp-ink); }
.sp-document-toolbar > div { display: grid; gap: .1rem; }
.sp-document-toolbar strong { font-size: 1rem; }
.sp-document-toolbar span { color: rgb(255 255 255 / 62%); font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.sp-document-toolbar a { color: #ffaaa0; font-size: .85rem; font-weight: 800; text-decoration: none; }
.sp-document-canvas { overflow-x: auto; padding: clamp(.75rem, 3vw, 2rem); background: #ede7e4; overscroll-behavior-inline: contain; }
.sp-document-image { width: 100%; margin: 0 !important; line-height: 0; }
.sp-document-image img { display: block; width: 100%; height: auto; border-radius: .5rem; background: var(--sp-white); box-shadow: 0 .6rem 1.8rem rgb(24 13 29 / 14%); }
.sp-document-footer { min-height: 3.75rem; padding: .75rem 1.15rem; border-top: 1px solid var(--sp-border); }
.sp-document-footer p { margin: 0; color: rgb(24 13 29 / 66%); font-size: .78rem; }
.sp-document-footer a { color: var(--sp-plum); font-size: .82rem; font-weight: 800; text-decoration: none; }

/* Location cards on the practical page. */
.sp-location-grid { align-items: stretch !important; gap: 1.25rem !important; margin-block: 2rem 4rem; }
.sp-location-grid > .wp-block-column { display: flex; }
.sp-location-card { width: 100%; overflow: hidden; display: flex; flex-direction: column; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 .8rem 2.4rem rgb(24 13 29 / 8%); }
.sp-location-map { position: relative; height: 12rem; background: #e8e0dc; }
.sp-location-map iframe { display: block; width: 100%; height: 100%; border: 0; }
.sp-location-map .sp-map-open { position: absolute; z-index: 2; top: .75rem; left: .75rem; display: inline-flex; align-items: center; gap: .4rem; padding: .5rem .75rem; border: 1px solid rgb(255 255 255 / 75%); border-radius: 999px; color: var(--sp-plum); background: rgb(255 255 255 / 94%); box-shadow: 0 .25rem .8rem rgb(24 13 29 / 16%); font-size: .78rem; font-weight: 850; text-decoration: none; }
.sp-location-map .sp-map-open::before { content: ""; width: .55rem; height: .55rem; border: .18rem solid var(--sp-pink); border-radius: 50% 50% 50% 0; transform: rotate(-45deg); }
.sp-location-map .sp-map-open:hover { color: var(--sp-pink); background: #fff; }
.sp-location-map > .cmplz-consent-area { height: 100%; display: grid; place-items: center; padding: 1.25rem; box-sizing: border-box; text-align: center; }
.sp-location-map > .cmplz-consent-area a { max-width: 15rem; color: var(--sp-plum); font-size: .85rem; font-weight: 850; line-height: 1.35; }
.sp-location-info { flex: 1; display: flex !important; flex-direction: column; padding: 1.25rem; }
.sp-location-info > * { margin-block-start: .65rem; margin-block-end: 0; }
.sp-location-info > :first-child { margin-block-start: 0; }
.sp-location-info h3 { font-size: 1.35rem; }
.sp-location-info > :last-child { margin-top: auto; padding-top: 1rem; }
.sp-location-city { color: var(--sp-pink); font-size: .7rem; font-weight: 850; letter-spacing: .13em; text-transform: uppercase; }
.sp-route-link { color: var(--sp-plum); font-size: .85rem; font-weight: 850; text-decoration: none; }
.sp-route-link:hover { color: var(--sp-pink); }

/* Homepage contact form */
.sp-contact-section { position: relative; overflow: hidden; padding-block: clamp(4.5rem, 7vw, 6.5rem); color: var(--sp-white); background: radial-gradient(circle at 9% 20%, rgb(214 47 115 / 38%), transparent 26rem), radial-gradient(circle at 88% 85%, rgb(255 118 100 / 20%), transparent 23rem), linear-gradient(135deg, var(--sp-ink), var(--sp-plum)); box-shadow: 0 -1.5rem 3.5rem rgb(24 13 29 / 8%); }
.sp-contact-section::before { content: "S"; position: absolute; right: -3rem; bottom: -9rem; color: rgb(255 255 255 / 3%); font-family: var(--wp--preset--font-family--display); font-size: 32rem; font-weight: 900; line-height: 1; pointer-events: none; }
.sp-contact-inner { position: relative; z-index: 1; width: calc(100% - 2rem); max-width: var(--sp-container); display: grid; grid-template-columns: minmax(16rem, .8fr) minmax(24rem, 1.2fr); align-items: center; gap: clamp(2.5rem, 8vw, 7rem); margin-inline: auto; box-sizing: border-box; }
.sp-contact-intro { position: sticky; top: 2rem; }
.sp-contact-intro .sp-eyebrow { color: #ffaaa0; }
.sp-contact-intro h2 { max-width: 11ch; margin-bottom: 1.25rem; }
.sp-contact-intro > p:not(.sp-eyebrow) { max-width: 28rem; margin-bottom: 1.5rem; color: rgb(255 255 255 / 72%); }
.sp-contact-enroll { display: inline-flex; align-items: center; gap: .55rem; padding: .65rem 1rem; color: var(--sp-white); border: 1px solid rgb(255 255 255 / 32%); border-radius: 999px; font-size: .84rem; font-weight: 850; text-decoration: none; }
.sp-contact-enroll:hover { border-color: var(--sp-coral); background: rgb(255 255 255 / 8%); }
.sp-contact-form { position: relative; min-height: 0; height: auto; align-self: center; align-content: start; display: grid; gap: .8rem; padding: clamp(1.2rem, 2.2vw, 1.75rem); color: var(--sp-ink); border: 1px solid rgb(255 255 255 / 70%); border-radius: var(--sp-radius); background: rgb(255 255 255 / 97%); box-shadow: 0 1.25rem 3.5rem rgb(0 0 0 / 18%); }
.sp-form-two-columns { display: grid; grid-template-columns: 1fr 1fr; align-content: start; gap: 1rem; }
.sp-form-row { display: grid; align-content: start; gap: .35rem; }
.sp-form-row label { color: rgb(24 13 29 / 72%); font-size: .76rem; font-weight: 800; }
.sp-form-row input,
.sp-form-row textarea { width: 100%; padding: .75rem .85rem; box-sizing: border-box; color: var(--sp-ink); border: 1px solid rgb(24 13 29 / 14%); border-radius: .55rem; background: #fcfaf8; font: inherit; outline: none; transition: border-color .2s ease, box-shadow .2s ease; }
.sp-form-row textarea { min-height: 8rem; resize: vertical; }
.sp-form-row input:focus,
.sp-form-row textarea:focus { border-color: var(--sp-pink); box-shadow: 0 0 0 3px rgb(214 47 115 / 12%); }
.sp-form-consent { display: grid; grid-template-columns: 1.1rem 1fr; gap: .6rem; align-items: start; color: rgb(24 13 29 / 60%); font-size: .74rem; line-height: 1.45; }
.sp-form-consent input { width: 1.05rem; height: 1.05rem; margin: .15rem 0 0; accent-color: var(--sp-pink); }
.sp-form-consent a { color: var(--sp-plum); font-weight: 800; }
.sp-form-actions { display: grid; justify-items: start; gap: .8rem; }
.sp-form-hidden { display: none; }
.sp-form-submit { width: fit-content; padding: .8rem 1.2rem; color: var(--sp-white); border: 0; border-radius: 999px; background: var(--sp-pink); font: inherit; font-size: .88rem; font-weight: 850; cursor: pointer; }
.sp-form-submit:hover { background: var(--sp-plum); }
.sp-form-message { padding: .8rem 1rem; border-radius: .65rem; font-size: .85rem; font-weight: 750; }
.sp-form-message-success { color: #165c3a; background: #e6f6ed; }
.sp-form-message-error { color: #862f35; background: #fbe9e9; }
.sp-form-trap { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

/* Footer */
.sp-footer { position: relative; overflow: hidden; color: var(--sp-white); background: radial-gradient(circle at 15% 5%, rgb(214 47 115 / 18%), transparent 28rem), linear-gradient(145deg, #180d1d, #26102b); }
.sp-footer::before { content: ""; position: absolute; z-index: 1; top: 0; right: 0; left: 0; height: 3px; background: linear-gradient(90deg, var(--sp-pink), var(--sp-coral), var(--sp-pink)); }
.sp-footer a { color: inherit; }
.sp-footer-main { position: relative; z-index: 2; width: calc(100% - 2rem); max-width: var(--sp-container); display: grid; grid-template-columns: minmax(15rem, 1.25fr) minmax(7rem, .65fr) minmax(10.5rem, .85fr) minmax(10rem, .85fr); align-items: start; gap: clamp(1.25rem, 2.8vw, 3rem); margin-inline: auto; padding-block: 3.5rem 2.5rem; box-sizing: border-box; }
.sp-footer-brand-block { max-width: 28rem; }
.sp-footer-brand { display: inline-flex; align-items: center; gap: 1rem; text-decoration: none; }
.sp-footer-logo { display: block; width: 7rem; height: 7rem; object-fit: contain; filter: drop-shadow(0 .6rem 1.4rem rgb(0 0 0 / 22%)); }
.sp-footer-wordmark { display: grid; gap: .25rem; line-height: 1; }
.sp-footer-wordmark strong { font-family: var(--wp--preset--font-family--display); font-size: 1.45rem; letter-spacing: -.04em; }
.sp-footer-wordmark small { color: #ffaaa0; font-size: .68rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.sp-footer-copy { max-width: 26rem; margin: 1rem 0 1.4rem; color: rgb(255 255 255 / 70%); font-size: .92rem; }
.sp-footer-social { margin-top: 1.25rem; }
.sp-footer-social > div { display: flex; flex-wrap: wrap; gap: .55rem; }
.sp-footer-social a { display: inline-flex; align-items: center; gap: .45rem; padding: .42rem .7rem; border: 1px solid rgb(255 255 255 / 18%); border-radius: 999px; color: rgb(255 255 255 / 82%); font-size: .76rem; font-weight: 800; text-decoration: none; }
.sp-footer-social a:hover { color: var(--sp-white); border-color: rgb(255 255 255 / 42%); background: rgb(255 255 255 / 8%); }
.sp-footer-social svg { width: .95rem; height: .95rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.sp-footer-social .sp-social-fill { fill: currentColor; stroke: none; }
.sp-footer-column { padding-top: 1rem; }
.sp-footer-column h2 { margin: 0 0 1.1rem; color: #ffaaa0; font-family: inherit; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; }
.sp-footer-menu { margin: 0; padding: 0; list-style: none; }
.sp-footer-menu li { margin: 0; padding: 0; }
.sp-footer-column a { display: block; width: fit-content; margin-top: .65rem; color: rgb(255 255 255 / 78%); font-size: .9rem; text-decoration: none; }
.sp-footer-column a:hover { color: var(--sp-white); }
.sp-footer-contact-details { display: grid; gap: .8rem; }
.sp-footer-contact-details a { margin-top: 0; line-height: 1.5; }
.sp-footer-phones { display: grid; gap: .2rem; }
.sp-footer-column h2 a { display: inline; margin: 0; color: inherit; font-size: inherit; letter-spacing: inherit; }
.sp-footer-column h2 a:hover { text-decoration: underline; text-underline-offset: .25em; }
.sp-footer-column p { margin-top: 1.25rem; color: rgb(255 255 255 / 54%); font-size: .82rem; }
.sp-footer-bottom { position: relative; z-index: 2; width: calc(100% - 2rem); max-width: var(--sp-container); display: flex; justify-content: space-between; gap: 1rem; margin-inline: auto; padding-block: 1.15rem 1.5rem; box-sizing: border-box; border-top: 1px solid rgb(255 255 255 / 12%); color: rgb(255 255 255 / 52%); font-size: .76rem; }
.sp-footer-legal { display: flex; flex-wrap: wrap; justify-content: center; gap: .45rem 1rem; }
.sp-footer-legal a,
.sp-footer-cookie-settings { padding: 0; color: inherit; border: 0; background: transparent; font: inherit; text-decoration: none; cursor: pointer; }
.sp-footer-legal a:hover,
.sp-footer-cookie-settings:hover { color: var(--sp-white); }

/* Keep cookie preferences accessible from the footer without Complianz's floating tab. */
#cmplz-manage-consent { display: none !important; }

/* Keep consent text above the controls instead of squeezing it beside fixed-width buttons. */
#cmplz-cookiebanner-container .cmplz-cookiebanner { width: calc(100% - 2rem); max-width: 64rem; min-width: 0; max-height: calc(100dvh - 2rem); left: 50%; right: auto; top: auto; bottom: 1rem; transform: translateX(-50%); margin: 0; padding: 1.25rem; box-sizing: border-box; border-radius: 1rem; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto; gap: .85rem; }
#cmplz-cookiebanner-container .cmplz-cookiebanner.cmplz-show { display: grid; }
#cmplz-cookiebanner-container .cmplz-cookiebanner > * { grid-column: 1 / -1; grid-row: auto; min-width: 0; }
#cmplz-cookiebanner-container .cmplz-header { grid-column: 1 / -1; grid-row: auto; grid-template-columns: minmax(0, 1fr) auto; gap: 1rem; }
#cmplz-cookiebanner-container .cmplz-title { display: block; grid-column: 1; grid-row: 1; justify-self: start; text-align: left; }
#cmplz-cookiebanner-container .cmplz-close { grid-column: 2; grid-row: 1; }
#cmplz-cookiebanner-container .cmplz-body { display: block; grid-column: 1 / -1; grid-row: auto; min-width: 0; width: 100%; max-height: 40vh; }
#cmplz-cookiebanner-container .cmplz-body > div,
#cmplz-cookiebanner-container .cmplz-message,
#cmplz-cookiebanner-container .cmplz-categories { width: 100%; min-width: 0; max-width: 100%; box-sizing: border-box; }
#cmplz-cookiebanner-container .cmplz-message { margin: 0; line-height: 1.6; overflow-wrap: anywhere; }
#cmplz-cookiebanner-container .cmplz-buttons { display: flex; flex-direction: row; flex-wrap: wrap; grid-column: 1 / -1; grid-row: auto; gap: .65rem; width: 100%; min-width: 0; }
#cmplz-cookiebanner-container .cmplz-buttons .cmplz-btn { flex: 1 1 0; min-width: 0; width: auto; min-height: 2.75rem; height: auto; padding: .7rem 1rem; font-size: .875rem; line-height: 1.35; white-space: normal; }
#cmplz-cookiebanner-container .cmplz-links { grid-column: 1 / -1; grid-row: auto; flex-wrap: wrap; justify-content: flex-start; }
@media (max-width: 600px) {
  #cmplz-cookiebanner-container .cmplz-cookiebanner { width: calc(100% - 1rem); bottom: .5rem; max-height: calc(100dvh - 1rem); padding: 1rem; gap: .65rem; }
  #cmplz-cookiebanner-container .cmplz-buttons .cmplz-btn { flex-basis: 100%; }
}
.sp-legal-content { max-width: 52rem !important; margin-inline: auto !important; }
.sp-legal-content > * + * { margin-block-start: 1rem; }
.sp-legal-content h2 { margin-top: clamp(2.25rem, 5vw, 3.75rem); font-size: clamp(1.55rem, 2.6vw, 2.2rem); }
.sp-legal-content h3 { margin-top: 2rem; font-size: 1.2rem; }
.sp-legal-content a { color: var(--sp-plum); font-weight: 750; }
.sp-page-main { width: calc(100% - 2rem); max-width: var(--sp-container); min-height: 45vh; margin-inline: auto; padding-block: clamp(1.25rem, 2.5vw, 2.25rem) clamp(3rem, 7vw, 6rem); box-sizing: border-box; }

/* WordPress constrains inner page blocks to its narrow reading column by default.
   Let page sections use the same container width as the homepage instead. */
.sp-page-main.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
  width: 100%;
  max-width: 100% !important;
  margin-inline: 0 !important;
}
.sp-page-main > :where(p, ul, ol, blockquote) { max-width: 48rem !important; }

.sp-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .55rem; margin: 0 0 clamp(2rem, 4vw, 3rem); color: rgb(24 13 29 / 48%); font-size: .76rem; font-weight: 750; }
.sp-breadcrumb a { color: var(--sp-plum); text-decoration: none; }
.sp-breadcrumb a:hover { color: var(--sp-pink); }
.sp-breadcrumb span[aria-hidden="true"] { color: rgb(24 13 29 / 24%); }
.sp-breadcrumb [aria-current="page"] { overflow: hidden; max-width: min(28rem, 70vw); text-overflow: ellipsis; white-space: nowrap; }

/* Interior pages: clear editorial hierarchy without decorative eyebrow labels. */
.sp-page-main > :first-child { margin-block-start: 0; }
.sp-inner-hero { width: 100%; max-width: 100%; margin-bottom: clamp(2.25rem, 4vw, 3.5rem); }
.sp-inner-hero h1,
.sp-contact-page-copy h1,
.sp-teacher-intro h1 { max-width: none; margin: 0 0 .7rem; font-size: var(--sp-page-title-size); line-height: .98; letter-spacing: -.055em; }
.sp-inner-lead { max-width: 46rem; margin: 0; color: rgb(24 13 29 / 68%); font-size: var(--sp-page-lead-size); line-height: 1.55; }
.sp-story-grid { display: grid !important; grid-template-columns: minmax(0, .95fr) minmax(22rem, 1.05fr); align-items: center; gap: clamp(2.5rem, 7vw, 6rem); margin-bottom: clamp(4rem, 8vw, 7rem); }
.sp-story-grid > * { margin-block-start: 0 !important; }
.sp-story-copy h2,
.sp-values-section > h2,
.sp-team-callout-copy h2,
.sp-inline-cta h2,
.sp-content-panel h2 { margin-top: 0; font-size: clamp(2rem, 3.4vw, 3.1rem); line-height: 1.05; letter-spacing: -.045em; }
.sp-story-copy p { max-width: 36rem; color: rgb(24 13 29 / 70%); }
.sp-story-image { height: clamp(23rem, 42vw, 34rem); overflow: hidden; margin: 0; border-radius: var(--sp-radius); }
.sp-story-image img { width: 100%; height: 100%; object-fit: cover; }
.sp-values-section { margin-block: clamp(4rem, 8vw, 7rem); }
.sp-values-section > h2 { margin-bottom: 2rem; }
.sp-values-grid { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; gap: 1rem; }
.sp-values-grid > .sp-value-card { min-width: 0; min-height: 13rem; position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; align-items: flex-start; margin-block: 0 !important; padding: clamp(1.5rem, 3vw, 2rem); box-sizing: border-box; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: linear-gradient(155deg, var(--sp-white) 0%, #fff 66%, #fdf7fa 100%); box-shadow: 0 .7rem 2rem rgb(65 17 55 / 5%); }
.sp-value-card::after { content: ""; position: absolute; z-index: -1; top: -2.75rem; right: -2.75rem; width: 7rem; height: 7rem; border-radius: 50%; background: rgb(214 47 115 / 8%); transition: transform .25s ease, background .25s ease; }
.sp-value-card:hover::after { transform: scale(1.15); background: rgb(214 47 115 / 12%); }
.sp-value-card h3 { margin: 0 0 .7rem; color: var(--sp-plum); font-size: clamp(1.2rem, 1.7vw, 1.45rem); line-height: 1.15; letter-spacing: -.025em; }
.sp-value-card p { max-width: 31rem; margin: 0; color: rgb(24 13 29 / 66%); line-height: 1.6; }
.sp-team-callout { overflow: hidden; display: grid !important; grid-template-columns: minmax(18rem, .8fr) minmax(0, 1.2fr); align-items: stretch; margin-top: clamp(4rem, 8vw, 7rem); border-radius: var(--sp-radius); color: var(--sp-white); background: var(--sp-ink); }
.sp-team-callout > * { margin-block-start: 0 !important; }
.sp-team-callout-image { min-height: 24rem; margin: 0; }
.sp-team-callout-image img { width: 100%; height: 100%; object-fit: cover; }
.sp-team-callout-copy { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding: clamp(2rem, 5vw, 4rem); }
.sp-team-callout-copy p { max-width: 34rem; color: rgb(255 255 255 / 70%); }
.sp-team-callout-copy .wp-block-button__link { background: var(--sp-pink); }

.sp-team-preview { margin-top: clamp(4rem, 8vw, 7rem); padding: clamp(2rem, 5vw, 4rem); border-radius: var(--sp-radius); color: var(--sp-white); background: var(--sp-ink); }
.sp-team-preview > * { margin-block-start: 0 !important; }
.sp-team-preview-head { display: flex !important; align-items: flex-end; justify-content: space-between; gap: 2rem; margin-bottom: 2rem; }
.sp-team-preview-heading { max-width: 39rem; }
.sp-team-preview-heading h2 { margin: 0 0 .75rem; font-size: clamp(2rem, 3.4vw, 3.1rem); line-height: 1.05; letter-spacing: -.045em; }
.sp-team-preview-heading p { margin: 0; color: rgb(255 255 255 / 70%); }
.sp-team-preview-head .wp-block-buttons { flex: 0 0 auto; }
.sp-team-preview-head .sp-button-outline .wp-block-button__link { color: var(--sp-white); }
.sp-team-preview-grid { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.sp-team-preview-grid > * { margin-block-start: 0 !important; }
.sp-team-preview-card { min-width: 0; overflow: hidden; border: 1px solid rgb(255 255 255 / 13%); border-radius: .9rem; background: rgb(255 255 255 / 7%); transition: transform .2s ease, background .2s ease; }
.sp-team-preview-card:hover { transform: translateY(-4px); background: rgb(255 255 255 / 10%); }
.sp-team-preview-image { aspect-ratio: 4 / 5; overflow: hidden; margin: 0; }
.sp-team-preview-image a { display: block; width: 100%; height: 100%; }
.sp-team-preview-image img { width: 100%; height: 100%; object-fit: cover; object-position: center top; transition: transform .4s ease; }
.sp-team-preview-card:hover .sp-team-preview-image img { transform: scale(1.025); }
.sp-team-preview-copy { padding: 1rem; }
.sp-team-preview-role { margin: 0 0 .35rem; color: #ffaaa0; font-size: .65rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.sp-team-preview-copy h3 { margin: 0; color: var(--sp-white); font-size: clamp(1.05rem, 1.5vw, 1.3rem); line-height: 1.15; }
.sp-team-preview-copy > p:last-child { margin: .9rem 0 0; }
.sp-team-preview-link { color: rgb(255 255 255 / 72%); font-size: .78rem; font-weight: 800; text-decoration: none; }
.sp-team-preview-link:hover { color: #ffaaa0; }

/* Dance-style overview and individual editable style pages. */
.sp-dance-style-overview { margin-top: clamp(2.5rem, 5vw, 4.5rem); }
.sp-dance-style-overview > h2 { margin: 0 0 .65rem; font-size: clamp(2rem, 3.4vw, 3.1rem); line-height: 1.05; letter-spacing: -.045em; }
.sp-dance-style-overview-intro { max-width: 43rem !important; margin: 0 0 2rem; color: rgb(24 13 29 / 66%); }
.sp-age-labels { display: flex; flex-wrap: wrap; gap: .35rem; margin: 0 0 .75rem !important; }
.sp-event-when { margin-bottom: 0 !important; }
.sp-news-timeline { --sp-timeline-inset: clamp(1.1rem, 3vw, 2rem); position: relative; list-style: none; margin: 0; padding: 0 0 0 2.5rem; border: 0; }
.sp-news-timeline::before { content: ''; position: absolute; top: calc(var(--sp-timeline-inset) + .6rem); bottom: 0; left: .55rem; width: 2px; background: linear-gradient(to bottom, var(--sp-pink), rgb(214 47 115 / 24%) 45%, rgb(214 47 115 / 6%)); }
.sp-news-entry { position: relative; margin: 0 0 1.25rem; }
.sp-news-entry:last-child { margin-bottom: 0; }
.sp-news-entry::before { content: ''; position: absolute; top: calc(var(--sp-timeline-inset) + .6rem); left: -1.95rem; transform: translate(-50%, -50%); width: .55rem; height: .55rem; border: 3px solid var(--sp-cream); border-radius: 50%; background: var(--sp-pink); box-shadow: 0 0 0 1px rgb(214 47 115 / 25%); z-index: 1; }
.sp-news-entry:first-child::before { width: .7rem; height: .7rem; box-shadow: 0 0 0 4px rgb(214 47 115 / 9%); }
.sp-news-entry::after { content: ''; position: absolute; top: calc(var(--sp-timeline-inset) + .6rem); left: -1.5rem; width: 1.5rem; height: 1px; background: rgb(214 47 115 / 18%); }
.sp-news-entry article { padding: var(--sp-timeline-inset); border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 .4rem 1.4rem rgb(24 13 29 / 3%); }
.sp-news-meta { display: flex; flex-wrap: wrap; gap: .5rem 1rem; color: rgb(24 13 29 / 60%); font-size: .78rem; }
.sp-news-meta span { color: var(--sp-pink); font-weight: 700; }
.sp-news-entry h2 { margin: .65rem 0 .5rem; font-size: clamp(1.3rem, 2.5vw, 1.8rem); }
.sp-news-entry p { margin: 0; color: rgb(24 13 29 / 68%); }
.sp-news-links { display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; margin-top: 1rem; }
.sp-news-links a { color: var(--sp-plum); font-size: .86rem; font-weight: 750; text-decoration: none; }
.sp-news-links a:hover { color: var(--sp-pink); }
.sp-event-layout { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: start; }
.sp-event-layout > .wp-block-group { min-width: 0; margin-block-start: 0 !important; }
.sp-event-copy > :first-child { margin-top: 0; }
.sp-event-flyer .sp-pdf-embed { margin: 0; }
.sp-event-flyer .sp-pdf-embed-bar { flex-wrap: wrap; gap: .6rem; padding: .85rem 1rem; }
.sp-event-flyer .sp-pdf-embed iframe { height: 42rem; min-height: 0; }
@media (max-width: 780px) {
  .sp-event-layout { grid-template-columns: minmax(0, 1fr); }
  .sp-event-flyer .sp-pdf-embed iframe { height: 36rem; }
}
.sp-event-when + .sp-event-where { margin-top: .5rem !important; }
.sp-age-label { display: inline-block; padding: .25rem .55rem; border-radius: 999px; color: var(--sp-plum); background: rgb(214 47 115 / 8%); font-size: .68rem; font-weight: 700; line-height: 1.3; }
button.sp-age-label { border: 0; font-family: inherit; cursor: pointer; }
button.sp-age-label:hover { color: #fff; background: var(--sp-pink); }
button.sp-age-label:focus-visible { outline: 2px solid var(--sp-pink); outline-offset: 3px; }
.sp-style-detail-intro .sp-age-labels-detail { margin-block: .7rem 1rem !important; }
.sp-age-labels-detail .sp-age-label { color: #fff; background: rgb(255 255 255 / 13%); }
.sp-photo-slideshow { position: relative; }
.sp-photo-slideshow > a { position: relative; }
.sp-photo-slideshow img.sp-photo-fade-layer { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; object-fit: cover; pointer-events: none; opacity: 1; transition: opacity .6s ease; }
.sp-photo-slideshow img.sp-photo-fade-layer.is-fading { opacity: 0; }
@media (prefers-reduced-motion: reduce) { .sp-photo-slideshow img.sp-photo-fade-layer { transition: none; } }
.sp-current .sp-current-item-highlight a.sp-current-action { color: #fff !important; border-color: var(--sp-pink); background: var(--sp-pink); }
.sp-current-item-highlight .sp-current-action:hover { color: #fff; border-color: var(--sp-plum); background: var(--sp-plum); }
.sp-photo-controls { position: absolute; z-index: 2; bottom: .65rem; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: .2rem; padding: 0; color: #fff; background: transparent; }
.sp-photo-controls[hidden] { display: none; }
.sp-photo-dot { display: grid; place-items: center; width: 1.75rem; height: 1.75rem; padding: 0; border: 0; background: transparent; cursor: pointer; }
.sp-photo-dot::after { content: ''; width: .45rem; height: .45rem; border-radius: 50%; background: rgb(255 255 255 / 65%); box-shadow: 0 1px 4px rgb(0 0 0 / 65%); }
.sp-photo-dot[aria-pressed="true"]::after { background: #fff; box-shadow: 0 0 0 2px rgb(255 255 255 / 25%); }
.sp-photo-controls button:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }
.sp-style-filter-wrap { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 0 0 1.5rem; }
.sp-style-filter-bar { display: flex; flex-wrap: wrap; gap: .55rem; }
.sp-style-filter { appearance: none; padding: .62rem 1rem; color: var(--sp-plum); border: 1px solid rgb(75 15 63 / 20%); border-radius: 999px; background: rgb(255 255 255 / 72%); font: inherit; font-size: .8rem; font-weight: 800; line-height: 1; cursor: pointer; transition: color .2s ease, border-color .2s ease, background .2s ease, transform .2s ease; }
.sp-style-filter:hover { transform: translateY(-1px); border-color: rgb(214 47 115 / 55%); }
.sp-style-filter:focus-visible { outline: 3px solid rgb(214 47 115 / 24%); outline-offset: 2px; }
.sp-style-filter.is-active { color: var(--sp-white); border-color: var(--sp-pink); background: var(--sp-pink); }
.sp-style-filter-status { flex: 0 0 auto; margin: 0; color: rgb(24 13 29 / 52%); font-size: .76rem; font-weight: 800; }
.sp-dance-style-grid { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.sp-dance-style-grid > * { margin-block-start: 0 !important; }
.sp-dance-style-card[hidden] { display: none !important; }
.sp-dance-style-card { min-width: 0; overflow: hidden; display: flex; flex-direction: column; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 .8rem 2rem rgb(24 13 29 / 5%); transition: transform .2s ease, box-shadow .2s ease; }
.sp-dance-style-card:hover { transform: translateY(-4px); box-shadow: 0 1.15rem 2.8rem rgb(24 13 29 / 10%); }
.sp-dance-style-card-image { aspect-ratio: 16 / 10; overflow: hidden; margin: 0; background: #eadfd8; }
.sp-dance-style-card-image a { display: block; width: 100%; height: 100%; }
.sp-dance-style-card-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.sp-dance-style-card:hover .sp-dance-style-card-image img { transform: scale(1.025); }
.sp-dance-style-card-copy { flex: 1; display: flex; flex-direction: column; padding: .85rem 1.35rem 1.35rem; }
.sp-dance-style-card > .sp-dance-style-card-copy { margin-block-start: 0 !important; }
.sp-dance-style-card-copy h3 { margin: 0 0 .65rem; font-size: clamp(1.25rem, 1.8vw, 1.55rem); line-height: 1.12; }
.sp-dance-style-card-copy > p { margin: 0 0 1rem; color: rgb(24 13 29 / 66%); }
.sp-dance-style-card-copy > p:last-child { margin: auto 0 0; padding-top: .35rem; }
.sp-style-overview-cta { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: .75rem 3rem; margin-top: clamp(3rem, 6vw, 5rem); padding: clamp(1.5rem, 4vw, 3rem); border-radius: var(--sp-radius); color: var(--sp-white); background: var(--sp-plum); }
.sp-style-overview-cta h2, .sp-style-overview-cta p { margin: 0; }
.sp-style-overview-cta p { max-width: 44rem; color: rgb(255 255 255 / 72%); }
.sp-style-overview-cta .wp-block-buttons { grid-column: 2; grid-row: 1 / 3; }
.sp-style-overview-cta .sp-button-outline .wp-block-button__link { color: var(--sp-white); }
.sp-style-detail-hero { overflow: hidden; display: grid !important; grid-template-columns: minmax(20rem, .9fr) minmax(0, 1.1fr); align-items: stretch; margin-top: 1rem; border-radius: var(--sp-radius); color: var(--sp-white); background: var(--sp-ink); }
.sp-style-detail-hero > * { margin-block-start: 0 !important; }
.sp-style-detail-hero > *,
.sp-style-detail-body > * { min-width: 0; }
.sp-style-detail-image { min-height: 34rem; margin: 0; }
.sp-style-detail-image img { width: 100%; height: 100%; object-fit: cover; }
.sp-style-detail-intro { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding: clamp(2rem, 5vw, 4.5rem); }
.sp-style-detail-intro h1 { margin: 0 0 1rem; color: var(--sp-white); font-size: var(--sp-page-title-size); line-height: .98; letter-spacing: -.055em; }
.sp-style-detail-intro .sp-inner-lead { color: rgb(255 255 255 / 72%); }
.sp-style-detail-intro .sp-button-outline .wp-block-button__link { color: var(--sp-white); }
.sp-style-detail-body { display: grid !important; grid-template-columns: minmax(0, 1.25fr) minmax(17rem, .75fr); gap: clamp(2rem, 7vw, 6rem); margin-top: clamp(3.5rem, 7vw, 6rem); }
.sp-style-detail-body > * { margin-block-start: 0 !important; }
.sp-style-detail-copy h2 { margin: 2.75rem 0 .75rem; font-size: clamp(1.8rem, 3vw, 2.6rem); line-height: 1.05; letter-spacing: -.04em; }
.sp-style-detail-copy h2:first-child { margin-top: 0; }
.sp-style-detail-copy p { color: rgb(24 13 29 / 72%); }
.sp-style-points { display: grid; gap: .65rem; margin: 1.5rem 0 0; padding: 0; list-style: none; }
.sp-style-points li { position: relative; padding-left: 1.6rem; }
.sp-style-points li::before { content: ""; position: absolute; top: .6em; left: 0; width: .55rem; height: .55rem; border-radius: 50%; background: var(--sp-pink); box-shadow: 0 0 0 .25rem rgb(214 47 115 / 10%); }
.sp-style-variant-intro { max-width: 44rem; margin-bottom: 1.25rem; }
.sp-style-variant-grid { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }
.sp-style-variant-grid > * { margin-block-start: 0 !important; }
.sp-style-variant-card { padding: 1.25rem; border: 1px solid var(--sp-border); border-radius: .9rem; background: var(--sp-white); box-shadow: 0 .6rem 1.8rem rgb(24 13 29 / 4%); }
.sp-style-variant-card h3 { margin: 0 0 .55rem; font-size: 1.2rem; line-height: 1.15; }
.sp-style-variant-card p { margin: 0; font-size: .9rem; line-height: 1.55; }
.sp-style-detail-aside { align-self: start; padding: 1.5rem; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 .8rem 2rem rgb(24 13 29 / 5%); }
.sp-style-detail-aside h2 { margin: 0 0 .75rem; font-size: 1.65rem; line-height: 1.08; }
.sp-style-detail-aside p { color: rgb(24 13 29 / 68%); }
.sp-style-detail-cta { margin-top: clamp(3.5rem, 7vw, 6rem); padding: clamp(1.5rem, 4vw, 3rem); border-radius: var(--sp-radius); color: var(--sp-white); background: linear-gradient(135deg, var(--sp-pink), var(--sp-plum)); }
.sp-style-detail-cta h2 { margin: 0 0 .65rem; font-size: clamp(2rem, 3.4vw, 3rem); }
.sp-style-detail-cta p { max-width: 42rem; color: rgb(255 255 255 / 76%); }
.sp-style-detail-cta .sp-button-outline .wp-block-button__link { color: var(--sp-white); }
.sp-style-detail-link { color: #ffaaa0 !important; font-size: .8rem; font-weight: 800; text-decoration: none; }
.sp-style-content > p:last-child { margin-top: auto; padding-top: .8rem; }

/* Team overview and editable teacher profiles. */
.sp-team-section { margin-top: clamp(3.5rem, 7vw, 6rem); }
.sp-team-section > h2 { margin: 0 0 .65rem; font-size: clamp(2rem, 3.4vw, 3.1rem); line-height: 1.05; letter-spacing: -.045em; }
.sp-team-section-intro { max-width: 42rem !important; margin: 0 0 2rem; color: rgb(24 13 29 / 66%); }
.sp-team-grid { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.sp-team-grid > * { margin-block-start: 0 !important; }
.sp-team-card { min-width: 0; overflow: hidden; display: flex; flex-direction: column; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 .8rem 2rem rgb(24 13 29 / 5%); transition: transform .2s ease, box-shadow .2s ease; }
.sp-team-card:hover { transform: translateY(-4px); box-shadow: 0 1.15rem 2.8rem rgb(24 13 29 / 10%); }
.sp-team-card-image { aspect-ratio: 4 / 5; overflow: hidden; width: 100%; margin: 0; background: #eadfd8; }
.sp-team-card-image a { display: block; width: 100%; height: 100%; }
.sp-team-card-image img { width: 100%; height: 100%; object-fit: cover; object-position: center top; transition: transform .45s ease; }
.sp-team-card:hover .sp-team-card-image img { transform: scale(1.025); }
.sp-team-card-copy { flex: 1; display: flex; flex-direction: column; align-items: flex-start; padding: 1.25rem; }
.sp-team-card-role { margin: 0 0 .45rem; color: var(--sp-pink); font-size: .68rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.sp-team-card-copy h3 { margin: 0; font-size: clamp(1.15rem, 1.7vw, 1.4rem); line-height: 1.15; }
.sp-team-card-copy > p:last-child { margin: auto 0 0; padding-top: 1.15rem; }
.sp-team-card-link { color: var(--sp-plum); font-size: .82rem; font-weight: 850; text-decoration: none; }
.sp-team-card-link:hover { color: var(--sp-pink); }
.sp-team-coaches .sp-team-grid { grid-template-columns: repeat(2, minmax(0, 18rem)); }
.sp-team-back { margin: 0 0 1.5rem; }
.sp-team-back a { color: var(--sp-plum); font-size: .82rem; font-weight: 850; text-decoration: none; }
.sp-teacher-hero { overflow: hidden; display: grid !important; grid-template-columns: minmax(18rem, .72fr) minmax(0, 1.28fr); align-items: stretch; border-radius: var(--sp-radius); color: var(--sp-white); background: radial-gradient(circle at 90% 5%, rgb(214 47 115 / 34%), transparent 25rem), linear-gradient(135deg, var(--sp-ink), var(--sp-plum)); }
.sp-teacher-hero > * { min-width: 0; margin-block-start: 0 !important; }
.sp-teacher-portrait { min-height: 34rem; max-height: 44rem; margin: 0; background: #241326; }
.sp-teacher-portrait img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.sp-teacher-intro { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: clamp(2rem, 5vw, 4.5rem); }
.sp-teacher-intro .sp-eyebrow { color: #ffaaa0; }
.sp-teacher-intro h1 { max-width: none; margin-top: .15rem; color: var(--sp-white); }
.sp-teacher-intro .sp-inner-lead { color: rgb(255 255 255 / 74%); }
.sp-team-email { display: inline-flex; margin-top: .75rem; color: #ffaaa0; font-weight: 800; text-decoration: none; }
.sp-teacher-bio { max-width: 54rem !important; margin: clamp(3rem, 7vw, 5.5rem) auto 0 !important; }
.sp-teacher-bio > * + * { margin-block-start: 1rem; }
.sp-teacher-bio h2 { margin-top: clamp(2.25rem, 5vw, 3.75rem); font-size: clamp(1.8rem, 3.2vw, 2.7rem); line-height: 1.08; letter-spacing: -.04em; }
.sp-teacher-bio h2:first-child { margin-top: 0; }
.sp-teacher-bio p,
.sp-teacher-bio li { color: rgb(24 13 29 / 74%); line-height: 1.7; }
.sp-teacher-bio ul { padding-left: 1.25rem; }
.sp-teacher-bio li + li { margin-top: .5rem; }
.sp-teacher-bio a { color: var(--sp-plum); font-weight: 800; }
.sp-page-main.is-layout-constrained > .sp-teacher-cta { max-width: 54rem !important; margin-inline: auto !important; }

/* Practical overview and supporting pages. */
.sp-info-card-grid { width: 100%; min-width: 0; max-width: 100% !important; display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.sp-info-card-grid > .sp-info-card { margin-block-start: 0 !important; }
.sp-info-card { min-width: 0; min-height: 13rem; width: 100%; overflow: hidden; display: flex; flex-direction: column; align-items: flex-start; padding: clamp(1.4rem, 3vw, 2rem); box-sizing: border-box; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
.sp-info-card:hover { transform: translateY(-3px); border-color: rgb(214 47 115 / 35%); box-shadow: 0 1rem 2.5rem rgb(24 13 29 / 8%); }
.sp-info-card h2 { margin: 0 0 .65rem; font-size: clamp(1.35rem, 2vw, 1.7rem); }
.sp-info-card p { max-width: 100%; margin: 0; color: rgb(24 13 29 / 64%); overflow-wrap: anywhere; }
.sp-info-card p:last-child { margin-top: auto; padding-top: 1.25rem; }
.sp-card-link { color: var(--sp-plum); font-weight: 850; text-decoration: none; }
.sp-card-link:hover { color: var(--sp-pink); }
.sp-practical-directory { margin-top: clamp(2.25rem, 5vw, 4.25rem); }
.sp-practical-directory-head { display: grid !important; grid-template-columns: 1fr; align-items: start; gap: .75rem; margin-bottom: 1.75rem; }
.sp-practical-directory-head h2,
.sp-practical-directory-head p { margin: 0; }
.sp-practical-directory-head h2 { max-width: 12ch; font-size: clamp(1.9rem, 3.25vw, 2.8rem); line-height: 1.04; letter-spacing: -.045em; }
.sp-practical-directory-head p { max-width: 38rem; color: rgb(24 13 29 / 64%); line-height: 1.65; }
.sp-practical-card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.sp-practical-card { --card-accent: var(--sp-pink); --card-soft: #fdebf3; position: relative; isolation: isolate; min-height: 13.75rem; padding: 1.5rem; }
.sp-practical-card::after { content: ""; position: absolute; z-index: -1; width: 7.5rem; height: 7.5rem; top: -4.5rem; right: -3rem; border-radius: 50%; background: var(--card-soft); transition: transform .25s ease; }
.sp-practical-card:hover::after { transform: scale(1.18); }
.sp-practical-card .sp-practical-card-eyebrow { margin: 0 0 .45rem; color: var(--card-accent); font-size: .68rem; font-weight: 900; letter-spacing: .105em; line-height: 1.2; text-transform: uppercase; }
.sp-practical-card h3 { margin: 0 0 .55rem; font-size: clamp(1.25rem, 1.8vw, 1.55rem); line-height: 1.1; letter-spacing: -.025em; }
.sp-practical-card .sp-practical-card-copy { color: rgb(24 13 29 / 64%); font-size: .93rem; line-height: 1.55; }
.sp-practical-card .sp-practical-card-action { margin-top: auto; padding-top: 1rem; }
.sp-practical-card .sp-card-link { color: var(--card-accent); font-size: .88rem; }
.sp-practical-card .sp-card-link span { display: inline-block; transition: transform .2s ease; }
.sp-practical-card .sp-card-link:hover span { transform: translateX(.2rem); }
.sp-download-grid .sp-info-card { min-height: 11rem; }
.sp-download-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sp-download-grid .sp-mutuality-card { min-height: 15.5rem; }
.sp-mutuality-logo { width: 100%; height: 3.75rem; display: flex; align-items: center; margin: 0 0 1.25rem; }
.sp-mutuality-logo img { width: auto; max-width: 10rem; height: auto; max-height: 3.5rem; object-fit: contain; object-position: left center; }
.sp-inline-cta { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .5rem 2rem; margin-top: clamp(3rem, 6vw, 5rem); padding: clamp(1.75rem, 4vw, 3rem); border-radius: var(--sp-radius); color: var(--sp-white); background: linear-gradient(135deg, var(--sp-plum), var(--sp-ink)); }
.sp-inline-cta h2,
.sp-inline-cta p,
.sp-inline-cta .wp-block-buttons { margin: 0; }
.sp-inline-cta p { color: rgb(255 255 255 / 70%); }
.sp-inline-cta .wp-block-buttons { grid-column: 2; grid-row: 1 / 3; }
.sp-inline-cta .wp-block-button__link { background: var(--sp-pink); }
.sp-content-panel { max-width: 48rem; padding: clamp(1.75rem, 4vw, 3rem); border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); }

.sp-pdf-embed { overflow: hidden; margin-top: 2.5rem; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 1.25rem 3.5rem rgb(24 13 29 / 9%); }
.sp-pdf-embed-bar { min-height: 4.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem 1.25rem; box-sizing: border-box; color: var(--sp-white); background: var(--sp-ink); }
.sp-pdf-embed-bar > div { display: grid; gap: .1rem; }
.sp-pdf-embed-bar strong { font-size: 1rem; }
.sp-pdf-embed-bar span { color: rgb(255 255 255 / 62%); font-size: .72rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.sp-pdf-embed-bar a { color: #ffaaa0; font-size: .84rem; font-weight: 850; text-decoration: none; white-space: nowrap; }
.sp-pdf-embed iframe { display: block; width: 100%; height: min(75vh, 58rem); min-height: 38rem; border: 0; background: #e9e4e1; }

.sp-location-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); }
.sp-location-grid > .sp-location-card { margin-block-start: 0 !important; }
.sp-location-info h2 { margin: 0; font-size: 1.35rem; }

.sp-faq-list { max-width: 54rem; border-top: 1px solid var(--sp-border); }
.sp-faq-item { margin: 0; padding: 1.25rem 0; border-bottom: 1px solid var(--sp-border); }
.sp-faq-item summary { color: var(--sp-ink); font-size: 1.05rem; font-weight: 850; cursor: pointer; }
.sp-faq-item p { max-width: 46rem; margin: .85rem 0 0; color: rgb(24 13 29 / 66%); }
.sp-faq-item a { color: var(--sp-plum); font-weight: 750; }
.sp-practical-faq { margin-top: clamp(4rem, 8vw, 7rem); scroll-margin-top: 2rem; }
.sp-practical-faq > h2 { margin: 0 0 .75rem; font-size: clamp(2rem, 3.4vw, 3.1rem); line-height: 1.05; letter-spacing: -.045em; }
.sp-practical-faq > p { max-width: 42rem; margin: 0 0 2rem; color: rgb(24 13 29 / 66%); }
.sp-practical-faq .sp-faq-list { max-width: none; display: grid; grid-template-columns: minmax(0, 1fr); gap: .75rem; border-top: 0; }
.sp-practical-faq .sp-faq-item { padding: 1.15rem 1.25rem; border: 1px solid var(--sp-border); border-radius: 1rem; background: var(--sp-white); }
.sp-practical-faq .sp-faq-item summary { position: relative; padding-right: 2rem; list-style: none; }
.sp-practical-faq .sp-faq-item summary::-webkit-details-marker { display: none; }
.sp-practical-faq .sp-faq-item summary::after { content: "+"; position: absolute; top: -.15rem; right: 0; width: 1.45rem; height: 1.45rem; display: grid; place-items: center; border-radius: 50%; color: var(--sp-pink); background: #fdebf3; font-size: 1.05rem; line-height: 1; transition: transform .2s ease; }
.sp-practical-faq .sp-faq-item[open] summary::after { transform: rotate(45deg); }

/* Contact page: one integrated panel, without duplicated contact details. */
.sp-page-main.is-layout-constrained > .sp-contact-page { width: 100%; max-width: 68rem !important; margin-inline: auto !important; }
.sp-contact-page { position: relative; overflow: hidden; display: grid !important; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); align-items: center; gap: clamp(2.5rem, 7vw, 6rem); padding: clamp(2rem, 5vw, 4rem); box-sizing: border-box; border-radius: var(--sp-radius); color: var(--sp-white); background: radial-gradient(circle at 7% 10%, rgb(214 47 115 / 34%), transparent 25rem), linear-gradient(135deg, var(--sp-ink), var(--sp-plum)); }
.sp-contact-page > * { min-width: 0; margin-block-start: 0 !important; }
.sp-contact-page-copy h1 { color: var(--sp-white); }
.sp-contact-page-copy .sp-inner-lead,
.sp-contact-page-copy > p { color: rgb(255 255 255 / 72%); }
.sp-contact-page-copy > p { max-width: 30rem; }
.sp-card-link-light { color: #ffaaa0; }
.sp-contact-page .sp-contact-form { width: 100%; box-sizing: border-box; }
.sp-contact-details { display: grid; gap: .7rem; margin: 1.5rem 0; padding-block: 1rem; border-block: 1px solid rgb(255 255 255 / 15%); }
.sp-contact-detail { display: grid; gap: .15rem; width: fit-content; color: var(--sp-white); text-decoration: none; }
.sp-contact-detail span,
.sp-contact-socials > span { color: #ffaaa0; font-size: .68rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.sp-contact-detail strong { color: var(--sp-white); font-size: .92rem; }
.sp-contact-detail:hover strong { color: #ffaaa0; }
.sp-contact-socials { display: grid; gap: .35rem; }
.sp-contact-socials > div { display: flex; flex-wrap: wrap; gap: .45rem; }
.sp-contact-socials a { padding: .35rem .65rem; color: rgb(255 255 255 / 82%); border: 1px solid rgb(255 255 255 / 22%); border-radius: 999px; font-size: .76rem; font-weight: 800; text-decoration: none; }
.sp-contact-socials a:hover { color: var(--sp-white); border-color: #ffaaa0; }
.sp-contact-locations { margin-top: clamp(4rem, 7vw, 6rem); }
.sp-contact-locations > h2 { margin: 0 0 .75rem; font-size: clamp(2rem, 3.4vw, 3.1rem); line-height: 1.05; letter-spacing: -.045em; }
.sp-contact-locations > p { max-width: 46rem; margin: 0 0 2rem; color: rgb(24 13 29 / 66%); }
.sp-contact-location-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
.sp-contact-location-grid > * { margin-block-start: 0 !important; }
.sp-contact-location-card { min-height: 13rem; display: flex; flex-direction: column; align-items: flex-start; padding: clamp(1.35rem, 3vw, 2rem); box-sizing: border-box; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); }
.sp-contact-location-card > * { margin-block-start: .55rem; margin-block-end: 0; }
.sp-contact-location-card > :first-child { margin-block-start: 0; }
.sp-contact-location-card h3 { margin-top: .35rem; font-size: 1.3rem; }
.sp-contact-location-card > :last-child { margin-top: auto; padding-top: 1rem; }
.sp-contact-locations > .wp-block-buttons .wp-block-button__link { color: var(--sp-plum); border: 1px solid var(--sp-plum); background: transparent; }

/* Official Ledenbeheer registration, embedded within the site chrome. */
.sp-page-main > .sp-registration-help { width: 100%; max-width: var(--sp-container) !important; }
.sp-page-main.is-layout-constrained > .sp-registration-embed {
  position: relative;
  left: 50%;
  width: calc(100vw - 2rem);
  max-width: 100rem !important;
  margin-inline: 0 !important;
  transform: translateX(-50%);
}
.sp-registration-help { display: flex !important; align-items: center; justify-content: space-between; gap: .75rem 2rem; margin-bottom: 1.25rem; padding: 1rem 1.25rem; box-sizing: border-box; border: 1px solid var(--sp-border); border-radius: .8rem; background: rgb(255 255 255 / 68%); }
.sp-registration-help p { margin: 0; color: rgb(24 13 29 / 66%); }
.sp-registration-help a { color: var(--sp-plum); font-weight: 800; text-decoration: none; }
.sp-registration-help a:hover { color: var(--sp-pink); }
.sp-registration-embed { width: 100%; min-height: 48rem; overflow: visible; padding: clamp(.75rem, 2vw, 1.5rem); box-sizing: border-box; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 1.25rem 3.5rem rgb(24 13 29 / 8%); }
#ledenbeheer-embedded { width: 100% !important; min-height: 46rem; }

@media (max-width: 900px) {
  .sp-current a.sp-current-heading { color: var(--sp-ink); }
  .sp-header-cta { display: none; }
  .sp-header .sp-menu-toggle { position: relative; z-index: 2; flex: 0 0 auto; display: flex !important; flex-direction: column; justify-content: center; margin-left: auto; cursor: pointer; }
  .sp-primary-nav { position: absolute; top: calc(100% - .5rem); right: 1rem; left: 1rem; overflow: hidden; max-height: 0; margin: 0; opacity: 0; border-radius: var(--sp-radius); color: var(--sp-ink); background: var(--sp-white); box-shadow: 0 1rem 2.5rem rgb(24 13 29 / 20%); transition: max-height .25s ease, opacity .2s ease; }
  .sp-primary-nav.is-open { overflow-y: auto; max-height: min(80vh, 42rem); opacity: 1; }
  .sp-menu { display: grid; gap: 0; padding: .5rem; }
  .sp-primary-nav a { display: block; padding: .75rem .9rem; border-radius: .55rem; }
  .sp-primary-nav a:hover { background: rgb(214 47 115 / 8%); }
  .sp-menu .menu-item-has-children > a { display: flex; }
  .sp-menu .menu-item-has-children > a::after { margin-left: auto; }
  .sp-menu .sub-menu { position: static; min-width: 0; visibility: visible; margin: -.15rem 0 .35rem .9rem; padding: 0 0 0 .55rem; transform: none; opacity: 1; border: 0; border-left: 1px solid var(--sp-border); border-radius: 0; box-shadow: none; transition: none; }
  .sp-menu .sub-menu::before { content: none; }
  .sp-menu li:hover > .sub-menu, .sp-menu li:focus-within > .sub-menu { transform: none; }
  .sp-menu .sub-menu a { padding: .55rem .8rem; font-size: .84rem; }
  .sp-brand-copy small { display: block; }
  .sp-header-actions { min-height: 7.75rem; }
  .sp-brand-logo { width: 7.5rem; max-width: 7.5rem; height: 7.5rem; }
  .sp-hero-inner { padding-top: 11rem; }
  .sp-current { display: block; }
  .sp-current-heading { min-height: 2.75rem; flex-direction: row; align-items: center; justify-content: flex-start; gap: .75rem; padding: .5rem 1rem; color: var(--sp-ink); border-bottom: 1px solid var(--sp-border); background: rgb(255 255 255 / 36%); }
  .sp-current-heading h2 { display: inline-flex; align-items: center; gap: .55rem; color: var(--sp-pink); }
  .sp-current-heading h2::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: var(--sp-pink); box-shadow: 0 0 0 .25rem rgb(214 47 115 / 10%); }
  .sp-current-heading strong { margin-left: auto; color: rgb(24 13 29 / 50%); font-family: inherit; font-size: .72rem; line-height: 1.2; }
  .sp-current-items { grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; }
  .sp-current-item { min-width: 0; grid-column: auto; }
  .sp-current-item:nth-last-child(-n + 2) { grid-column: auto; }
  .sp-current-item:nth-child(odd) { border-left: 0; }
  .sp-current-item:nth-child(n + 3) { border-top: 1px solid var(--sp-border); }
  .sp-style-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sp-impression-head { grid-template-columns: 1fr; align-items: start; gap: 1.25rem; }
  .sp-contact-inner { grid-template-columns: 1fr; }
  .sp-welcome-grid, .sp-practical-grid { grid-template-columns: 1fr; }
  .sp-document-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .sp-contact-intro { position: static; }
  .sp-footer-main { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; }
  .sp-footer-brand-block { grid-column: 1 / -1; }
  .sp-story-grid { grid-template-columns: 1fr; }
  .sp-story-image { height: 25rem; }
  .sp-values-grid { grid-template-columns: 1fr; }
  .sp-values-grid > .sp-value-card { min-height: 0; padding: 1.4rem; }
  .sp-team-callout { grid-template-columns: 1fr; }
  .sp-team-callout-image { min-height: 20rem; }
  .sp-team-preview-head { align-items: flex-start; flex-direction: column; }
  .sp-team-preview-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sp-dance-style-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sp-style-detail-hero { grid-template-columns: minmax(17rem, .8fr) minmax(0, 1.2fr); }
  .sp-style-detail-image { min-height: 30rem; }
  .sp-style-detail-body { grid-template-columns: 1fr; }
  .sp-team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sp-teacher-hero { grid-template-columns: minmax(16rem, .8fr) minmax(0, 1.2fr); }
  .sp-teacher-portrait { min-height: 30rem; }
  .sp-location-grid { grid-template-columns: 1fr; }
  .sp-download-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sp-contact-page { grid-template-columns: 1fr; }
  .sp-contact-location-grid { grid-template-columns: 1fr; }
  .sp-contact-location-card { min-height: 0; }
}

@media (min-width: 901px) {
  /* A hovered menu always wins over an older keyboard/mouse focus state. */
  .sp-menu:hover .menu-item-has-children:not(:hover) > .sub-menu {
    visibility: hidden;
    transform: translate(-50%, .4rem);
    opacity: 0;
  }
}

@media (max-width: 680px) {
  .sp-header-actions,
  .sp-hero-inner,
  .sp-welcome-grid,
  .sp-impression-inner,
  .sp-styles-head,
  .sp-style-grid,
  .sp-practical-grid,
  .sp-contact-inner,
  body:not(.home) main.wp-block-group {
    width: calc(100% - 2rem);
    margin-inline: auto !important;
    box-sizing: border-box;
  }
  .sp-footer-bottom { align-items: flex-start; flex-direction: column; }
  .sp-footer-legal { justify-content: flex-start; }
  .sp-header .wp-block-navigation__responsive-container-open { color: inherit; }
  .sp-header-actions { min-height: 6.25rem; gap: .75rem; }
  .sp-brand { gap: .5rem; }
  .sp-brand-logo { width: 6rem; max-width: 6rem; height: 6rem; }
  .sp-brand-copy strong { font-size: 1rem; }
  .sp-brand-copy small { font-size: .58rem; }
  .sp-hero { min-height: 100svh; display: block; padding-bottom: 2rem; background-position: center, var(--sp-hero-position, 58% center); }
  .sp-hero-inner { display: block; padding-top: 9rem; padding-bottom: 2.5rem; }
  .sp-current { position: relative; right: auto; bottom: auto; left: auto; width: calc(100% - 2rem); margin-inline: auto; transform: none; }
  .sp-current-heading { min-height: 2.7rem; padding: .55rem .9rem; }
  .sp-current-heading strong { display: block; }
  .sp-current-heading::after { content: none; }
  .sp-current-items { grid-template-columns: minmax(0, 1fr); overflow: visible; scroll-snap-type: none; }
  .sp-current-item { min-width: 0; min-height: 5.4rem; width: 100%; padding: .8rem .9rem; }
  .sp-current-item + .sp-current-item { border-top: 1px solid var(--sp-border); border-left: 0; }
  .sp-current-summary { display: block; overflow: visible; margin-top: .3rem; font-size: .82rem; line-height: 1.4; -webkit-line-clamp: unset; }
  .sp-current-action { box-sizing: border-box; max-width: 100%; min-height: 2.25rem; padding: .55rem .85rem; border: 1px solid rgb(74 18 62 / 22%); background: rgb(255 255 255 / 45%); line-height: 1.35; }
  .sp-current .sp-current-item-highlight a.sp-current-action { box-sizing: border-box; max-width: 100%; min-height: 2.25rem; padding: .55rem .85rem; line-height: 1.35; }
  .sp-hero-title { font-size: clamp(2.75rem, 14vw, 3.7rem) !important; }
  .sp-welcome,
  .sp-impression,
  .sp-practical { padding-block: 3rem; }
  .sp-welcome-image { height: auto; }
  .sp-form-two-columns { grid-template-columns: 1fr; }
  .sp-impression-collage { grid-template-columns: 1fr 1fr; grid-template-rows: auto; gap: .65rem; }
  .sp-impression-head { margin-bottom: 1.5rem; }
  .sp-impression-main { grid-column: 1 / -1; grid-row: auto; height: 14rem; }
  .sp-impression-wide { grid-column: 1 / -1; height: 8.5rem; }
  .sp-impression-photo:not(.sp-impression-main):not(.sp-impression-wide) { height: 7.5rem; }
  .sp-facts { flex-wrap: wrap; gap: 1rem 1.75rem; }
  .sp-style-grid { grid-template-columns: 1fr; }
  .sp-style-card { min-height: 0; height: auto; display: grid; grid-template-columns: 8.5rem 1fr; }
  .sp-style-media { height: 100%; min-height: 9.5rem; }
  .sp-style-content { min-height: 0; }
  .sp-style-content h3 { height: auto; min-height: 0; font-size: 1.15rem; white-space: normal; }
  .sp-document-list { grid-template-columns: 1fr; }
  .sp-document-row { min-height: 9.25rem; display: flex; align-items: flex-start; gap: 0; padding: 1.1rem; }
  .sp-document-copy { margin-top: .35rem !important; }
  .sp-document-link { margin-top: auto !important; padding-top: .85rem; white-space: nowrap; }
  .sp-contact-section { padding-block: 4rem; }
  .sp-document-toolbar,
  .sp-document-footer { align-items: flex-start; }
  .sp-document-image { width: 44rem; max-width: none; }
  .sp-document-image img { max-width: none; }
  .sp-footer-main { width: calc(100% - 2rem); grid-template-columns: 1fr 1fr; gap: 2rem 1.5rem; padding-block: 3.25rem 2rem; }
  .sp-footer-brand-block { grid-column: 1 / -1; }
  .sp-footer-contact { grid-column: 1 / -1; }
  .sp-footer-bottom { width: calc(100% - 2rem); }
  .sp-inner-hero h1,
  .sp-contact-page-copy h1,
  .sp-teacher-intro h1 { font-size: var(--sp-page-title-size); }
  .sp-info-card-grid { grid-template-columns: 1fr; }
  .sp-download-grid { grid-template-columns: 1fr; }
  .sp-info-card { min-height: 0; }
  .sp-practical-directory-head { grid-template-columns: 1fr; }
  .sp-practical-card-grid { grid-template-columns: 1fr; }
  .sp-practical-card { min-height: 12.5rem; }
  .sp-practical-faq .sp-faq-list { grid-template-columns: 1fr; }
  .sp-team-card-copy { padding: 1rem; }
  .sp-team-preview { padding: 1.25rem; }
  .sp-team-preview-grid { gap: .75rem; }
  .sp-team-preview-copy { padding: .85rem; }
  .sp-dance-style-grid { grid-template-columns: 1fr; }
  .sp-style-filter-wrap { align-items: flex-start; flex-direction: column; }
  .sp-style-filter-bar { flex-wrap: nowrap; width: 100%; overflow-x: auto; padding: .15rem .15rem .45rem; margin-inline: -.15rem; scrollbar-width: thin; }
  .sp-style-filter { flex: 0 0 auto; }
  .sp-style-overview-cta { grid-template-columns: 1fr; align-items: start; }
  .sp-style-overview-cta .wp-block-buttons { grid-column: 1; grid-row: auto; margin-top: 1rem; }
  .sp-style-detail-hero { grid-template-columns: 1fr; }
  .sp-style-detail-image { min-height: 0; height: min(78vw, 25rem); }
  .sp-style-detail-intro { padding: 2rem 1.5rem 2.4rem; }
  .sp-style-detail-intro .wp-block-buttons { width: 100%; align-items: stretch; flex-direction: column; }
  .sp-style-detail-intro .wp-block-button { width: 100%; }
  .sp-style-detail-intro .wp-block-button__link { width: 100%; box-sizing: border-box; text-align: center; }
  .sp-style-variant-grid { grid-template-columns: 1fr; }
  .sp-team-coaches .sp-team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sp-teacher-hero { grid-template-columns: 1fr; }
  .sp-teacher-portrait { min-height: 0; height: min(125vw, 33rem); }
  .sp-teacher-intro { padding: 2rem 1.5rem 2.4rem; }
  .sp-teacher-bio { margin-top: 3rem !important; }
  .sp-inline-cta { grid-template-columns: 1fr; }
  .sp-inline-cta .wp-block-buttons { grid-column: 1; grid-row: auto; margin-top: 1rem; }
  .sp-pdf-embed-bar { align-items: flex-start; flex-direction: column; }
  .sp-pdf-embed iframe { min-height: 31rem; }
  .sp-contact-page { padding: 1.5rem; }
  .sp-registration-help { align-items: flex-start; flex-direction: column; }
  .sp-registration-embed { padding: .35rem; border-radius: .8rem; }
}

@media (max-width: 782px) {
  .home.admin-bar .sp-header { top: 46px; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Helpful, branded 404 page. */
.sp-404-main { width: calc(100% - 2rem); max-width: var(--sp-container); min-height: 58vh; display: grid; align-items: center; margin-inline: auto; padding-block: clamp(3rem, 8vw, 7rem); box-sizing: border-box; }
.sp-404-card { overflow: hidden; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(20rem, .85fr); border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-white); box-shadow: 0 1.5rem 4rem rgb(40 17 35 / 10%); }
.sp-404-copy { padding: clamp(2rem, 5vw, 4.75rem); background: linear-gradient(145deg, #fff, #fff7f2); }
.sp-404-code { margin: 0 0 .8rem; color: var(--sp-pink); font-size: .82rem; font-weight: 900; letter-spacing: .18em; }
.sp-404-copy h1 { max-width: 12ch; margin: 0; font-size: clamp(2.65rem, 6vw, 5.2rem); line-height: .94; }
.sp-404-copy > p:not(.sp-404-code) { max-width: 38rem; margin: 1.4rem 0 0; color: rgb(24 13 29 / 66%); font-size: clamp(1rem, 1.4vw, 1.12rem); line-height: 1.65; }
.sp-404-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.sp-404-actions .wp-element-button { text-decoration: none; }
.sp-404-actions .is-style-outline { color: var(--sp-plum); border: 1px solid rgb(74 18 62 / 35%); background: transparent; }
.sp-404-links { display: grid; align-content: center; padding: clamp(1rem, 3vw, 2rem); background: linear-gradient(155deg, var(--sp-plum), #250c28); }
.sp-404-links a { position: relative; display: grid; gap: .22rem; padding: 1.25rem 3rem 1.25rem 1rem; color: var(--sp-white); border-bottom: 1px solid rgb(255 255 255 / 15%); text-decoration: none; }
.sp-404-links a:last-child { border-bottom: 0; }
.sp-404-links span { color: #ffb2a8; font-size: .7rem; font-weight: 850; letter-spacing: .13em; text-transform: uppercase; }
.sp-404-links strong { font-size: 1.12rem; }
.sp-404-links b { position: absolute; top: 50%; right: 1rem; font-size: 1.25rem; transform: translateY(-50%); transition: transform .2s ease; }
.sp-404-links a:hover b { transform: translate(.3rem, -50%); }

@media (max-width: 760px) {
  .sp-404-card { grid-template-columns: 1fr; }
  .sp-404-copy { padding: 2rem 1.5rem 2.5rem; }
  .sp-404-links { padding: .75rem; }
}
