:root{
  --navy:#16233d; --navy2:#22324f; --burg:#7b1e2c; --burg2:#5e1621;
  --cream:#f6f0e4; --cream2:#ece3d2; --paper:#fbf8f1; --ink:#1b1a17; --ink2:#4b4740; --ink3:#7a746a;
  --gold:#b08d4c; --line:#dcd2bf;
  --fd:'Cormorant Garamond',Georgia,serif; --fl:'Cinzel',Georgia,serif; --fb:'Spectral',Georgia,serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--fb);color:var(--ink);background:var(--paper);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{width:min(1160px,100% - 40px);margin-inline:auto}
.label{font-family:var(--fl);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--burg)}
h1,h2,h3{font-family:var(--fd);font-weight:600;line-height:1.05;letter-spacing:-.01em}
h2{font-size:clamp(34px,5vw,54px)}
h3{font-size:26px}
.lede{font-size:19px;color:var(--ink2);max-width:640px}
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--fl);font-size:13px;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;padding:15px 24px;border-radius:2px;transition:transform .2s,background .2s,box-shadow .2s;border:0;cursor:pointer}
.btn-burg{background:var(--burg);color:#fff;box-shadow:0 10px 24px -12px rgba(123,30,44,.8)}
.btn-burg:hover{background:var(--burg2);transform:translateY(-2px)}
.btn-ghost{color:var(--navy);border:1px solid var(--navy)}
.btn-ghost:hover{background:var(--navy);color:#fff}

/* tartan */
.tartan{
  background-color:var(--burg);
  background-image:
    repeating-linear-gradient(90deg, transparent 0 22px, rgba(22,35,61,.75) 22px 34px, transparent 34px 40px, rgba(255,255,255,.35) 40px 42px, transparent 42px 64px),
    repeating-linear-gradient(0deg, transparent 0 22px, rgba(22,35,61,.6) 22px 34px, transparent 34px 40px, rgba(255,255,255,.3) 40px 42px, transparent 42px 64px);
}
.ribbon{height:14px}

/* concept bar */
.concept{background:var(--ink);color:#e9e2d2;font-size:13.5px;text-align:center;padding:9px 16px;font-family:var(--fb)}
.concept b{color:#f2c86b;font-weight:600}

/* nav */
header{position:sticky;top:0;z-index:20;background:rgba(251,248,241,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:76px;gap:20px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.brand svg{width:40px;height:46px;flex:none}
.brand .n1{font-family:var(--fd);font-weight:700;font-size:22px;line-height:1;color:var(--navy)}
.brand .n2{font-family:var(--fl);font-size:9.5px;letter-spacing:.2em;color:var(--burg);margin-top:4px}
.links{display:flex;gap:26px;align-items:center;font-size:15.5px}
.links a{text-decoration:none;color:var(--ink2)}
.links a:hover{color:var(--burg)}
.links .btn{padding:11px 18px;color:#fff}
@media(max-width:900px){.links a:not(.btn){display:none}}
@media(max-width:700px){.links{display:none}.brand .n2{font-size:8.5px}}
body{overflow-x:clip}

/* hero */
.hero{position:relative;overflow:hidden;background:
  radial-gradient(1200px 500px at 85% -10%, rgba(176,141,76,.18), transparent 60%),
  linear-gradient(var(--paper),var(--cream));}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center;padding:72px 0 84px}
.pill{display:inline-flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);border-radius:99px;padding:7px 14px 7px 10px;font-size:14.5px;color:var(--navy);margin-bottom:22px}
.pill .dot{width:9px;height:9px;border-radius:50%;background:#2f8a4e;box-shadow:0 0 0 4px rgba(47,138,78,.18);animation:pulse 2s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 8px rgba(47,138,78,0)}}
.hero h1{font-size:clamp(46px,7.2vw,88px);color:var(--navy);font-weight:600}
.hero h1 em{font-style:italic;color:var(--burg)}
.hero .lede{margin:22px 0 30px}
.cta-row{display:flex;gap:14px;flex-wrap:wrap}
.facts{display:flex;gap:28px;flex-wrap:wrap;margin-top:34px;padding-top:24px;border-top:1px solid var(--line)}
.facts div{font-size:14.5px;color:var(--ink2)}
.facts b{display:block;font-family:var(--fd);font-size:30px;color:var(--navy);line-height:1;font-weight:600}
.hero-art{position:relative;height:540px}
.ph{position:absolute;border-radius:3px;overflow:hidden;background:
  radial-gradient(120% 80% at 30% 20%,rgba(176,141,76,.28),transparent 60%),
  linear-gradient(160deg,#22324f,#16233d 55%,#3a1820);
  box-shadow:0 30px 60px -30px rgba(22,35,61,.55);display:flex;align-items:flex-start}
.ph::after{content:"";position:absolute;inset:0;opacity:.13;background-image:
  repeating-linear-gradient(90deg, transparent 0 22px, #7b1e2c 22px 34px, transparent 34px 40px, #fff 40px 42px, transparent 42px 64px),
  repeating-linear-gradient(0deg, transparent 0 22px, #7b1e2c 22px 34px, transparent 34px 40px, #fff 40px 42px, transparent 42px 64px)}
.ph span{position:relative;z-index:1;font-size:12.5px;background:rgba(251,248,241,.94);color:var(--ink2);padding:6px 10px;margin:14px;border-radius:2px;font-style:italic}
.ph span::before{content:"◎ ";color:var(--burg);font-style:normal}
.ph.a{inset:0 70px 120px 0}
.ph.b{width:250px;height:230px;right:0;bottom:0;border:8px solid var(--paper)}
.seal{position:absolute;left:-26px;bottom:70px;width:150px;height:150px;border-radius:50%;background:var(--navy);color:#f3ead6;display:grid;place-items:center;text-align:center;box-shadow:0 20px 40px -20px rgba(0,0,0,.5);animation:spin 40s linear infinite}
.seal svg{position:absolute;inset:0}
.seal .in{font-family:var(--fd);font-size:20px;line-height:1.05;animation:spin 40s linear infinite reverse}
.seal .in small{display:block;font-family:var(--fl);font-size:9px;letter-spacing:.2em;color:var(--gold);margin-top:4px}
@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:900px){
  .hero-grid{grid-template-columns:1fr;padding:44px 0 56px;gap:36px}
  .hero-art{height:380px}
  .ph.a{inset:0 40px 90px 0}.ph.b{width:180px;height:170px}
  .seal{width:118px;height:118px;left:-8px;bottom:40px}.seal .in{font-size:16px}
}

/* trust strip */
.strip{background:var(--navy);color:#e9e2d2}
.strip .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.strip div{padding:22px 18px;border-left:1px solid rgba(255,255,255,.1);font-size:15px}
.strip div:first-child{border-left:0}
.strip b{display:block;font-family:var(--fl);font-size:11.5px;letter-spacing:.18em;color:var(--gold);font-weight:500;margin-bottom:4px}
@media(max-width:900px){.strip .wrap{grid-template-columns:1fr 1fr}.strip div:nth-child(3){border-left:0}.strip div{border-top:1px solid rgba(255,255,255,.1)}}

section{padding:96px 0}
.head{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:start;margin-bottom:46px}
.numeral{font-family:var(--fd);font-size:72px;line-height:.8;color:var(--burg);font-style:italic;opacity:.9}
.head .label{margin-bottom:10px;display:block}
.head h2{color:var(--navy);margin-bottom:12px}
@media(max-width:700px){section{padding:68px 0}.head{grid-template-columns:1fr;gap:6px}.numeral{font-size:52px}}

/* trivium */
.trivium{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.stage{background:#fff;border:1px solid var(--line);padding:30px 28px 28px;position:relative;transition:transform .3s, box-shadow .3s}
.stage:hover{transform:translateY(-6px);box-shadow:0 26px 50px -30px rgba(22,35,61,.45)}
.stage::before{content:"";position:absolute;left:0;right:0;top:0;height:6px}
.stage.s1::before{background:var(--gold)}.stage.s2::before{background:var(--burg)}.stage.s3::before{background:var(--navy)}
.stage .label{font-size:11px}
.stage h3{font-size:34px;color:var(--navy);margin:10px 0 2px}
.stage .gr{font-style:italic;color:var(--burg);margin-bottom:14px}
.stage p{font-size:16px;color:var(--ink2)}
.stage ul{list-style:none;margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.stage li{font-size:15px;padding:4px 0 4px 20px;position:relative;color:var(--ink2)}
.stage li::before{content:"✦";position:absolute;left:0;color:var(--gold);font-size:11px;top:8px}
.soon{position:absolute;top:22px;right:20px;font-family:var(--fl);font-size:10px;letter-spacing:.16em;background:var(--navy);color:#fff;padding:5px 9px}
@media(max-width:900px){.trivium{grid-template-columns:1fr}}

/* week */
.week-sec{background:var(--cream)}
.week{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:22px}
.day{background:#fff;border:1px solid var(--line);padding:20px 16px;text-align:center}
.day .d{font-family:var(--fl);font-size:12px;letter-spacing:.2em;color:var(--ink3)}
.day .t{font-family:var(--fd);font-size:24px;color:var(--navy);margin:6px 0 2px;font-weight:600}
.day .s{font-size:14px;color:var(--ink2)}
.day.home{background:var(--navy);border-color:var(--navy)}
.day.home .d{color:var(--gold)}.day.home .t,.day.home .s{color:#efe7d6}
.week-notes{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.week-notes div{border-top:2px solid var(--burg);padding-top:12px;font-size:15.5px;color:var(--ink2)}
.week-notes b{font-family:var(--fd);font-size:21px;color:var(--navy);display:block;font-weight:600}
@media(max-width:800px){.week{grid-template-columns:1fr 1fr}.day.home{grid-column:span 2}.week-notes{grid-template-columns:1fr}}

/* tuition */
.tuition{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
.calc{background:var(--navy);color:#efe7d6;padding:34px;position:relative}
.calc .label{color:var(--gold)}
.calc h3{color:#fff;font-size:30px;margin:8px 0 18px}
.grades{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}
.grades button{font-family:var(--fb);font-size:15px;background:transparent;color:#efe7d6;border:1px solid rgba(255,255,255,.3);padding:8px 14px;cursor:pointer;border-radius:2px}
.grades button[aria-pressed="true"]{background:var(--gold);border-color:var(--gold);color:var(--navy);font-weight:600}
.row{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px dashed rgba(255,255,255,.2);font-size:16px}
.row b{font-family:var(--fd);font-size:24px;font-weight:600;color:#fff}
.row.total{border:0;padding-top:16px}
.row.total b{font-size:40px;color:#f2c86b}
.calc small{display:block;font-size:13px;color:#b9b2a3;margin-top:12px;line-height:1.5}
.tlist{list-style:none}
.tlist li{display:grid;grid-template-columns:44px 1fr;gap:14px;padding:16px 0;border-bottom:1px solid var(--line)}
.tlist .ic{width:44px;height:44px;border-radius:50%;background:var(--cream);display:grid;place-items:center;color:var(--burg);font-family:var(--fd);font-size:22px;font-weight:700}
.tlist h3{font-size:22px;color:var(--navy)}
.tlist p{font-size:15.5px;color:var(--ink2)}
@media(max-width:900px){.tuition{grid-template-columns:1fr}}

/* high school */
.hs{background:var(--navy);color:#efe7d6;position:relative;overflow:hidden}
.hs .ribbon{position:absolute;left:0;right:0;top:0}
.hs-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}
.hs .label{color:var(--gold)}
.hs h2{color:#fff;margin:12px 0 18px}
.hs h2 em{color:#f2c86b;font-style:italic}
.hs p{color:#cfc7b6;font-size:18px}
.big-stat{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.big-stat div{border:1px solid rgba(255,255,255,.18);padding:24px}
.big-stat b{font-family:var(--fd);font-size:52px;color:#f2c86b;line-height:1;display:block;font-weight:600}
.big-stat span{font-size:15px;color:#cfc7b6}
@media(max-width:900px){.hs-grid{grid-template-columns:1fr}}

/* electives */
.electives{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.el{text-align:center;padding:24px 10px;border:1px solid var(--line);background:#fff;transition:background .25s,color .25s}
.el:hover{background:var(--burg);color:#fff}
.el:hover .gl{color:#f2c86b}
.el .gl{font-family:var(--fd);font-size:34px;color:var(--burg);font-style:italic;line-height:1;margin-bottom:8px}
.el div:last-child{font-size:15px}
@media(max-width:900px){.electives{grid-template-columns:repeat(3,1fr)}}

/* head of school */
.hos{display:grid;grid-template-columns:.8fr 1.2fr;gap:56px;align-items:center}
.hos .ph{position:relative;height:440px;inset:auto}
.quote{font-family:var(--fd);font-size:clamp(28px,3.4vw,40px);line-height:1.2;color:var(--navy);font-style:italic;font-weight:500}
.quote::before{content:"\201C";display:block;font-size:90px;line-height:.6;color:var(--burg);font-style:normal}
.sig{margin-top:22px;font-size:15.5px;color:var(--ink2)}
.sig b{font-family:var(--fd);font-size:24px;color:var(--navy);display:block;font-weight:600}
.note{display:inline-block;margin-top:12px;font-size:13px;background:#fff6dc;border:1px dashed var(--gold);padding:4px 10px;color:var(--ink2)}
@media(max-width:900px){.hos{grid-template-columns:1fr}.hos .ph{height:320px}}

/* admissions + form */
.admit{background:var(--cream)}
.adm-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
.steps{list-style:none;counter-reset:s}
.steps li{counter-increment:s;display:grid;grid-template-columns:56px 1fr;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}
.steps li::before{content:counter(s,upper-roman);font-family:var(--fd);font-size:36px;color:var(--burg);font-style:italic;line-height:1}
.steps h3{font-size:23px;color:var(--navy)}
.steps p{font-size:15.5px;color:var(--ink2)}
form{background:#fff;padding:34px;border-top:6px solid var(--burg);box-shadow:0 30px 60px -40px rgba(22,35,61,.5)}
form h3{font-size:32px;color:var(--navy);margin-bottom:4px}
form .sub{font-size:15px;color:var(--ink2);margin-bottom:20px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
label{display:block;font-size:13.5px;color:var(--ink2);margin-bottom:12px}
input,select{width:100%;margin-top:5px;font:inherit;font-size:16px;padding:12px 13px;border:1px solid var(--line);background:var(--paper);border-radius:2px;color:var(--ink)}
input:focus,select:focus{outline:2px solid var(--gold);outline-offset:1px}
form .btn{width:100%;justify-content:center;margin-top:6px}
.ok{display:none;text-align:center;padding:30px 10px}
.ok h3{color:var(--navy)}
form.sent .fields{display:none}form.sent .ok{display:block}
.fine{font-size:12.5px;color:var(--ink3);margin-top:12px;text-align:center}
@media(max-width:900px){.adm-grid{grid-template-columns:1fr}.f2{grid-template-columns:1fr}form{padding:24px}}

/* faq */
.faq{max-width:820px}
details{border-bottom:1px solid var(--line);padding:18px 0}
summary{font-family:var(--fd);font-size:24px;color:var(--navy);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px;font-weight:600}
summary::after{content:"+";color:var(--burg);font-size:30px;line-height:1;transition:transform .2s}
details[open] summary::after{transform:rotate(45deg)}
details p{margin-top:10px;color:var(--ink2);font-size:16.5px}

footer{background:var(--ink);color:#bfb7a7;padding:60px 0 100px;font-size:15px}
.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px}
footer h4{font-family:var(--fl);font-size:12px;letter-spacing:.2em;color:var(--gold);font-weight:500;margin-bottom:12px}
footer .brand .n1{color:#fff}
footer .brand .n2{color:var(--gold)}
footer p{margin-top:8px}
.credit{margin-top:40px;padding-top:20px;border-top:1px solid #2e2c28;font-size:13px;color:#8a8478}
@media(max-width:800px){.fgrid{grid-template-columns:1fr}}

/* sticky mobile cta */
.mcta{position:fixed;left:12px;right:12px;bottom:12px;z-index:30;display:none}
.mcta .btn{width:100%;justify-content:center;padding:16px}
@media(max-width:700px){.mcta{display:block}}

/* reveal */
.rv{opacity:0;transform:translateY(22px);transition:opacity .8s ease,transform .8s ease}
.rv.in{opacity:1;transform:none}
.hero .rv{animation:up .9s ease forwards}
.hero .rv:nth-child(2){animation-delay:.08s}.hero .rv:nth-child(3){animation-delay:.16s}.hero .rv:nth-child(4){animation-delay:.24s}.hero .rv:nth-child(5){animation-delay:.32s}
@keyframes up{to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;animation:none!important}.seal,.seal .in{animation:none}}

.phero{background:linear-gradient(var(--paper),var(--cream));border-bottom:1px solid var(--line)}
.phero .crumb{font-size:14px;color:var(--ink3);margin-bottom:14px}
.phero .crumb a{text-decoration:none;color:var(--burg)}
.phero h1{font-size:clamp(42px,6vw,72px);color:var(--navy)}
.phero h1 em{color:var(--burg)}
.phero .lede{margin-top:16px}
.links a.on{color:var(--burg);box-shadow:inset 0 -1px 0 var(--burg)}
.band{background:var(--burg);color:#fff}
.band .wrap{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}
.band h2{color:#fff;font-size:clamp(30px,4vw,44px)}
.band p{color:#f1dfe2}
.band .btn{background:#fff;color:var(--burg)}
.band .btn:hover{background:var(--cream)}
.mapph{height:300px;margin-top:20px;position:relative}
.faith{background:#fff;border:1px solid var(--line);padding:30px;margin-top:10px}
.faith p{color:var(--ink2);margin-top:8px}
