/* MGMT SCHOOL: one fluid layout. Surface colours and motion live in style.css.
   Breakpoints reflect available space: navigation, split content, compact UI. */
:root{
  --gutter:clamp(1rem,3.5vw,4rem);
  --content-width:80rem;
  --hero-width:100rem;
  --section-space:clamp(3.5rem,6vw,6.5rem);
  --layout-gap:clamp(1.5rem,3.5vw,4rem);
  --header-height:5.5rem;
  --dialog-gap:clamp(.5rem,1.5vw,1.5rem);
}
html{scroll-padding-top:calc(var(--header-height) + 1rem);scrollbar-gutter:stable}
body{min-width:0;overflow-x:visible}
.page{overflow:hidden;overflow:clip;width:100%;min-width:0}
img,svg{max-width:100%}
button,input,textarea{font:inherit}
button,a,input,textarea{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--blue2);outline-offset:4px}
[inert]{pointer-events:none}
.wrap,.ticker-meta,.ticker-note{
  width:min(var(--content-width),calc(100% - 2 * var(--gutter)));
  max-width:none;margin-inline:auto;min-width:0;
}
main>section{padding:var(--section-space) 0}
#story,#services,#reviews,#contact{scroll-margin-top:0}
h1,h2,h3,p{overflow-wrap:break-word}
h2{font-size:clamp(2rem,1.15rem + 3vw,4rem);line-height:1.04;max-width:20ch}
.kicker,.contact-section-kicker{font-size:clamp(.75rem,.65rem + .4vw,1rem)}
.section-head{gap:var(--layout-gap);margin-bottom:clamp(1.5rem,3vw,2.5rem);align-items:end}
.section-head>div{min-width:0;flex:1.2}
.section-copy{flex:.8;min-width:0;max-width:40ch;font-size:1rem}
.btn{min-height:2.75rem;max-width:100%;justify-content:center;text-align:center;flex-wrap:wrap}

/* Navigation remains the same row on large screens, with a real menu below. */
.nav-shell{
  inset:0 0 auto;left:0;top:0;transform:none;
  width:100%;z-index:1000;
  padding-top:env(safe-area-inset-top,0px);
}
.nav-shell nav{
  width:min(112rem,100%);margin:auto;min-height:5rem;
  display:flex;align-items:center;justify-content:space-between;
  gap:clamp(.75rem,1.5vw,1.5rem);
  padding:.75rem max(var(--gutter),env(safe-area-inset-right,0px)) .75rem max(var(--gutter),env(safe-area-inset-left,0px));
}
.nav-shell .brand{flex:none;white-space:nowrap;font-size:clamp(.75rem,.6rem + .3vw,1rem);min-height:2.75rem}
.brand-mark{flex:none}
.navlinks{display:flex;flex-wrap:nowrap;gap:clamp(.25rem,.5vw,.75rem);min-width:0}
.nav-shell .navlink{min-width:0;min-height:2.75rem;padding-inline:clamp(.65rem,1.1vw,1.25rem);white-space:nowrap;font-size:.8125rem}
.nav-actions{flex:none;gap:.625rem}
.theme-toggle,.nav-menu-toggle{width:2.75rem;height:2.75rem;flex:none}
.nav-cta{display:inline-flex;align-items:center;min-height:2.75rem;white-space:nowrap;padding:.75rem 1rem}
.nav-menu-toggle{
  display:none;position:relative;border:1px solid var(--line);border-radius:.75rem;
  background:var(--panel);color:var(--text);
}
.nav-menu-toggle span{position:absolute;left:.75rem;right:.75rem;height:2px;border-radius:2px;background:currentColor;top:1rem;transition:transform .2s ease}
.nav-menu-toggle span+span{top:1.625rem}
.nav-open .nav-menu-toggle span{transform:translateY(.3125rem) rotate(45deg)}
.nav-open .nav-menu-toggle span+span{transform:translateY(-.3125rem) rotate(-45deg)}

