/* Public refinement: retain the school's palette and all editable content. */
body:not(.portal-body) { --muted: #536a7c; --line: #dce7ee; }
body:not(.portal-body) .button { border-radius: 12px; font-weight: 650; line-height: 1.35; }
body:not(.portal-body) .button-lg { padding: 16px 24px; }
body:not(.portal-body) :is(input,select,textarea) { border-radius: 10px; border-color: #b9cbd7; }
body:not(.portal-body) :is(h1,h2,h3) { text-wrap: balance; }
.site-header { box-shadow: 0 3px 18px #173c5206; }
.site-nav a { font-size: .88rem; font-weight: 600; }
.hero-copy h1, .hero-copy .hero-title { font-size: clamp(2rem,4.2vw,3.65rem); line-height: 1.12; letter-spacing: -.035em; }
.hero-copy { max-width: 660px; }
.hero-list { max-width: 55ch; }
.hero-actions { gap: 16px; }
.hero-note { font-size: .85rem; line-height: 1.6; }
.hero-dots { gap: 2px; }
.hero-dots button { min-width: 30px; min-height: 30px; border: 8px solid transparent; background-clip: padding-box; }
.section-heading { max-width: 760px; margin-inline: auto; }
.section-heading h2 { font-size: clamp(1.8rem,3vw,2.7rem); line-height: 1.2; letter-spacing: -.035em; }
.section-heading p { max-width: 62ch; margin-inline: auto; }
.program-card-body, .teacher-body { padding: 26px; }
.program-card, .teacher-card, .price-card, .review-card { border: 1px solid #dce7ee; box-shadow: 0 5px 22px #123b4e06; }
.program-card:hover, .teacher-card:hover { box-shadow: 0 12px 30px #123b4e0d; }
.program-card-body h3, .price-card h3, .teacher-body h3 { font-size: 1.25rem; line-height: 1.3; }
.contact-card { border: 1px solid #dce7ee; }
.site-footer { line-height: 1.65; }
.site-footer a { overflow-wrap: anywhere; }
.site-footer h3 { letter-spacing: .04em; }
body:not(.portal-body) .flash-stack { padding-top: 16px; }
body:not(.portal-body) .alert { border-radius: 12px; }
body:not(.portal-body) [id] { scroll-margin-top: 115px; }
/* Cards and form fields shrink inside grids instead of widening the page. */
.program-grid > *, .teacher-grid > *, .price-grid > *, .footer-grid > *, .contact-grid > *, .booking-grid > *, .form-grid > * { min-width: 0; }
@media (max-width:1120px) {
  body:not(.portal-body) [id] { scroll-margin-top: 24px; }
  .site-nav a { min-height: 44px; display: flex; align-items: center; }
}
@media (max-width:760px) {
  .hero-copy h1, .hero-copy .hero-title { font-size: clamp(1.85rem,7vw,2.8rem); }
  .hero-actions { align-items: stretch; }
  .hero-actions .button { min-height: 48px; }
  .hero-note { padding-left: 12px; }
  .section-heading h2 { font-size: 1.85rem; }
  .section-heading { margin-bottom: 26px; }
  .program-card-body, .teacher-body { padding: 22px; }
  body:not(.portal-body) input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  body:not(.portal-body) select, body:not(.portal-body) textarea { font-size: 16px; }
  .site-footer .footer-grid { gap: 28px; }
}
@media (max-width:560px) {
  .hero-copy h1, .hero-copy .hero-title { line-height: 1.15; }
  .hero-actions { flex-direction: column; }
  .hero-actions > .button { width: 100%; }
  .section-heading h2 { font-size: 1.7rem; }
  .section-heading p { font-size: .95rem; }
  .price-card, .review-card, .contact-card { border-radius: 16px; }
  .cookie-panel .button { min-height: 44px; }
}
/* The inline privacy panel must remain clickable beside a fixed chat launcher,
   including tablet/desktop widths (the earlier fix only covered phones). */
body:not(.portal-body) .cookie-panel { margin-bottom: calc(112px + env(safe-area-inset-bottom,0px)); }
.site-footer { padding-bottom: max(90px,env(safe-area-inset-bottom,0px)); }
