/* ==========================================================================
   Spanish Adventures — front-end stylesheet
   Colours, fonts, spacing and radii come from CSS custom properties that
   inc/dynamic-css.php writes from Appearance > Customize.
   ========================================================================== */

/* Fallbacks, so the page is still correct if the inline block is missing. */
:root{
  --sa-primary:#BF092F;--sa-primary-rgb:191,9,47;--sa-primary-ink:#FFFFFF;
  --sa-navy:#132440;--sa-navy-rgb:19,36,64;--sa-navy-ink:#FFFFFF;
  --sa-deep:#16476A;--sa-deep-ink:#FFFFFF;
  --sa-page:#FFFFFF;--sa-ink:#1D2A3A;--sa-muted:#4F5E72;--sa-line:#DCE1E8;--sa-wash:#F4F6F9;
  --sa-font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --sa-font-head:var(--sa-font-body);
  --sa-font-size:17px;--sa-line-height:1.65;--sa-head-weight:700;
  --sa-accent:#BF092F;--sa-accent-ink:#FFFFFF;
  --sa-h1-min:2.3rem;--sa-h1-max:3.6rem;--sa-h2-min:1.65rem;--sa-h2-max:2.35rem;--sa-h3-min:1.2rem;--sa-h3-max:1.5rem;
  --sa-content:780px;--sa-container:1180px;--sa-space:72px;--sa-radius:10px;
  --sa-btn-radius:6px;--sa-btn-size:1rem;--sa-btn-pad:0.8rem 1.5rem;
  --sa-nav-transform:none;--sa-nav-spacing:0;
  --sa-header-bg:#FFFFFF;--sa-header-fg:#132440;--sa-header-pad:14px;
  --sa-topbar-bg:#132440;--sa-topbar-fg:#FFFFFF;
  --sa-hero-height:72vh;--sa-hero-focus:center;--sa-hero-overlay:rgba(19,36,64,.55);
  --sa-programs-bg:#F4F6F9;--sa-programs-ink:#132440;
  --sa-cta-bg:#16476A;--sa-cta-fg:#FFFFFF;
  --sa-footer-bg:#132440;--sa-footer-fg:#E7ECF3;
  --sa-wa-bg:#BF092F;--sa-wa-fg:#FFFFFF;--sa-wa-x:20px;--sa-wa-y:20px;--sa-wa-size:56px;
  /* Height of the top bar plus the header. Measured by script on load and on
     resize; this value is only the fallback used before that runs. */
  --sa-chrome:7.5rem;
  color-scheme:light;
}

*,*::before,*::after{box-sizing:border-box}
/* The hidden attribute must win over component display rules (buttons, grids). */
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;background:var(--sa-page);color:var(--sa-ink);
  font-family:var(--sa-font-body);font-size:var(--sa-font-size);line-height:var(--sa-line-height);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
/* height:auto matters: the theme prints real width and height attributes on
   its photographs so the browser reserves the right space before they load.
   Without this line, a picture constrained in width would keep its attribute
   height and come out squashed. */
img,svg,video,iframe{max-width:100%}
img,video{height:auto}
a{color:var(--sa-primary);text-decoration-thickness:1px;text-underline-offset:.15em}
a:hover{text-decoration-thickness:2px}
p{margin:0 0 1em}
ul,ol{margin:0 0 1em;padding-left:1.25em}
h1,h2,h3,h4,h5,h6{
  font-family:var(--sa-font-head);font-weight:var(--sa-head-weight);
  color:var(--sa-navy);line-height:1.15;margin:0 0 .6em;overflow-wrap:break-word;
}
h1{font-size:clamp(var(--sa-h1-min),5.5vw,var(--sa-h1-max));letter-spacing:-.02em}
h2{font-size:clamp(var(--sa-h2-min),3.6vw,var(--sa-h2-max));letter-spacing:-.015em}
h3{font-size:clamp(var(--sa-h3-min),2.2vw,var(--sa-h3-max))}
h4{font-size:1.05rem}
blockquote{margin:1.5em 0;padding-left:1.1em;border-left:3px solid var(--sa-primary);color:var(--sa-muted)}
hr{border:0;border-top:1px solid var(--sa-line);margin:2.5rem 0}
table{border-collapse:collapse;width:100%}
code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95em}