/* Original people illustration and its SVG share one bounded aspect ratio. */
main>.hero{
  display:flex;align-items:center;position:relative;
  min-height:clamp(36rem,92svh,60rem);height:auto;
  padding:calc(var(--header-height) + clamp(2rem,4vw,4rem)) 0 clamp(2.5rem,5vw,5rem);
  overflow:hidden;
}
.hero .wrap.hero-grid{
  display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);
  width:min(var(--hero-width),calc(100% - 2 * var(--gutter)));
  flex:0 1 auto;margin:0 auto;
  min-height:0;height:auto;gap:var(--layout-gap);padding:0;align-items:center;transform:none;
}
.hero .hero-copy{width:100%;max-width:100%;padding:0;min-width:0;grid-column:auto}
.hero h1{
  font-size:clamp(2.25rem,1rem + 4vw,6.5rem);line-height:.96;
  max-width:100%;margin:0 0 1.25rem;letter-spacing:-.065em;
}
.hero h1 .accent{display:block;max-width:100%}
.hero .hero-subtitle{font-size:clamp(1.1875rem,.85rem + 1.1vw,1.875rem);max-width:30ch;line-height:1.22;margin:0}
.hero .lead{font-size:clamp(1rem,.85rem + .3vw,1.1875rem);max-width:45ch;margin:0;line-height:1.65}
.hero .hero-wire{width:calc(100% - 4px);max-width:32rem;height:1px;margin:clamp(1.25rem,2.5vw,2rem) 0;transform-origin:left center}
.hero-wire span{width:100%}
.hero .visual{
  position:relative;inset:auto;grid-column:auto;
  width:114%;max-width:none;height:auto;min-height:0;aspect-ratio:980/660;
  margin:0 0 0 -14%;padding:0;justify-self:stretch;align-self:center;pointer-events:none;
}
.hero .scene.team-art-scene{
  position:absolute;inset:0;width:100%;height:100%;min-height:0;max-width:none;
  margin:0;transform:none;overflow:visible;
}
.hero .team-art{position:absolute;inset:50% 0 auto;width:100%;height:auto;max-width:none;transform:translateY(-50%)}
.hero .team-motion-layer{inset:0;width:100%;height:100%;max-width:none;overflow:visible}
.hero .scene:before,.hero .scene:after{animation:none;filter:none}
.hero:after{left:var(--gutter);right:var(--gutter)}
.back-to-top{width:2.75rem;height:2.75rem;right:max(1rem,env(safe-area-inset-right,0px));bottom:max(1rem,env(safe-area-inset-bottom,0px))}

.story-wrap{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:var(--layout-gap)}
.story-wrap .sticky{top:calc(var(--header-height) + 2rem);padding-right:0;min-width:0}
.sticky p{max-width:45ch;font-size:clamp(1rem,.9rem + .2vw,1.125rem)}
.story{min-width:0;padding:clamp(.625rem,1.5vw,1.125rem);border-radius:clamp(1.25rem,3vw,2.25rem)}
.story .step{min-height:clamp(21rem,28vw,27.5rem);padding:clamp(1.25rem,3vw,2.25rem);gap:2.5rem}
.step-label{font-size:clamp(.6875rem,.6rem + .35vw,.9375rem);line-height:1.5;position:relative;z-index:2;max-width:100%}
.step h3{font-size:clamp(1.75rem,1.25rem + 1.8vw,2.75rem);line-height:1.08;max-width:18ch}
.step p{font-size:clamp(.9375rem,.85rem + .3vw,1.125rem);line-height:1.65;margin-bottom:0}
.lineart{width:clamp(10rem,25vw,18rem);height:auto;max-width:80%;pointer-events:none}

.cards.teachers-compact-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:clamp(1rem,2vw,1.5rem)}
.teachers-compact-grid .teacher-compact-card{min-width:0;min-height:25rem;padding:clamp(1.25rem,2vw,1.75rem)}
.teacher-compact-card .num{max-width:65%;font-size:.6875rem;line-height:1.5;min-height:2.0625rem}
.teacher-compact-card h3{max-width:64%;margin:2.5rem 0 1rem;font-size:clamp(1.5rem,1.1rem + .8vw,1.875rem);line-height:1.1}
.teacher-compact-card p{max-width:60%;font-size:.875rem;margin-bottom:3rem}
.teacher-compact-more{left:clamp(1.25rem,2vw,1.75rem);bottom:1.5rem;max-width:65%}

.ticker-section{padding:clamp(2.5rem,4vw,4rem) 0;overflow:hidden}
.ticker-word{font-size:clamp(4rem,13vw,13.125rem);line-height:1;letter-spacing:-.065em}
.ticker-viewport{padding-block:.4em;overflow:hidden}
.ticker-row+.ticker-row{margin-top:clamp(.75rem,2vw,1.75rem)}
.ticker-dot{width:clamp(1rem,3vw,3rem);height:clamp(1rem,3vw,3rem);margin-inline:clamp(.75rem,2vw,3rem)}
.ticker-meta{flex-wrap:wrap;font-size:.6875rem;letter-spacing:.1em;gap:.75rem 2rem}
.ticker-note p{max-width:45ch;font-size:.9375rem}

