:root{
  --navy:#14264a; --navy-d:#0d1a33; --gold:#c8962e; --cream:#faf6ec; --ink:#1d2433; --muted:#5b6475; --line:#e4dcc8;
  --serif:Georgia,"Iowan Old Style","Times New Roman",serif; --sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font:17px/1.65 var(--sans);color:var(--ink);background:#fff}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}
h1,h2,h3{font-family:var(--serif);line-height:1.15;margin:0 0 .5em;color:var(--navy)}
h2{font-size:clamp(1.7rem,3.2vw,2.4rem)}
.eyebrow{font:600 .78rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.8rem}
.btn{display:inline-block;padding:.85em 1.6em;border-radius:3px;font-weight:600;text-decoration:none;border:2px solid var(--gold);background:var(--gold);color:var(--navy-d)}
.btn:hover{background:#d9a93f}
.btn.ghost{background:transparent;color:#fff;border-color:#fff}
.btn.ghost:hover{background:#fff;color:var(--navy)}

/* top bar + header */
.top{background:var(--navy-d);color:#cdd5e6;font-size:.85rem}
.top .wrap{display:flex;justify-content:flex-end;gap:1.4rem;padding-top:.45rem;padding-bottom:.45rem}
.top a{text-decoration:none}.top a:hover{color:#fff}
header.site{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:84px}
header.site img.logo{height:52px;width:auto}
nav ul{list-style:none;display:flex;gap:1.6rem;margin:0;padding:0}
nav a{text-decoration:none;font-weight:600;font-size:.95rem;color:var(--navy)}
nav a:hover{color:var(--gold)}
.menu-btn{display:none;background:none;border:1px solid var(--line);padding:.5rem .8rem;font:inherit;color:var(--navy)}

/* hero */
.hero{position:relative;color:#fff;background:linear-gradient(rgba(13,26,51,.72),rgba(13,26,51,.82)),url(img/classroom.jpg) center/cover;padding:clamp(4rem,10vw,8rem) 0}
.hero h1{color:#fff;font-size:clamp(2.2rem,5.5vw,4rem);max-width:15em}
.hero p{max-width:34em;font-size:1.15rem;color:#e5e9f3}
.hero .actions{display:flex;gap:.9rem;flex-wrap:wrap;margin-top:1.8rem}

/* sections */
section{padding:clamp(3rem,7vw,5.5rem) 0}
.intro{display:grid;grid-template-columns:1.3fr 1fr;gap:3rem;align-items:center}
.stats{display:grid;gap:1rem}
.stat{border-left:3px solid var(--gold);padding:.4rem 1rem;background:var(--cream)}
.stat b{display:block;font:700 2.2rem/1.1 var(--serif);color:var(--navy)}
.stat span{color:var(--muted);font-size:.9rem}
.cream{background:var(--cream)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center}
.two img{border-radius:4px;aspect-ratio:4/3;object-fit:cover;width:100%}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem;margin-top:2rem}
.card{position:relative;display:block;overflow:hidden;border-radius:4px;color:#fff;text-decoration:none;min-height:340px}
.card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .4s}
.card:hover img{transform:scale(1.04)}
.card .label{position:absolute;inset:auto 0 0 0;padding:1.6rem;background:linear-gradient(transparent,rgba(13,26,51,.9))}
.card h3{color:#fff;margin:0}.card p{margin:.2rem 0 0;color:#e0c37c}

.summer{background:var(--navy);color:#fff;text-align:center}
.summer h2{color:#fff}.summer p{max-width:36em;margin:0 auto 1.6rem;color:#d6dcea}

.quotes{display:grid;grid-template-columns:repeat(2,1fr);gap:1.4rem;margin-top:2rem}
blockquote{margin:0;padding:1.6rem;background:#fff;border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:3px}
blockquote p{margin:0 0 1rem;font-size:.97rem}
blockquote footer{font-weight:600;color:var(--navy)}
blockquote footer span{display:block;font-weight:400;color:var(--muted);font-size:.85rem}

.cta{background:var(--cream);text-align:center}
.cta p{max-width:34em;margin:0 auto 1.6rem}

footer.site{background:var(--navy-d);color:#b9c3d9;padding:3rem 0;font-size:.93rem}
footer.site .wrap{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:2rem}
.flogo{width:120px;height:auto;margin-bottom:1rem}
footer.site h4{color:#fff;font-family:var(--serif);margin:0 0 .6rem}
footer.site a{text-decoration:none}footer.site a:hover{color:#fff}
footer.site ul{list-style:none;padding:0;margin:0}
.fine{grid-column:1/-1;border-top:1px solid #26365a;padding-top:1.2rem;font-size:.8rem}

/* shared pieces for inner pages */
.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;z-index:99;background:#fff;padding:.5rem 1rem}
nav a[aria-current]{color:var(--gold)}
.actions{display:flex;gap:.9rem;flex-wrap:wrap}.actions.center{justify-content:center}
.btn.outline{background:transparent;color:var(--navy);border-color:var(--navy)}
.btn.outline:hover{background:var(--navy);color:#fff}
.page-hero{color:#fff;background:linear-gradient(rgba(13,26,51,.78),rgba(13,26,51,.86)),var(--bg,none) center/cover,var(--navy);padding:clamp(2.6rem,7vw,4.6rem) 0}
.page-hero h1{color:#fff;font-size:clamp(2rem,4.6vw,3.2rem);margin:0}
.lead{font-size:1.12rem;max-width:42em}
.prose{max-width:46em}
.prose h3{margin-top:1.8rem}
.prose ul{padding-left:1.2rem}.prose li{margin:.35rem 0}
section.tight{padding-top:clamp(2rem,4vw,3rem)}
.split{display:grid;grid-template-columns:2fr 3fr;gap:2.6rem;align-items:start;padding:2.4rem 0;border-top:1px solid var(--line)}
.split:first-of-type{border-top:0}
.split img{border-radius:4px;width:100%;aspect-ratio:3/2;object-fit:cover}
.split h2{margin-top:0}
.docs{display:flex;flex-wrap:wrap;gap:.6rem;margin:1rem 0 0;padding:0;list-style:none}
.docs a{display:inline-flex;align-items:center;gap:.45rem;padding:.55em 1em;border:1px solid var(--line);border-radius:3px;background:#fff;text-decoration:none;font-weight:600;font-size:.93rem;color:var(--navy)}
.docs a:hover{border-color:var(--gold);background:var(--cream)}
.docs a[href$=".pdf"]::before{content:"PDF";font:700 .62rem/1 var(--sans);letter-spacing:.06em;background:var(--gold);color:var(--navy-d);padding:.3em .4em;border-radius:2px}
.jump{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}
.jump a{display:block;padding:.4em .9em;border-radius:99px;background:var(--cream);text-decoration:none;font-size:.9rem;font-weight:600;color:var(--navy)}
.jump a:hover{background:var(--gold)}
.blocks{display:grid;grid-template-columns:repeat(2,1fr);gap:1.4rem;margin-top:2rem}
.block{border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:3px;padding:1.5rem;scroll-margin-top:110px}
.block h2{font-size:1.45rem}.block p{margin:.4rem 0}
[id]{scroll-margin-top:110px}
.staff{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1.6rem;margin:1.4rem 0 3rem}
.person{text-align:center}
.person img,.person .ph{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:4px;background:var(--cream)}
.person .ph{display:flex;align-items:center;justify-content:center;font:700 2.6rem var(--serif);color:var(--gold);border:1px solid var(--line)}
.person h3{font-size:1.15rem;margin:.8rem 0 .1rem}.person p{margin:0;color:var(--muted);font-size:.92rem}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.8rem;margin-top:2rem}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:4px}
.camps{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.6rem;margin-top:2rem}
.camp{border:1px solid var(--line);border-radius:4px;overflow:hidden;background:#fff;display:flex;flex-direction:column}
.camp img{width:100%;aspect-ratio:4/5;object-fit:cover}
.camp div{padding:1.3rem;display:flex;flex-direction:column;gap:.3rem;flex:1}
.camp h3{margin:0}.camp .when{font-weight:600;color:var(--navy)}.camp p{margin:.2rem 0}
.camp .btn{margin-top:auto;align-self:flex-start}
.price{list-style:none;padding:0;margin:1rem 0}.price li{display:flex;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--line)}
.price b{color:var(--navy)}
.notice{background:#fff7e0;border:1px solid #ecd18c;border-radius:3px;padding:.9rem 1.1rem}
#form-status:empty,form.info[hidden]{display:none}
.notice.ok{background:#e9f6ec;border-color:#9fd1aa}
.notice.err{background:#fdecea;border-color:#efa9a1}
form.info button:disabled{opacity:.6;cursor:wait}
form.info{max-width:44em;display:grid;gap:1.2rem}
form.info fieldset{border:1px solid var(--line);border-radius:4px;padding:1.2rem 1.4rem;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:1rem}
form.info legend{font:700 1.15rem var(--serif);color:var(--navy);padding:0 .4rem}
form.info label{display:flex;flex-direction:column;gap:.3rem;font-weight:600;font-size:.92rem}
form.info label.full{grid-column:1/-1}
form.info input,form.info select,form.info textarea{font:inherit;font-weight:400;padding:.6rem .7rem;border:1px solid #c9c2b0;border-radius:3px;background:#fff}
form.info textarea{min-height:5.5rem}
form.info .opt{font-weight:400;color:var(--muted)}
form.info .hp{position:absolute;left:-5000px}
form.info button{justify-self:start;cursor:pointer;font:inherit;font-weight:600}
.contact-line a{font-weight:600;color:var(--navy)}

@media(max-width:820px){
  .split,.blocks,form.info fieldset{grid-template-columns:1fr}
  .split img{max-width:520px}
  .intro,.two,.cards,.quotes,footer.site .wrap{grid-template-columns:1fr}
  .menu-btn{display:block}
  nav{display:none;position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--line);padding:1rem 20px}
  nav.open{display:block}nav ul{flex-direction:column;gap:.9rem}
  .top .wrap{justify-content:center;flex-wrap:wrap;gap:.9rem}
}
/* flyers keep their full shape (no cropping) */
.two img.flyer,.camp img{aspect-ratio:auto;object-fit:contain}
table.lunch{border-collapse:collapse;width:100%;margin:.6rem 0 1rem}table.lunch th,table.lunch td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--line);vertical-align:top}table.lunch th{width:7.5em;color:var(--navy)}.lunch-week{font-weight:600;color:var(--navy);margin-bottom:.2rem}.lunch-by{font-weight:600}
.lunch-form{display:block;width:100%;height:900px;border:1px solid var(--line);border-radius:4px;margin:.6rem 0 1rem;background:#fff}
.lunch-date{display:block;font-weight:400;color:var(--muted);font-size:.85rem}
.lunch-order{margin-top:1.4rem}.lunch-order h3{margin:0;font-size:1.3rem;color:var(--navy)}
.lunch-days{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem}
form.info label.lunch-day{flex-direction:row;align-items:flex-start;gap:.5rem;font-weight:400;border:1px solid var(--line);border-radius:4px;padding:.6rem .7rem;cursor:pointer}
.lunch-day input{margin-top:.25rem}.lunch-day:has(input:checked){border-color:var(--gold);background:#fff7e0}
.lunch-remove{grid-column:1/-1;justify-self:start;background:none;border:0;color:var(--muted);text-decoration:underline;cursor:pointer;font:inherit;padding:0}
.lunch-total{font-size:1.15rem;margin:0}.lunch-fine{color:var(--muted);font-size:.9rem}
/* Parent-teacher conferences (conferences.py, conferences.js) */
.conf-when{font:700 1.35rem var(--serif);color:var(--navy);margin-bottom:.3rem}
.conf-teachers{list-style:none;padding:0;margin:.6rem 0 1.6rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.7rem}
.conf-teacher{display:flex;flex-direction:column;gap:.15rem;padding:.9rem 1rem;border:1px solid var(--line);border-radius:4px;background:#fff;text-decoration:none;color:var(--navy)}
.conf-teacher:hover,.conf-teacher:focus-visible{border-color:var(--gold);background:var(--cream)}
.conf-teacher span{color:var(--muted);font-size:.9rem}
.conf-teachers[hidden],#conf-pick[hidden]{display:none}
.conf-subject{color:var(--muted);margin-top:-.4rem}.conf-count{font-weight:600}
.conf-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.6rem;margin:.6rem 0 1.4rem;max-width:44em}
.conf-slot{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.75rem .5rem;border:1px solid var(--line);border-radius:4px;background:#fff;font:600 1rem var(--sans);color:var(--navy);cursor:pointer;font-variant-numeric:tabular-nums}
.conf-slot small{font-weight:400;font-size:.8rem;color:var(--muted)}
.conf-slot:hover:not(:disabled){border-color:var(--gold)}
.conf-slot[aria-pressed="true"]{background:var(--gold);border-color:var(--gold);color:var(--navy-d)}
.conf-slot[aria-pressed="true"] small{color:var(--navy-d)}
.conf-slot:disabled{background:#f1efe9;color:#9a9fa9;cursor:not-allowed;text-decoration:line-through}
.conf-slot:disabled small{text-decoration:none}
.conf-form h3{margin:0;font-size:1.3rem;color:var(--navy)}
#conf-status:empty{display:none}
form.info textarea{resize:vertical}
/* School tours (tours.py, tours.js) */
.tour-list{list-style:none;padding:0;margin:.6rem 0 1.4rem;display:grid;gap:.7rem;max-width:44em}
.tour-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem;padding:1rem 1.1rem;border:1px solid var(--line);border-radius:4px;background:#fff}
.tour-list li>div{display:flex;flex-direction:column;gap:.2rem;min-width:0}
.tour-list li b{color:var(--navy);font-size:1.05rem}
.tour-list li span{color:var(--muted);font-size:.92rem}
.tour-list li.open{border-color:var(--gold);background:var(--cream)}
.tour-list .tour-status{font-weight:600;color:var(--navy)}
.tour-list .tour-status.full{color:#9a3b30}.tour-list .tour-status.ok{color:#2c7a3f}
.tour-form h3{margin:0;font-size:1.3rem;color:var(--navy)}
#tour-status:empty{display:none}
