/* ==========================================================================
   World Schools — School Profile Template
   Design tokens extracted from live Elementor template (2026-05-14)
   ========================================================================== */

/* ── Variables ─────────────────────────────────────────────────────────── */
:root {
  --ws-navy:        #1a2249;
  --ws-cyan:        #51e5ff;
  --ws-cyan-light:  #d5f6fe;
  --ws-border:      rgba(26,34,73,0.31);
  --ws-border-light:rgba(27,35,74,0.15);
  --ws-bg-subtle:   #f7f7f9;
  --ws-text-muted:  rgba(26,34,73,0.77);
  --ws-white:       #ffffff;
  --ws-font:        'World Schools', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --ws-max:         1200px;
  --ws-radius:      12px;
  --ws-radius-pill: 50px;
  --ws-shadow:      0 2px 12px rgba(26,34,73,0.10);
  --ws-shadow-md:   0 4px 24px rgba(26,34,73,0.14);
  --ws-gap:         32px;
  --ws-section-gap: 56px;
}

/* ── Reset / Base ──────────────────────────────────────────────────────── */
.ws-profile * { box-sizing: border-box; }
.ws-profile { font-family: var(--ws-font); color: var(--ws-navy); background: var(--ws-white); }
.ws-profile a:not([class*="ws-btn"]) { color: var(--ws-navy); text-decoration: none; }
.ws-profile a:not([class*="ws-btn"]):hover { opacity: .8; }

/* ── Container ─────────────────────────────────────────────────────────── */
.ws-container {
  max-width: var(--ws-max);
  margin: 0 auto;
  padding: 0 24px;
}
@media (max-width: 768px) { .ws-container { padding: 0 16px; } }

/* ── Typography ────────────────────────────────────────────────────────── */
.ws-profile h1 { font-size: 36px; font-weight: 800; line-height: 1.2; margin: 0; }
.ws-profile h2, .ws-section-title { font-size: 24px; font-weight: 800; line-height: 1.3; margin: 0 0 20px; color: var(--ws-navy); }
.ws-profile h3 { font-size: 16px; font-weight: 700; line-height: 1.5; margin: 0 0 8px; }
.ws-profile p  { font-size: 17px; font-weight: 400; line-height: 1.65; margin: 0 0 16px; }
.ws-profile p:last-child { margin-bottom: 0; }
p.ws-label, .ws-label { font-size: 16px; font-weight: 600; line-height: 1.5; color: var(--ws-navy); }
@media (max-width: 768px) {
  .ws-profile h1 { font-size: 26px; }
  .ws-profile h2, .ws-section-title { font-size: 20px; }
}

/* ── Section ───────────────────────────────────────────────────────────── */
.ws-section {
  padding: var(--ws-section-gap) 0;
  border-bottom: 1px solid var(--ws-border-light);
}
.ws-section:last-child { border-bottom: none; }