.reviews-section{padding-block:var(--section-space)}
.reviews-preview{
  grid-template-columns:repeat(auto-fit,minmax(min(100%,25rem),1fr));
  min-height:0;gap:var(--layout-gap);padding:clamp(1.25rem,4vw,3.5rem);border-radius:clamp(1.5rem,3vw,2.125rem);
}
.reviews-copy{max-width:32rem;min-width:0}
.reviews-copy h2{font-size:clamp(2rem,1.15rem + 3vw,4rem)}
.reviews-open-btn{gap:.5rem 1rem}
.reviews-stack{width:100%;max-width:42rem;height:21rem;margin:auto;min-width:0}
.review-peek{width:min(22rem,72%);padding:clamp(1rem,2vw,1.5rem);min-height:0}
.review-peek:nth-child(1){left:0;top:5rem}
.review-peek:nth-child(2){right:0;top:.5rem}
.review-peek:nth-child(3){left:20%;top:3rem}
.review-peek p{font-size:clamp(.875rem,.75rem + .3vw,1.125rem)}
.review-peek footer{padding:1rem 0 0}

.contact-cta-box{padding:clamp(1.5rem,4.5vw,4.5rem)}
.contact-section-layout{grid-template-columns:repeat(auto-fit,minmax(min(100%,25rem),1fr));gap:var(--layout-gap)}
.contact-section-copy{min-width:0;max-width:40rem}
.contact-section-copy p{font-size:1rem;max-width:52ch}
.contact-direct-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));min-width:0}
.contact-direct-item{min-height:7rem;padding:1.125rem;gap:1rem;min-width:0}
.foot{max-width:var(--content-width);font-size:.8125rem;line-height:1.6}

/* Every modal has one scrollable content area and reachable close control. */
.teacher-overlay,.program-overlay,.reviews-overlay{
  padding:max(var(--dialog-gap),env(safe-area-inset-top,0px)) max(var(--dialog-gap),env(safe-area-inset-right,0px)) max(var(--dialog-gap),env(safe-area-inset-bottom,0px)) max(var(--dialog-gap),env(safe-area-inset-left,0px));
  overscroll-behavior:contain;
}
.teacher-dialog,.program-dialog,.reviews-board{
  width:100%;min-width:0;
  max-width:88.75rem;
  height:min(56.25rem,calc(100vh - 2 * var(--dialog-gap) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)));
  height:min(56.25rem,calc(100dvh - 2 * var(--dialog-gap) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)));
  border-radius:clamp(1rem,2.5vw,2.25rem);
}
.program-dialog{max-width:77.5rem}
.reviews-board{max-width:93.75rem}
.teacher-dialog-body,.program-dialog-body,.reviews-board-scroll{min-height:0;min-width:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.teacher-close,.program-close,.reviews-close{width:2.75rem;height:2.75rem;flex:none}
.teacher-close,.program-close{top:clamp(.75rem,1.5vw,1.125rem);right:clamp(.75rem,1.5vw,1.125rem)}
.teacher-panel{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr)}
.teacher-panel-media{padding:clamp(1.25rem,2.5vw,2rem);min-width:0}
.teacher-panel-photo{min-height:0;height:clamp(16rem,34vw,28rem)}
.teacher-panel-photo img{max-width:100%;max-height:100%;min-height:0}
.teacher-panel-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.teacher-panel-stat{padding:1rem .75rem;min-height:0;min-width:0}
.teacher-panel-stat span{overflow-wrap:anywhere}
.teacher-panel-stat strong{font-size:clamp(1.25rem,2.5vw,1.75rem);overflow-wrap:anywhere}
.teacher-panel-copy{min-width:0;padding:clamp(1.25rem,3vw,3rem)}
.teacher-panel-kicker{padding-right:3rem;line-height:1.5}
.teacher-panel-copy h2{font-size:clamp(2rem,1rem + 3vw,4rem);line-height:1.05;max-width:100%}
.teacher-panel-lead{font-size:clamp(1rem,.9rem + .2vw,1.125rem);max-width:65ch}
.teacher-panel-chips{gap:.5rem}
.teacher-panel-chips span{padding:.5rem .75rem;line-height:1.4;max-width:100%}
.program-panel{padding:clamp(1.25rem,4vw,4rem)}
.program-panel-head{padding-right:0;max-width:58rem}
.program-panel-kicker{padding-right:3rem;line-height:1.5}
.program-panel h2{font-size:clamp(2rem,1rem + 3.4vw,4.5rem);line-height:1.06;max-width:22ch}
.program-panel-lead{font-size:clamp(1rem,.9rem + .2vw,1.125rem);max-width:70ch}
.program-detail-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1rem;margin-top:2rem}
.program-detail{padding:clamp(1.125rem,2.5vw,1.5rem);min-width:0}
.program-meta span{max-width:100%;padding:.5rem .875rem;line-height:1.4}
.reviews-board-head{padding:clamp(1.25rem,2.5vw,2rem);gap:1rem;align-items:start}
.reviews-board-title{min-width:0}
.reviews-board-title h2{font-size:clamp(1.75rem,1rem + 2vw,3.625rem);line-height:1.1}
.reviews-board-title p{max-width:70ch;line-height:1.5}
.reviews-board-scroll{padding:clamp(.75rem,2vw,1.75rem)}
.reviews-masonry{columns:18rem 3;column-gap:1rem}
.review-card{padding:clamp(1rem,2vw,1.5625rem)}
.review-card-top,.review-person,.review-who{min-width:0}
.review-who strong,.review-who span{overflow-wrap:anywhere}
.review-index{flex:none}

