* { box-sizing: border-box; } body {margin: 0;}:root{--mkr-primary:#5B7BA0;--mkr-primaryDark:#5B7BA0;--mkr-secondary:#6ce58a;--mkr-accent:#D4A574;--mkr-bg:#FBF9F5;--mkr-surface:#FFFFFF;--mkr-text:#1E2530;--mkr-textMuted:#6B7280;--mkr-border:#E2DBCB;}:root{--bg:#FFFFFF;--ink:#1F2A37;--brand:#2563B0;--brand-dark:#1B4A86;--accent:#E8A33D;--surface:#F3F6FB;--line:#E2E8F0;--muted:#566273;--radius:10px;--maxw:1140px;--font:'Inter',system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;}*{box-sizing:border-box;}html{-webkit-text-size-adjust:100%;}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.6;font-size:17px;}img{max-width:100%;height:auto;display:block;}a{color:var(--brand);}a:hover{color:var(--brand-dark);}h1{line-height:1.2;color:var(--ink);margin:0 0 .5em;font-weight:700;}h2{line-height:1.2;color:var(--ink);margin:0 0 .5em;font-weight:700;}h3{line-height:1.2;color:var(--ink);margin:0 0 .5em;font-weight:700;}h4{line-height:1.2;color:var(--ink);margin:0 0 .5em;font-weight:700;}h1{font-size:2.3rem;}h2{font-size:1.8rem;}h3{font-size:1.2rem;}p{margin:0 0 1em;}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 20px;}.section{padding:56px 0;}.section--surface{background:var(--surface);}.center{text-align:center;}.lead{font-size:1.12rem;color:var(--muted);max-width:60ch;}.center .lead{margin-left:auto;margin-right:auto;}.eyebrow{color:var(--brand);font-weight:600;text-transform:uppercase;letter-spacing:.06em;font-size:.82rem;margin:0 0 .4em;}.btn{display:inline-block;font-family:inherit;font-size:1rem;font-weight:600;text-decoration:none;border:2px solid transparent;border-radius:8px;padding:.7em 1.3em;cursor:pointer;line-height:1.2;}.btn--primary{background:var(--brand);color:#FFFFFF;border-color:var(--brand);}.btn--primary:hover{background:var(--brand-dark);border-color:var(--brand-dark);color:#FFFFFF;}.btn--accent{background:var(--accent);color:#1F2A37;border-color:var(--accent);}.btn--accent:hover{background:#d4912e;border-color:#d4912e;color:#1F2A37;}.btn--ghost{background:transparent;color:var(--brand);border-color:var(--brand);}.btn--ghost:hover{background:var(--brand);color:#FFFFFF;}.btn-row{display:flex;flex-wrap:wrap;gap:12px;}.center .btn-row{justify-content:center;}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px;}.site-header{background:#FFFFFF;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50;}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;max-width:var(--maxw);margin:0 auto;}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-weight:700;font-size:1.18rem;}.brand img{width:34px;height:34px;}.nav-menu{display:flex;align-items:center;gap:26px;list-style:none;margin:0;padding:0;}.nav-menu a:not(.btn){text-decoration:none;color:var(--ink);font-weight:500;}.nav-menu a:not(.btn):hover{color:var(--brand);}.nav-actions{display:flex;align-items:center;gap:14px;}.nav-toggle{display:none;background:transparent;border:1px solid var(--line);border-radius:8px;padding:8px 10px;cursor:pointer;line-height:0;}.nav-toggle span{display:block;width:22px;height:2px;background:var(--ink);position:relative;content:"";}.nav-toggle span::before{display:block;width:22px;height:2px;background:var(--ink);position:relative;content:"";}.nav-toggle span::after{display:block;width:22px;height:2px;background:var(--ink);position:relative;content:"";}.nav-toggle span::before{position:absolute;top:-7px;}.nav-toggle span::after{position:absolute;top:7px;}.hero{padding:56px 0;}.hero-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:44px;align-items:center;}.hero h1{margin-bottom:.4em;}.hero-img img{border-radius:var(--radius);width:100%;object-fit:cover;}.features{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}.feature{background:#FFFFFF;border:1px solid var(--line);border-radius:var(--radius);padding:22px;}.feature .icon{width:40px;height:40px;color:var(--brand);margin-bottom:10px;}.feature h3{font-size:1.05rem;margin-bottom:.35em;}.feature p{margin:0;color:var(--muted);font-size:.96rem;}.section-head{max-width:62ch;margin:0 0 32px;}.section-head.center{margin-left:auto;margin-right:auto;}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}.card{background:#FFFFFF;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;}.card img{width:100%;height:190px;object-fit:cover;}.card-body{padding:20px;display:flex;flex-direction:column;flex:1;}.card-body h3{margin-bottom:.25em;}.card .ages{color:var(--brand);font-weight:600;font-size:.9rem;margin:0 0 .5em;}.card-body p{color:var(--muted);font-size:.95rem;}.card .card-link{margin-top:auto;font-weight:600;text-decoration:none;color:var(--brand);}.card .card-link:hover{color:var(--brand-dark);text-decoration:underline;}.avail-badge{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:700;padding:.3em .8em;border-radius:999px;letter-spacing:.01em;margin-top:4px;margin-bottom:6px;}.avail-badge::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0;}.avail-badge--open{background:#dcfce7;color:#15803d;}.avail-badge--few{background:#fff7ed;color:#c2410c;}.avail-badge--waitlist{background:#f1f5f9;color:#64748b;}.split{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;}.split img{border-radius:var(--radius);width:100%;object-fit:cover;}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;text-align:center;}.stat .num{font-size:2.4rem;font-weight:700;color:var(--brand);line-height:1;}.stat .label{color:var(--muted);font-size:.95rem;margin-top:6px;}.quotes{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;}.quote{background:#FFFFFF;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--radius);padding:24px;}.quote p{font-size:1.05rem;margin-bottom:.8em;}.quote .cite{color:var(--muted);font-weight:600;font-style:normal;font-size:.92rem;}.faq{max-width:760px;margin:0 auto;}.faq-item{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;background:#FFFFFF;overflow:hidden;}.faq-q{width:100%;text-align:left;background:transparent;border:0;font-family:inherit;font-size:1.05rem;font-weight:600;color:var(--ink);padding:18px 20px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;}.faq-q .chev{flex:0 0 auto;font-size:1.3rem;color:var(--brand);line-height:1;}.faq-a{padding:0 20px 18px;overflow:hidden;}.faq-a p{margin:0;color:var(--muted);}.js .faq-a{max-height:0;padding:0 20px;}.js .faq-item.open .faq-a{padding:0 20px 18px;max-height:600px;}.js .faq-item.open .faq-q .chev{transform:rotate(45deg);}.tuition{display:grid;gap:14px;max-width:760px;margin:0 auto;}.tuition-row{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;background:#FFFFFF;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;}.tuition-row h3{margin:0 0 .2em;font-size:1.1rem;}.tuition-row .meta{color:var(--muted);font-size:.92rem;margin:0;}.tuition-row .price{font-weight:700;color:var(--brand);white-space:nowrap;align-self:center;}.team{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}.member img{border-radius:var(--radius);width:100%;height:230px;object-fit:cover;}.member h3{font-size:1.05rem;margin:.6em 0 .1em;}.member p{margin:0;color:var(--muted);font-size:.92rem;}.values{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}.value{background:#FFFFFF;border:1px solid var(--line);border-radius:var(--radius);padding:22px;}.value h3{font-size:1.1rem;}.value p{margin:0;color:var(--muted);font-size:.96rem;}.contact-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:44px;align-items:start;}.field{margin-bottom:16px;}.field label{display:block;font-weight:600;margin-bottom:6px;font-size:.95rem;}.field input{width:100%;font-family:inherit;font-size:1rem;padding:.65em .8em;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:#FFFFFF;}.field select{width:100%;font-family:inherit;font-size:1rem;padding:.65em .8em;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:#FFFFFF;}.field textarea{width:100%;font-family:inherit;font-size:1rem;padding:.65em .8em;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:#FFFFFF;}.field textarea{min-height:120px;resize:vertical;}.field.bad input{border-color:#c0392b;}.field.bad select{border-color:#c0392b;}.field.bad textarea{border-color:#c0392b;}.field .err{display:none;color:#c0392b;font-size:.85rem;margin-top:4px;}.field.bad .err{display:block;}.form-ok{display:none;background:#e8f3ea;border:1px solid #b6d8bd;color:#1f5130;padding:18px 20px;border-radius:var(--radius);}.contact-info dl{margin:0;}.contact-info dt{font-weight:700;margin-top:14px;}.contact-info dd{margin:0 0 2px;color:var(--muted);}.contact-info a{color:var(--brand);}.map-embed{margin-top:18px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;}.map-embed iframe{display:block;width:100%;height:300px;border:0;}.crumbs{font-size:.9rem;color:var(--muted);padding:16px 0 0;}.crumbs a{color:var(--brand);text-decoration:none;}.crumbs a:hover{text-decoration:underline;}.page-head{background:var(--surface);border-bottom:1px solid var(--line);padding:36px 0 44px;}.page-head h1{margin-bottom:.3em;}.page-head p{margin:0;color:var(--muted);max-width:64ch;}.site-footer{background:var(--ink);color:#D6DEE9;padding:48px 0 28px;}.site-footer a{color:#D6DEE9;text-decoration:none;}.site-footer a:hover{color:#FFFFFF;text-decoration:underline;}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:32px;}.footer-brand{display:flex;align-items:center;gap:10px;font-weight:700;color:#FFFFFF;font-size:1.15rem;margin-bottom:10px;}.footer-brand img{width:32px;height:32px;}.site-footer h4{color:#FFFFFF;font-size:1rem;margin:0 0 12px;}.site-footer ul{list-style:none;margin:0;padding:0;}.site-footer li{margin-bottom:8px;}.site-footer address{font-style:normal;color:#D6DEE9;line-height:1.7;}.footer-bottom{border-top:1px solid #34404f;margin-top:32px;padding-top:20px;font-size:.88rem;color:#9FB0C3;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;}.no-js [data-rv]{opacity:1!important;transform:none!important;clip-path:none!important;}.no-js .frame{opacity:1!important;transform:none!important;clip-path:none!important;}.nav__cta-m{display:none!important;}.gallery-intro{max-width:680px;margin:0 auto 32px;text-align:center;}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;}.gallery-grid img{width:100%;height:260px;object-fit:cover;display:block;}.admission-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;}.admission-panel + .admission-panel{margin-top:20px;}.admission-panel h2{margin-top:0;}.admission-panel h3{margin-top:0;}.admission-list{list-style:none;margin:0;padding:0;counter-reset:admission-step;}.admission-list li{counter-increment:admission-step;position:relative;padding-left:42px;margin-bottom:18px;color:var(--muted);}.admission-list li:last-child{margin-bottom:0;}.admission-list li::before{content:counter(admission-step);position:absolute;left:0;top:0;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--brand);color:#fff;font-weight:700;font-size:.9rem;}.admission-list strong{display:block;color:var(--ink);margin-bottom:2px;}.document-list{margin:0;padding-left:1.1rem;color:var(--muted);}.document-list li{margin-bottom:8px;}:root{--c-primary:#5B7BA0;--c-primary-dark:#3b5068;--c-primary-soft:#e1e7ee;--grad-warm:linear-gradient(135deg, #748fae 0%, #5B7BA0 50%, #496280 100%);--grad-hero:radial-gradient(1200px 600px at 80% -10%, #e5eaf0 0%, rgba(255,255,255,0) 60%);--brand:#5B7BA0;--brand-dark:#445c78;--brand-dk:#445c78;--brand-deep:#374a60;--brand-dim:#405670;--brand-soft:#e6ebf1;--brand-ink:#3b5068;--brand-text:#3b5068;--c-secondary:#6ce58a;--c-secondary-soft:#e7fbec;--accent:#6ce58a;--accent-bright:#82e99c;--accent-dark:#51ac68;--accent-dk:#51ac68;--accent-deep:#418953;--accent-ink:#46955a;--accent-text:#46955a;}#it85r{height:auto;width:auto;max-height:52px;max-width:min(200px, 45vw);object-fit:contain;display:block;flex:0 0 auto;}#iray{display:contents;}#i2sl3{display:block;font-size:0.72em;font-weight:400;opacity:0.7;line-height:1.2;}#ikzz8{display:inline-flex;flex-direction:column;justify-content:center;line-height:1.15;}#i9vu{display:inline-flex;align-items:center;gap:10px;}@media (max-width:980px){.nav__toggle{width:46px!important;height:46px!important;min-width:46px!important;max-width:46px!important;min-height:0!important;max-height:46px!important;flex:0 0 46px!important;align-self:center!important;box-sizing:border-box!important;overflow:hidden!important;}.nav-toggle{width:46px!important;height:46px!important;min-width:46px!important;max-width:46px!important;min-height:0!important;max-height:46px!important;flex:0 0 46px!important;align-self:center!important;box-sizing:border-box!important;overflow:hidden!important;}.nav__toggle{width:46px!important;height:46px!important;min-width:46px!important;max-width:46px!important;min-height:0!important;max-height:46px!important;flex:0 0 46px!important;align-self:center!important;box-sizing:border-box!important;overflow:visible!important;padding:0!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:5px!important;}.nav-toggle{width:46px!important;height:46px!important;min-width:46px!important;max-width:46px!important;min-height:0!important;max-height:46px!important;flex:0 0 46px!important;align-self:center!important;box-sizing:border-box!important;overflow:visible!important;padding:0!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:5px!important;}}@media (max-width:900px){.features{grid-template-columns:repeat(2,1fr);}.cards{grid-template-columns:repeat(2,1fr);}.team{grid-template-columns:repeat(2,1fr);}.stats{grid-template-columns:repeat(2,1fr);}.values{grid-template-columns:1fr;}.footer-grid{grid-template-columns:1fr 1fr;}.nav__toggle{display:inline-flex!important;position:relative!important;z-index:1002!important;}.nav-toggle{display:inline-flex!important;position:relative!important;z-index:1002!important;}.nav__menu{position:fixed!important;top:0!important;left:0!important;right:0!important;width:100%!important;max-width:100%!important;height:auto!important;max-height:100vh!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:.15rem!important;margin:0!important;padding:84px 22px 32px!important;background:var(--bg,#ffffff)!important;border:0!important;border-radius:0!important;transform:translateY(-101%)!important;transition:transform .35s ease!important;visibility:hidden!important;pointer-events:none!important;opacity:1!important;box-shadow:0 26px 60px rgba(0,0,0,.22)!important;z-index:1001!important;list-style:none!important;}.nav-menu{position:fixed!important;top:0!important;left:0!important;right:0!important;width:100%!important;max-width:100%!important;height:auto!important;max-height:100vh!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:.15rem!important;margin:0!important;padding:84px 22px 32px!important;background:var(--bg,#ffffff)!important;border:0!important;border-radius:0!important;transform:translateY(-101%)!important;transition:transform .35s ease!important;visibility:hidden!important;pointer-events:none!important;opacity:1!important;box-shadow:0 26px 60px rgba(0,0,0,.22)!important;z-index:1001!important;list-style:none!important;}ul#nav-menu{position:fixed!important;top:0!important;left:0!important;right:0!important;width:100%!important;max-width:100%!important;height:auto!important;max-height:100vh!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:.15rem!important;margin:0!important;padding:84px 22px 32px!important;background:var(--bg,#ffffff)!important;border:0!important;border-radius:0!important;transform:translateY(-101%)!important;transition:transform .35s ease!important;visibility:hidden!important;pointer-events:none!important;opacity:1!important;box-shadow:0 26px 60px rgba(0,0,0,.22)!important;z-index:1001!important;list-style:none!important;}body.nav-open .nav__menu{transform:none!important;visibility:visible!important;pointer-events:auto!important;}body.nav-open .nav-menu{transform:none!important;visibility:visible!important;pointer-events:auto!important;}body.nav-open ul#nav-menu{transform:none!important;visibility:visible!important;pointer-events:auto!important;}.nav__menu li{width:100%!important;list-style:none!important;}.nav-menu li{width:100%!important;list-style:none!important;}ul#nav-menu li{width:100%!important;list-style:none!important;}.nav__menu a:not(.btn){color:var(--ink,#1f2430)!important;display:block!important;width:100%!important;padding:.8rem .2rem!important;font-size:1.18rem!important;border-bottom:1px solid var(--line,rgba(0,0,0,.08))!important;}.nav-menu a:not(.btn){color:var(--ink,#1f2430)!important;display:block!important;width:100%!important;padding:.8rem .2rem!important;font-size:1.18rem!important;border-bottom:1px solid var(--line,rgba(0,0,0,.08))!important;}ul#nav-menu a:not(.btn){color:var(--ink,#1f2430)!important;display:block!important;width:100%!important;padding:.8rem .2rem!important;font-size:1.18rem!important;border-bottom:1px solid var(--line,rgba(0,0,0,.08))!important;}.nav__menu .btn{display:inline-flex!important;margin-top:1rem!important;width:auto!important;}.nav-menu .btn{display:inline-flex!important;margin-top:1rem!important;width:auto!important;}ul#nav-menu .btn{display:inline-flex!important;margin-top:1rem!important;width:auto!important;}body.nav-open{overflow:hidden!important;}body{overflow-x:clip!important;}.marquee{overflow:hidden!important;}body.nav-open .nav__toggle span{background:var(--ink)!important;}body.nav-open .nav__toggle span::before{background:var(--ink)!important;}body.nav-open .nav__toggle span::after{background:var(--ink)!important;}.nav__menu{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100dvh!important;min-height:100dvh!important;max-height:100dvh!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:.1rem!important;margin:0!important;padding:86px 24px 40px!important;background:var(--bg)!important;transform:translateX(102%)!important;transition:transform .34s ease!important;visibility:hidden!important;pointer-events:none!important;opacity:1!important;z-index:1001!important;box-shadow:none!important;border:0!important;}.nav-menu{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100dvh!important;min-height:100dvh!important;max-height:100dvh!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:.1rem!important;margin:0!important;padding:86px 24px 40px!important;background:var(--bg)!important;transform:translateX(102%)!important;transition:transform .34s ease!important;visibility:hidden!important;pointer-events:none!important;opacity:1!important;z-index:1001!important;box-shadow:none!important;border:0!important;}#nav-menu{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100dvh!important;min-height:100dvh!important;max-height:100dvh!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:.1rem!important;margin:0!important;padding:86px 24px 40px!important;background:var(--bg)!important;transform:translateX(102%)!important;transition:transform .34s ease!important;visibility:hidden!important;pointer-events:none!important;opacity:1!important;z-index:1001!important;box-shadow:none!important;border:0!important;}ul.nav__menu.is-mobile-dup{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100dvh!important;min-height:100dvh!important;max-height:100dvh!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:.1rem!important;margin:0!important;padding:86px 24px 40px!important;background:var(--bg)!important;transform:translateX(102%)!important;transition:transform .34s ease!important;visibility:hidden!important;pointer-events:none!important;opacity:1!important;z-index:1001!important;box-shadow:none!important;border:0!important;}.masthead__nav.nav__menu{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100dvh!important;min-height:100dvh!important;max-height:100dvh!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:.1rem!important;margin:0!important;padding:86px 24px 40px!important;background:var(--bg)!important;transform:translateX(102%)!important;transition:transform .34s ease!important;visibility:hidden!important;pointer-events:none!important;opacity:1!important;z-index:1001!important;box-shadow:none!important;border:0!important;}body.nav-open .nav__menu{transform:none!important;visibility:visible!important;pointer-events:auto!important;}body.nav-open .nav-menu{transform:none!important;visibility:visible!important;pointer-events:auto!important;}body.nav-open #nav-menu{transform:none!important;visibility:visible!important;pointer-events:auto!important;}body.nav-open ul.nav__menu.is-mobile-dup{transform:none!important;visibility:visible!important;pointer-events:auto!important;}body.nav-open .masthead__nav.nav__menu{transform:none!important;visibility:visible!important;pointer-events:auto!important;}.site-header{z-index:1100!important;}body.nav-open .site-header{background:var(--bg)!important;}.site-header .nav__toggle{position:relative!important;z-index:1102!important;}.nav__toggle{position:relative!important;z-index:1102!important;}.nav-toggle{position:relative!important;z-index:1102!important;}body.nav-open{overflow:hidden!important;}body.nav-open .site-header{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;filter:none!important;transform:none!important;background:var(--bg)!important;}body.nav-open header{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;filter:none!important;transform:none!important;background:var(--bg)!important;}body.nav-open .nav__toggle{position:relative!important;}body.nav-open .nav-toggle{position:relative!important;}body.nav-open .nav__toggle > *{opacity:0!important;}body.nav-open .nav-toggle > *{opacity:0!important;}body.nav-open .nav__toggle::before{content:""!important;position:absolute!important;left:50%!important;top:50%!important;width:23px!important;height:2.5px!important;background:var(--ink)!important;border-radius:2px!important;margin:0!important;transition:none!important;}body.nav-open .nav-toggle::before{content:""!important;position:absolute!important;left:50%!important;top:50%!important;width:23px!important;height:2.5px!important;background:var(--ink)!important;border-radius:2px!important;margin:0!important;transition:none!important;}body.nav-open .nav__toggle::after{content:""!important;position:absolute!important;left:50%!important;top:50%!important;width:23px!important;height:2.5px!important;background:var(--ink)!important;border-radius:2px!important;margin:0!important;transition:none!important;}body.nav-open .nav-toggle::after{content:""!important;position:absolute!important;left:50%!important;top:50%!important;width:23px!important;height:2.5px!important;background:var(--ink)!important;border-radius:2px!important;margin:0!important;transition:none!important;}body.nav-open .nav__toggle::before{transform:translate(-50%,-50%) rotate(45deg)!important;}body.nav-open .nav-toggle::before{transform:translate(-50%,-50%) rotate(45deg)!important;}body.nav-open .nav__toggle::after{transform:translate(-50%,-50%) rotate(-45deg)!important;}body.nav-open .nav-toggle::after{transform:translate(-50%,-50%) rotate(-45deg)!important;}.nav__toggle{margin-left:auto!important;flex:0 0 auto!important;order:99!important;}.nav-toggle{margin-left:auto!important;flex:0 0 auto!important;order:99!important;}.nav-toggle{width:46px!important;height:46px!important;min-width:0!important;max-width:46px!important;padding:0!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:5px!important;box-sizing:border-box!important;}.nav-toggle span{width:22px!important;height:2px!important;display:block!important;border-radius:2px!important;margin:0!important;}.site-header .nav{justify-content:space-between!important;}.site-header .header-inner{justify-content:space-between!important;}.site-header .header__in{justify-content:space-between!important;}.site-header .header__inner{justify-content:space-between!important;}.site-header .hbar{justify-content:space-between!important;}.site-header .masthead__bar{justify-content:space-between!important;}.site-header .container > .nav{justify-content:space-between!important;}.site-header .nav__cta{margin-left:auto!important;}.site-header .nav__actions{margin-left:auto!important;}.site-header .header__cta{margin-left:auto!important;}.site-header .nav__drawer-cta{margin-left:auto!important;}.site-header .nav__cta .btn:not(.nav__toggle){display:none!important;}.site-header .nav__actions .btn{display:none!important;}.site-header .header__cta .btn{display:none!important;}body.nav-open .nav__toggle{position:fixed!important;top:16px!important;right:16px!important;left:auto!important;bottom:auto!important;margin:0!important;z-index:1300!important;}body.nav-open .nav-toggle{position:fixed!important;top:16px!important;right:16px!important;left:auto!important;bottom:auto!important;margin:0!important;z-index:1300!important;}body.nav-open .site-header{z-index:1200!important;}.nav__cta-m{display:block!important;margin-top:1.2rem!important;}.nav__cta-m > a{display:inline-flex!important;width:auto!important;}.nav__cta-m > a{display:inline-flex!important;align-items:center!important;justify-content:center!important;text-align:center!important;width:auto!important;line-height:1.2!important;}.nav__cta-m .btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;text-align:center!important;width:auto!important;line-height:1.2!important;}#nav-menu a:not(.btn){border-radius:0!important;background:transparent!important;background-image:none!important;box-shadow:none!important;border-top:0!important;border-left:0!important;border-right:0!important;}.nav__menu a:not(.btn){border-radius:0!important;background:transparent!important;background-image:none!important;box-shadow:none!important;border-top:0!important;border-left:0!important;border-right:0!important;}.nav-menu a:not(.btn){border-radius:0!important;background:transparent!important;background-image:none!important;box-shadow:none!important;border-top:0!important;border-left:0!important;border-right:0!important;}#primary-nav a:not(.btn){border-radius:0!important;background:transparent!important;background-image:none!important;box-shadow:none!important;border-top:0!important;border-left:0!important;border-right:0!important;}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}@media (max-width:768px){.header-inner{padding:12px 16px;gap:12px;min-height:60px;}.nav-actions{gap:10px;}.nav-actions .btn{display:none!important;}.brand{font-size:1.05rem;gap:8px;line-height:1.15;min-width:0;}.brand span{white-space:normal;overflow-wrap:break-word;}.brand img{flex:none;width:30px;height:30px;}.nav-toggle{flex:none;padding:9px 11px;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;}body{font-size:16px;}h1{font-size:clamp(1.65rem,7.2vw,2.1rem);}h2{font-size:clamp(1.35rem,5.6vw,1.7rem);}h3{font-size:1.1rem;}.lead{font-size:1.02rem;}p{overflow-wrap:anywhere;word-break:break-word;}li{overflow-wrap:anywhere;word-break:break-word;}dd{overflow-wrap:anywhere;word-break:break-word;}address{overflow-wrap:anywhere;word-break:break-word;}.lead{overflow-wrap:anywhere;word-break:break-word;}.cite{overflow-wrap:anywhere;word-break:break-word;}.meta{overflow-wrap:anywhere;word-break:break-word;}.crumbs{overflow-wrap:anywhere;word-break:break-word;}.footer-bottom span{overflow-wrap:break-word;}.container{padding-left:16px;padding-right:16px;}.section{padding:40px 0;}.page-head{padding:26px 0 32px;}.hero{padding:36px 0;}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;padding:.8em 1.25em;font-size:1rem;line-height:1.25;min-height:44px;max-width:100%;text-align:center;}.btn svg{flex:none;width:1em;height:1em;}.btn[href^="tel:"]{white-space:nowrap;}.btn-row{flex-direction:column;align-items:stretch;width:100%;gap:10px;}.center .btn-row{align-items:stretch;}.btn-row .btn{width:100%;}img{max-width:100%;height:auto;}.hero-img img{max-height:340px;object-fit:cover;}.map-embed{max-width:100%;}.map-embed iframe{max-width:100%;height:260px;}.features{grid-template-columns:1fr;gap:16px;}.cards{grid-template-columns:1fr;gap:16px;}.team{grid-template-columns:1fr;gap:16px;}.stats{grid-template-columns:1fr;gap:16px;}.values{grid-template-columns:1fr;gap:16px;}.quotes{grid-template-columns:1fr;gap:16px;}.contact-grid{grid-template-columns:1fr;gap:28px;}.split{gap:24px;}.hero-grid{gap:24px;}.section-head{margin-bottom:24px;}.tuition-row{flex-direction:column;align-items:flex-start;gap:6px;padding:16px;}.tuition-row .price{align-self:flex-start;}.stats{grid-template-columns:1fr 1fr;gap:18px 16px;}.stat .num{font-size:2rem;}.site-footer{padding:36px 0 24px;}.footer-grid{grid-template-columns:1fr;gap:28px;}.site-footer address{line-height:1.8;}.site-footer a{overflow-wrap:anywhere;word-break:break-word;}.footer-bottom{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;text-align:left;margin-top:24px;}.footer-bottom span{display:block;width:100%;}.site-footer li a{display:inline-block;padding:4px 0;min-height:32px;}.faq-q{padding:16px;font-size:1rem;align-items:flex-start;min-height:44px;}.faq-q .chev{margin-top:2px;}.field input{font-size:16px;min-height:44px;}.field select{font-size:16px;min-height:44px;}.field textarea{font-size:16px;min-height:44px;}.field textarea{min-height:120px;}#tour-form .btn{width:100%;}}@media (max-width:760px){h1{font-size:1.95rem;}h2{font-size:1.55rem;}.nav-toggle{display:inline-flex;}.nav-menu{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:flex-start;gap:0;background:#FFFFFF;border-bottom:1px solid var(--line);padding:8px 20px 16px;}body.nav-open .nav-menu{display:flex;}.nav-menu li{width:100%;}.nav-menu a:not(.btn){display:block;padding:12px 0;width:100%;border-bottom:1px solid var(--line);}.header-inner{position:relative;}.hero-grid{grid-template-columns:1fr;gap:28px;}.hero-img{order:-1;}.split{grid-template-columns:1fr;gap:28px;}.quotes{grid-template-columns:1fr;}.contact-grid{grid-template-columns:1fr;}}@media (max-width:640px){.gallery-grid{grid-template-columns:1fr;gap:4px;}.gallery-grid img{height:220px;}.admission-panel{padding:20px;}#admission-form .btn{width:100%;}}@media (max-width:480px){.features{grid-template-columns:1fr;}.cards{grid-template-columns:1fr;}.team{grid-template-columns:1fr;}.stats{grid-template-columns:1fr;}.footer-grid{grid-template-columns:1fr;}.header-inner{padding:11px 14px;gap:10px;}.brand{font-size:1rem;}.brand img{width:28px;height:28px;}.container{padding-left:14px;padding-right:14px;}.section{padding:34px 0;}.stats{grid-template-columns:1fr;}}

/* mkr-template-hardening v6 */

/* <source> must never generate a box.
   source is NOT in the HTML spec's display:none UA list — it simply isn't
   painted because <picture> renders only its <img>. Templates set <picture> to
   display:contents, which dissolves the picture box and hoists its <source>
   children into the parent's formatting context; inside a grid each one then
   blockifies into a real grid item. With two sources per photo a 12-photo,
   4-column gallery became 36 items and photos landed one per row behind
   invisible cells. */
source{ display:none!important; }

/* A photo-stream whose items were emitted inside one wrapper div. The grid then
   holds a single item and every photo stacks in one column. display:contents
   dissolves the wrapper so the photos become the grid items they were meant to
   be. !important because one hydrator variant puts the wrapper grid in an
   inline style attribute. */
[data-mkr-section="photo-stream"] > div:only-child:not([class]){
  display:contents!important;
}

/* Injected MKR widgets are emitted outside the template's content container and
   with no max-width, so they run edge-to-edge while every other section sits in
   the content column. !important on the inline padding because the generated
   per-element #id rule always beats an attribute selector. */
[data-mkr-google-reviews]{
  width:100%;
  max-width:var(--maxw, 1240px);
  margin-inline:auto;
  box-sizing:border-box;
  padding-inline:clamp(1.1rem, 4vw, 2.4rem)!important;
}

/* The Google-reviews widget's LAYOUT, as a fallback.
   The widget is styled ENTIRELY by inline styles — it renders self-contained, so
   it can be concatenated into any template. That makes it the single block on the
   page with NO class-based CSS of its own, so once GrapesJS lifts those inline
   styles into per-element #i… rules, every pixel of it depends on those rules
   surviving. They did not: the footer patch swallowed them into
   @media (min-width:769px) (see splitSwallowedFooterPatch), and below 769px a
   live site served the widget as bare markup — no cards, no rows, run-together
   text, black stars and a 128px avatar.
   Keyed on the .grw-* classes and the widget's own structure, both of which
   survive the round-trip untouched. Deliberately NOT !important and
   class-specificity only, so the real inline / #id styles — which carry the
   school's own accent and theme — still win wherever they survive. */
[data-mkr-google-reviews] .grw-head{
  display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-bottom:18px;
}
[data-mkr-google-reviews] .grw-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px;
}
[data-mkr-google-reviews] .grw-list{ display:flex; flex-direction:column; gap:14px; }
[data-mkr-google-reviews] .grw-card{
  display:flex; flex-direction:column; gap:8px;
  padding:16px; border:1px solid #e7ebee; border-radius:14px; box-sizing:border-box;
}
[data-mkr-google-reviews][data-mkr-grw-theme="light"] .grw-card{ background:#fff; color:#0b2129; }
[data-mkr-google-reviews][data-mkr-grw-theme="dark"] .grw-card{
  background:#111827; color:#f8fafc; border-color:#374151;
}
/* Card header row: avatar + name/time column + the Google glyph. */
[data-mkr-google-reviews] .grw-card > div:first-child{ display:flex; align-items:center; gap:10px; }
[data-mkr-google-reviews] .grw-card > div:first-child > div{ min-width:0; flex:1; }
[data-mkr-google-reviews] .grw-card picture{ display:contents; }
[data-mkr-google-reviews] .grw-card > div:first-child img{
  width:40px; height:40px; border-radius:50%; object-fit:cover; flex:0 0 auto;
}
[data-mkr-google-reviews] .grw-card > div:last-child{ font-size:13.5px; line-height:1.55; }
/* Star rows. The filled run carries aria-hidden; the greyed-out remainder is the
   span nested inside it. */
[data-mkr-google-reviews] span[aria-hidden="true"]{ color:#FBBC04; }
[data-mkr-google-reviews] span[aria-hidden="true"] span{ color:#d6d9dc; }
/* A legibility floor, not a brand match: the button's real colour is the school's
   accent and lives in the inline style. Without a background here the white label
   would sit on nothing at all. */
[data-mkr-google-reviews] .grw-review-btn{
  margin-left:auto; padding:9px 16px; border-radius:10px;
  background:#008CCF; color:#fff; font-weight:700; text-decoration:none; white-space:nowrap;
}

/* Phone: the head runs out of room, the CTA wraps to a line of its own, and
   margin-left:auto then strands it against the right edge — measured on a live
   375px page as a 163px button beside 177px of nothing, under a left-aligned
   rating row. The house rule is a full-width body button on mobile.
   !important because the CTA's margin is an inline style — and, once the editor
   has lifted it, a per-element #id rule — either of which outranks an attribute
   selector. This is a media query, so it cannot live in the inline style the
   widget renders with; it has to be here. */
@media (max-width:600px){
  [data-mkr-google-reviews] .grw-head{ gap:10px; }
  [data-mkr-google-reviews] .grw-review-btn{
    margin-left:0!important;
    width:100%!important;
    box-sizing:border-box!important;
    text-align:center;
  }
}

/* Quote bands, sized to the quote.
   A template's quote band is display type — .qband blockquote is
   clamp(1.4rem, …, 2.2rem) over max-width:24ch — laid out for a dozen-odd
   words of marketing copy. Real reviews are routinely five times that, and a
   478-character one filled a 770px band with an 18-line wall of 22px bold text.
   The hydrator stamps data-mkr-quote-len (m = long, l = long enough to lead
   with a sentence and disclose the rest), so the type steps down and the measure
   widens only where it is needed; a short quote keeps the template's own look.
   Attribute selector, no !important: the header stylesheet loads AFTER the page
   stylesheet, so equal specificity resolves this way round, and a school that
   really styled its own blockquote by id still wins. */
blockquote[data-mkr-quote-len]{
  font-size:clamp(1.05rem, .82rem + .95vw, 1.5rem);
  line-height:1.45;
  max-width:46ch;
}
/* <details> requires <summary> FIRST in the markup, which puts the toggle
   between the lede and the rest — the quote reads as if interrupted once opened.
   Flex order:N moves it visually to the end without touching the DOM order the
   element needs. Closed, only the summary renders, so the order is moot. */
blockquote[data-mkr-quote-len] .mkr-quote-more{
  display:flex; flex-direction:column; align-items:center;
}
blockquote[data-mkr-quote-len] .mkr-quote-rest{ order:1; }
blockquote[data-mkr-quote-len] .mkr-quote-more > summary{
  order:2;
  display:inline-block; margin-top:.7rem; cursor:pointer;
  font-size:.74em; font-weight:700; letter-spacing:.03em; text-transform:uppercase;
  text-decoration:underline; text-underline-offset:3px; opacity:.82;
  list-style:none;
}
blockquote[data-mkr-quote-len] .mkr-quote-more > summary::-webkit-details-marker{ display:none; }
blockquote[data-mkr-quote-len] .mkr-quote-more > summary:hover{ opacity:1; }
/* Two real labels, CSS picks which shows — so the accessible name is correct in
   both states, which a content:"" pseudo-element cannot guarantee. */
blockquote[data-mkr-quote-len] .mkr-quote-less-label{ display:none; }
blockquote[data-mkr-quote-len] .mkr-quote-more[open] .mkr-quote-more-label{ display:none; }
blockquote[data-mkr-quote-len] .mkr-quote-more[open] .mkr-quote-less-label{ display:inline; }
/* The disclosed remainder reads as a continuation of the lede, so it keeps the
   quote's own type. */
blockquote[data-mkr-quote-len] .mkr-quote-rest{ display:block; margin-top:.4rem; }

/* The brand block's LAYOUT, as a fallback.
   The generated header markup (logo + school name + tagline) carries no classes
   — its layout came from inline styles, which GrapesJS converts to per-element
   id rules the first time the header is saved from the editor. Those id rules
   live only in the Header-css payload, and upsertHeaderFooter publishes the
   header with an EMPTY Header-css. So any site whose header HTML is the
   editor-saved (id-keyed, style-less) form while its stylesheet is regenerated
   gets a header with NO brand CSS: picture stops being display:contents, the logo
   renders at its intrinsic size (a 500px PNG became a 149px-tall logo and a
   150px-tall header bar), the name/tagline wrapper stops being a flex column so
   the tagline runs inline after the name, and the school name wraps over four
   lines. Keyed on the data-mkr-* contract so it holds for every template.
   Deliberately NOT !important and attribute-selector specificity only, so a real
   per-element id rule — i.e. styling the school actually saved — still wins. */
[data-mkr-logo]{ display:inline-flex; align-items:center; gap:10px; }
[data-mkr-logo] picture{ display:contents; }

/* Size the logo by its SHAPE, not by a fixed height.
   A flat height:36px assumes every school uploads a wide horizontal lockup.
   Plenty upload a STACKED mark — name over sub-name over artwork. One real logo
   is 374x210 (aspect 1.78); at height:36px it rendered 64x36 and the words in it
   were about six pixels tall, i.e. unreadable, while the same file was perfectly
   legible in the page body. The template made it worse: .brand img{width:34px;
   height:34px} slots a square badge, so without a rule here the logo is also
   squashed out of aspect.

   A max-height + max-width pair is aspect-aware without anyone having to measure
   the file. Whichever limit binds first wins, and the crossover is at aspect
   200/52 = 3.85:
     wide lockup   (aspect 5.0) -> width binds  -> 200x40
     stacked mark  (aspect 1.78)-> height binds -> 92x52   (was 64x36)
   The min(...,45vw) keeps a wide logo from crowding the burger on a 320px phone.
   Measured on a real header: 320px and 375px both clear the toggle by ~20px, the
   bar grows 69px -> 75px only when the logo actually needs the room, and neither
   width overflows.

   object-fit:contain so a template that DOES force both dimensions letterboxes
   the logo instead of stretching it. */
[data-mkr-logo] img{
  height:auto; width:auto;
  max-height:52px; max-width:min(200px, 45vw);
  object-fit:contain; display:block; flex:0 0 auto;
}
[data-mkr-logo] > span{
  display:inline-flex; flex-direction:column; justify-content:center; line-height:1.15;
}

/* The tagline is sized by an inline font-size:0.72em on the generated brand
   markup, so it shrinks with the school name and drops under 11px on tablets.
   The display:block here is part of the same fallback as the brand rules above. */
[data-mkr-field="school.tagline"]{ display:block; font-weight:400; opacity:.7; line-height:1.2; }
[data-mkr-field="school.tagline"]{ font-size:max(11.5px, .72em)!important; }

/* A phone number is never a wrap opportunity. Templates put the click-to-call
   link in the header row beside the school name; a long name squeezes the link
   and the number breaks at its hyphens — "507-" / "824-" / "6222" on three
   lines. Keyed on the tel: href (plain HTML semantics) so it holds for every
   template's phone link wherever it sits, and so it survives the header being
   republished from the editor — the class-keyed version of this rule lived only
   in the published stylesheet, never in the Header-styles payload the editor
   regenerates from, so every header submit dropped it and re-broke the number. */
a[href^="tel:"]{ white-space:nowrap; }

/* ...and let the brand yield the space instead. The generated brand block
   (logo + school name + tagline) is a flex item whose min-content width is set
   by the school name, so with the default min-width:auto it refuses to shrink
   and squeezes the phone/CTA block next to it. The name is already styled to
   wrap inside the brand; this lets it. */
[data-mkr-logo]{ min-width:0; }

/* Nothing may make the page wider than the device it is being read on.
   This is the containment half of the mobile-overflow guard — repairStylesheet
   removes the rule that caused it, this stops the next one from being felt.

   One section with margin-right:-1052.09375px under @media (max-width:576px)
   measured 1427px on a 375px phone. Chrome's answer to content it cannot fit is
   to grow the LAYOUT viewport to hold it and scale the result down: innerWidth
   went 375 -> 1427 and innerHeight 812 -> 3090, so the whole homepage rendered
   zoomed out ~3.8x. One bad section, every section unreadable.

   Templates set this on body, which is not enough — the overflow propagates
   from html, and body alone still let the layout viewport grow. With the rule
   here the same broken page measured 375 x 812 again.

   clip, never hidden: hidden makes the root a scroll container, which breaks
   position:sticky headers — most templates have one. clip cuts the overflow
   without creating a scroll container, so sticky still works, and children with
   their own overflow-x:auto (wide tables, carousels) keep scrolling normally. */
html{ overflow-x:clip; max-width:100%; }
body{ overflow-x:clip; max-width:100%; }

/* Scroll-reveal must not be able to hide content permanently. Reveal-gated
   blocks start at opacity:0 and are shown by template JS loaded from a CDN; if
   that request is blocked or fails, the page body never appears. Reveal them
   regardless after 4s — in the normal case the observer has long since run. */
[data-rv]{ animation: mkr-reveal-failsafe .01s linear 4s forwards; }
@keyframes mkr-reveal-failsafe{ to{ opacity:1; transform:none; } }
.no-js [data-rv]{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  [data-rv]{ animation:none; opacity:1; transform:none; }
}
