/* Phone composition. Wide-screen presentation remains in experience.css. */
.mobile-copy,.mobile-menu-heading,.mobile-dock,.hero-mobile-shortcuts,.hero-photo-label{display:none}
.hero-visual{display:contents}
.life-mobile-lead,.life-mobile-shortcuts{display:none}
.stage-card-link{display:contents;color:inherit;text-decoration:none}
.stage-card-link:focus-visible{outline:3px solid var(--teal);outline-offset:5px}
.stage-card:has(.stage-card-link:focus-visible){outline:3px solid var(--teal);outline-offset:5px}

@media(max-width:767px){
  :root{--header-height:68px;--mobile-dock-space:94px}
  html{scroll-padding-top:calc(84px + env(safe-area-inset-top,0px));scroll-padding-bottom:calc(var(--mobile-dock-space) + env(safe-area-inset-bottom,0px));-webkit-text-size-adjust:100%}
  body{font-size:16px;line-height:1.65}
  body.has-mobile-dock{padding-bottom:calc(var(--mobile-dock-space) + env(safe-area-inset-bottom,0px))}
  .container{width:calc(100% - 40px)}
  main,section,article,figure,.container>div{min-width:0}
  a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
  button,a,input,select,textarea{scroll-margin-block:100px}
  .desktop-copy{display:none}
  .mobile-copy{display:inline}
  .section{padding-block:44px}
  .eyebrow{font-size:10px;line-height:1.6;letter-spacing:.1em}
  .section-heading{gap:14px;margin-bottom:24px}
  .section-heading h2,.about-copy h2,.visit-intro h2,.contact-grid h2{font-size:clamp(28px,7.6vw,34px);line-height:1.16;letter-spacing:-.035em}
  .section-heading h2 br,.about-copy h2 br{display:none}
  .section-heading>p,.about-copy>p:not(.eyebrow),.visit-intro>p:not(.eyebrow){font-size:15px;line-height:1.7}
  .text-link{font-size:14px;min-height:46px}
  .button{font-size:14px;min-height:50px;border-radius:11px}

  /* One compact header; secondary destinations live in the menu. */
  .utility-bar{display:none}
  .site-header{z-index:60;padding-top:env(safe-area-inset-top,0px);background:#fff;border-bottom:1px solid #e0e7df}
  .site-header .header-inner{height:68px;gap:12px}
  .site-header .brand-logo img{width:76px;height:55px;max-height:55px;object-fit:contain}
  .site-header .header-mobile-visit{margin-left:auto;min-height:42px;padding:8px 13px;border:1px solid #c8d9ce;border-radius:10px;color:var(--ink);background:#f0f4ed;font-size:13px;font-weight:650;gap:10px}
  .header-mobile-visit .arrow{font-size:17px;line-height:1}
  .site-header .menu-toggle{width:44px;height:44px;border:0;background:transparent;border-radius:10px;padding:10px;gap:6px}
  .menu-toggle:focus-visible{outline:3px solid var(--teal);outline-offset:2px}
  body.menu-open::before{content:'';position:fixed;inset:0;z-index:55;background:#193e4966}
  .site-header #main-menu{position:fixed;top:calc(var(--mobile-menu-top,68px) + 10px);left:12px;right:12px;bottom:auto;max-height:calc(100dvh - var(--mobile-menu-top,68px) - 24px - env(safe-area-inset-bottom,0px));padding:22px 22px 24px;overflow-y:auto;overscroll-behavior:contain;background:#fff;border:1px solid #d9e2d8;border-radius:18px;box-shadow:0 12px 38px #102d3826;gap:0}
  .mobile-menu-heading{display:grid;gap:4px;padding-bottom:18px;border-bottom:1px solid #dce5dc}
  .mobile-menu-heading strong{font-size:20px;line-height:1.35;font-weight:600;letter-spacing:-.025em}
  .mobile-menu-heading span{font-size:13px;color:#536970;line-height:1.6}
  .site-header #main-menu>a:not(.button){display:flex;justify-content:space-between;min-height:49px;font-size:16px;padding:10px 0;border-bottom:1px solid #e6ebe3;white-space:normal}
  .site-header #main-menu>a:not(.button)::after{content:'↗';font-size:18px;color:#66857a}
  .site-header #main-menu>.button{min-height:50px;margin:18px 0 0;font-size:14px;justify-content:space-between;padding:13px 18px}
  .mobile-menu-family{margin-top:22px;padding-top:18px}
  .mobile-menu-family a{min-height:46px;padding:10px 0;font-size:14px;line-height:1.45}

  /* Copy and actions come first, followed by the real school photograph. */
  body[data-page=home]{background:var(--paper)}
  .hero{padding-top:0;background:var(--paper)}
  .hero-frame{display:flex;flex-direction:column;margin:0;min-height:0;overflow:visible;border-radius:0;background:transparent}
  .hero .hero-content{width:calc(100% - 40px);padding:25px 0 23px}
  .hero .eyebrow{color:var(--teal);font-size:11px;letter-spacing:.075em;max-width:none;text-transform:none;font-weight:600}
  .hero h1{font-size:clamp(31px,8.4vw,45px);line-height:1.1;letter-spacing:-.045em;font-weight:550;color:var(--ink);max-width:530px;margin:13px 0 17px;text-wrap:pretty}
  .hero-highlight{color:var(--teal)}
  .hero-highlight:after{height:2px;bottom:-3px;background:var(--accent);opacity:1}
  .hero .hero-subtitle{color:#4b6263;font-size:15px;line-height:1.6;max-width:390px}
  .hero .hero-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:21px;max-width:440px;align-items:stretch}
  .hero .hero-actions .button{width:100%;min-height:50px;padding:12px 9px;font-size:13px;line-height:1.4;justify-content:center;gap:0}
  .hero-actions .button-accent{background:var(--ink);border-color:var(--ink);color:#fff}
  .hero-actions .button-hero-outline{color:var(--ink);border-color:#b2c5bb;background:transparent}
  .hero-actions .button-hero-outline:hover{background:#e8eee5}
  .hero .hero-actions .arrow{display:none}
  .hero-visual{display:block;position:relative;width:calc(100% - 40px);margin:0 auto}
  .hero .hero-media.has-photo{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:1.8;border-radius:16px;overflow:hidden}
  .hero-media.has-photo>img{object-fit:cover;object-position:50% 43%}
  .hero-photo-label{display:block;position:absolute;left:12px;bottom:12px;right:auto;max-width:calc(100% - 24px);padding:6px 10px;background:#fffffff5;border:1px solid #ffffff80;border-radius:7px;font-size:10px;font-weight:550;line-height:1.5;color:var(--ink)}
  .hero .hero-shade,.hero-footnote{display:none}
  .hero-mobile-shortcuts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:13px 0 22px}
  .hero-mobile-shortcuts a{display:flex;align-items:center;justify-content:center;gap:5px;min-height:45px;border:1px solid #d7e0d3;border-radius:9px;background:#fff;font-size:11px;line-height:1.3;font-weight:600;text-align:center;padding:9px 4px}
  .hero-mobile-shortcuts a>span{font-size:14px;color:var(--teal)}

  /* Every teaching stage remains visible as an easy-to-tap row. */
  .stages-section{padding-top:27px;background:#fff}
  .stage-cards{grid-template-columns:minmax(0,1fr);gap:12px}
  .stage-card{display:block;border-radius:14px;overflow:hidden;min-width:0;border:1px solid #dce4d8}
  .stage-card-link{display:grid;grid-template-columns:88px minmax(0,1fr);height:100%}
  .stage-card-photo{aspect-ratio:auto;height:100%;min-height:0;border-radius:0}
  .stage-card-photo>img{object-fit:cover}
  .stage-card-body{padding:16px;display:block;min-width:0}
  .stage-range{font-size:11px;line-height:1.4;margin-bottom:6px}
  .stage-card h3{font-size:21px;line-height:1.12;letter-spacing:-.03em;max-width:none}
  .stage-title-prefix{display:none}
  .stage-card p{font-size:13px;line-height:1.5;margin:8px 0 0}
  .stage-card .text-link{display:flex;align-items:center;justify-content:space-between;min-height:0;font-size:12px;font-weight:600;line-height:1.5;margin-top:10px;padding:0;border:0}
  .stage-card .arrow{font-size:18px}
  .stage-values-link{font-size:13px;line-height:1.5;margin-top:18px}
  .home-about{background:var(--paper)}
  .home-about .about-grid{display:flex;flex-direction:column;gap:22px;align-items:stretch}
  .home-about .about-copy{order:-1}
  .home-about .about-photo{aspect-ratio:1.6;border-radius:15px}
  .home-about .about-copy h2{margin:12px 0 17px}
  .home-about .about-actions{margin-top:13px;gap:0}
  .presentation-section{padding-top:0;background:var(--paper)}
  .presentation-layout{display:flex;flex-direction:column;align-items:stretch;gap:20px}
  .presentation-copy h2{font-size:29px;line-height:1.16;margin:12px 0 16px}
  .presentation-copy>p:not(.eyebrow){font-size:15px;line-height:1.7}
  .presentation-player .video-stage{width:100%;aspect-ratio:16/9;border-radius:14px}
  .presentation-player .video-play{gap:10px}
  .presentation-player .play-circle{width:54px;height:54px;font-size:22px}
  .presentation-player .video-play>span:not(.play-circle){font-size:13px}
  .presentation-player .video-play>small{font-size:10px}

  .welcome-photos .gallery-track,.history-photos .gallery-track{grid-auto-columns:86%;gap:12px;margin:0;padding:2px 0 12px}
  .welcome-photos .gallery-photo{aspect-ratio:4/5;max-height:62dvh}
  .welcome-photos .gallery-photo>img,.history-photos .gallery-photo>img{object-fit:contain;background:#f4f2eb}
  .gallery-carousel-bar{gap:10px;margin-bottom:16px}
  .gallery-carousel-bar>p{font-size:12px}
  .gallery-carousel-bar .gallery-controls{gap:5px}
  .gallery-carousel-bar .gallery-controls button{width:44px;height:44px}
  .gallery-counter{min-width:58px;font-size:12px}
  .gallery[data-auto-carousel] .gallery-carousel-bar>p{display:none}
  .gallery[data-auto-carousel] .gallery-carousel-bar .gallery-controls{width:100%;justify-content:space-between}
  .gallery-track{max-width:100%;margin-right:0;overscroll-behavior-x:contain}
  .welcome-photos .gallery-item figcaption,.history-photos .gallery-item figcaption{font-size:13px;line-height:1.6;padding:13px 15px}
  .spaces-preview{grid-auto-columns:88%;gap:12px}
  .space-card{border-radius:14px}
  .space-copy{padding:19px}
  .space-copy h3{font-size:23px}
  .space-copy>p:not(.eyebrow){font-size:14px;line-height:1.7}
  .differential-grid article{padding:19px 0}
  .differential-grid h3{font-size:24px;margin:9px 0}
  .differential-grid p{font-size:15px;line-height:1.7}
  .school-testimonials-grid{gap:24px}
  .school-testimonials-grid h2{font-size:31px;margin:13px 0 17px}
  .school-testimonials-grid>div>p:not(.eyebrow){font-size:15px;line-height:1.7}
  .testimonial-video-carousel{width:100%;max-width:320px}
  .testimonial-video-carousel .school-video-frame{max-height:62dvh}
  .school-video-copy{padding:19px}
  .school-video-copy h3{font-size:24px}
  .school-video-grid{max-width:350px}
  .school-video-frame{max-height:72dvh}
  .school-video-feature .school-video-frame{max-height:72dvh}
  .family-question summary{min-height:64px;font-size:15px;line-height:1.55;gap:16px}
  .family-question p{font-size:15px;line-height:1.7}
  .questions-grid{gap:23px}

  /* Page interiors use the same scale and keep local navigation contained. */
  .life-intro{padding:26px 0 28px;background:#edf6fa;border-bottom:1px solid #d9e9ef}
  .life-intro .breadcrumb,.life-intro-copy,.life-intro .life-quick-links{display:none}
  .life-intro>.container>.eyebrow{font-size:10px;letter-spacing:.11em;color:#266780;font-weight:650}
  .life-intro h1{font-size:clamp(28px,7.5vw,35px);line-height:1.12;letter-spacing:-.035em;font-weight:600;color:var(--ink);max-width:400px;margin:12px 0}
  .life-mobile-lead{display:block;font-size:15px;line-height:1.6;color:#44636b;max-width:330px}
  .life-mobile-shortcuts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:23px}
  .life-mobile-shortcuts a{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:9px;min-height:86px;padding:14px 5px;border:1px solid #193e4910;border-radius:15px;color:var(--ink);font-size:14px;font-weight:600;line-height:1.4;text-align:center}
  .life-mobile-shortcuts svg{width:25px;height:25px;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
  .life-shortcut-photos{background:#ffe3a0}
  .life-shortcut-videos{background:#bbdfef}
  .life-shortcut-activities{background:#f8d0c5}
  .life-mobile-shortcuts a:focus-visible{outline:3px solid var(--teal);outline-offset:3px}
  .stage-hero,.directory-hero,.school-story,.admissions-hero,.pedagogy-hero{padding-top:20px;padding-bottom:30px}
  .breadcrumb,.directory-hero .breadcrumb,.school-story .breadcrumb{font-size:11px;line-height:1.5;gap:6px;margin-bottom:20px}
  .stage-hero-grid,.admissions-hero-grid{grid-template-columns:minmax(0,1fr);gap:24px}
  .stage-hero h1,.directory-hero h1,.school-story h1,.admissions-hero h1,.pedagogy-hero h1{font-size:clamp(32px,8.8vw,41px);line-height:1.12;letter-spacing:-.04em;margin:12px 0 18px}
  .stage-headline{font-size:16px;line-height:1.6;margin:16px 0 21px;max-width:none}
  .stage-hero-photo{height:auto;aspect-ratio:1.65;border-radius:15px}
  .stage-local-nav>.container{width:100%;padding-inline:20px;gap:22px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}
  .stage-local-nav a{flex-shrink:0;min-height:52px;font-size:12px}
  .stage-text-grid,.info-grid{grid-template-columns:minmax(0,1fr);gap:24px}
  .stage-text-grid h2,.info-grid h2,.differential-group-heading h2,.school-story-grid h2,.stage-welcome-grid h2{font-size:29px;line-height:1.18}
  .stage-text-grid p.lead,.school-story-grid p.lead{font-size:17px;line-height:1.7}
  .stage-text-grid p,.info-grid p,.school-story-grid p:not(.eyebrow),.directory-hero>.container>p:not(.eyebrow){font-size:15px;line-height:1.75}
  .differential-detail{padding:22px;border-radius:14px}
  .differential-detail h3{font-size:25px;margin:13px 0 16px}
  .differential-detail>p:not(.eyebrow){font-size:15px;line-height:1.7}
  .directory-visit h2,.stage-visit h2{font-size:31px}
  .admissions-preview-inner{padding:24px 20px;border-radius:15px}
  .admissions-preview h2{font-size:28px}
  .admissions-preview-actions .button{font-size:13px}
  .admissions-hero-grid{margin-top:22px}
  .admissions-hero-photo{aspect-ratio:1.5}
  .admissions-facts{gap:14px}

  /* Comfortable forms and files, including when the keyboard is open. */
  .visit-grid{grid-template-columns:minmax(0,1fr);gap:24px}
  .visit-form{padding:24px 20px;border-radius:15px}
  .visit-form h3{font-size:26px;line-height:1.2}
  .form-row{grid-template-columns:minmax(0,1fr);gap:0}
  .field label{font-size:13px;line-height:1.6}
  .field input,.field select,.field textarea{font-size:16px;min-height:52px;border-radius:9px;max-width:100%}
  .field textarea{min-height:100px}
  .form-submit{font-size:13px;gap:10px;white-space:normal}
  .form-note,.form-privacy{font-size:12px;line-height:1.7}
  .portal-page-head{padding:27px 0;background:var(--paper)}
  .portal-page-head h1{font-size:32px;line-height:1.15;letter-spacing:-.035em;margin:12px 0 16px}
  .portal-page-head .container>p:not(.eyebrow){font-size:15px;line-height:1.7}
  .portal-section{padding-top:28px;padding-bottom:44px}
  .consult-layout{display:flex;flex-direction:column;gap:30px}
  .consult-layout>.visit-form{order:-1;max-width:none;padding:24px 20px}
  .consult-layout>aside{position:static;padding:0}
  .consult-layout>aside h2{font-size:28px}
  .calendar-layout{grid-template-columns:minmax(0,1fr);gap:30px}
  .calendar{padding:15px;border-radius:15px}
  .calendar-heading h2{font-size:22px;line-height:1.25}
  .calendar-heading>button{width:44px;height:44px}
  .calendar-grid,.calendar-week{gap:3px}
  .calendar-day{aspect-ratio:auto;height:44px;min-height:44px;font-size:12px;padding:5px}
  .calendar-list-actions{gap:0 16px}
  .calendar-list-actions button{font-size:12px}
  .album-filters{grid-template-columns:minmax(0,1fr);padding:20px;gap:16px}
  .family-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .family-photo-grid figcaption{padding:10px;gap:4px;flex-direction:column;align-items:stretch}
  .family-photo-grid figcaption>a,.family-photo-grid figcaption label{font-size:12px;min-height:44px}
  .photo-actions .button,.quote-actions .button{white-space:normal;font-size:13px}
  .lightbox{max-height:calc(100dvh - 20px);width:calc(100vw - 20px);padding:54px 12px 18px}
  .lightbox>img{max-height:calc(100dvh - 240px)}
  .lightbox-close{right:10px;top:10px}
  .lightbox-actions{gap:10px;flex-wrap:wrap}
  .lightbox-actions button{width:44px;height:44px}
  .lightbox-actions .button{min-height:44px;font-size:12px}
  .contact-grid{grid-template-columns:minmax(0,1fr);gap:28px}
  .footer-top{gap:25px}
  .site-footer{padding-top:32px;padding-bottom:25px}
  .footer-bottom>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 16px}
  .footer-bottom>div>a{font-size:12px;min-height:44px;line-height:1.5}
  .footer-location{font-size:13px}

  /* The WhatsApp shortcut is part of this single bottom navigation. */
  .has-mobile-dock .floating-whatsapp{display:none}
  .mobile-dock{position:fixed;z-index:50;left:14px;right:14px;bottom:calc(10px + env(safe-area-inset-bottom,0px));display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;min-height:68px;padding:6px;background:#fff;border:1px solid #d7e0d3;border-radius:19px;box-shadow:0 4px 24px #193e491c}
  .mobile-dock>a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:54px;padding:6px 2px;border-radius:12px;font-size:10px;line-height:1.4;font-weight:600;color:#4c666a}
  .mobile-dock svg{width:21px;height:21px;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
  .mobile-dock a[aria-current]{color:var(--ink);background:var(--mist)}
  .mobile-dock .mobile-dock-visit{color:var(--ink);background:var(--accent)}
  .mobile-dock .mobile-dock-whatsapp{color:#21644b}
  body.menu-open .mobile-dock,body.mobile-keyboard-open .mobile-dock,body:has(dialog[open]) .mobile-dock{visibility:hidden;pointer-events:none}
}

@media(max-width:359px){
  .container,.hero .hero-content,.hero-visual{width:calc(100% - 32px)}
  .hero h1{font-size:30px}
  .hero .hero-actions{gap:8px}
  .hero .hero-actions .button{font-size:12px;padding-inline:7px}
  .hero-mobile-shortcuts a{font-size:10px;gap:3px}
  .hero-photo-label{font-size:9px;padding:5px 8px}
  .stage-card-link{grid-template-columns:76px minmax(0,1fr)}
  .stage-card-body{padding:14px}
  .stage-card h3{font-size:20px}
  .gallery-carousel-bar{align-items:flex-start;flex-direction:column}
  .gallery-carousel-bar .gallery-controls{width:100%;justify-content:space-between}
}

@media(prefers-reduced-motion:reduce){
  .mobile-dock,.site-header #main-menu{scroll-behavior:auto;transition:none}
}