.contact-overlay{
  z-index:5000;display:block;width:100%;max-width:none;min-width:0;
  height:100vh;height:100dvh;height:min(100dvh,var(--visual-viewport-height,100dvh));
  padding:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;
  border-radius:0;-webkit-overflow-scrolling:touch;
}
.contact-overlay.is-open{transition:transform .45s cubic-bezier(.76,0,.24,1),visibility 0s}
.contact-overlay.is-closing{transition:transform .45s cubic-bezier(.76,0,.24,1),visibility 0s}
.contact-top{
  position:sticky;top:0;min-height:4.5rem;height:auto;
  padding:calc(.75rem + env(safe-area-inset-top,0px)) max(var(--gutter),env(safe-area-inset-right,0px)) .75rem max(var(--gutter),env(safe-area-inset-left,0px));
}
.contact-close{width:2.75rem;height:2.75rem;flex:none}
.contact-close:before,.contact-close:after{left:13px;right:13px;top:21px}
.contact-shell{
  display:flex;align-items:center;min-width:0;max-width:none;
  width:min(93.75rem,calc(100% - 2 * var(--gutter)));margin:0 auto;
  min-height:calc(100svh - 4.5rem);
  padding:clamp(1.5rem,3vw,3.5rem) 0 max(2rem,env(safe-area-inset-bottom,0px));
}
.contact-intro{
  position:relative;top:auto;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,28rem),1fr));
  gap:var(--layout-gap);align-items:start;width:100%;min-width:0;
}
.contact-intro>div{min-width:0}
.contact-title{max-width:13ch;margin:0;font-size:clamp(2.5rem,1.25rem + 3.5vw,5.125rem);line-height:1;letter-spacing:-.06em}
.contact-kicker{margin-bottom:1rem}
.contact-sub{font-size:1rem;line-height:1.65;margin-top:1.25rem;max-width:48ch}
.contact-shimmer-graphic{width:min(100%,35rem);max-width:100%;height:clamp(8rem,14vw,13rem);margin:1rem 0 0;overflow:hidden}
.contact-form{width:100%;min-width:0;gap:clamp(1.25rem,2vw,2rem)}
.contact-step{min-width:0;width:100%}
.contact-label{font-size:.75rem;letter-spacing:.06em;line-height:1.5;margin-bottom:.75rem;gap:.625rem;align-items:start}
.contact-label b{width:1.75rem;height:1.75rem;flex:none;font-size:.6875rem}
.contact-options{gap:.5rem;min-width:0}
.contact-option{position:relative;max-width:100%;min-width:0}
.contact-option span{min-height:2.75rem;max-width:100%;padding:.625rem .875rem;font-size:.8125rem;line-height:1.4;white-space:normal}
.contact-option input:focus-visible+span{outline:3px solid var(--blue2);outline-offset:3px}
.contact-grid2{grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:1rem}
.contact-field{min-width:0;width:100%;font-size:1rem;line-height:1.5;padding:.75rem 0;scroll-margin-block:6rem}
.contact-field:focus-visible{outline-offset:3px}
textarea.contact-field{min-height:7rem;height:auto;resize:vertical}
.contact-submit{min-height:2.75rem;max-width:100%;padding:.875rem 1.5rem;margin-top:0;font-size:1rem}
.contact-note{margin-top:.75rem;max-width:60ch;font-size:.75rem;line-height:1.6}