/* ── Buttons ───────────────────────────────────────────────────────────── */
.ws-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 10px 20px; border-radius: var(--ws-radius-pill);
  font-family: var(--ws-font); font-size: 14px; font-weight: 700;
  cursor: pointer; border: none; text-decoration: none; transition: opacity .2s, transform .1s;
  white-space: nowrap;
}
.ws-btn:hover { opacity: .88; transform: translateY(-1px); }
.ws-btn-primary   { background: var(--ws-navy) !important; color: #fff !important; }
.ws-btn-primary:hover { background: var(--ws-navy) !important; color: #fff !important; opacity: .88; }
.ws-btn-outline   { background: transparent; color: var(--ws-navy); border: 1.5px solid var(--ws-border); }
.ws-btn-outline:hover { background: var(--ws-navy) !important; color: #fff !important; border-color: var(--ws-navy) !important; opacity: 1; transform: translateY(-1px); }
.ws-btn-cyan      { background: var(--ws-cyan); color: var(--ws-navy) !important; }
/* Nuclear: force correct text on anchor buttons regardless of Astra overrides */
a.ws-btn-primary, button.ws-btn-primary,
.ws-profile a.ws-btn-primary,
.ws-header-actions a.ws-btn-primary,
.ws-sticky-nav a.ws-btn-primary { color: #ffffff !important; text-decoration: none !important; }
/* Mobile CTA primary = cyan bg → navy text */
.ws-mobile-cta button.ws-btn-primary,
.ws-mobile-cta a.ws-btn-primary { color: var(--ws-navy) !important; text-decoration: none !important; }
a.ws-btn-outline { color: var(--ws-navy) !important; text-decoration: none !important; }
.ws-btn-sm        { padding: 7px 14px; font-size: 13px; }
.ws-btn-full      { width: 100%; justify-content: center; }

/* ── Badges ────────────────────────────────────────────────────────────── */
.ws-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; border-radius: 20px;
  font-size: 12px; font-weight: 600;
  white-space: nowrap;
}
.ws-badge-verified  { background: var(--ws-cyan-light); color: var(--ws-navy); }
.ws-badge-claimed   { background: var(--ws-bg-subtle);  color: var(--ws-navy); border: 1px solid var(--ws-border-light); }
.ws-badge-unclaimed { background: transparent; color: var(--ws-text-muted); border: 1px solid var(--ws-border-light); }

/* ── Rating ────────────────────────────────────────────────────────────── */
.ws-rating { display: inline-flex; align-items: center; gap: 6px; }
.ws-stars { display: inline-flex; gap: 2px; flex-shrink: 0; }
.ws-star { width: 14px !important; height: 14px !important; min-width: 14px; fill: var(--ws-navy); flex-shrink: 0; display: block !important; }
.ws-star-empty { fill: rgba(26,34,73,.18); }
.ws-rating-count { font-size: 13px; font-weight: 600; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   HEADER SECTION
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-header { position: relative; }

/* ── Gallery ──────────────────────────────────────────────────────────── */

/* Desktop Airbnb grid */
.ws-gallery-grid {
  display: none; /* mobile-first: hidden until 961px */
  width: 100%;
  height: 540px;
  overflow: hidden;
  background: #fff;
}
@media (min-width: 961px) {
  .ws-gallery-grid {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 4px;
    background: #fff;
  }
}

.ws-gallery-cell {
  overflow: hidden; cursor: pointer; position: relative; background: #1a2249;
}
.ws-gallery-cell img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .4s ease, opacity .2s;
}
.ws-gallery-cell:hover img { transform: scale(1.05); opacity: .88; }

.ws-gallery-cell--main { height: 540px; }

.ws-gallery-thumbs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 4px;
  height: 540px;
  background: #fff;
}
.ws-gallery-cell--thumb { height: 100%; }

/* "See all photos" overlay badge */
.ws-gallery-cell--last { position: relative; }
.ws-gallery-see-all {
  position: absolute; bottom: 12px; right: 12px;
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(255,255,255,.95);
  color: var(--ws-navy);
  font-size: 13px; font-weight: 700;
  padding: 8px 14px;
  border-radius: 8px;
  border: 1.5px solid var(--ws-border);
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
  cursor: pointer;
  pointer-events: none; /* parent cell handles click */
}

/* Mobile swipe gallery */
.ws-gallery-mobile { display: block; }
@media (min-width: 961px) { .ws-gallery-mobile { display: none; } }

/* Single featured image banner (no gallery) */
.ws-gallery-hero--single {
  width: 100%; height: 540px; overflow: hidden; background: var(--ws-navy);
}
.ws-gallery-hero--single img {
  width: 100%; height: 100%; object-fit: cover;
}

/* ── Gallery Modal ────────────────────────────────────────────────────── */
.ws-gmodal {
  position: fixed; inset: 0; z-index: 99999;
  background: #fff;
  display: flex; flex-direction: column;
  overflow: hidden;
}
.ws-gmodal[hidden] { display: none; }
.ws-gmodal-tabs[hidden] { display: none !important; }

/* Header — 3-column grid: [close] [title] [actions] */
.ws-gmodal-header {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 14px 24px;
  border-bottom: 1px solid var(--ws-border-light);
  flex-shrink: 0;
}
.ws-gmodal-title {
  justify-self: center;
  display: flex; flex-direction: column; align-items: center;
  text-align: center; gap: 3px;
  min-width: 0; overflow: hidden;
}
.ws-gmodal-school-name {
  font-size: 16px; font-weight: 700; color: var(--ws-navy);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 360px;
}
.ws-gmodal-rating {
  display: flex; align-items: center; gap: 5px;
  font-size: 13px; color: var(--ws-text-muted);
}
.ws-gmodal-review-count { color: var(--ws-text-muted); font-size: 12px; }

.ws-gmodal-close {
  justify-self: start;
  width: 36px; height: 36px; flex-shrink: 0;
  border-radius: 50%; border: 1.5px solid var(--ws-border-light);
  background: #fff; cursor: pointer; outline: none;
  display: flex; align-items: center; justify-content: center;
  color: var(--ws-navy); transition: background .15s;
}
.ws-gmodal-close:hover { background: var(--ws-bg-subtle); }

.ws-gmodal-actions {
  justify-self: end;
  display: flex; align-items: center; gap: 8px;
}
.ws-gmodal-share {
  display: flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: 6px;
  border: 1.5px solid var(--ws-border-light);
  background: #fff; cursor: pointer; outline: none;
  font-size: 13px; font-weight: 600; color: var(--ws-navy);
  transition: background .15s, border-color .15s;
}
.ws-gmodal-share:hover { background: var(--ws-bg-subtle); border-color: rgba(26,34,73,.3); }

/* Tabs — thumbnail strip */
.ws-gmodal-tabs {
  display: flex; align-items: flex-end; gap: 8px;
  padding: 12px 24px 0;
  flex-shrink: 0;
  overflow-x: auto; scrollbar-width: none;
}
.ws-gmodal-tabs::-webkit-scrollbar { display: none; }

.ws-gmodal-tab {
  display: flex; flex-direction: column; align-items: center;
  gap: 8px; flex-shrink: 0;
  padding: 0 4px 10px;
  border: none; border-bottom: 2px solid transparent;
  background: none; cursor: pointer; outline: none;
  margin-bottom: -1px;
  transition: border-color .15s;
}
.ws-gmodal-tab-thumb {
  width: 88px; height: 60px;
  object-fit: cover; border-radius: 8px;
  border: 2px solid transparent;
  display: block; transition: border-color .15s;
}
.ws-gmodal-tab-label {
  font-size: 12px; font-weight: 500; color: var(--ws-text-muted);
  white-space: nowrap; transition: color .15s;
}
.ws-gmodal-tab:hover .ws-gmodal-tab-thumb { border-color: rgba(26,34,73,.25); }
.ws-gmodal-tab:hover .ws-gmodal-tab-label { color: var(--ws-navy); }
.ws-gmodal-tab.is-active { border-bottom-color: var(--ws-cyan); }
.ws-gmodal-tab.is-active .ws-gmodal-tab-thumb { border-color: transparent; }
.ws-gmodal-tab.is-active .ws-gmodal-tab-label { color: var(--ws-navy); font-weight: 700; }

/* Masonry body */
.ws-gmodal-body {
  flex: 1; overflow-y: auto;
  padding: 20px 24px 40px;
}
.ws-gmodal-masonry {
  columns: 4; column-gap: 8px;
}
.ws-gmodal-masonry-item {
  break-inside: avoid; margin-bottom: 8px;
  border-radius: 8px; overflow: hidden;
  cursor: pointer; display: block;
  position: relative;
}
.ws-gmodal-masonry-item img {
  width: 100%; height: auto; display: block;
  transition: transform .25s;
}
.ws-gmodal-masonry-item:hover img { transform: scale(1.04); }
.ws-gmodal-masonry-item:focus-visible {
  outline: 2px solid var(--ws-cyan);
  outline-offset: 2px;
  border-radius: 8px;
}
.ws-gmodal-masonry-item::after {
  content: ''; position: absolute; inset: 0;
  background: rgba(0,0,0,0); transition: background .2s;
  border-radius: 8px; pointer-events: none;
}
.ws-gmodal-masonry-item:hover::after { background: rgba(0,0,0,.07); }

/* Single-image viewer (sits on top of modal) */
.ws-gmodal-viewer {
  position: absolute; inset: 0;
  background: rgba(10,10,20,.93);
  display: flex; align-items: center; justify-content: center;
  z-index: 2;
}
.ws-gmodal-viewer[hidden] { display: none; }

.ws-gmodal-viewer-img {
  max-width: calc(100% - 140px);
  max-height: calc(100% - 80px);
  object-fit: contain; border-radius: 4px;
  user-select: none;
}

.ws-gmodal-viewer-close,
.ws-gmodal-viewer-prev,
.ws-gmodal-viewer-next {
  position: absolute;
  background: rgba(0,0,0,.62); border: 1.5px solid rgba(255,255,255,.5);
  color: #fff; cursor: pointer; border-radius: 50%; outline: none;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s, border-color .15s;
}
.ws-gmodal-viewer-close:hover,
.ws-gmodal-viewer-prev:hover,
.ws-gmodal-viewer-next:hover {
  background: rgba(0,0,0,.82); border-color: rgba(255,255,255,.75);
}

.ws-gmodal-viewer-close {
  top: 16px; right: 16px;
  width: 40px; height: 40px;
}
.ws-gmodal-viewer-prev,
.ws-gmodal-viewer-next {
  top: 50%; transform: translateY(-50%);
  width: 48px; height: 48px;
}
.ws-gmodal-viewer-prev { left: 16px; }
.ws-gmodal-viewer-next { right: 16px; }
.ws-gmodal-viewer-prev:disabled,
.ws-gmodal-viewer-next:disabled { opacity: .2; cursor: default; }

/* CSS-only icons — bypasses any Astra SVG override */
.ws-gmodal-viewer-prev::before,
.ws-gmodal-viewer-next::before {
  content: '';
  position: absolute; top: 50%; left: 50%;
  width: 11px; height: 11px;
  border-top: 2.5px solid #fff;
  border-right: 2.5px solid #fff;
  border-left: none; border-bottom: none;
}
.ws-gmodal-viewer-prev::before  { transform: translate(-40%, -50%) rotate(-135deg); }
.ws-gmodal-viewer-next::before  { transform: translate(-60%, -50%) rotate(45deg); }
.ws-gmodal-viewer-close::before,
.ws-gmodal-viewer-close::after  {
  content: '';
  position: absolute; top: 50%; left: 50%;
  width: 16px; height: 2px;
  background: #fff; border-radius: 1px;
}
.ws-gmodal-viewer-close::before { transform: translate(-50%, -50%) rotate(45deg); }
.ws-gmodal-viewer-close::after  { transform: translate(-50%, -50%) rotate(-45deg); }

.ws-gmodal-viewer-counter {
  position: absolute; bottom: 16px; left: 50%; transform: translateX(-50%);
  color: rgba(255,255,255,.8); font-size: 13px; font-weight: 600;
  background: rgba(0,0,0,.4); padding: 4px 12px; border-radius: 20px;
}

@media (max-width: 1024px) {
  .ws-gmodal-masonry { columns: 3; }
}
@media (max-width: 768px) {
  .ws-gmodal-header { padding: 10px 16px; }
  .ws-gmodal-school-name { font-size: 14px; max-width: 200px; }
  .ws-gmodal-share span { display: none; }
  .ws-gmodal-share { padding: 7px 10px; }
  .ws-gmodal-tabs { padding: 10px 16px 0; gap: 6px; }
  .ws-gmodal-tab-thumb { width: 72px; height: 50px; }
  .ws-gmodal-body { padding: 14px 12px 40px; }
  .ws-gmodal-masonry { columns: 2; column-gap: 6px; }
  .ws-gmodal-masonry-item { margin-bottom: 6px; }
  .ws-gmodal-viewer-img { max-width: calc(100% - 90px); }
  .ws-gmodal-viewer-prev { left: 8px; }
  .ws-gmodal-viewer-next { right: 8px; }
}
@media (max-width: 480px) {
  .ws-gmodal-masonry { columns: 2; }
  .ws-gmodal-rating { display: none; }
  .ws-gmodal-header { grid-template-columns: auto 1fr auto; gap: 8px; }
  .ws-gmodal-title { justify-self: start; align-items: flex-start; }
}

/* Header info bar */
.ws-header-bar {
  padding: 24px 0 0;
}
.ws-header-inner {
  display: flex; align-items: flex-start; gap: 20px;
}
.ws-header-logo {
  flex-shrink: 0; width: 80px; height: 80px; border-radius: var(--ws-radius);
  overflow: hidden; border: 1px solid var(--ws-border-light);
  background: var(--ws-white); padding: 6px;
  display: flex; align-items: center; justify-content: center;
}
.ws-header-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.ws-header-logo-inline { display: none; } /* desktop: hidden */
.ws-header-info { flex: 1; min-width: 0; }
.ws-header-top {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 8px;
}
.ws-school-name { margin: 0 0 6px; }
.ws-header-meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  margin-top: 8px; padding-bottom: 4px;
  font-size: 14px; color: var(--ws-text-muted);
}
.ws-header-meta-item { display: flex; align-items: center; gap: 5px; }
.ws-header-actions {
  flex-shrink: 0; display: flex; flex-direction: row; gap: 8px; align-items: center;
}
@media (max-width: 768px) {
  .ws-header-inner { flex-wrap: nowrap; }
  .ws-header-actions { display: none; }
  /* Hide standalone logo column — small inline logo in badge row takes over */
  .ws-header-logo { display: none; }
  .ws-header-logo-inline {
    display: block;
    width: 28px; height: 28px;
    border-radius: 5px; object-fit: contain; flex-shrink: 0;
  }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   STICKY NAV
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-sticky-nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: var(--ws-white);
  border-bottom: 1px solid var(--ws-border-light);
  box-shadow: 0 2px 8px rgba(26,34,73,0.07);
  transform: translateY(-100%);
  transition: transform .25s ease;
}
.ws-sticky-nav.is-visible { transform: translateY(0); }
/* Fade-out right edge on mobile to hint at horizontal scroll */
@media (max-width: 960px) {
  .ws-sticky-nav { overflow: hidden; }
  .ws-sticky-nav::after {
    content: ''; position: absolute; right: 0; top: 0; bottom: 0;
    width: 48px; background: linear-gradient(to right, transparent, #fff);
    pointer-events: none; z-index: 1;
  }
}
.ws-sticky-nav-inner {
  display: flex; align-items: center; gap: 0;
  overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none;
}
.ws-sticky-nav-inner::-webkit-scrollbar { display: none; }
.ws-nav-link {
  display: block; padding: 14px 18px; white-space: nowrap;
  font-size: 14.5px; font-weight: 600; color: var(--ws-navy);
  border-bottom: 2.5px solid transparent; transition: border-color .2s, color .2s;
  text-decoration: none;
}
.ws-nav-link:hover, .ws-nav-link.is-active { border-bottom-color: var(--ws-cyan); color: var(--ws-navy); }
/* Enquire CTA pinned to right of sticky nav (desktop) */
.ws-sticky-nav-enquire {
  margin-left: auto; flex-shrink: 0;
  padding: 8px 16px; display: flex; align-items: center;
}
@media (max-width: 768px) {
  .ws-nav-link { padding: 12px 14px; font-size: 13.5px; }
  /* Hide nav enquire button on mobile — bottom CTA bar is the single CTA */
  .ws-sticky-nav-enquire { display: none; }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   TWO-COLUMN LAYOUT
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-profile-layout {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: var(--ws-gap);
  align-items: start;
  padding: 20px 0 40px;
}
.ws-main-col { min-width: 0; }
.ws-main-col > .ws-section:first-child { padding-top: 0; }
/* Sidebar aligns with content start — no extra offset needed now */
.ws-sidebar-col {
  position: sticky; top: 60px; padding-top: 0;
  align-self: start;
}
@media (max-width: 960px) {
  .ws-profile-layout { grid-template-columns: 1fr; padding: 16px 0 32px; }
  .ws-sidebar-col { display: none; } /* sidebar hidden on mobile/tablet — mobile CTA + contact-bottom handle enquiries */
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   KEYFACTS GRID
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-keyfacts {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 10px;
  margin-top: 24px;
}
.ws-keyfact {
  padding: 14px 16px;
  background: var(--ws-bg-subtle);
  border: 1px solid var(--ws-border-light);
  border-radius: var(--ws-radius);
}
.ws-keyfact-label { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--ws-text-muted); margin-bottom: 6px; }
.ws-keyfact-value { font-size: 17px; font-weight: 800; color: var(--ws-navy); line-height: 1.3; word-break: break-word; }
.ws-keyfacts--light .ws-keyfact-value { font-size: 15px; font-weight: 500; }

/* ── Tags / Terms — unified style (matches activity tags) ──────────────── */
.ws-terms { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.ws-term {
  padding: 5px 12px; border-radius: 20px;
  font-size: 13px; font-weight: 500;
  background: var(--ws-bg-subtle); color: var(--ws-navy);
  border: 1px solid var(--ws-border-light);
}
.ws-term-outline { /* same as ws-term — no distinction */
  background: var(--ws-bg-subtle); color: var(--ws-navy);
  border: 1px solid var(--ws-border-light);
}
.ws-term:hover, .ws-term-outline:hover {
  background: var(--ws-cyan-light); border-color: var(--ws-cyan);
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   HIGHLIGHTS (WHY CHOOSE)
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-highlights {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
  margin-bottom: var(--ws-gap);
}
.ws-highlight {
  padding: 20px; border-radius: var(--ws-radius);
  background: var(--ws-bg-subtle); border: 1px solid var(--ws-border-light);
  transition: box-shadow .2s;
}
.ws-highlight:hover { box-shadow: var(--ws-shadow); }
.ws-highlight-icon {
  width: 26px; height: 26px; margin-bottom: 10px;
  background: var(--ws-navy); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.ws-highlight-icon svg { width: 12px; height: 12px; fill: none; stroke: #fff; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.ws-highlight p { font-size: 15px; font-weight: 600; margin: 0; line-height: 1.4; color: var(--ws-navy); }
@media (max-width: 700px) {
  .ws-highlights { grid-template-columns: 1fr; gap: 10px; }
  .ws-highlight { padding: 16px; }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   DESCRIPTION UNFOLD
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-unfold-wrap { position: relative; }
.ws-unfold-content {
  position: relative; overflow: hidden;
  transition: max-height .4s ease;
}
.ws-unfold-content.is-collapsed { max-height: 160px; }
.ws-unfold-btn {
  margin-top: 8px; background: none; border: none; cursor: pointer;
  font-family: var(--ws-font); font-size: 14px; font-weight: 600;
  color: var(--ws-navy); padding: 0; display: flex; align-items: center; gap: 6px;
}
.ws-unfold-btn svg { width: 14px; height: 14px; transition: transform .3s; }
.ws-unfold-btn.is-open svg { transform: rotate(180deg); }
.ws-unfold-btn:hover { background: var(--ws-cyan-light); border-radius: 4px; }
.ws-unfold-btn { padding: 3px 7px; margin-left: -7px; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   FEES TABLE
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-fees-grid {
  display: flex; flex-wrap: wrap; gap: 10px;
  margin-top: 24px;
}
.ws-fee-card {
  padding: 16px 20px;
  background: var(--ws-bg-subtle);
  border: 1px solid var(--ws-border-light);
  border-radius: var(--ws-radius);
  text-align: left;
  min-width: 150px;
}
.ws-fee-card-label { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--ws-text-muted); margin-bottom: 6px; }
.ws-fee-card-amount { font-size: 26px; font-weight: 800; color: var(--ws-navy); line-height: 1.1; }
.ws-fee-card-period { font-size: 12px; color: var(--ws-text-muted); margin-top: 4px; }
.ws-fee-card.ws-fee-card--highlight { background: var(--ws-bg-subtle); border-color: var(--ws-border-light); }

.ws-fees-note {
  display: flex; align-items: center; flex-wrap: wrap;
  gap: 16px; padding: 12px 0 0;
  font-size: 12px; color: var(--ws-text-muted);
}
.ws-fees-note span { display: flex; align-items: center; gap: 4px; }
.ws-fees-note svg { flex-shrink: 0; opacity: .7; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   SECTION GALLERY STRIP
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-gallery-strip { margin: 16px 0; }
.ws-gallery-strip-row {
  display: flex; gap: 8px;
  overflow-x: auto; scroll-snap-type: x mandatory;
  scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.ws-gallery-strip-row::-webkit-scrollbar { display: none; }
.ws-gallery-strip-row img {
  flex-shrink: 0; width: 220px; height: 155px;
  object-fit: cover; border-radius: 8px;
  scroll-snap-align: start; cursor: pointer;
  transition: opacity .15s;
}
.ws-gallery-strip-row img:hover { opacity: .88; }
.ws-strip-nav { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.ws-strip-nav-btn {
  position: relative;
  width: 34px; height: 34px; border-radius: 50%; outline: none;
  background: #fff; border: 1.5px solid var(--ws-border-light);
  color: var(--ws-navy); cursor: pointer; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s;
}
.ws-strip-nav-btn:hover { background: var(--ws-bg-subtle); }
/* CSS-only chevrons — bypasses Astra SVG overrides entirely */
.ws-strip-nav-btn::before {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  width: 8px; height: 8px;
  border-top: 2px solid #1a2249;
  border-right: 2px solid #1a2249;
  border-left: none; border-bottom: none;
}
.ws-strip-nav-btn[data-strip-dir="prev"]::before {
  transform: translate(-40%, -50%) rotate(-135deg);
}
.ws-strip-nav-btn[data-strip-dir="next"]::before {
  transform: translate(-60%, -50%) rotate(45deg);
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   ACTIVITIES TAG CLOUD
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-activities-cloud { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.ws-activity-tag {
  padding: 5px 12px; border-radius: 20px;
  font-size: 13px; font-weight: 500;
  background: var(--ws-bg-subtle); color: var(--ws-navy);
  border: 1px solid var(--ws-border-light);
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   LOCAL CONTEXT
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-local-context {
  margin: var(--ws-gap) 0;
  padding: 28px 32px;
  background: var(--ws-cyan-light);
  border-radius: var(--ws-radius);
  border-left: 4px solid var(--ws-cyan);
}
.ws-local-context p { font-size: 16px; line-height: 1.7; }
.ws-local-context--rtl { text-align: right; direction: rtl; }
@media (max-width: 768px) { .ws-local-context { padding: 20px; } }

/* ── ════════════════════════════════════════════════════════════════════ ──
   SIDEBAR
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-sidebar-card {
  background: var(--ws-white); border: 1px solid var(--ws-border-light);
  border-radius: var(--ws-radius); overflow: hidden;
  box-shadow: var(--ws-shadow); margin-bottom: 20px;
}
.ws-sidebar-card-header {
  padding: 20px 24px 0;
}
.ws-sidebar-card h3 { font-size: 18px; font-weight: 700; margin-bottom: 4px; }
.ws-sidebar-form { padding: 16px 20px 20px; }
.ws-sidebar-logo {
  display: flex; flex-direction: column; align-items: center;
  padding: 24px; gap: 12px; text-align: center;
}
.ws-sidebar-logo img { max-width: 120px; max-height: 80px; object-fit: contain; }
.ws-sidebar-logo .ws-school-sidebar-name { font-size: 16px; font-weight: 700; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   REVIEWS SECTION
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-reviews-section { background: var(--ws-bg-subtle); }
.ws-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--ws-border-light); background: transparent !important; }
.ws-tab-btn {
  padding: 14px 24px; font-family: var(--ws-font); font-size: 15px; font-weight: 600;
  color: var(--ws-text-muted); cursor: pointer;
  background: transparent !important; background-color: transparent !important;
  border: none !important; border-bottom: 3px solid transparent !important;
  border-radius: 0 !important; box-shadow: none !important;
  margin-bottom: -2px;
  transition: color .2s, border-color .2s;
}
.ws-tab-btn.is-active {
  color: var(--ws-navy) !important;
  background: transparent !important; background-color: transparent !important;
  border-bottom-color: var(--ws-cyan) !important;
  border-radius: 0 !important;
}
.ws-tab-panel { display: none; }
.ws-tab-panel.is-active { display: block; }
.ws-tab-content { padding: 32px 0; }
.ws-map-wrap { width: 100%; height: 400px; border-radius: var(--ws-radius); overflow: hidden; }
.ws-location-list { margin-top: 16px; display: flex; flex-direction: column; gap: 8px; }
.ws-location-item { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; }
@media (max-width: 768px) {
  .ws-tab-btn { padding: 12px 16px; font-size: 14px; }
  .ws-map-wrap { height: 280px; }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   CONTACT BOTTOM
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-contact-bottom {
  background: var(--ws-navy); color: var(--ws-white); padding: 60px 0;
}
.ws-contact-bottom h2 { color: var(--ws-white); }
.ws-contact-bottom-inner {
  display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: start;
}
.ws-contact-intro p { color: rgba(255,255,255,.8); font-size: 16px; }
@media (max-width: 768px) {
  .ws-contact-bottom-inner { grid-template-columns: 1fr; gap: 32px; }
  .ws-contact-bottom { padding: 40px 0; }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   SIMILAR SCHOOLS
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-similar-section {
  padding: var(--ws-section-gap) 0;
  background: var(--ws-bg-subtle);
  border-top: 1px solid var(--ws-border-light);
}
.ws-similar-section .ws-section-title { margin-bottom: 24px; }

/* Grid */
.ws-similar-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
@media (max-width: 900px) {
  .ws-similar-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
  .ws-similar-grid { grid-template-columns: 1fr; }
}

/* Card */
.ws-similar-card {
  display: flex; flex-direction: column;
  background: var(--ws-white);
  border-radius: var(--ws-radius);
  border: 1px solid var(--ws-border-light);
  overflow: hidden;
  text-decoration: none;
  color: var(--ws-navy);
  transition: box-shadow .2s, transform .2s;
}
.ws-similar-card:hover {
  box-shadow: var(--ws-shadow);
  transform: translateY(-2px);
  text-decoration: none;
}

/* Thumbnail */
.ws-similar-thumb {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--ws-bg-subtle);
  flex-shrink: 0;
}
.ws-similar-thumb img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.ws-similar-thumb-placeholder {
  width: 100%; height: 100%;
  background: linear-gradient(135deg, var(--ws-bg-subtle) 0%, var(--ws-border-light) 100%);
}

/* Overlaid logo bubble */
.ws-similar-logo {
  position: absolute; bottom: 8px; left: 8px;
  background: var(--ws-white);
  border-radius: 6px;
  padding: 4px 6px;
  box-shadow: 0 1px 4px rgba(0,0,0,.12);
}
.ws-similar-logo img {
  width: auto; max-width: 48px; max-height: 32px;
  object-fit: contain; display: block;
}

/* Body */
.ws-similar-body {
  padding: 14px 16px 16px;
  display: flex; flex-direction: column; gap: 6px;
  flex: 1;
}
.ws-similar-name {
  font-size: 14px; font-weight: 700;
  color: var(--ws-navy); margin: 0;
  line-height: 1.3;
}
.ws-similar-loc {
  font-size: 12px; color: var(--ws-text-muted); margin: 0;
}
.ws-similar-tags {
  display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px;
}
.ws-similar-tags .ws-activity-tag {
  font-size: 11px; padding: 3px 9px;
}
.ws-similar-rating {
  display: flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 6px;
}
.ws-similar-rating .ws-stars { font-size: 11px; }
.ws-similar-rating .ws-star  { width: 12px; height: 12px; }
.ws-similar-rating-text {
  font-size: 12px; font-weight: 600; color: var(--ws-navy);
}
.ws-similar-rating-text span {
  font-weight: 400; color: var(--ws-text-muted);
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   LATEST NEWS
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-news-header {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 16px; margin-bottom: 24px;
}
.ws-news-section-title { margin-bottom: 0 !important; }
.ws-news-view-all {
  font-size: 14px; font-weight: 600; color: var(--ws-navy);
  text-decoration: none; white-space: nowrap; flex-shrink: 0;
  transition: color .15s;
}
.ws-news-view-all:hover { color: var(--ws-cyan); text-decoration: underline; }

.ws-news-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
@media (max-width: 900px) {
  .ws-news-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
  .ws-news-grid { grid-template-columns: 1fr; }
  .ws-news-header { flex-direction: column; align-items: flex-start; gap: 8px; }
}

.ws-news-card {
  display: flex; flex-direction: column;
  background: transparent;
  border: none;
  text-decoration: none;
  color: var(--ws-navy);
  transition: opacity .2s;
}
.ws-news-card:hover { opacity: .85; text-decoration: none; }
.ws-news-card:hover .ws-news-thumb img { transform: scale(1.03); }
.ws-news-thumb {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: 12px;
  background: var(--ws-bg-subtle);
  flex-shrink: 0;
}
.ws-news-thumb img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform .35s ease;
}
.ws-news-body {
  padding: 10px 0 0;
  display: flex; flex-direction: column; gap: 4px;
}
.ws-news-type {
  position: absolute; top: 10px; left: 10px; z-index: 1;
  font-size: 11px; font-weight: 600;
  background: rgba(255,255,255,.9);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  border-radius: 4px; padding: 3px 8px;
  color: var(--ws-navy);
}
.ws-news-title {
  font-size: 14px; font-weight: 600; margin: 0;
  color: var(--ws-navy); line-height: 1.45;
}
.ws-news-byline {
  display: block;
  font-size: 12px; color: var(--ws-text-muted); margin: 0;
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   FOOTER LINKS
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-footer-links {
  padding: 40px 0; background: var(--ws-bg-subtle);
  border-top: 1px solid var(--ws-border-light);
}
.ws-footer-links-inner { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: center; }
.ws-footer-term {
  padding: 6px 14px; border-radius: 20px; font-size: 13px; font-weight: 500;
  background: var(--ws-white); border: 1px solid var(--ws-border-light); color: var(--ws-navy);
}
.ws-footer-term:hover { background: var(--ws-cyan-light); border-color: var(--ws-cyan); }

/* ── ════════════════════════════════════════════════════════════════════ ──
   SCHEMA / STRUCTURED DATA HELPERS (hidden)
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border-width: 0; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   MOBILE CONTACT FLOAT
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-mobile-cta {
  display: none; position: fixed; bottom: 0; left: 0; right: 0; z-index: 200;
  background: var(--ws-white); border-top: 1px solid var(--ws-border-light);
  padding: 12px 16px; box-shadow: 0 -4px 20px rgba(26,34,73,0.12);
}
@media (max-width: 960px) { .ws-mobile-cta { display: block; } }

/* ── ════════════════════════════════════════════════════════════════════ ──
   RESPONSIVE — COMPREHENSIVE BREAKPOINTS
   ── ════════════════════════════════════════════════════════════════════ ── */

/* Tablet range 601px–960px: iPad portrait, landscape tablet, narrow laptop */
@media (min-width: 601px) and (max-width: 960px) {
  .ws-highlights { grid-template-columns: repeat(2, 1fr); }
  .ws-fees-grid  { grid-template-columns: repeat(2, 1fr); }
  .ws-keyfacts   { grid-template-columns: repeat(3, 1fr); }
  .ws-profile-layout { padding: 32px 0; }
  :root { --ws-section-gap: 44px; }
}

/* Mobile (max 768px) */
@media (max-width: 768px) {
  :root {
    --ws-section-gap: 36px;
    --ws-gap: 20px;
  }
  /* Section padding bottom compensation for fixed CTA bar */
  .ws-footer-links { padding-bottom: 72px; }

  /* Header bar: overlap gallery (Airbnb card effect) */
  .ws-header-bar {
    padding-top: 20px;
    margin-top: -20px;
    border-radius: 20px 20px 0 0;
    background: var(--ws-white);
    position: relative;
    z-index: 2;
  }
  .ws-school-name { font-size: 26px !important; }
  .ws-header-meta { gap: 8px; font-size: 13px; }
  .ws-header-meta-item { font-size: 13px; }
  /* Rating on its own line, slightly larger */
  .ws-header-meta-item.ws-rating { width: 100%; font-size: 14px; }

  /* Badges wrap cleanly */
  .ws-header-top { gap: 6px; }
  .ws-badge { font-size: 11px; padding: 3px 8px; }

  /* Buttons in header: equal width side by side */
  .ws-header-actions { gap: 8px; }
  .ws-header-actions .ws-btn { flex: 1; justify-content: center; }

  /* Keyfacts: 2 columns on mobile */
  .ws-keyfacts { grid-template-columns: repeat(2, 1fr); }

  /* Fee cards: 2 columns on mobile */
  .ws-fees-grid { grid-template-columns: repeat(2, 1fr); }

  /* Reduce why-choose padding */
  .ws-highlight { padding: 16px; }
  .ws-highlight p { font-size: 14px; }

  /* Contact bottom: tighten */
  .ws-contact-bottom { padding: 40px 0 70px; } /* extra bottom for mobile CTA bar */

  /* Reviews tabs: smaller text */
  .ws-tab-btn { padding: 11px 14px; font-size: 13.5px; }

  /* Local context */
  .ws-local-context { padding: 20px; margin: 24px 0; }

  /* Section title */
  .ws-section-title { margin-bottom: 16px; }

  /* Similar section */
  .ws-similar-section { padding: 36px 0; }
}

/* Small mobile (max 480px) */
@media (max-width: 480px) {
  .ws-gallery-hero { height: 220px; }
  .ws-header-logo { width: 52px; height: 52px; }
  .ws-school-name { font-size: 24px !important; }
  .ws-header-meta { margin-top: 6px; }
  .ws-nav-link { padding: 11px 12px; font-size: 12.5px; }
  .ws-highlights { gap: 10px; }
  .ws-highlight { padding: 14px; }
  .ws-fees-grid { grid-template-columns: 1fr; max-width: 280px; }
  .ws-fee-card-amount { font-size: 20px; }
  .ws-keyfacts { grid-template-columns: repeat(2, 1fr); gap: 10px; }
}

/* ── PRINT / ACCESSIBILITY ──────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .ws-profile *, .ws-profile *::before, .ws-profile *::after {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
}

@media print {
  .ws-sticky-nav, .ws-mobile-cta, .ws-header-actions { display: none !important; }
  .ws-unfold-content { max-height: none !important; }
  .ws-section { page-break-inside: avoid; }
}

/* ── JetFormBuilder overrides (sidebar + bottom contact) ──────────────── */

/* Shared resets */
.ws-sidebar-form .jet-form-builder,
.ws-contact-form-col .jet-form-builder {
  font-family: var(--ws-font);
}

/* Remove WP block default gap (27px) from column blocks inside the form */
.ws-sidebar-form .wp-block-columns,
.ws-contact-form-col .wp-block-columns {
  margin-bottom: 16px !important;
}

.ws-sidebar-form .jet-form-builder-row,
.ws-contact-form-col .jet-form-builder-row {
  margin-bottom: 16px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* Submit button: rectangular, same height as inputs */
.ws-sidebar-form .jet-form-builder__submit,
.ws-contact-form-col .jet-form-builder__submit,
.ws-menquire-body .jet-form-builder__submit,
.ws-sidebar-form [type="submit"],
.ws-contact-form-col [type="submit"],
.ws-menquire-body [type="submit"] {
  height: 52px !important;
  border-radius: 10px !important;
  width: 100% !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  cursor: pointer !important;
  text-align: center !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: var(--ws-cyan) !important;
  color: var(--ws-navy) !important;
  border: none !important;
  outline: none !important;
}
.ws-sidebar-form .jet-form-builder__submit:hover,
.ws-contact-form-col .jet-form-builder__submit:hover,
.ws-menquire-body .jet-form-builder__submit:hover,
.ws-sidebar-form [type="submit"]:hover,
.ws-contact-form-col [type="submit"]:hover,
.ws-menquire-body [type="submit"]:hover { opacity: .9 !important; }

.ws-sidebar-form .jet-form-builder__label-text,
.ws-contact-form-col .jet-form-builder__label-text {
  font-size: 12px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: .04em !important;
  margin-bottom: 5px !important;
  display: block !important;
}

/* Sidebar: dark navy labels */
.ws-sidebar-form .jet-form-builder__label-text {
  color: var(--ws-navy) !important;
}

/* Bottom section: light labels on navy */
.ws-contact-form-col .jet-form-builder__label-text {
  color: rgba(255,255,255,.8) !important;
}

/* Input / select / textarea fields — JFB: the input IS the field element */
.ws-sidebar-form .jet-form-builder input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]),
.ws-sidebar-form .jet-form-builder select,
.ws-sidebar-form .jet-form-builder textarea,
.ws-contact-form-col .jet-form-builder input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]),
.ws-contact-form-col .jet-form-builder select,
.ws-contact-form-col .jet-form-builder textarea {
  width: 100% !important;
  padding: 0 14px !important;
  font-size: 14px !important;
  font-family: var(--ws-font) !important;
  border-radius: 4px !important;
  border: 1.5px solid var(--ws-border) !important;
  background: var(--ws-white) !important;
  color: var(--ws-navy) !important;
  box-shadow: none !important;
  outline: none !important;
  transition: border-color .15s !important;
  box-sizing: border-box !important;
  -webkit-appearance: none !important;
  height: 48px !important;
}
.ws-sidebar-form .jet-form-builder textarea,
.ws-contact-form-col .jet-form-builder textarea {
  height: auto !important;
  min-height: 90px !important;
  padding: 10px 14px !important;
  resize: vertical !important;
}
.ws-sidebar-form .jet-form-builder input:focus,
.ws-sidebar-form .jet-form-builder select:focus,
.ws-sidebar-form .jet-form-builder textarea:focus,
.ws-contact-form-col .jet-form-builder input:focus,
.ws-contact-form-col .jet-form-builder select:focus,
.ws-contact-form-col .jet-form-builder textarea:focus {
  border-color: var(--ws-cyan) !important;
  box-shadow: 0 0 0 3px rgba(81,229,255,.18) !important;
}

/* Phone field: country code (left col, has label) + phone input (right col, no label).
   Add an invisible label-height spacer before the phone input column so both inputs
   align at the same vertical position. The ::before mirrors the label's exact styling. */
.ws-sidebar-form .wp-block-column:has(input[name="phone"])::before,
.ws-contact-form-col .wp-block-column:has(input[name="phone"])::before {
  content: '\00a0' !important;
  display: block !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: .04em !important;
  line-height: inherit !important;
  margin-bottom: 5px !important;
  visibility: hidden !important;
}

/* Submit button — cyan CTA for both forms */
.ws-sidebar-form .jet-form-builder__action-button,
.ws-contact-form-col .jet-form-builder__action-button {
  width: 100% !important;
  padding: 14px 24px !important;
  font-family: var(--ws-font) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  border-radius: var(--ws-radius-pill) !important;
  border: none !important;
  cursor: pointer !important;
  letter-spacing: .01em !important;
  transition: opacity .2s, transform .1s !important;
  background: var(--ws-cyan) !important;
  color: var(--ws-navy) !important;
  margin-top: 8px !important;
  text-align: center !important;
  display: block !important;
  line-height: 1.2 !important;
}
.ws-sidebar-form .jet-form-builder__action-button:hover,
.ws-contact-form-col .jet-form-builder__action-button:hover {
  opacity: .88 !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 14px rgba(81,229,255,.45) !important;
}

/* Privacy disclaimer below submit */
.ws-sidebar-form .jet-form-builder-messages-wrap,
.ws-contact-form-col .jet-form-builder-messages-wrap,
.ws-sidebar-form [class*="policy"],
.ws-contact-form-col [class*="policy"],
.ws-sidebar-form [class*="privacy"],
.ws-contact-form-col [class*="privacy"] {
  font-size: 11px !important;
  margin-top: 8px !important;
  text-align: center !important;
  opacity: .7 !important;
  line-height: 1.4 !important;
}
.ws-contact-form-col [class*="policy"],
.ws-contact-form-col [class*="privacy"] {
  color: rgba(255,255,255,.7) !important;
}

/* Required star */
.ws-sidebar-form .jet-form-builder__required,
.ws-contact-form-col .jet-form-builder__required {
  color: #e05252 !important;
}

/* Sidebar: compact logo block */
.ws-sidebar-logo {
  display: flex; flex-direction: column; align-items: center;
  gap: 6px; padding-bottom: 16px; margin-bottom: 16px;
  border-bottom: 1px solid var(--ws-border-light);
}
.ws-school-sidebar-name {
  font-size: 14px; font-weight: 700; color: var(--ws-navy);
  text-align: center; line-height: 1.3;
}

/* ── Gallery grid border-radius + max-width ──────────────────────────── */
@media (min-width: 961px) {
  .ws-gallery-grid {
    max-width: var(--ws-max);
    margin: 0 auto;
    border-radius: 16px;
  }
  /* Round only outer corners, not internal gaps */
  .ws-gallery-cell--main       { border-radius: 16px 0 0 16px; }
  .ws-gallery-thumbs > .ws-gallery-cell:nth-child(2) { border-radius: 0 16px 0 0; }
  .ws-gallery-thumbs > .ws-gallery-cell:last-child   { border-radius: 0 0 16px 0; }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   MOBILE GALLERY — suppress Flickity captions + placeholder background
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-gallery-mobile { background: #0d1430; }
/* Hide any caption/description text that Flickity slides might output */
.ws-gallery-mobile .gallery-item__description,
.ws-gallery-mobile .gallery-item p,
.ws-gallery-mobile figure figcaption,
.ws-gallery-mobile [class*="caption"],
.ws-gallery-mobile [class*="description"],
.ws-gallery-mobile .flickity-cell p,
.ws-gallery-mobile .flickity-cell span:not([aria-hidden]) { display: none !important; }
/* Ensure mobile gallery fills width at 16:9 ratio */
.ws-gallery-mobile .flickity-viewport { max-height: 320px; }
.ws-gallery-mobile .flickity-cell,
.ws-gallery-mobile .gallery-item { background: #0d1430; }
.ws-gallery-mobile .flickity-cell img,
.ws-gallery-mobile .gallery-item img {
  width: 100%; height: 260px; object-fit: cover; display: block;
}

/* Gallery strips in sections — suppress dark empty state */
.ws-gallery-strip .flickity-viewport { background: transparent !important; }
.ws-gallery-strip .flickity-cell { background: var(--ws-bg-subtle) !important; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   JETREVIEWS — premium overrides
   ── ════════════════════════════════════════════════════════════════════ ── */

/* Main container: always block, never side-by-side columns */
/* Hide Vue template ref elements (icon slots — before Vue initializes).
   JetReviews uses [ref] on span/i/button/svg, not only div. */
.ws-reviews-section [ref],
.ws-reviews-section *[ref] {
  display: none !important;
}

.ws-reviews-section .jet-reviews-advanced {
  display: block !important;
  visibility: visible !important;
  font-family: var(--ws-font) !important;
}
.ws-reviews-section .jet-reviews-advanced > * { display: block !important; width: 100% !important; }
.ws-reviews-section .jet-reviews-advanced__body,
.ws-reviews-section [class*="advanced__wrap"],
.ws-reviews-section [class*="advanced__inner"] {
  display: block !important; width: 100% !important;
}

/* ── Stars: CYAN to match live site ── */
.ws-reviews-section [class*="star"],
.ws-reviews-section [class*="stars"],
.ws-reviews-section .jet-reviews-advanced__average {
  color: var(--ws-cyan) !important;
}
.ws-reviews-section [class*="star"] svg,
.ws-reviews-section [class*="stars"] svg,
.ws-reviews-section [class*="rating"] svg,
.ws-reviews-section .jet-reviews-advanced__average svg {
  fill: var(--ws-cyan) !important;
  color: var(--ws-cyan) !important;
}
.ws-reviews-section [class*="star"] path,
.ws-reviews-section [class*="stars"] path,
.ws-reviews-section [class*="rating"] path {
  fill: var(--ws-cyan) !important;
}
.ws-reviews-section [class*="star"] i,
.ws-reviews-section [class*="stars"] i { color: var(--ws-cyan) !important; }
.ws-reviews-section [class*="stars--empty"] svg,
.ws-reviews-section .jet-reviews-stars--empty svg,
.ws-reviews-section [class*="stars--empty"] path { fill: rgba(81,229,255,.25) !important; color: rgba(81,229,255,.25) !important; }
.ws-reviews-section .jet-reviews-stars { gap: 2px !important; }

/* ── Header row ── */
.ws-reviews-section .jet-reviews-advanced__header {
  display: flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 12px 20px !important;
  margin-bottom: 28px !important;
  padding-bottom: 20px !important;
  border-bottom: 1px solid var(--ws-border-light) !important;
}
.ws-reviews-section .jet-reviews-advanced__header-title {
  font-size: 16px !important;
  font-weight: 700 !important;
  color: var(--ws-navy) !important;
  font-family: var(--ws-font) !important;
}

/* Write a review button */
.ws-reviews-section .jet-reviews-button.jet-reviews-button--primary {
  font-family: var(--ws-font) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  color: var(--ws-navy) !important;
  background: transparent !important;
  border: 1.5px solid var(--ws-border) !important;
  border-radius: 4px !important;
  padding: 6px 14px !important;
  cursor: pointer !important;
  transition: background .15s, border-color .15s !important;
}
.ws-reviews-section .jet-reviews-button.jet-reviews-button--primary:hover {
  background: var(--ws-cyan-light) !important; border-color: var(--ws-cyan) !important;
}

/* Write-review form panel */
.ws-reviews-section .jet-reviews-advanced__new-review-form {
  display: block !important;
  width: 100% !important;
  max-width: 560px !important;
  background: var(--ws-white) !important;
  border-radius: 4px !important;
  padding: 24px !important;
  margin-bottom: 28px !important;
  border: 1px solid var(--ws-border-light) !important;
  box-shadow: var(--ws-shadow) !important;
  box-sizing: border-box !important;
}

/* Field labels in review form */
.ws-reviews-section .jet-reviews-field__label,
.ws-reviews-section .jet-reviews-field__label-before {
  font-family: var(--ws-font) !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: .04em !important;
  color: var(--ws-text-muted) !important;
  margin-bottom: 5px !important;
  display: block !important;
}

/* Single-line inputs (title, name, email) */
.ws-reviews-section .jet-reviews-input:not(.jet-reviews-input--textarea),
.ws-reviews-section .jet-reviews-content-editable:not(.jet-reviews-input--textarea) {
  font-family: var(--ws-font) !important;
  font-size: 14px !important;
  padding: 0 14px !important;
  border: 1.5px solid var(--ws-border) !important;
  border-radius: 4px !important;
  width: 100% !important;
  background: var(--ws-white) !important;
  color: var(--ws-navy) !important;
  box-sizing: border-box !important;
  height: 44px !important;
  min-height: 44px !important;
  max-height: 44px !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  line-height: 44px !important;
  display: block !important;
}

/* Textarea (review body) */
.ws-reviews-section .jet-reviews-input.jet-reviews-input--textarea {
  font-family: var(--ws-font) !important;
  font-size: 14px !important;
  padding: 10px 14px !important;
  border: 1.5px solid var(--ws-border) !important;
  border-radius: 4px !important;
  width: 100% !important;
  background: var(--ws-white) !important;
  color: var(--ws-navy) !important;
  box-sizing: border-box !important;
  height: 110px !important;
  min-height: 90px !important;
  max-height: none !important;
  overflow: auto !important;
  white-space: pre-wrap !important;
  line-height: 1.55 !important;
  resize: vertical !important;
  display: block !important;
}

/* Focus states */
.ws-reviews-section .jet-reviews-input:focus,
.ws-reviews-section .jet-reviews-content-editable:focus {
  border-color: var(--ws-cyan) !important;
  outline: none !important;
  box-shadow: 0 0 0 3px rgba(81,229,255,.18) !important;
}

/* Rating range slider */
.ws-reviews-section .jet-reviews-range-input,
.ws-reviews-section input[type="range"] {
  -webkit-appearance: none !important; appearance: none !important;
  width: 100% !important; height: 6px !important;
  border-radius: 3px !important; background: var(--ws-border-light) !important;
  outline: none !important; cursor: pointer !important; border: none !important;
}
.ws-reviews-section .jet-reviews-range-input::-webkit-slider-thumb,
.ws-reviews-section input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none !important;
  width: 22px !important; height: 22px !important; border-radius: 50% !important;
  background: var(--ws-navy) !important; cursor: pointer !important;
  border: 3px solid #fff !important; box-shadow: 0 1px 4px rgba(0,0,0,.2) !important;
}
.ws-reviews-section .jet-reviews-range-input::-moz-range-thumb,
.ws-reviews-section input[type="range"]::-moz-range-thumb {
  width: 22px !important; height: 22px !important; border-radius: 50% !important;
  background: var(--ws-navy) !important; border: 3px solid #fff !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.2) !important;
}

/* Submit + Cancel buttons */
.ws-reviews-section .jet-reviews-advanced__review-controls {
  display: flex !important; gap: 12px !important;
  justify-content: flex-end !important; margin-top: 16px !important;
}
.ws-reviews-section .jet-reviews-advanced__review-controls .jet-reviews-button {
  font-family: var(--ws-font) !important; font-size: 14px !important;
  padding: 10px 22px !important; border-radius: var(--ws-radius-pill) !important;
  font-weight: 700 !important; cursor: pointer !important;
  transition: opacity .2s, transform .1s !important; border: 1.5px solid transparent !important;
}
/* Cancel */
.ws-reviews-section .jet-reviews-advanced__review-controls .jet-reviews-button:not(:last-child) {
  color: var(--ws-navy) !important; background: transparent !important;
  border-color: var(--ws-border) !important;
}
/* Submit: target last button OR --primary OR --submit */
.ws-reviews-section .jet-reviews-advanced__review-controls .jet-reviews-button:last-child,
.ws-reviews-section .jet-reviews-advanced__review-controls .jet-reviews-button--primary,
.ws-reviews-section .jet-reviews-advanced__review-controls .jet-reviews-button--submit {
  background: var(--ws-cyan) !important; color: var(--ws-navy) !important;
  border-color: transparent !important;
}
.ws-reviews-section .jet-reviews-advanced__review-controls .jet-reviews-button:hover {
  opacity: .85 !important; transform: translateY(-1px) !important;
}

/* Individual review card */
.ws-reviews-section .jet-reviews-advanced__review {
  background: var(--ws-white) !important;
  border-radius: 4px !important;
  padding: 20px 24px !important;
  margin-bottom: 12px !important;
  border: 1px solid var(--ws-border-light) !important;
  box-shadow: 0 1px 4px rgba(26,34,73,.06) !important;
}
.ws-reviews-section .jet-reviews-advanced__review:last-child { margin-bottom: 0 !important; }
.ws-reviews-section .jet-reviews-advanced__review-header {
  display: flex !important; align-items: center !important;
  gap: 12px !important; margin-bottom: 10px !important;
}
.ws-reviews-section .jet-reviews-advanced__review-header-title,
.ws-reviews-section .jet-reviews-advanced__review-header [class*="title"] {
  font-weight: 700 !important; font-size: 15px !important; color: var(--ws-navy) !important;
}
.ws-reviews-section .jet-reviews-published-date {
  font-size: 12px !important; color: var(--ws-text-muted) !important; font-family: var(--ws-font) !important;
}
.ws-reviews-section .jet-reviews-advanced__review-container {
  font-size: 15px !important; line-height: 1.6 !important;
  color: var(--ws-navy) !important; font-family: var(--ws-font) !important;
}
.ws-reviews-section .jet-reviews-advanced__reviews {
  display: flex !important; flex-direction: column !important; gap: 0 !important;
}

/* Reviews list container */
.ws-reviews-section .jet-reviews-advanced__reviews {
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
}

/* ── Native write-a-review form ────────────────────────────────────────── */
.ws-review-form-wrap { margin-top: 32px; padding-top: 28px; border-top: 1px solid var(--ws-border-light); }
.ws-review-form-title { font-size: 18px; font-weight: 700; color: var(--ws-navy); margin: 0 0 20px; }

.ws-review-form { max-width: 560px; display: flex; flex-direction: column; gap: 18px; }

/* Fields */
.ws-rf-field { display: flex; flex-direction: column; gap: 6px; }
.ws-rf-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--ws-text-muted); }
.ws-rf-label span { color: #c0392b; }
.ws-rf-input {
  font-family: var(--ws-font); font-size: 14px; color: var(--ws-navy);
  border: 1.5px solid var(--ws-border); border-radius: 6px;
  padding: 0 14px; height: 44px; width: 100%; box-sizing: border-box; background: #fff;
}
.ws-rf-textarea {
  font-family: var(--ws-font); font-size: 14px; color: var(--ws-navy);
  border: 1.5px solid var(--ws-border); border-radius: 6px;
  padding: 10px 14px; width: 100%; box-sizing: border-box; background: #fff;
  resize: vertical; min-height: 110px; line-height: 1.55;
}
.ws-rf-input:focus, .ws-rf-textarea:focus {
  outline: none; border-color: var(--ws-cyan);
  box-shadow: 0 0 0 3px rgba(81,229,255,.18);
}

/* CSS-only star picker (radio buttons, displayed right-to-left) */
.ws-star-picker { display: inline-flex; flex-direction: row-reverse; gap: 4px; align-self: flex-start; }
.ws-star-radio { position: absolute; opacity: 0; width: 0; height: 0; }
.ws-star-picker label {
  font-size: 28px; cursor: pointer; color: rgba(26,34,73,.2);
  transition: color .1s; line-height: 1;
}
/* Highlight: current star and all stars to the right of it (flex row-reverse trick) */
.ws-star-picker input:checked ~ label,
.ws-star-picker label:hover,
.ws-star-picker label:hover ~ label { color: var(--ws-cyan); }

/* Footer row */
.ws-rf-footer { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
p.ws-rf-note, .ws-rf-note { font-size: 12px; color: var(--ws-text-muted); margin: 0; }

/* Success / error message */
.ws-rf-msg { font-size: 14px; padding: 12px 16px; border-radius: 6px; font-weight: 600; }
.ws-rf-msg--ok  { background: #e6fdf4; color: #0d6b3a; border: 1px solid #a7f3c8; }
.ws-rf-msg--err { background: #fef2f2; color: #b91c1c; border: 1px solid #fca5a5; }

/* Privacy disclaimer text inside JetFormBuilder */
.ws-privacy-note {
  font-size: 11px !important;
  text-align: center !important;
  margin-top: 16px !important;
  line-height: 1.5 !important;
  color: var(--ws-text-muted);
}
.ws-contact-form-col .ws-privacy-note {
  color: rgba(255,255,255,.6) !important;
}
.ws-privacy-note a { text-decoration: underline; }

/* Hide JetFormBuilder's own broken privacy output */
.ws-sidebar-form .jet-form-builder__submit-wrap > *:not(.jet-form-builder__action-button),
.ws-contact-form-col .jet-form-builder__submit-wrap > *:not(.jet-form-builder__action-button) {
  display: none !important;
}
/* But keep the messages wrapper for success/error */
.ws-sidebar-form .jet-form-builder-messages-wrap,
.ws-contact-form-col .jet-form-builder-messages-wrap {
  display: block !important;
  font-size: 13px !important;
  margin-top: 8px !important;
  text-align: center !important;
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   SECTION VISUAL IMPROVEMENTS
   ── ════════════════════════════════════════════════════════════════════ ── */

/* Section headings — clean, no decorative bar */
.ws-section-title {
  position: relative;
  padding-left: 0;
}
.ws-section-title::before { display: none; }

/* Activity tags + facility tags hover */
.ws-activity-tag:hover {
  background: var(--ws-cyan-light);
  border-color: var(--ws-cyan);
  transition: background .15s, border-color .15s;
}

/* Mobile: badges — horizontal scroll, all visible */
@media (max-width: 480px) {
  .ws-header-top {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  .ws-header-top::-webkit-scrollbar { display: none; }
}


/* Tab count badge — hidden to match live design (plain text tabs only) */
.ws-tab-count {
  display: none !important;
}

/* Reviews section background — full width */
.ws-reviews-section {
  background: var(--ws-bg-subtle);
  padding: var(--ws-section-gap) 0;
}

/* Map iframe */
.ws-map-wrap iframe { border-radius: var(--ws-radius); }

/* ── ════════════════════════════════════════════════════════════════════ ──
   MOBILE CTA BAR — improved
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-mobile-cta .ws-btn-primary {
  background: var(--ws-cyan) !important;
  color: var(--ws-navy) !important;
  font-size: 16px !important;
  height: 52px !important;
  padding: 0 24px !important;
  border-radius: var(--ws-radius-pill) !important;
  font-weight: 700 !important;
  border: none !important;
  outline: none !important;
}
.ws-mobile-cta .ws-btn-primary:hover { opacity: .92; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   CONTACT BOTTOM — dark bg fixes
   ── ════════════════════════════════════════════════════════════════════ ── */

/* Stars in contact-bottom are navy by default — make them white on dark bg */
.ws-contact-bottom .ws-star       { fill: #ffffff !important; }
.ws-contact-bottom .ws-star-empty { fill: rgba(255,255,255,.25) !important; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   REVIEWS — camp-profile style
   ── ════════════════════════════════════════════════════════════════════ ── */

/* Section background */
.ws-reviews-section { background: var(--ws-bg-subtle); }

/* Summary block: score left + distribution right */
.ws-reviews-summary {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 40px;
  align-items: center;
  margin-bottom: 32px;
}
@media (max-width: 640px) {
  .ws-reviews-summary { grid-template-columns: 1fr; gap: 24px; }
}

/* Score block */
.ws-rscore {
  display: flex; flex-direction: column; align-items: center;
  min-width: 100px;
}
.ws-rscore-num {
  font-size: 52px; font-weight: 800; line-height: 1;
  color: var(--ws-navy); letter-spacing: -2px;
}
.ws-rscore-stars { display: flex; gap: 3px; margin: 6px 0 4px; }
.ws-rev-star { color: var(--ws-navy); font-size: 16px; }
.ws-rev-star-empty { color: rgba(26,34,73,.2); }
.ws-rscore-count { font-size: 13px; color: var(--ws-text-muted); white-space: nowrap; }

/* Distribution bars */
.ws-rdist { display: flex; flex-direction: column; gap: 7px; }
.ws-rdist-row { display: flex; align-items: center; gap: 10px; }
.ws-rdist-label {
  font-size: 13px; color: var(--ws-text-muted);
  min-width: 26px; text-align: right; flex-shrink: 0;
}
.ws-rdist-track {
  flex: 1; height: 6px; background: rgba(26,34,73,.1);
  border-radius: 999px; overflow: hidden;
}
.ws-rdist-fill {
  height: 100%; background: var(--ws-cyan);
  border-radius: 999px; transition: width .4s ease;
}
.ws-rdist-count {
  font-size: 13px; font-weight: 600; color: var(--ws-navy);
  min-width: 22px; text-align: right; flex-shrink: 0;
}

/* Review cards grid */
.ws-rev-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 24px;
}
@media (max-width: 640px) { .ws-rev-grid { grid-template-columns: 1fr; } }

/* Individual review card */
.ws-rev-card {
  padding: 20px;
  border: 1px solid var(--ws-border-light);
  border-radius: 16px;
  background: #fff;
  display: flex; flex-direction: column; gap: 10px;
}
.ws-rev-hd { display: flex; align-items: center; gap: 10px; }
.ws-rev-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; color: #fff; flex-shrink: 0;
}
.ws-rev-info { flex: 1; min-width: 0; }
.ws-rev-name { font-size: 14px; font-weight: 700; color: var(--ws-navy); }
.ws-rev-stars { display: flex; gap: 2px; }
.ws-rev-title { font-size: 14px; font-weight: 600; color: var(--ws-navy); }
.ws-rev-text { font-size: 14px; color: var(--ws-text-muted); line-height: 1.6; }
.ws-rev-meta { font-size: 12px; color: rgba(26,34,73,.5); }

/* Actions row: view-all + write-a-review */
.ws-reviews-actions {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 12px; margin-bottom: 0;
}

/* View all button */
.ws-reviews-view-all {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 12px 24px; border-radius: 12px;
  border: 1.5px solid rgba(81,229,255,.4);
  background: rgba(81,229,255,.08);
  font-family: var(--ws-font); font-size: 14px; font-weight: 600;
  color: var(--ws-navy); cursor: pointer;
  transition: background .15s, border-color .15s;
}
.ws-reviews-view-all:hover {
  background: rgba(81,229,255,.18);
  border-color: rgba(81,229,255,.6);
}
@media (max-width: 640px) { .ws-reviews-view-all { width: 100%; justify-content: center; } }

/* Write-a-review collapsible */
.ws-write-review-wrap {
  margin-top: 24px; padding-top: 24px;
  border-top: 1px solid var(--ws-border-light);
}
.ws-reviews-empty { text-align: center; padding: 40px 0; color: var(--ws-text-muted); }

/* Map sub-section inside reviews */
.ws-reviews-map-section { margin-top: 48px; padding-top: 32px; border-top: 1px solid var(--ws-border-light); }
.ws-reviews-map-title { font-size: 18px; font-weight: 700; color: var(--ws-navy); margin-bottom: 16px; }
.ws-reviews-map-addr {
  display: flex; align-items: center; gap: 6px;
  font-size: 14px; color: var(--ws-text-muted); margin-top: 12px;
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   REVIEWS DRAWER
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-rdrawer-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.5);
  z-index: 9998;
  backdrop-filter: blur(2px);
}
.ws-rdrawer-overlay[hidden] { display: none; }

.ws-rdrawer {
  position: fixed; top: 0; right: 0; bottom: 0;
  width: min(680px, 100vw);
  background: #fff;
  z-index: 9999;
  display: flex; flex-direction: column;
  box-shadow: -4px 0 40px rgba(0,0,0,.18);
  transform: translateX(100%);
  transition: transform .3s cubic-bezier(.4,0,.2,1);
}
.ws-rdrawer:not([hidden]) { transform: translateX(0); }
.ws-rdrawer[hidden] { display: flex !important; pointer-events: none; }

/* Drawer header */
.ws-rdrawer-hd {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 24px 16px;
  border-bottom: 1px solid var(--ws-border-light);
  flex-shrink: 0;
}
.ws-rdrawer-title { font-size: 18px; font-weight: 800; color: var(--ws-navy); }
.ws-rdrawer-close {
  width: 36px; height: 36px; border-radius: 50%;
  border: 1.5px solid var(--ws-border-light);
  background: #fff; cursor: pointer; outline: none;
  display: flex; align-items: center; justify-content: center;
  color: var(--ws-navy); transition: background .15s;
}
.ws-rdrawer-close:focus-visible { outline: 2px solid var(--ws-cyan); outline-offset: 2px; }
.ws-rdrawer-close:hover { background: var(--ws-bg-subtle); }

/* Summary strip */
.ws-rdrawer-strip {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 24px;
  border-bottom: 1px solid var(--ws-border-light);
  background: var(--ws-bg-subtle);
  flex-shrink: 0;
}
.ws-rstrip-score { font-size: 28px; font-weight: 800; color: var(--ws-navy); line-height: 1; }
.ws-rstrip-stars { display: flex; gap: 2px; margin-bottom: 2px; }
.ws-rstrip-count { font-size: 12px; color: var(--ws-text-muted); }

/* Star filter bar */
.ws-rdrawer-filter {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  padding: 12px 24px;
  border-bottom: 1px solid var(--ws-border-light);
  flex-shrink: 0;
}
.ws-star-pill {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 5px 12px; border-radius: 999px;
  border: 1.5px solid var(--ws-border-light);
  background: #fff; color: var(--ws-text-muted);
  font-family: var(--ws-font); font-size: 13px; font-weight: 600;
  cursor: pointer; transition: all .15s;
}
.ws-star-pill:hover { border-color: var(--ws-navy); color: var(--ws-navy); }
.ws-star-pill.is-active {
  background: var(--ws-navy); border-color: var(--ws-navy);
  color: #fff;
}

/* Scrollable reviews list */
.ws-rdrawer-scroll {
  flex: 1; overflow-y: auto;
  padding: 20px 24px;
  display: flex; flex-direction: column; gap: 14px;
}
.ws-rdrawer-scroll .ws-rev-card { background: #fff; }
.ws-rdrawer-scroll .ws-rev-text { /* full text, no truncation */ }
.ws-rev-card[hidden] { display: none !important; }

/* Drawer on mobile — full screen */
@media (max-width: 540px) {
  .ws-rdrawer { width: 100vw; }
  .ws-rdrawer-hd, .ws-rdrawer-strip, .ws-rdrawer-filter, .ws-rdrawer-scroll { padding-left: 16px; padding-right: 16px; }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   REVIEWS 2-COLUMN MODAL
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-rev-modal-overlay {
  position: fixed; inset: 0; z-index: 600;
  background: rgba(10,12,30,.55); backdrop-filter: blur(2px);
}
.ws-rev-modal-overlay[hidden] { display: none; }
.ws-rev-modal {
  position: fixed; inset: 0; z-index: 601;
  display: flex; align-items: center; justify-content: center;
  padding: 20px 16px; box-sizing: border-box;
}
.ws-rev-modal[hidden] { display: none; }
.ws-rev-modal-inner {
  background: #fff; border-radius: 14px;
  width: 100%; max-width: 920px;
  max-height: calc(100vh - 40px);
  display: flex; flex-direction: column;
  overflow: hidden;
  box-shadow: 0 8px 48px rgba(26,34,73,.2);
}
.ws-rev-modal-hd {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 24px; border-bottom: 1px solid var(--ws-border-light);
  flex-shrink: 0;
}
.ws-rev-modal-title { font-size: 18px; font-weight: 800; color: var(--ws-navy); }
.ws-rev-modal-body {
  display: grid; grid-template-columns: 280px 1fr;
  overflow: hidden; flex: 1; min-height: 0;
}
.ws-rev-modal-left {
  padding: 24px 20px;
  border-right: 1px solid var(--ws-border-light);
  overflow-y: auto; flex-shrink: 0;
  display: flex; flex-direction: column; gap: 20px;
}
.ws-rev-modal-filter {
  display: flex; flex-direction: column; gap: 8px;
}
.ws-rev-modal-filter-lbl { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ws-text-muted); }
.ws-rev-modal-right {
  padding: 20px 24px; overflow-y: auto;
  display: flex; flex-direction: column; gap: 14px;
}
.ws-rev-modal-right .ws-rev-card { background: #fff; }
@media (max-width: 680px) {
  .ws-rev-modal-body { grid-template-columns: 1fr; }
  .ws-rev-modal-left { border-right: none; border-bottom: 1px solid var(--ws-border-light); overflow-y: visible; }
  .ws-rev-modal-filter { flex-direction: row; flex-wrap: wrap; }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   SHARE MODAL
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-share-overlay {
  position: fixed; inset: 0; z-index: 600;
  background: rgba(10,12,30,.55); backdrop-filter: blur(2px);
}
.ws-share-overlay[hidden] { display: none; }
.ws-share-modal {
  position: fixed; inset: 0; z-index: 601;
  display: flex; align-items: center; justify-content: center;
  padding: 20px 16px; box-sizing: border-box;
}
.ws-share-modal[hidden] { display: none; }
.ws-share-inner {
  background: #fff; border-radius: 14px;
  width: 100%; max-width: 440px;
  overflow: hidden;
  box-shadow: 0 8px 48px rgba(26,34,73,.2);
}
.ws-share-hd {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 24px; border-bottom: 1px solid var(--ws-border-light);
}
.ws-share-title { font-size: 18px; font-weight: 800; color: var(--ws-navy); }
.ws-share-body { padding: 20px 24px; display: flex; flex-direction: column; gap: 16px; }
.ws-share-url-row { display: flex; gap: 8px; align-items: center; }
.ws-share-url-input {
  flex: 1; padding: 9px 12px; border-radius: 6px;
  border: 1.5px solid var(--ws-border-light);
  font-size: 13px; color: var(--ws-text-muted);
  font-family: var(--ws-font); background: var(--ws-bg-subtle);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ws-share-socials { display: flex; gap: 10px; flex-wrap: wrap; }
.ws-share-social {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 16px; border-radius: 8px;
  border: 1.5px solid var(--ws-border-light);
  font-size: 13px; font-weight: 600; color: var(--ws-navy);
  text-decoration: none; transition: background .15s;
}
.ws-share-social:hover { background: var(--ws-bg-subtle); }
.ws-share-social svg { display: block; flex-shrink: 0; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   ENQUIRY CARD (sidebar) — camp-profile style
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-eq-card {
  background: #fff;
  border: 1px solid var(--ws-border-light);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: var(--ws-shadow);
}

/* School branding header */
.ws-eq-school-hd {
  display: flex; flex-direction: column; align-items: center;
  gap: 6px; padding: 24px 20px 20px;
  border-bottom: 1px solid var(--ws-border-light);
  text-align: center;
}
.ws-eq-school-logo { max-width: 80px; max-height: 60px; object-fit: contain; }
.ws-eq-school-name { font-size: 15px; font-weight: 700; color: var(--ws-navy); }
.ws-eq-school-loc {
  display: flex; align-items: center; gap: 4px;
  font-size: 12px; color: var(--ws-text-muted);
}
.ws-eq-school-rating {
  display: flex; align-items: center; gap: 5px;
  font-size: 13px; font-weight: 600; color: var(--ws-navy);
}
.ws-eq-school-rating .ws-star { fill: var(--ws-navy); width: 13px; height: 13px; min-width: 13px; }
.ws-eq-school-rating-count { font-size: 12px; color: var(--ws-text-muted); font-weight: 400; }

/* Form header */
.ws-eq-form-hd { padding: 16px 20px 0; }
.ws-eq-form-title { font-size: 16px; font-weight: 700; color: var(--ws-navy); margin: 0 0 4px; }
.ws-eq-form-sub { font-size: 12px; color: var(--ws-text-muted); margin: 0; }

/* Enquiry pills */
.ws-eq-pills-wrap { padding: 14px 20px 0; }
.ws-eq-pills-lbl {
  font-size: 13px; font-weight: 600; color: var(--ws-navy);
  letter-spacing: 0; text-transform: none; margin: 0 0 8px;
}
.ws-eq-pills-row { display: flex; flex-wrap: wrap; gap: 6px; }
.ws-eq-pill {
  padding: 6px 12px; border-radius: 999px;
  border: 1.5px solid var(--ws-border-light);
  background: #fff; font-family: var(--ws-font);
  font-size: 12px; font-weight: 500; color: var(--ws-text-muted);
  cursor: pointer; transition: all .15s; white-space: nowrap;
}
.ws-eq-pill:hover { border-color: var(--ws-navy); color: var(--ws-navy); }
.ws-eq-pill.is-active {
  border-color: var(--ws-navy); background: var(--ws-navy); color: #fff;
}

/* JFB form wrapper inside sidebar card */
.ws-sidebar-form { padding: 12px 20px 20px; }

/* Website card */
.ws-eq-website-card {
  background: #fff;
  border: 1px solid var(--ws-border-light);
  border-radius: 12px;
  padding: 18px 20px;
  margin-top: 12px;
  text-align: center;
  font-size: 13px; color: var(--ws-text-muted);
}
.ws-eq-website-card p { margin: 0 0 12px; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   CONTACT BOTTOM — redesigned
   ── ════════════════════════════════════════════════════════════════════ ── */

/* Contact panel: white card on top of dark bg */
.ws-contact-panel {
  background: #fff;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 8px 40px rgba(0,0,0,.18);
}
.ws-eq-pills-wrap--panel { padding: 24px 28px 0; }
.ws-eq-pills-wrap--panel .ws-eq-pills-lbl { color: rgba(26,34,73,.6); }

.ws-contact-form-inner {
  padding: 20px 28px 28px;
}

/* Trust bar */
.ws-contact-trust {
  display: flex; flex-wrap: wrap; gap: 12px;
  margin-top: 24px;
}
.ws-contact-trust-item {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; color: rgba(255,255,255,.75);
}
.ws-contact-trust-item svg { opacity: .8; }

/* Facts list */
.ws-contact-facts {
  list-style: none; padding: 0; margin: 16px 0 0;
  display: flex; flex-direction: column; gap: 6px;
}
.ws-contact-facts li { font-size: 14px; color: rgba(255,255,255,.8); }

/* Rating row */
.ws-contact-rating {
  display: flex; align-items: center; gap: 8px;
  margin-top: 16px; font-size: 14px; color: rgba(255,255,255,.9);
}
.ws-contact-rating .ws-star { fill: #fff !important; width: 15px; height: 15px; min-width: 15px; }
.ws-contact-rating .ws-star-empty { fill: rgba(255,255,255,.25) !important; }

/* Enquiry pills on dark bg (left intro column) — NOT inside the white panel */
.ws-contact-bottom .ws-eq-pill {
  border-color: rgba(255,255,255,.25);
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.8);
}
.ws-contact-bottom .ws-eq-pill:hover {
  border-color: rgba(255,255,255,.6);
  color: #fff; background: rgba(255,255,255,.15);
}
.ws-contact-bottom .ws-eq-pill.is-active {
  border-color: var(--ws-cyan); background: var(--ws-cyan); color: var(--ws-navy);
}
.ws-contact-bottom .ws-eq-pills-lbl { color: rgba(255,255,255,.6); }
.ws-contact-bottom .ws-eq-pills-wrap { padding: 0; }

/* White panel inherits white text from .ws-contact-bottom — reset all text to navy */
.ws-contact-bottom .ws-contact-panel,
.ws-contact-bottom .ws-contact-panel *:not(.ws-eq-pill.is-active):not(.jet-form-builder__submit) {
  color: var(--ws-navy);
}
/* But the submit button stays cyan/white */
.ws-contact-bottom .ws-contact-panel .jet-form-builder__submit { color: var(--ws-navy) !important; }

/* Pills inside the WHITE panel — override dark-bg styles */
.ws-contact-panel .ws-eq-pill {
  border-color: var(--ws-border-light) !important;
  background: #fff !important;
  color: var(--ws-text-muted) !important;
}
.ws-contact-panel .ws-eq-pill:hover {
  border-color: var(--ws-navy) !important;
  color: var(--ws-navy) !important;
  background: #fff !important;
}
.ws-contact-panel .ws-eq-pill.is-active {
  border-color: var(--ws-navy) !important;
  background: var(--ws-navy) !important;
  color: #fff !important;
}
.ws-contact-panel .ws-eq-pills-lbl { color: var(--ws-text-muted) !important; }

/* ── ════════════════════════════════════════════════════════════════════ ──
   MOBILE CTA — camp-profile style
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-mobile-cta-inner {
  display: block;
}
/* Full-width enquire button */
.ws-mobile-cta .ws-btn-primary {
  display: block; width: 100%; text-align: center;
  border: none; cursor: pointer;
  border-radius: var(--ws-radius-pill) !important;
}
.ws-mobile-cta-price {
  font-size: 15px; font-weight: 700; color: var(--ws-navy);
}
.ws-mobile-cta-rating {
  display: flex; align-items: center; gap: 4px;
  font-size: 13px; font-weight: 600; color: var(--ws-navy);
}
.ws-mobile-cta-rating .ws-star { fill: var(--ws-navy); width: 13px; height: 13px; min-width: 13px; }
.ws-mobile-cta .ws-btn-primary {
  background: var(--ws-cyan) !important;
  color: var(--ws-navy) !important;
  font-size: 16px !important;
  height: 52px !important;
  padding: 0 24px !important;
  border-radius: 10px !important;
  font-weight: 700 !important;
  white-space: nowrap;
  flex-shrink: 0;
}

/* All links in the contact-bottom intro must be light — not navy-on-navy */
.ws-contact-intro a,
.ws-contact-form-col a:not([class*="ws-btn"]) {
  color: rgba(255,255,255,.8) !important;
  text-decoration: underline !important;
}

/* Rating row: ensure left-aligned flex */
.ws-contact-intro .ws-rating-row {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  justify-content: flex-start !important;
  margin-top: 20px !important;
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   SIDEBAR CARD — redesigned trust bar + divider
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-eq-divider {
  height: 1px; background: var(--ws-border-light); margin: 0;
}
.ws-eq-trust {
  display: flex; align-items: center; justify-content: center;
  gap: 16px; padding: 12px 20px;
  border-top: 1px solid var(--ws-border-light);
  font-size: 12px; color: var(--ws-text-muted);
}
.ws-eq-trust span { display: flex; align-items: center; gap: 4px; }
.ws-eq-trust svg { flex-shrink: 0; opacity: .7; }

.ws-eq-pills-lbl {
  font-size: 13px; font-weight: 600; color: var(--ws-navy);
  letter-spacing: 0; text-transform: none; margin: 0 0 8px;
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   MOBILE ENQUIRY BOTTOM SHEET
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-menquire-overlay {
  position: fixed; inset: 0; z-index: 500;
  background: rgba(10,12,30,.55);
}
.ws-menquire-overlay[hidden] { display: none; }

.ws-menquire-sheet {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 501;
  background: #fff; border-radius: 16px 16px 0 0;
  max-height: 90vh; display: flex; flex-direction: column;
  box-shadow: 0 -8px 40px rgba(10,12,30,.18);
}
.ws-menquire-sheet[hidden] { display: none; }

.ws-menquire-handle {
  width: 40px; height: 4px; border-radius: 2px;
  background: rgba(26,34,73,.15);
  margin: 10px auto 0; flex-shrink: 0;
}
.ws-menquire-hd {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 20px 12px;
  border-bottom: 1px solid var(--ws-border-light);
  flex-shrink: 0;
}
.ws-menquire-school { font-size: 15px; font-weight: 700; color: var(--ws-navy); }
.ws-menquire-body {
  overflow-y: auto; padding: 20px 20px 40px; flex: 1;
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   MOBILE SIDEBAR — compact enquire CTA (shown ≤768px)
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-eq-mobile-cta { display: none; padding: 4px 0 8px; }
.ws-eq-mobile-cta .ws-btn-full {
  display: block; width: 100%; text-align: center;
  padding: 14px; font-size: 15px; font-weight: 700;
  background: var(--ws-navy) !important; color: #fff !important;
  border-radius: 10px; text-decoration: none;
}
.ws-eq-mobile-note {
  text-align: center; margin: 8px 0 0;
  font-size: 12px; color: var(--ws-text-muted);
}
@media (max-width: 768px) {
  .ws-eq-mobile-cta { display: block; }
  .ws-eq-form-hd    { display: none; }
  .ws-eq-pills-wrap { display: none; }
  .ws-sidebar-form  { display: none; }
}

/* ── ════════════════════════════════════════════════════════════════════ ──
   SECTION GALLERY STRIP — view-all button
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-strip-view-all {
  display: inline-flex; align-items: center; gap: 5px;
  margin-top: 10px; padding: 8px 14px;
  border: 1.5px solid var(--ws-border-light); border-radius: 6px;
  background: #fff; cursor: pointer; outline: none;
  font-size: 13px; font-weight: 600; color: var(--ws-navy);
  transition: background .15s, border-color .15s;
}
.ws-strip-view-all:hover { background: var(--ws-bg-subtle); border-color: rgba(26,34,73,.3); }

/* ── ════════════════════════════════════════════════════════════════════ ──
   WRITE-A-REVIEW MODAL
   ── ════════════════════════════════════════════════════════════════════ ── */

.ws-rmodal-overlay {
  position: fixed; inset: 0; z-index: 500;
  background: rgba(10,12,30,.55); backdrop-filter: blur(2px);
}
.ws-rmodal-overlay[hidden] { display: none; }

.ws-rmodal {
  position: fixed; inset: 0; z-index: 501;
  display: flex; align-items: center; justify-content: center;
  padding: 20px 16px; box-sizing: border-box;
}
.ws-rmodal[hidden] { display: none; }

.ws-rmodal-hd {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 24px;
  border-bottom: 1px solid var(--ws-border-light);
  flex-shrink: 0;
}
.ws-rmodal-title {
  font-size: 17px; font-weight: 700; color: var(--ws-navy);
}
.ws-rmodal-close {
  width: 36px; height: 36px; border-radius: 50%;
  border: 1.5px solid var(--ws-border-light);
  background: #fff; cursor: pointer; outline: none;
  display: flex; align-items: center; justify-content: center;
  color: var(--ws-navy); transition: background .15s;
  flex-shrink: 0;
}
.ws-rmodal-close:hover { background: var(--ws-bg-subtle); }

.ws-rmodal-inner {
  background: #fff; border-radius: 14px;
  width: 100%; max-width: 620px;
  max-height: calc(100vh - 40px);
  display: flex; flex-direction: column;
  box-shadow: 0 24px 60px rgba(10,12,30,.25);
  overflow: hidden;
}

.ws-rmodal-body {
  overflow-y: auto; padding: 24px;
  flex: 1;
}
@media (max-width: 480px) {
  .ws-rmodal { padding: 12px 16px; align-items: center; }
  .ws-rmodal-inner { border-radius: 14px; max-height: 88vh; }
}

/* ── Hide JFB's built-in agreement/privacy field (replaced by ws-privacy-note) ── */
/* Target by common JFB class names for the agreement field */
.ws-contact-form-col .jet-form-builder__field--agreement-checkbox,
.ws-sidebar-form     .jet-form-builder__field--agreement-checkbox,
.ws-contact-form-col [class*="agreement-checkbox"],
.ws-sidebar-form     [class*="agreement-checkbox"],
.ws-contact-form-col [class*="field-agreement"],
.ws-sidebar-form     [class*="field-agreement"] { display: none !important; }
/* Broader fallback: hide any checkbox-type field inside JFB */
.ws-contact-form-col .jet-form-builder__fields-wrapper .jet-form-builder__field:has(input[type="checkbox"]),
.ws-sidebar-form     .jet-form-builder__fields-wrapper .jet-form-builder__field:has(input[type="checkbox"]) {
  display: none !important;
}