/* Focus and assistive text ------------------------------------------------ */
:focus-visible{outline:3px solid var(--sa-primary);outline-offset:2px;border-radius:2px}
.site-footer :focus-visible,.topbar :focus-visible,.hero :focus-visible,.section-cta :focus-visible{outline-color:#fff}
.screen-reader-text{
  border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;
  padding:0;position:absolute;width:1px;white-space:nowrap;
}
.skip-link:focus{
  clip-path:none;height:auto;width:auto;margin:0;padding:.75rem 1rem;
  position:fixed;top:.5rem;left:.5rem;z-index:1000;
  background:var(--sa-navy);color:#fff;text-decoration:none;
}

/* Layout ------------------------------------------------------------------ */
.wrap{width:100%;max-width:var(--sa-container);margin-inline:auto;padding-inline:20px}
.wrap.narrow{max-width:var(--sa-content)}
.section{padding-block:var(--sa-space)}
.section-tight{padding-block:calc(var(--sa-space) * .55)}
.alt{background:var(--sa-wash)}
.center{text-align:center}
.section-head{max-width:46rem;margin-bottom:2.5rem}
.section-programs .section-head,.section-cta .section-head{margin-inline:auto;text-align:center}
.section-title{margin-bottom:.5em}
.section-text{color:var(--sa-muted);font-size:1.0625rem;max-width:42rem}
.section-programs .section-text,.section-cta .section-text,.center .section-text{margin-inline:auto}
.section-action{margin:2.25rem 0 0;text-align:center}

/* Buttons ----------------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  font-family:var(--sa-font-body);font-size:var(--sa-btn-size);font-weight:600;
  text-transform:var(--sa-nav-transform);letter-spacing:var(--sa-nav-spacing);
  padding:var(--sa-btn-pad);border-radius:var(--sa-btn-radius);
  border:2px solid transparent;cursor:pointer;text-decoration:none;text-align:center;
  transition:background-color .15s ease,color .15s ease,border-color .15s ease;
  min-height:44px;
}
.btn-lg{font-size:calc(var(--sa-btn-size) + .05rem);padding:.95rem 1.8rem}
.btn-primary{background:var(--sa-primary);color:var(--sa-primary-ink);border-color:var(--sa-primary)}
.btn-primary:hover,.btn-primary:focus-visible{background:var(--sa-navy);border-color:var(--sa-navy);color:#fff}
.btn-outline{background:transparent;color:var(--sa-navy);border-color:var(--sa-line)}
.btn-outline:hover,.btn-outline:focus-visible{border-color:var(--sa-primary);color:var(--sa-primary)}
.btn-ghost{background:transparent;color:var(--sa-muted);border-color:transparent;text-decoration:underline}
.btn-ghost:hover{color:var(--sa-navy)}
.btn-light{background:#fff;color:var(--sa-navy);border-color:#fff}
.btn-light:hover,.btn-light:focus-visible{background:var(--sa-primary);border-color:var(--sa-primary);color:var(--sa-primary-ink)}
.btn-outline-light{background:transparent;color:#fff;border-color:rgba(255,255,255,.65)}
.btn-outline-light:hover,.btn-outline-light:focus-visible{background:#fff;color:var(--sa-navy);border-color:#fff}
.cta-row{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;margin-top:1.75rem}
.hero-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.75rem}

/* Top bar ----------------------------------------------------------------- */
.topbar{background:var(--sa-topbar-bg);color:var(--sa-topbar-fg);font-size:.875rem}
.topbar a{color:inherit}
.topbar-in{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:.5rem;flex-wrap:wrap}
.topbar-text{margin:0}
.topbar-right{display:flex;align-items:center;gap:1.25rem}
.topbar-wa{display:inline-flex;align-items:center;gap:.4rem;text-decoration:none}
.topbar-wa:hover{text-decoration:underline}


/* Header ------------------------------------------------------------------ */
.site-header{background:var(--sa-header-bg);border-bottom:1px solid var(--sa-line);position:relative;z-index:60}
.sa-sticky-header .site-header{position:sticky;top:0}
.admin-bar.sa-sticky-header .site-header{top:32px}
@media (max-width:782px){.admin-bar.sa-sticky-header .site-header{top:46px}}
.header-bar{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding-block:var(--sa-header-pad)}
.brand{min-width:0}
.brand-text{display:block;text-decoration:none;color:var(--sa-header-fg)}
.brand-name{display:block;font-family:var(--sa-font-head);font-weight:800;font-size:1.25rem;letter-spacing:-.01em;line-height:1.1}
.brand-tagline{display:block;font-size:.75rem;color:var(--sa-muted);margin-top:.15rem}
.brand img,.custom-logo{max-height:56px;width:auto}
.primary-nav{display:flex;align-items:center;gap:1.5rem}
.menu{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:1.4rem;flex-wrap:wrap}
.menu a{
  text-decoration:none;color:var(--sa-header-fg);font-weight:500;font-size:.9875rem;
  text-transform:var(--sa-nav-transform);letter-spacing:var(--sa-nav-spacing);
  padding-block:.35rem;display:inline-block;
}
.menu a:hover{color:var(--sa-primary)}
.menu .current-menu-item>a,.menu .current_page_item>a,.menu .current-menu-ancestor>a{
  color:var(--sa-primary);box-shadow:inset 0 -2px var(--sa-primary);
}
.menu .sub-menu{list-style:none;margin:.4rem 0 0;padding:0 0 0 1rem;display:block}
.nav-extras{display:flex;align-items:center;gap:1rem}
.nav-toggle{
  display:none;align-items:center;gap:.5rem;background:transparent;
  border:2px solid var(--sa-line);border-radius:var(--sa-btn-radius);
  color:var(--sa-header-fg);font:600 .9rem var(--sa-font-body);
  padding:.55rem .8rem;cursor:pointer;min-height:44px;
}
.nav-toggle-label{line-height:1}
.bars{display:block;position:relative;width:18px;height:2px;background:currentColor}
.bars::before,.bars::after{content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.bars::before{top:-6px}
.bars::after{top:6px}

@media (max-width:900px){
  .nav-toggle{display:inline-flex}
  .primary-nav{
    display:none;position:absolute;left:0;right:0;top:100%;
    background:var(--sa-header-bg);border-bottom:1px solid var(--sa-line);
    flex-direction:column;align-items:stretch;gap:1rem;
    padding:1.25rem 20px 1.5rem;box-shadow:0 12px 24px rgba(0,0,0,.08);
  }
  .primary-nav.is-open{display:flex}
  .menu{flex-direction:column;align-items:stretch;gap:.25rem}
  .menu li{border-bottom:1px solid var(--sa-line)}
  .menu a{padding-block:.7rem}
  .nav-extras{flex-direction:column;align-items:stretch;gap:.75rem;margin-top:.5rem}
  .btn-header{width:100%}
}
@media (max-width:600px){
  .topbar-in{justify-content:center;text-align:center}
  .topbar-text{width:100%}
}

/* Hero -------------------------------------------------------------------- */
.hero{position:relative;isolation:isolate;display:flex;align-items:center;overflow:hidden}
.hero.has-image{min-height:var(--sa-hero-height)}
.hero.no-image{background:var(--sa-navy);padding-block:calc(var(--sa-space) * 1.15)}
.hero-media{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hero-img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:var(--sa-hero-focus);
}
.hero-overlay{position:absolute;inset:0;background:var(--sa-hero-overlay);z-index:-1}
.hero-inner{position:relative;z-index:1}
.hero-inner{padding-block:calc(var(--sa-space) * .9);max-width:52rem;color:#fff}
.hero-eyebrow{
  margin:0 0 1rem;font-size:.8125rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:#fff;opacity:.9;
}
.hero-title{color:#fff;margin-bottom:.4em;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.hero-text{font-size:1.1875rem;color:#fff;max-width:36rem;margin:0;opacity:.95}
.hero-level{margin:1.5rem 0 0}
.hero-level a{color:#fff;font-weight:600}
.hero.no-image .hero-title,.hero.no-image .hero-text{text-shadow:none}

/* Page banner ------------------------------------------------------------- */
.page-banner{background:var(--sa-navy);color:#fff;padding-block:calc(var(--sa-space) * .7)}
.page-banner h1{color:#fff;margin-bottom:.3em}
.page-banner .lede{font-size:1.125rem;color:#fff;opacity:.9;max-width:44rem;margin:0}
.page-kicker{
  margin:0 0 .75rem;font-size:.8125rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;opacity:.85;
}
.page-banner--quiz{background:var(--sa-deep)}

/* Cards ------------------------------------------------------------------- */
.section-programs{background:var(--sa-programs-bg)}
.cards{display:grid;gap:1.5rem;grid-template-columns:repeat(3,1fr);align-items:stretch}
.card{
  background:#fff;border:1px solid var(--sa-line);border-radius:var(--sa-radius);
  display:flex;flex-direction:column;overflow:hidden;
}
.card.is-featured{border-color:var(--sa-primary);border-width:2px}
.card-media{position:relative;aspect-ratio:3/2;background:var(--sa-wash);overflow:hidden}
.card-media img,.card-media .sa-figure{width:100%;height:100%;object-fit:cover;margin:0}
/* A figure inside a card fills the card's 3/2 window, so it keeps height:100%
   here and does not fall back to the intrinsic height that .sa-figure img sets
   everywhere else. */
.card-media .sa-figure img{height:100%}
.card-body{padding:1.5rem;display:flex;flex-direction:column;gap:.65rem;flex:1}
.card-badge{
  margin:0;align-self:flex-start;background:var(--sa-primary);color:var(--sa-primary-ink);
  font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:.25rem .6rem;border-radius:2px;
}
.card-title{margin:0}
.card-text{margin:0;color:var(--sa-muted)}
.card-features-title{margin:.4rem 0 0;font-weight:700;font-size:.9375rem;color:var(--sa-navy)}
.card-features{margin:0;padding-left:1.1em;color:var(--sa-muted);font-size:.9375rem}
.card-features li{margin-bottom:.3em}
.card-action{margin:auto 0 0;padding-top:.75rem}
.card-link{font-weight:600;text-decoration:none;border-bottom:2px solid currentColor}
.card-link:hover{color:var(--sa-navy)}
.cards--detail .card-body{padding:1.75rem}

/* Replaceable image areas ------------------------------------------------- */
.sa-figure{margin:0;border-radius:var(--sa-radius);overflow:hidden;background:var(--sa-wash)}
.sa-figure img{display:block;width:100%;height:auto}
.sa-figure.is-placeholder{
  position:relative;aspect-ratio:3/2;
  background:
    repeating-linear-gradient(135deg,rgba(255,255,255,.07) 0 14px,transparent 14px 28px),
    var(--sa-deep);
}
.sa-figure.is-placeholder .sa-figure-mark{
  position:absolute;inset:auto auto 14px 16px;width:34px;height:4px;background:var(--sa-primary);
}
.wide-figure{aspect-ratio:21/9}
.wide-figure.is-placeholder{aspect-ratio:21/9}

/* Split sections ---------------------------------------------------------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center}
.section-split--reverse .split-media{order:2}
.split-body .section-text{margin-bottom:1.5rem}
.split-figure{aspect-ratio:4/3}

/* Level invitation -------------------------------------------------------- */
.level-invite{
  background:var(--sa-wash);border:1px solid var(--sa-line);
  border-left:4px solid var(--sa-primary);border-radius:var(--sa-radius);
  padding:2rem;
}
.alt .level-invite{background:#fff}
.level-invite h2{margin-top:0}
.level-invite p{color:var(--sa-muted);margin-bottom:.75em}
.level-invite-note{font-size:.9375rem;font-style:normal;color:var(--sa-navy)}
.level-invite-action{margin:1.25rem 0 0}

/* Closing call to action -------------------------------------------------- */
.section-cta{background:var(--sa-cta-bg);color:var(--sa-cta-fg)}
.section-cta .section-title,.section-cta .section-text{color:var(--sa-cta-fg)}
.section-cta .section-text{opacity:.92}

/* Entry content ----------------------------------------------------------- */
.entry-content{max-width:var(--sa-content)}
.entry-content>*{margin-bottom:1.1em}
.entry-content h2{margin-top:2.25em}
.entry-content h2:first-child{margin-top:0}
.entry-content h3{margin-top:1.75em}
.entry-content a{font-weight:500}
.entry-content figure,.entry-content img{border-radius:var(--sa-radius)}
.entry-content .wp-block-image{margin-block:2em}
.entry-content ul,.entry-content ol{padding-left:1.4em}
.entry-content li{margin-bottom:.4em}
.entry-thumb{display:block;margin-bottom:2rem;border-radius:var(--sa-radius)}
.alignwide{max-width:min(var(--sa-container),100%)}
.alignfull{max-width:none}

/* Contact ----------------------------------------------------------------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:3rem;align-items:start}
.contact-details h2{margin-top:0}
.contact-list{list-style:none;margin:0;padding:0;display:grid;gap:1.5rem}
.contact-label{
  display:block;font-size:.75rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--sa-muted);margin-bottom:.3rem;
}
.contact-value{display:block;font-size:1.0625rem;color:var(--sa-navy);text-decoration:none;overflow-wrap:break-word}
a.contact-value{text-decoration:underline;text-decoration-color:var(--sa-line);text-underline-offset:.2em}
a.contact-value:hover{color:var(--sa-primary);text-decoration-color:currentColor}
.contact-wa{display:inline-flex;align-items:center;gap:.45rem}
.contact-hint,.contact-maplink{display:block;font-size:.875rem;margin-top:.35rem}
.contact-hint{color:var(--sa-muted)}

/* Forms ------------------------------------------------------------------- */
.contact-form-wrap{background:var(--sa-wash);border:1px solid var(--sa-line);border-radius:var(--sa-radius);padding:2rem}
.contact-form-wrap h2{margin-top:0}
.contact-form-intro{color:var(--sa-muted)}
.contact-field{margin:0 0 1.25rem}
.contact-field label{display:block;font-weight:600;margin-bottom:.4rem;color:var(--sa-navy)}
.contact-field .req{font-weight:400;font-size:.8125rem;color:var(--sa-muted);margin-left:.35rem}
input[type=text],input[type=email],input[type=tel],input[type=url],input[type=search],input[type=number],input[type=date],select,textarea{
  width:100%;max-width:100%;font:inherit;color:var(--sa-ink);background:#fff;
  border:1.5px solid var(--sa-line);border-radius:var(--sa-btn-radius);
  padding:.7rem .85rem;min-height:44px;
}
textarea{min-height:9rem;resize:vertical}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--sa-navy) 50%),linear-gradient(135deg,var(--sa-navy) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:2.5rem}
input:focus,select:focus,textarea:focus{border-color:var(--sa-primary);outline:2px solid var(--sa-primary);outline-offset:0}
.has-error input,.has-error select,.has-error textarea{border-color:var(--sa-primary);border-width:2px}
.field-error{
  display:block;margin-top:.4rem;font-size:.9375rem;font-weight:600;color:var(--sa-primary);
}
.field-error::before{content:"\26A0\FE0E";margin-right:.4rem}
.contact-consent label{display:flex;align-items:flex-start;gap:.6rem;font-weight:400}
.contact-consent input{width:1.15rem;height:1.15rem;min-height:0;margin-top:.2rem;flex:none}
.contact-honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.contact-actions{margin:1.5rem 0 0}
.search-form{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1.5rem}
.search-form label{flex:1 1 14rem}
.search-form input[type=submit]{
  font:600 1rem var(--sa-font-body);background:var(--sa-primary);color:var(--sa-primary-ink);
  border:2px solid var(--sa-primary);border-radius:var(--sa-btn-radius);padding:.7rem 1.3rem;cursor:pointer;
}

/* Alerts ------------------------------------------------------------------ */
.sa-alert{
  border:1px solid var(--sa-line);border-left:4px solid var(--sa-muted);
  border-radius:var(--sa-btn-radius);padding:1rem 1.1rem;margin:0 0 1.5rem;background:#fff;
}
.sa-alert ul{margin:.5rem 0 0;padding-left:1.2em}
.sa-alert-success{border-left-color:#1E7A46;background:#F1F8F3}
.sa-alert-success::before{content:"\2713  ";font-weight:700;color:#1E7A46}
.sa-alert-error{border-left-color:var(--sa-primary);background:#FDF2F4}
.sa-alert-error p:first-child::before{content:"\26A0\FE0E  ";color:var(--sa-primary)}
.sa-alert-notice{border-left-color:var(--sa-deep);background:var(--sa-wash)}
.sa-alert:last-child{margin-bottom:0}

/* Map --------------------------------------------------------------------- */
.map-embed{
  border:1px solid var(--sa-line);border-radius:var(--sa-radius);overflow:hidden;
  margin-bottom:1.5rem;background:var(--sa-wash);
}
.map-embed iframe{display:block;width:100%;height:420px;border:0}
.map-address{color:var(--sa-muted)}

/* Blog list --------------------------------------------------------------- */
.post-list{list-style:none;margin:0;padding:0;display:grid;gap:2.5rem}
.post-list-title{margin:0 0 .3rem;font-size:1.3rem}
.post-list-title a{color:var(--sa-navy);text-decoration:none}
.post-list-title a:hover{color:var(--sa-primary)}
.post-list-meta{margin:0 0 .5rem;font-size:.875rem;color:var(--sa-muted)}
.post-list-excerpt{color:var(--sa-muted)}
.pagination{margin-top:3rem}
.nav-links{display:flex;gap:.5rem;flex-wrap:wrap}
.page-numbers{
  display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;
  padding:.4rem .7rem;border:1px solid var(--sa-line);border-radius:var(--sa-btn-radius);
  text-decoration:none;color:var(--sa-navy);
}
.page-numbers.current{background:var(--sa-navy);color:#fff;border-color:var(--sa-navy)}

/* Footer ------------------------------------------------------------------ */
.site-footer{background:var(--sa-footer-bg);color:var(--sa-footer-fg);padding-top:calc(var(--sa-space) * .8)}
.site-footer a{color:var(--sa-footer-fg)}
.site-footer a:hover{color:#fff}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1.2fr;gap:3rem;padding-bottom:2.5rem}
.footer-brand{font-family:var(--sa-font-head);font-weight:800;font-size:1.2rem;margin:0 0 .6rem;color:#fff}
.footer-text{margin:0;opacity:.85;max-width:30rem}
.footer-title{
  font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  margin:0 0 1rem;color:#fff;opacity:.8;
}
.footer-menu{flex-direction:column;align-items:flex-start;gap:.55rem}
.footer-menu a{color:var(--sa-footer-fg);box-shadow:none;font-weight:400}
.footer-menu a:hover{color:#fff;text-decoration:underline}
.footer-menu .current-menu-item>a{box-shadow:none;color:#fff;font-weight:600}
.footer-contact-list{list-style:none;margin:0;padding:0;display:grid;gap:1rem}
.footer-label{
  display:block;font-size:.7rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;opacity:.65;margin-bottom:.15rem;
}
.footer-address{display:block;opacity:.9}
.footer-base{
  border-top:1px solid rgba(255,255,255,.18);padding-block:1.25rem;
  font-size:.875rem;opacity:.8;
}
.footer-base p{margin:0}

/* Floating WhatsApp button ------------------------------------------------ */
.wa-float{
  position:fixed;right:var(--sa-wa-x);bottom:var(--sa-wa-y);z-index:900;
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  min-width:var(--sa-wa-size);height:var(--sa-wa-size);padding:0 calc(var(--sa-wa-size) / 4);
  background:var(--sa-wa-bg);color:var(--sa-wa-fg);
  border-radius:999px;text-decoration:none;
  box-shadow:0 6px 18px rgba(0,0,0,.25);
  transition:transform .15s ease;
}
.wa-float:not(.has-label){padding:0;width:var(--sa-wa-size)}
.wa-float:hover{transform:translateY(-2px);color:var(--sa-wa-fg)}
.wa-float:focus-visible{outline:3px solid #fff;outline-offset:3px}
.wa-float .wa-icon{flex:none}
.wa-float-text{font-weight:700;font-size:.9375rem;white-space:nowrap}
@media (max-width:600px){
  .wa-float.has-label{padding:0;width:var(--sa-wa-size)}
  .wa-float-text{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}
}
@media (prefers-reduced-motion:reduce){.wa-float{transition:none}.wa-float:hover{transform:none}}

/* ==========================================================================
   Test Your Level
   ========================================================================== */
.sa-quiz{max-width:var(--sa-content)}
.sa-quiz-lede{font-size:1.0625rem}
.sa-quiz-facts{
  list-style:none;margin:1.5rem 0;padding:1.25rem 1.5rem;
  background:var(--sa-wash);border-radius:var(--sa-radius);border:1px solid var(--sa-line);
  display:grid;gap:.5rem;
}
.sa-quiz-facts li{position:relative;padding-left:1.4rem;color:var(--sa-navy)}
.sa-quiz-facts li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;background:var(--sa-primary);border-radius:50%}
.sa-quiz-disclaimer{font-size:.9375rem;color:var(--sa-muted);border-left:3px solid var(--sa-line);padding-left:1rem}
.sa-quiz-start-wrap{margin:2rem 0 0}

.sa-quiz-progress{margin:0 0 2rem;padding:1rem 1.25rem;background:var(--sa-wash);border-radius:var(--sa-radius)}
.sa-quiz-step{margin:0 0 .5rem;font-weight:700;color:var(--sa-navy)}
.sa-quiz-bar{height:10px;background:#fff;border:1px solid var(--sa-line);border-radius:999px;overflow:hidden}
.sa-quiz-bar-fill{display:block;height:100%;background:var(--sa-primary);transition:width .2s ease}
@media (prefers-reduced-motion:reduce){.sa-quiz-bar-fill{transition:none}}
.sa-quiz-count{margin:.5rem 0 0;font-size:.875rem;color:var(--sa-muted)}

.sa-quiz-list{list-style:none;margin:0;padding:0;display:grid;gap:2.5rem}
.sa-quiz-list.is-wizard{gap:0}
.sa-q fieldset{border:0;margin:0;padding:0}
.sa-q legend{display:block;width:100%;padding:0;margin-bottom:1rem}
.sa-q-num{
  display:block;font-size:.75rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--sa-primary);margin-bottom:.35rem;
}
.sa-q-meta{display:block;font-size:.8125rem;color:var(--sa-muted);margin-bottom:.6rem}
.sa-q-intro{
  display:block;background:var(--sa-wash);border-left:3px solid var(--sa-deep);
  padding:.85rem 1rem;border-radius:0 var(--sa-btn-radius) var(--sa-btn-radius) 0;
  margin-bottom:.85rem;color:var(--sa-ink);font-size:1rem;
}
.sa-q-prompt{display:block;font-family:var(--sa-font-head);font-weight:var(--sa-head-weight);font-size:1.25rem;color:var(--sa-navy);line-height:1.3}
.sa-q-options{display:grid;gap:.6rem}
.sa-q-option{position:relative}
.sa-q-option input{position:absolute;left:1rem;top:50%;transform:translateY(-50%);width:1.1rem;height:1.1rem;margin:0}
.sa-q-option label{
  display:block;padding:.85rem 1rem .85rem 2.9rem;
  border:1.5px solid var(--sa-line);border-radius:var(--sa-btn-radius);
  background:#fff;cursor:pointer;min-height:44px;
}
.sa-q-option label:hover{border-color:var(--sa-deep)}
.sa-q-option input:checked+label{border-color:var(--sa-primary);border-width:2px;background:#FDF2F4;font-weight:600}
.sa-q-option input:focus-visible+label{outline:3px solid var(--sa-primary);outline-offset:2px}
.sa-q-error{
  margin:.75rem 0 0;font-weight:600;color:var(--sa-primary);
}
.sa-q-error::before{content:"\26A0\FE0E";margin-right:.4rem}
.sa-quiz-nav{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:2.5rem;align-items:center}
.sa-quiz-jsnote{margin-top:1rem;font-size:.875rem;color:var(--sa-muted)}
.sa-quiz-form.is-wizard .sa-quiz-jsnote{display:none}

/* Result ------------------------------------------------------------------ */
.sa-result{border:1px solid var(--sa-line);border-top:5px solid var(--sa-primary);border-radius:var(--sa-radius);padding:2rem;background:#fff}
.sa-result-kicker{
  margin:0 0 .4rem;font-size:.75rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--sa-muted);
}
.sa-result-level{margin:0 0 .75rem;font-size:clamp(1.6rem,4vw,2.2rem)}
.sa-result-summary{font-size:1.0625rem;color:var(--sa-ink)}
.sa-result h3{margin-top:2em;font-size:1.1rem}
.sa-result-score{margin:1.5rem 0}
.sa-table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.sa-table-wrap:focus-visible{outline:3px solid var(--sa-primary);outline-offset:2px}
.sa-table-wrap .sa-table{margin-top:1rem}
.sa-table{margin:1rem 0 0;font-size:.9375rem;border:1px solid var(--sa-line);border-radius:var(--sa-btn-radius);overflow:hidden}
.sa-table caption{text-align:left;font-weight:700;color:var(--sa-navy);padding:.5rem 0}
.sa-table th,.sa-table td{padding:.6rem .75rem;text-align:left;border-bottom:1px solid var(--sa-line)}
.sa-table thead th{background:var(--sa-wash);font-size:.8125rem;text-transform:uppercase;letter-spacing:.06em}
.sa-table tbody tr:last-child th,.sa-table tbody tr:last-child td{border-bottom:0}
.sa-yes{color:#1E7A46;font-weight:600}
.sa-yes::before{content:"\2713 "}
.sa-no{color:var(--sa-primary);font-weight:600}
.sa-no::before{content:"\00D7 "}
.sa-list-plain{list-style:none;margin:.5rem 0 0;padding:0}
.sa-list-plain li{padding-left:1.4rem;position:relative;margin-bottom:.35rem}
.sa-list-plain li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;background:var(--sa-deep);border-radius:50%}
.sa-result-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin:2rem 0 0}
/* Optional "send me your result" block */
.sa-send{
  margin-top:2.5rem;padding-top:1.75rem;border-top:1px solid var(--sa-line);
}
.sa-send h3{margin-top:0}
.sa-send .contact-field{margin-bottom:1rem}
.sa-send .sa-alert{margin-bottom:1rem}
.sa-send-form{margin-top:1.25rem}
.sa-send .contact-actions{margin:1.25rem 0 0}

.sa-result-disclaimer{
  margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--sa-line);
  font-size:.9375rem;color:var(--sa-muted);
}
.sa-result-disclaimer h3{margin-top:0}
.sa-quiz-review{margin-top:2rem}
.sa-quiz-review summary{cursor:pointer;font-weight:600;color:var(--sa-navy);padding:.5rem 0}
.sa-row-wrong td:first-child{border-left:3px solid var(--sa-primary)}
.sa-row-right td:first-child{border-left:3px solid #1E7A46}
.sa-quiz-note{font-size:.9375rem;color:var(--sa-muted)}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:1024px){
  .cards{grid-template-columns:repeat(2,1fr)}
  .split{gap:2rem}
  .footer-grid{grid-template-columns:1fr 1fr;gap:2.5rem}
}
@media (max-width:860px){
  .contact-grid{grid-template-columns:1fr;gap:2.5rem}
  .split{grid-template-columns:1fr}
  .section-split--reverse .split-media{order:0}
  .split-figure{aspect-ratio:16/9}
}
@media (max-width:720px){
  .cards{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr;gap:2rem}
  .map-embed iframe{height:320px}
  .hero.has-image{min-height:auto;padding-block:calc(var(--sa-space) * .6)}
  .level-invite,.contact-form-wrap,.sa-result{padding:1.5rem}
  .sa-result-actions .btn,.hero-actions .btn,.cta-row .btn{width:100%}
}
@media (max-width:420px){
  .wrap{padding-inline:16px}
  .level-invite,.contact-form-wrap,.sa-result{padding:1.25rem}
  .card-body{padding:1.25rem}
  .sa-quiz-facts{padding:1rem 1.1rem}
  .sa-table{font-size:.875rem}
  .sa-table th,.sa-table td{padding:.5rem .55rem}
}

/* Print ------------------------------------------------------------------- */
@media print{
  .topbar,.site-header,.site-footer,.wa-float,.sa-quiz-nav,.sa-quiz-progress{display:none}
  body{background:#fff;color:#000}
  .sa-result{border:1px solid #999}
}

/* ==========================================================================
   Motion
   Everything here is scoped to .sa-motion, a class a small inline script adds
   to <html> only when the browser can animate and the visitor has not asked
   for reduced motion. Without that class the page is simply the page: nothing
   is hidden, nothing waits for JavaScript.
   ========================================================================== */

.sa-anchor{display:block;height:0;scroll-margin-top:90px}

/* Reveal on scroll ---------------------------------------------------------- */
.sa-motion [data-reveal]{
  opacity:0;
  transition:opacity var(--sa-dur) cubic-bezier(.22,.61,.36,1) var(--sa-delay,0s),
             transform var(--sa-dur) cubic-bezier(.22,.61,.36,1) var(--sa-delay,0s),
             clip-path var(--sa-dur) cubic-bezier(.22,.61,.36,1) var(--sa-delay,0s);
  will-change:opacity,transform;
}
.sa-motion [data-reveal="up"]{transform:translate3d(0,var(--sa-move),0)}
/* Sideways reveals always start to the LEFT of their resting place. Starting
   to the right would widen the page while the element waits there, and an
   overflow rule to hide that is worse than the problem: overflow-x:clip drags
   the vertical axis with it, which clips card shadows and hides elements from
   the scroll observer. */
.sa-motion [data-reveal="left"]{transform:translate3d(calc(var(--sa-move) * -1),0,0)}
.sa-motion [data-reveal="scale"]{transform:scale(.96)}
.sa-motion [data-reveal="mask"]{clip-path:inset(0 0 100% 0);transform:none}
.sa-motion [data-reveal].is-in{
  opacity:1;transform:none;clip-path:inset(0 0 0 0);will-change:auto;
}

/* Reading progress ---------------------------------------------------------- */
.sa-progress{
  position:fixed;top:0;left:0;right:0;height:3px;z-index:120;
  background:transparent;pointer-events:none;
}
.sa-progress span{
  display:block;height:100%;width:0;background:var(--sa-primary);
  transform-origin:0 50%;transition:width .1s linear;
}
.admin-bar .sa-progress{top:32px}
@media (max-width:782px){.admin-bar .sa-progress{top:46px}}

/* Header reacting to the scroll --------------------------------------------- */
.site-header{transition:transform .35s ease,box-shadow .25s ease,padding .25s ease}
.sa-motion .site-header.is-stuck{box-shadow:0 2px 18px rgba(var(--sa-navy-rgb),.12)}
.sa-motion .site-header.is-stuck .header-bar{padding-block:calc(var(--sa-header-pad) * .6)}
.sa-motion .site-header.is-hidden{transform:translateY(-100%)}
.header-bar{transition:padding .25s ease}

/* Hero ---------------------------------------------------------------------- */
.hero-img{opacity:0;transition:opacity var(--sa-hero-fade) ease}
.hero-img.is-active{opacity:1}
.hero:not(.is-slider) .hero-img{opacity:1}

@keyframes sa-kenburns{
  from{transform:scale(1)}
  to{transform:scale(1.08)}
}
.sa-motion .hero.has-zoom .hero-img.is-active{
  animation:sa-kenburns var(--sa-hero-zoom) ease-out forwards;
}

.hero-dots{
  position:absolute;right:clamp(16px,3vw,32px);top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;gap:.7rem;z-index:2;
}
.hero-dot{
  width:10px;height:10px;padding:0;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.35);border:1px solid rgba(255,255,255,.7);
  transition:background .25s ease,transform .25s ease;
}
.hero-dot:hover{background:rgba(255,255,255,.7)}
.hero-dot.is-active{background:#fff;transform:scale(1.35)}
@media (max-width:720px){
  .hero-dots{right:auto;left:50%;top:auto;bottom:4.5rem;transform:translateX(-50%);flex-direction:row}
}

.hero-cue{
  position:absolute;left:50%;bottom:1.75rem;transform:translateX(-50%);
  z-index:2;display:block;width:44px;height:44px;text-decoration:none;
}
.hero-cue-line{
  position:absolute;left:50%;top:6px;width:1px;height:30px;
  background:rgba(255,255,255,.6);overflow:hidden;
}
.hero-cue-line::after{
  content:"";position:absolute;left:0;top:-30px;width:1px;height:30px;background:#fff;
}
.sa-motion .hero-cue-line::after{animation:sa-cue 2.2s cubic-bezier(.6,.05,.2,1) infinite}
@keyframes sa-cue{
  0%{transform:translateY(0)}
  70%{transform:translateY(60px)}
  100%{transform:translateY(60px)}
}
.hero-cue:focus-visible{outline:3px solid #fff;outline-offset:3px;border-radius:4px}

/* Cards --------------------------------------------------------------------- */
.card{transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,border-color .3s ease}
.card-media img{transition:transform .5s cubic-bezier(.22,.61,.36,1)}
.sa-motion .card.has-hover:hover,
.sa-motion .card.has-hover:focus-within{
  transform:translateY(-6px);
  box-shadow:0 18px 40px rgba(var(--sa-navy-rgb),.13);
  border-color:var(--sa-primary);
}
.sa-motion .card.has-hover:hover .card-media img,
.sa-motion .card.has-hover:focus-within .card-media img{transform:scale(1.06)}

.card-link{position:relative;display:inline-flex;align-items:center;gap:.4rem;border-bottom:0}
.card-link::after{
  content:"";width:1.1em;height:1px;background:currentColor;
  transition:width .25s ease;
}
.card-link::before{
  content:"";position:absolute;left:0;bottom:-3px;height:2px;width:100%;
  background:currentColor;transform:scaleX(0);transform-origin:0 50%;
  transition:transform .25s ease;
}
.card:hover .card-link::before,.card-link:hover::before,.card-link:focus-visible::before{transform:scaleX(1)}
.card:hover .card-link::after,.card-link:hover::after{width:1.8em}

/* Buttons ------------------------------------------------------------------- */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:currentColor;opacity:0;transform:translateY(100%);
  transition:transform .3s cubic-bezier(.22,.61,.36,1),opacity .3s ease;
}
.sa-motion .btn:hover::before,.sa-motion .btn:focus-visible::before{transform:translateY(0);opacity:.08}

/* Large photographs drifting ------------------------------------------------ */
.sa-motion [data-parallax]{overflow:hidden}
.sa-motion [data-parallax] img{will-change:transform}

/* Links in running text ----------------------------------------------------- */
.entry-content a{
  background-image:linear-gradient(currentColor,currentColor);
  background-size:0% 1px;background-repeat:no-repeat;background-position:0 100%;
  text-decoration:none;transition:background-size .3s ease;
}
.entry-content a:hover,.entry-content a:focus-visible{background-size:100% 1px}

/* The page arriving --------------------------------------------------------- */
.sa-motion body{animation:sa-fade-in .4s ease both}
@keyframes sa-fade-in{from{opacity:0}to{opacity:1}}

/* Anyone who asks for less gets none of it ---------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
  [data-reveal]{opacity:1!important;transform:none!important;clip-path:none!important}
  .hero-img{opacity:1}
  .hero:not(.is-slider) .hero-img{opacity:1}
}

/* ==========================================================================
   The floating button asking to be noticed
   ========================================================================== */
.wa-ring{
  position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  border:2px solid var(--sa-wa-bg);opacity:0;
}
.sa-motion .wa-float.has-pulse{animation:sa-wa-nudge var(--sa-wa-gap) ease-in-out infinite}
.sa-motion .wa-float.has-pulse .wa-ring{animation:sa-wa-ring var(--sa-wa-gap) ease-out infinite}
/* Once they have shown interest, stop pestering them. */
.sa-motion .wa-float.has-pulse:hover,
.sa-motion .wa-float.has-pulse:focus-visible,
.sa-motion .wa-float.has-pulse.is-quiet{animation:none}
.sa-motion .wa-float.has-pulse:hover .wa-ring,
.sa-motion .wa-float.has-pulse:focus-visible .wa-ring,
.sa-motion .wa-float.has-pulse.is-quiet .wa-ring{animation:none;opacity:0}

@keyframes sa-wa-nudge{
  0%,72%,100%{transform:translateY(0) rotate(0)}
  76%{transform:translateY(-5px) rotate(-7deg)}
  80%{transform:translateY(0) rotate(6deg)}
  84%{transform:translateY(-3px) rotate(-4deg)}
  88%{transform:translateY(0) rotate(0)}
}
@keyframes sa-wa-ring{
  0%,70%{transform:scale(1);opacity:0}
  75%{opacity:.55}
  100%{transform:scale(1.65);opacity:0}
}

/* ==========================================================================
   Contact: how to reach us, across the top
   ========================================================================== */
.section-reach{padding-top:calc(var(--sa-space) * .6)}
.reach-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}
.reach-card{
  display:block;padding:1.5rem;text-decoration:none;color:var(--sa-ink);
  background:#fff;border:1px solid var(--sa-line);border-radius:var(--sa-radius);
  border-top:3px solid var(--sa-primary);
  transition:transform .25s cubic-bezier(.22,.61,.36,1),box-shadow .25s ease;
}
a.reach-card:hover,a.reach-card:focus-visible{
  transform:translateY(-4px);box-shadow:0 14px 32px rgba(var(--sa-navy-rgb),.12);
}
.reach-icon{display:block;color:var(--sa-primary);margin-bottom:.75rem;line-height:0}
.reach-label{
  display:block;font-size:.7rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--sa-muted);margin-bottom:.3rem;
}
.reach-value{display:block;font-size:1.0625rem;font-weight:600;color:var(--sa-navy);overflow-wrap:break-word}
a.reach-card:hover .reach-value{color:var(--sa-primary)}
.reach-note{display:block;margin-top:.4rem;font-size:.8125rem;color:var(--sa-muted);font-weight:400}
@media (max-width:860px){.reach-grid{grid-template-columns:1fr}}

/* The form itself, now the weight of the page ------------------------------ */
.section-contact{padding-top:calc(var(--sa-space) * .5)}
.contact-form-wrap{
  background:var(--sa-deep);color:#fff;border:0;
  padding:clamp(1.5rem,4vw,2.75rem);
}
.contact-form-wrap h2,.contact-form-wrap .contact-field label{color:#fff}
.contact-form-wrap .contact-form-intro{color:rgba(255,255,255,.82)}
.contact-form-wrap .req{color:rgba(255,255,255,.6)}
.contact-form-wrap input[type=text],
.contact-form-wrap input[type=email],
.contact-form-wrap input[type=tel],
.contact-form-wrap input[type=date],
.contact-form-wrap select,
.contact-form-wrap textarea{
  background:#fff;border-color:transparent;color:var(--sa-ink);
  transition:box-shadow .2s ease,transform .2s ease;
}
.contact-form-wrap input:focus,
.contact-form-wrap select:focus,
.contact-form-wrap textarea:focus{
  outline:3px solid #fff;outline-offset:2px;box-shadow:0 8px 20px rgba(0,0,0,.18);
}
.sa-motion .contact-form-wrap .contact-field.is-live input,
.sa-motion .contact-form-wrap .contact-field.is-live textarea,
.sa-motion .contact-form-wrap .contact-field.is-live select{transform:translateY(-2px)}
.contact-form-wrap .contact-consent span{color:rgba(255,255,255,.92)}
.contact-form-wrap .field-error{color:#FFD7DD}
.contact-form-wrap .sa-alert{color:var(--sa-ink)}
.contact-form-wrap .btn-primary{background:var(--sa-primary);border-color:var(--sa-primary)}
.contact-form-wrap .btn-primary:hover,
.contact-form-wrap .btn-primary:focus-visible{background:#fff;border-color:#fff;color:var(--sa-deep)}
.contact-form-wrap :focus-visible{outline-color:#fff}

/* ==========================================================================
   Social icons
   ========================================================================== */
.social-links{list-style:none;display:flex;gap:.6rem;margin:1.25rem 0 0;padding:0;flex-wrap:wrap}
.social-link{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:50%;
  border:1px solid currentColor;text-decoration:none;color:inherit;opacity:.85;
  transition:background-color .25s ease,color .25s ease,transform .25s ease,opacity .25s ease;
}
.social-link:hover,.social-link:focus-visible{
  background:var(--sa-primary);border-color:var(--sa-primary);color:#fff;opacity:1;
}
.sa-motion .social-link:hover{transform:translateY(-3px)}

/* ==========================================================================
   The shared window: programme details and enlarged photographs
   ========================================================================== */
.sa-dialog{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:clamp(12px,4vw,40px)}
.sa-dialog-backdrop{position:absolute;inset:0;background:rgba(var(--sa-navy-rgb),.72);opacity:0;transition:opacity .2s ease}
.sa-dialog.is-open .sa-dialog-backdrop{opacity:1}
.sa-dialog-panel{
  position:relative;z-index:1;background:#fff;color:var(--sa-ink);
  border-radius:var(--sa-radius);max-width:min(760px,100%);width:100%;
  max-height:min(86vh,900px);overflow:auto;-webkit-overflow-scrolling:touch;
  padding:clamp(1.5rem,4vw,2.5rem);
  opacity:0;transform:translateY(16px) scale(.98);
  transition:opacity .22s ease,transform .22s cubic-bezier(.22,.61,.36,1);
}
.sa-dialog.is-open .sa-dialog-panel{opacity:1;transform:none}
.sa-dialog-panel:focus{outline:none}
.sa-dialog-close{
  position:sticky;top:0;float:right;margin:-.5rem -.5rem 0 1rem;
  width:44px;height:44px;border:0;background:transparent;cursor:pointer;
  font-size:1.9rem;line-height:1;color:var(--sa-muted);border-radius:50%;
}
.sa-dialog-close:hover{color:var(--sa-primary);background:var(--sa-wash)}
.sa-dialog-title{margin:0 0 1rem;font-size:clamp(1.4rem,3.5vw,2rem)}
.sa-dialog-content>*:last-child{margin-bottom:0}
.sa-detail-price{font-size:1.2rem;color:var(--sa-primary)}
.sa-detail-price span{display:block;font-size:.9375rem;color:var(--sa-muted);font-weight:400}
.sa-detail-action{margin-top:1.75rem}
body.sa-dialog-open{overflow:hidden}
.sa-lightbox{margin:0}
.sa-lightbox img{display:block;width:100%;height:auto;border-radius:var(--sa-btn-radius)}
.sa-lightbox figcaption{margin-top:.75rem;color:var(--sa-muted);font-size:.9375rem}

/* Photo grids --------------------------------------------------------------- */
.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin:1.5rem 0 0}
.photo-grid-item{margin:0}
.photo-grid-btn{
  display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;
  border-radius:var(--sa-btn-radius);overflow:hidden;line-height:0;
}
.photo-grid-img{width:100%;height:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .4s cubic-bezier(.22,.61,.36,1)}
.sa-motion .photo-grid-btn:hover .photo-grid-img{transform:scale(1.06)}
.photo-grid-btn:focus-visible{outline:3px solid var(--sa-primary);outline-offset:2px}
.photo-grid-item figcaption{margin-top:.5rem;font-size:.9rem;color:var(--sa-muted)}
.photo-grid--detail{grid-template-columns:repeat(2,1fr)}
@media (max-width:720px){.photo-grid,.photo-grid--detail{grid-template-columns:repeat(2,1fr)}}
@media (max-width:420px){.photo-grid,.photo-grid--detail{grid-template-columns:1fr}}

/* Card price ---------------------------------------------------------------- */
.card-price{margin:0;font-weight:700;color:var(--sa-primary)}
.card-price-value{font-size:1.15rem}
.card-price-note{display:block;font-size:.85rem;color:var(--sa-muted);font-weight:400;margin-top:.15rem}

/* ==========================================================================
   The team
   ========================================================================== */
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.75rem;margin-top:2.5rem}
.team-card{text-align:center}
.team-photo{
  position:relative;width:100%;aspect-ratio:1;border-radius:50%;overflow:hidden;
  background:var(--sa-deep);margin:0 auto 1rem;max-width:220px;
}
.team-img{width:100%;height:100%;object-fit:cover;transition:transform .45s cubic-bezier(.22,.61,.36,1)}
.sa-motion .team-card:hover .team-img{transform:scale(1.07)}
.team-initial{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--sa-font-head);font-size:3rem;font-weight:800;color:#fff;opacity:.5;
}
.team-name{margin:0 0 .2rem;font-size:1.15rem}
.team-role{margin:0 0 .4rem;color:var(--sa-primary);font-weight:600;font-size:.9375rem}
.team-line{margin:0;color:var(--sa-muted);font-size:.9375rem}
@media (max-width:1024px){.team-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:720px){.team-grid{grid-template-columns:repeat(2,1fr);gap:1.5rem}}
@media (max-width:420px){.team-grid{grid-template-columns:1fr}.team-photo{max-width:180px}}

.section-gallery .section-text{margin-bottom:0}

/* ==========================================================================
   Assessment: listening clips, typed answers, the gated result
   ========================================================================== */
.sa-clip{
  background:var(--sa-wash);border:1px solid var(--sa-line);
  border-left:4px solid var(--sa-deep);border-radius:var(--sa-radius);
  padding:1.25rem 1.5rem;margin-bottom:1.5rem;
}
.sa-clip-kicker{
  display:block;font-size:.7rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--sa-deep);margin-bottom:.3rem;
}
.sa-clip-title{margin:0 0 .5rem;font-size:1.15rem}
.sa-clip-intro{margin:0 0 .9rem;color:var(--sa-muted);font-size:.9375rem}
.sa-clip-audio{width:100%;min-height:44px}

.sa-q-gap input[type=text]{
  max-width:22rem;font-size:1.1rem;font-family:var(--sa-font-body);
  border-width:2px;border-color:var(--sa-line);
}
.sa-q-gap input[type=text]:focus{border-color:var(--sa-primary)}
.sa-q-hint{margin:.5rem 0 0;font-size:.875rem;color:var(--sa-muted)}

/* The result before the visitor has given their details --------------------- */
.sa-result.is-locked .sa-result-summary{margin-bottom:1.75rem}
.sa-send--gate{
  margin-top:1.75rem;padding:1.5rem;border-top:0;
  background:var(--sa-deep);color:#fff;border-radius:var(--sa-radius);
}
.sa-send--gate h3{color:#fff;margin-top:0}
.sa-send--gate p{color:rgba(255,255,255,.88)}
.sa-send--gate .sa-send-note{font-size:.875rem;color:rgba(255,255,255,.7)}
.sa-send--gate label{color:#fff}
.sa-send--gate .req{color:rgba(255,255,255,.6)}
.sa-send--gate input[type=text],
.sa-send--gate input[type=email],
.sa-send--gate textarea{background:#fff;border-color:transparent;color:var(--sa-ink)}
.sa-send--gate input:focus,.sa-send--gate textarea:focus{outline:3px solid #fff;outline-offset:2px}
.sa-send--gate .btn-primary{background:var(--sa-primary);border-color:var(--sa-primary)}
.sa-send--gate .btn-primary:hover,.sa-send--gate .btn-primary:focus-visible{background:#fff;border-color:#fff;color:var(--sa-deep)}
.sa-send--gate .sa-alert{color:var(--sa-ink)}

/* ---------------------------------------------------------------------------
   Breadcrumbs
   The trail sits above the page title, inside the dark banner. It is small
   and quiet: useful to anyone who wants to go back up a level, never loud
   enough to compete with the heading.
   --------------------------------------------------------------------------- */
.sa-crumbs{margin:0 0 .75rem}
.sa-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:.1rem .5rem;font-size:.8125rem;line-height:1.4}
.sa-crumbs li{display:flex;align-items:center;gap:.5rem;color:#fff;opacity:.75}
.sa-crumbs li + li::before{content:"/";opacity:.55;speak:never}
.sa-crumbs a{color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.35)}
.sa-crumbs a:hover,.sa-crumbs a:focus-visible{border-bottom-color:#fff}
.sa-crumbs [aria-current="page"]{opacity:.9}
@media (max-width:480px){
	/* On a narrow screen the current page's own name is already the heading
	   right underneath, so it is dropped rather than wrapped onto two lines. */
	.sa-crumbs li:last-child:not(:first-child){display:none}
	.sa-crumbs li:nth-last-child(2)::after{content:"";}
}

/* ---------------------------------------------------------------------------
   Contact form: the optional questions
   Arrival date and length of stay sit side by side on a wide screen and stack
   on a narrow one. The hint under a field is for the sentence that stops a
   visitor hesitating — "an approximate date is fine".
   --------------------------------------------------------------------------- */
.contact-row{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
.contact-row .contact-field{margin-bottom:1.1rem}
@media (max-width:640px){
  .contact-row{grid-template-columns:1fr;gap:0}
}
.field-hint{
  display:block;margin-top:.35rem;font-size:.8125rem;line-height:1.45;color:var(--sa-muted);
}
.field-hint a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.15em}
.contact-form-wrap .field-hint{color:rgba(255,255,255,.85)}
.contact-form-wrap .field-hint a{color:#fff;font-weight:600}
/* Safari and iOS give a date input their own intrinsic width and line-height
   regardless of the shared rule, so both are pinned here. Without this the
   field comes out about a third of the width of the select beside it. */
.contact-field input[type=date]{width:100%;min-height:44px;line-height:1.3}
.contact-field input[type=date]::-webkit-date-and-time-value{text-align:left}

/* ---------------------------------------------------------------------------
   The weekly programme
   Tabs choose the week; inside each week the days run down the page, with the
   day's name in a narrow column beside its activities on a wide screen and
   above them on a narrow one.
   --------------------------------------------------------------------------- */
.section-week{background:var(--sa-wash)}
.week-tabs{
  display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;
  margin:0 0 2.5rem;
}
.week-tab{
  font:inherit;font-weight:600;cursor:pointer;
  padding:.6rem 1.15rem;min-height:44px;
  background:transparent;color:var(--sa-navy);
  border:2px solid var(--sa-line);border-radius:999px;
  transition:background-color .2s ease,border-color .2s ease,color .2s ease;
}
.week-tab:hover{border-color:var(--sa-primary)}
.week-tab.is-active{background:var(--sa-primary);border-color:var(--sa-primary);color:var(--sa-primary-ink)}
.week-tab:focus-visible{outline:3px solid var(--sa-primary);outline-offset:2px}
.week-panel:focus{outline:none}

.week-day{
  display:grid;grid-template-columns:9rem 1fr;gap:1.5rem;
  padding:2rem 0;border-top:1px solid var(--sa-line);
}
.week-day:first-child{border-top:0;padding-top:0}
.week-day-name{
  margin:0;font-size:1.0625rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--sa-primary);position:sticky;top:calc(var(--sa-chrome, 7.5rem) + 1rem);align-self:start;
}
.week-day-items{display:grid;gap:1.25rem}

.week-card{
  display:grid;grid-template-columns:13rem 1fr;gap:1.25rem;align-items:start;
  background:var(--sa-page);border:1px solid var(--sa-line);border-radius:var(--sa-radius);
  overflow:hidden;
}
.week-card:only-child{max-width:none}
.week-card-media{aspect-ratio:3/2;background:var(--sa-wash);overflow:hidden}
.week-card-img{width:100%;height:100%;object-fit:cover;display:block}
.week-card-body{padding:1.25rem 1.35rem 1.35rem 0}
.week-card:not(:has(.week-card-media)){grid-template-columns:1fr}
.week-card:not(:has(.week-card-media)) .week-card-body{padding-left:1.35rem}
.week-card-title{margin:0 0 .5rem;font-size:1.1875rem}
.week-card-meta{display:flex;flex-wrap:wrap;gap:.4rem;margin:0 0 .65rem}
.week-chip{
  font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:.25rem .6rem;border-radius:999px;
  background:var(--sa-wash);color:var(--sa-navy);border:1px solid var(--sa-line);
}
.week-chip--time{background:transparent}
.week-card-text{margin:0;color:var(--sa-muted)}
/* A strip of small square thumbnails, not a gallery. They are a glimpse of
   the activity; pressing one opens it full size. */
.week-card .photo-grid{
  grid-template-columns:repeat(auto-fill,minmax(4.5rem,5.5rem));
  gap:.45rem;margin-top:1rem;justify-content:start;
}
.photo-grid--tight .photo-grid-img{aspect-ratio:1}
.photo-grid--tight .photo-grid-item{border-radius:calc(var(--sa-radius) * .5);overflow:hidden}
.photo-grid--tight figcaption{display:none}

@media (max-width:860px){
  .week-day{grid-template-columns:1fr;gap:.9rem;padding:1.75rem 0}
  .week-day-name{position:static}
  .week-card{grid-template-columns:1fr}
  .week-card-body{padding:1.1rem 1.25rem 1.25rem}
  .week-card-media{aspect-ratio:16/9}
}

/* Each week prints its own heading. With JavaScript the tabs replace them. */
.week-panel-title{
  margin:0 0 1.5rem;font-size:1.35rem;letter-spacing:.06em;text-transform:uppercase;
  padding-bottom:.6rem;border-bottom:3px solid var(--sa-primary);
}
.week-panel + .week-panel{margin-top:3rem}
.section-week.is-tabbed .week-panel-title{display:none}
.section-week.is-tabbed .week-panel + .week-panel{margin-top:0}