@media(max-width:72rem){
  .nav-shell .nav-menu-toggle{display:block}
  .nav-shell .navlinks{
    position:absolute;top:100%;left:var(--gutter);right:var(--gutter);
    display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr));
    gap:.5rem;padding:1rem;border:1px solid var(--line);border-radius:1.125rem;
    background:var(--bg);box-shadow:var(--shadow);
    visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-.5rem);
    transition:opacity .2s ease,transform .2s ease,visibility .2s;
    max-height:calc(100vh - var(--header-height) - 1rem);max-height:calc(100dvh - var(--header-height) - 1rem);overflow:auto;
  }
  .nav-open .nav-shell .navlinks{visibility:visible;opacity:1;pointer-events:auto;transform:none}
}
@media(max-width:60rem){
  .hero .wrap.hero-grid{grid-template-columns:minmax(0,1fr);gap:1rem}
  main>.hero{min-height:0;padding-top:calc(var(--header-height) + 2rem)}
  .hero .hero-copy{max-width:44rem;margin:auto}
  .hero .hero-subtitle{max-width:34ch}
  .hero .visual{width:min(100%,46rem);max-width:100%;margin:0 auto;justify-self:center}
  .story-wrap{grid-template-columns:minmax(0,1fr)}
  .story-wrap .sticky{position:relative;top:auto;max-width:44rem}
  .sticky h2{max-width:23ch}
  .sticky p{max-width:58ch}
  .section-head{flex-direction:column;align-items:start}
  .section-copy{max-width:58ch;margin-bottom:0}
  .teacher-panel{grid-template-columns:minmax(0,1fr)}
  .teacher-panel-media{border-right:0;border-bottom:1px solid var(--line)}
  .teacher-panel-photo{height:18rem;max-width:28rem;margin:auto}
  .teacher-panel-stats{max-width:36rem;margin-inline:auto}
  .teacher-panel-copy{padding-top:1.5rem}
  .fx-on-heroExit .hero.fx-exiting .hero-copy{opacity:1;transform:none}
  .ticker-word.outline{color:color-mix(in srgb,var(--text) 24%,transparent);-webkit-text-fill-color:currentColor;-webkit-text-stroke:0}
  .ticker-row.second .ticker-word.outline{color:color-mix(in srgb,var(--blue) 32%,transparent);-webkit-text-fill-color:currentColor;-webkit-text-stroke:0}
}
@media(max-width:40rem){
  .nav-shell nav{min-height:4.5rem;gap:.5rem}
  .nav-shell .nav-cta{display:none}
  .brand{gap:.5rem}
  .nav-actions{gap:.5rem}
  .hero .visual{width:100%}
  .tm-flow-signal-secondary{display:none}
  .hero .hero-wire{margin-block:1.25rem}
  .hero .lead{max-width:38ch}
  .reviews-stack{height:20rem}
  .review-peek{width:82%}
  .review-peek:nth-child(1){top:5rem;left:0}
  .review-peek:nth-child(2){top:.5rem;right:0}
  .review-peek:nth-child(3){top:3rem;left:9%}
  .reviews-open-btn,.contact-form-open{width:100%}
  .reviews-board-title p{display:none}
  .reviews-board-head .kicker{font-size:.6875rem}
  .review-card-top{flex-wrap:wrap;gap:.75rem}
  .teacher-panel-stats{grid-template-columns:1fr}
  .teacher-panel-stat{display:flex;align-items:baseline;gap:.75rem;padding:.75rem 1rem}
  .teacher-panel-stat span{margin:0}
  .contact-title{max-width:14ch}
  .contact-shimmer-graphic{height:7rem}
  .contact-shell{min-height:0}
  .contact-submit{width:100%}
}
@media(hover:none),(pointer:coarse){
  .fx-magnetic{translate:0 0}
  .card:hover,.navlink:hover,.theme-toggle:hover,.btn:hover{transform:none}
  .reviews-preview:hover .review-peek:nth-child(1){transform:rotate(-5deg)}
  .reviews-preview:hover .review-peek:nth-child(2){transform:rotate(5deg)}
  .reviews-preview:hover .review-peek:nth-child(3){transform:rotate(-.6deg)}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation:none !important;transition:none !important;scroll-behavior:auto !important}
  .reveal,.fx-on-sectionReveal .fx-mask-title{opacity:1;transform:none;clip-path:none}
  .fx-on-heroExit .hero.fx-exiting .hero-copy{opacity:1;transform:none}
  .contact-step{opacity:1;transform:none}
  .fx-magnetic{translate:0 0}
}
