:root{color-scheme:light;--ink:#17343a;--deep:#102b31;--muted:#4a6265;--line:#ced9d4;--paper:#f7f7f2;--white:#fff;--mint:#e7f0e9;--leaf:#316b5b;--focus:#bc622d}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:6rem}
body{margin:0;background:var(--paper);color:var(--ink);font:400 1rem/1.55 -apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3,p,figure{margin-top:0}
h1,h2,h3{line-height:1.1}
img{display:block;max-width:100%}
button,input,textarea{font:inherit}
button{cursor:pointer}
a{color:inherit}
.wrap{width:min(100% - 3rem,1180px);margin-inline:auto}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.skip-link{position:fixed;z-index:50;top:-5rem;left:1rem;padding:.7rem 1rem;background:#fff;color:var(--ink);border:1px solid var(--ink)}
.skip-link:focus{top:1rem}

.site-header{position:sticky;top:0;z-index:20;background:rgba(247,247,242,.97);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}
.header-inner{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:2rem}
.brand{display:inline-flex;align-items:center;gap:.85rem;text-decoration:none;min-width:0}
.brand-mark{width:45px;height:45px;object-fit:contain;flex:none}
.brand-name{display:flex;flex-direction:column;line-height:1.15;gap:.24rem}
.brand-name strong{font-size:1rem;letter-spacing:-.025em}
.brand-name small{font-size:.72rem;color:var(--muted);letter-spacing:.015em}
.site-header nav{display:flex;align-items:center;gap:1.75rem}
.site-header nav a{text-decoration:none;font-size:.88rem;font-weight:700;white-space:nowrap;text-underline-offset:4px}
.site-header nav a:hover{text-decoration:underline}
.site-header nav .nav-book{border:1px solid var(--ink);background:var(--ink);color:#fff;padding:.68rem 1rem;transition:background .2s}
.site-header nav .nav-book:hover{background:#2b5b5f;text-decoration:none}
.site-header nav .nav-plan{color:var(--muted)}

.hero{padding-top:4.2rem;padding-bottom:3.2rem}
.hero-copy{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:0 4.5rem;align-items:end}
.eyebrow,.section-kicker{text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;font-weight:800;color:var(--leaf)}
.eyebrow{grid-column:1/-1;margin-bottom:1.5rem}
h1{grid-column:1;font-family:Georgia,"Times New Roman",serif;font-size:clamp(3.25rem,5.3vw,5.1rem);font-weight:400;letter-spacing:-.06em;margin-bottom:1.3rem}
h1 span{display:block;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;font-size:clamp(1.5rem,2.7vw,2.5rem);font-weight:570;letter-spacing:-.045em;line-height:1.2;margin-top:.65rem}
.hero-lead{grid-column:2;font-size:1.13rem;line-height:1.6;color:#355054;max-width:43ch;margin:0 0 1.7rem}
.event-facts{grid-column:1/-1;display:grid;grid-template-columns:1.65fr 1fr 1fr;border-block:1px solid #9fb6ad;margin:1.25rem 0 1.8rem}
.event-facts div{display:flex;flex-direction:column;justify-content:center;gap:.2rem;min-height:90px;padding:1rem 1.35rem}
.event-facts div:first-child{padding-left:0}
.event-facts div+div{border-left:1px solid var(--line)}
.fact-label{font-size:.69rem;font-weight:800;text-transform:uppercase;letter-spacing:.13em;color:var(--muted)}
.event-facts strong{font-size:1.07rem;line-height:1.25;letter-spacing:-.02em}
.hero-actions{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:1rem 1.6rem}
.button{display:inline-flex;align-items:center;justify-content:center;gap:1rem;min-height:48px;padding:.72rem 1.15rem;border:1px solid transparent;border-radius:2px;text-decoration:none;font-size:.91rem;font-weight:750;line-height:1.25;transition:background .2s,color .2s,border-color .2s,transform .2s}
.button:hover{transform:translateY(-2px)}
.button-primary{background:var(--ink);color:#fff}
.button-primary:hover{background:#2b5b5f}
.button span[aria-hidden]{font-size:1.08rem;font-weight:400}
.text-link{font-size:.9rem;font-weight:700;text-underline-offset:5px}
.text-link:hover{color:var(--leaf)}
.hero-image{margin:3.4rem 0 0}
.hero-image img{width:100%;height:auto;aspect-ratio:2.24;object-fit:cover;object-position:center 53%}
.hero-image figcaption{display:flex;justify-content:flex-end;margin:.6rem 0 0;font-size:.75rem;color:var(--muted)}

.process-section{padding:4.8rem 0 4.6rem;border-block:1px solid var(--line);background:#fff}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:2rem;margin-bottom:1.8rem}
.section-kicker{margin-bottom:.7rem}
h2{font-family:Georgia,"Times New Roman",serif;font-size:clamp(2.15rem,3.8vw,3.7rem);font-weight:400;letter-spacing:-.045em;margin-bottom:.6rem}
.section-heading p:last-child{color:var(--muted);margin-bottom:0;max-width:65ch}
.compact-heading{margin-bottom:2rem}
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid #9fb6ad}
.step{padding:1.55rem 2.1rem 1.3rem 0;min-width:0}
.step+.step{padding-left:2rem;border-left:1px solid var(--line)}
.step-number{display:block;font-size:.82rem;font-weight:800;letter-spacing:.07em;color:var(--leaf);margin-bottom:1.2rem}
.step h3{font-size:1.14rem;letter-spacing:-.025em;margin-bottom:.5rem}
.step p{color:var(--muted);font-size:.91rem;line-height:1.56;margin-bottom:0;max-width:33ch}
.time-note{display:flex;align-items:baseline;gap:1rem;margin:1.1rem 0 0;padding:1.05rem 0 0;border-top:1px solid var(--line);font-size:.91rem;color:var(--muted)}
.time-note strong{flex:none;color:var(--leaf)}
.time-note p{margin:0}

.forum-section{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(210px,.6fr);gap:3rem;align-items:center;margin-top:5.6rem;margin-bottom:5.6rem;padding:3.4rem;background:#e4eee5;border-left:5px solid var(--leaf)}
.forum-content h2{max-width:16ch}
.forum-content>p:not(.section-kicker){max-width:57ch;color:#38554f;font-size:1.01rem;line-height:1.65;margin-bottom:1.6rem}
.forum-facts{display:flex;flex-wrap:wrap;gap:1.2rem 2.5rem;margin:0 0 1.8rem;padding:1rem 0;border-block:1px solid #b7ccbc}
.forum-facts div{min-width:0}
.forum-facts dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:#46695c}
.forum-facts dd{margin:.25rem 0 0;font-weight:700}
.button-forum{background:var(--leaf);color:#fff}
.button-forum:hover{background:#22564a}
.flyer-preview{display:block;max-width:225px;justify-self:center;text-decoration:none;transform:rotate(2deg);transition:transform .2s}
.flyer-preview:hover{transform:rotate(0deg) translateY(-3px)}
.flyer-preview img{width:100%;height:auto;border:1px solid #b4c7b7;box-shadow:0 14px 34px rgba(30,71,53,.17)}
.flyer-preview>span{display:block;margin-top:.75rem;font-size:.78rem;font-weight:750;text-decoration:underline;text-underline-offset:3px;transform:rotate(-2deg)}

.teacher-section{padding-top:1.5rem;padding-bottom:5rem}
.count-pill{flex:none;align-self:center;border:1px solid #9ab9aa;padding:.5rem .85rem;background:#e9f1e8;font-size:.8rem;font-weight:750;color:#245845}
.search-bar{display:grid;grid-template-columns:minmax(260px,430px) 1fr;align-items:end;gap:.45rem 1.5rem;margin:2.6rem 0 1.3rem}
.search-bar label{grid-column:1/-1;font-size:.84rem;font-weight:750}
.search-control{position:relative}
.search-control svg{position:absolute;top:50%;left:.95rem;transform:translateY(-50%);width:20px;height:20px;color:var(--leaf);pointer-events:none}
.search-control input{width:100%;height:52px;padding:.65rem 1rem .65rem 2.8rem;border:1px solid #a9bdb6;border-radius:2px;background:#fff;color:var(--ink);outline:none}
.search-control input:focus{border-color:var(--leaf);box-shadow:0 0 0 3px rgba(49,107,91,.16)}
.search-control input::placeholder{color:#647c7c}
#match-count{justify-self:end;margin:0 0 .8rem;color:var(--muted);font-size:.81rem}
.directory-head,.teacher-card{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1.2fr) auto;gap:1.3rem;align-items:center}
.directory-head{padding:.6rem 1rem;background:#e4ece6;border-top:1px solid #a8beb1;color:#3e6055;text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;font-weight:800}
.directory-head span:last-child{text-align:right;padding-right:.2rem}
.teacher-grid{border-bottom:1px solid var(--line)}
.teacher-card{min-height:70px;padding:.7rem 1rem;border-top:1px solid var(--line);background:rgba(255,255,255,.63);transition:background .18s}
.teacher-card:nth-child(even){background:rgba(239,244,237,.55)}
.teacher-card:hover{background:#eaf2e9}
.teacher-meta{display:contents}
.teacher-meta h3{min-width:0;overflow-wrap:anywhere;font-size:1rem;font-weight:730;letter-spacing:-.018em;margin:0}
.teacher-meta p{min-width:0;font-size:.87rem;color:#385451;margin:0;line-height:1.35}
.teacher-meta p span{display:none}
.teacher-card a{justify-self:end;display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:.55rem .8rem;background:var(--ink);color:#fff;text-decoration:none;font-size:.8rem;font-weight:750;white-space:nowrap;transition:background .2s}
.teacher-card a:hover{background:var(--leaf)}
.teacher-card a span{font-size:1rem;font-weight:400}
.teacher-card .booking-pending{justify-self:end;display:inline-flex;align-items:center;min-height:44px;padding:.55rem .8rem;border:1px solid #9fb6ad;color:#425d54;background:#f0f4ee;font-size:.79rem;font-weight:700;white-space:nowrap}
.empty-search{padding:1.8rem 1rem;text-align:center;background:#fff;border-bottom:1px solid var(--line);color:var(--muted)}

.planner-section{background:var(--deep);color:#fff;padding:5.5rem 0}
.planner-heading .section-kicker{color:#9dd4ad}
.planner-heading p:last-child{color:#c7d8d6}
.planner-heading strong{color:#fff}
.private-badge{flex:none;align-self:center;border:1px solid #5d817c;padding:.45rem .7rem;color:#d2e7e1;font-size:.77rem;white-space:nowrap}
.private-badge span{color:#9acfaa;font-size:.67rem;margin-right:.25rem}
.plan-card{background:#fff;color:var(--ink);padding:1.1rem 1.3rem;border-radius:2px}
.plan-header,.plan-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.5fr) minmax(0,.9fr) 42px;gap:.75rem;align-items:center}
.plan-header{padding:.3rem .55rem .75rem;border-bottom:1px solid #9fb6ad;color:#46665e;text-transform:uppercase;letter-spacing:.11em;font-size:.68rem;font-weight:800}
.plan-row{padding:.8rem .55rem;border-bottom:1px solid var(--line)}
.plan-row-tools{display:contents}
.plan-row-title,.remove-text{display:none}
.plan-row label{min-width:0}
.plan-row label span{display:none}
.plan-row input,.plan-row textarea{width:100%;height:46px;min-width:0;padding:.55rem .7rem;border:1px solid #c2d2ca;border-radius:2px;background:#f8faf7;color:var(--ink);font-size:.92rem}
.plan-row textarea{resize:none;line-height:1.35}
.plan-row input:focus,.plan-row textarea:focus{outline:none;border-color:var(--leaf);box-shadow:0 0 0 3px rgba(49,107,91,.15)}
.plan-row input::placeholder,.plan-row textarea::placeholder{color:#667d79}
.remove-row{width:44px;height:44px;border:1px solid transparent;border-radius:2px;background:transparent;color:#5c7773;font-size:1.5rem;line-height:1}
.remove-row:hover{background:#f9e8df;color:#9d4a33}
.plan-actions{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.15rem .55rem .1rem}
.button-light{background:#e5efe7;color:var(--ink);border-color:#c6d9ca}
.button-light:hover{background:#d3e6d7}
.privacy-note{max-width:950px;margin:1.2rem 0 0;color:#c7d8d6;font-size:.84rem;line-height:1.6}
.privacy-note a{color:#e4f4e9;text-underline-offset:3px}
.privacy-note a:hover{color:#fff}

.school-image{margin-top:5rem;margin-bottom:4.5rem}
.school-image img{width:100%;height:auto;aspect-ratio:2.9;object-fit:cover;object-position:center 50%}
.school-image figcaption{display:flex;justify-content:space-between;gap:1rem;border-top:1px solid var(--line);margin-top:.7rem;padding-top:.65rem;color:var(--muted);font-size:.79rem}
.school-image figcaption span:first-child{font-weight:750;color:var(--ink)}
.site-footer{border-top:1px solid var(--line);background:#ebefea}
.faq-section{padding-top:.7rem;padding-bottom:5.5rem}
.faq-list{border-top:1px solid #9fb6ad}
.faq-list details{border-bottom:1px solid var(--line)}
.faq-list summary{position:relative;display:block;min-height:58px;padding:1.2rem 3rem 1.2rem 0;list-style:none;cursor:pointer;font-size:1.04rem;font-weight:750;letter-spacing:-.015em}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary::after{content:'+';position:absolute;right:.3rem;top:50%;transform:translateY(-50%);font-size:1.5rem;font-weight:400;color:var(--leaf)}
.faq-list details[open] summary::after{content:'−'}
.faq-list summary:hover{color:var(--leaf)}
.faq-list details p{max-width:75ch;margin:0;padding:0 3rem 1.4rem 0;color:var(--muted);font-size:.94rem;line-height:1.6}
.faq-list details a{text-underline-offset:3px;font-weight:700;color:var(--leaf)}
.footer-inner{padding:2.5rem 0;display:flex;align-items:center;justify-content:space-between;gap:1.5rem}
.footer-inner strong{font-size:.92rem}
.footer-inner p{margin:.35rem 0 0;color:var(--muted);font-size:.81rem}
.footer-inner a{font-size:.84rem;font-weight:750;text-underline-offset:4px;white-space:nowrap}
.footer-inner a:hover{color:var(--leaf)}
.print-sheet{display:none}

@media(max-width:900px){.hero-copy{gap:0 2rem}.hero-lead{font-size:1rem}.forum-section{gap:1.5rem;padding:2.5rem}.site-header nav{gap:1rem}}
@media(max-width:760px){.wrap{width:min(100% - 2rem,620px)}.header-inner{min-height:68px}.site-header nav a:not(.nav-book){display:none}.site-header nav .nav-book{padding:.55rem .75rem}.hero{padding-top:3rem;padding-bottom:2.3rem}.hero-copy{display:block}.eyebrow{margin-bottom:1.2rem}h1{font-size:clamp(3.1rem,8.3vw,4.7rem);margin-bottom:1rem}h1 span{font-size:clamp(1.5rem,4.5vw,2.35rem)}.hero-lead{font-size:1.03rem;margin-bottom:1.5rem}.event-facts{margin:0 0 1.4rem}.hero-image{margin-top:2.3rem}.hero-image img{aspect-ratio:1.75;object-position:center}.process-section{padding:3.8rem 0}.steps{grid-template-columns:1fr}.step,.step+.step{padding:1.2rem 0;border-left:0;border-bottom:1px solid var(--line)}.step-number{margin-bottom:.55rem}.step p{max-width:none}.time-note{margin-top:0;border-top:0;padding-top:1.4rem}.forum-section{grid-template-columns:minmax(0,1fr) 175px;margin-top:4rem;margin-bottom:4rem}.teacher-section{padding-bottom:4rem}.planner-section{padding:4rem 0}.planner-heading{align-items:flex-start;flex-direction:column;gap:.8rem}.private-badge{align-self:flex-start}.school-image{margin-top:3.5rem;margin-bottom:3.5rem}}
@media(max-width:560px){.brand-mark{width:38px;height:38px}.brand-name strong{font-size:.83rem}.brand-name small{font-size:.67rem}.header-inner{gap:.5rem}.site-header nav .nav-book{font-size:.75rem;padding:.52rem .55rem}.hero{padding-top:2.35rem}.hero h1{font-size:clamp(2.55rem,10.6vw,3.5rem)}.hero h1 span{font-size:clamp(1.32rem,5.4vw,1.8rem)}.hero-lead{font-size:.97rem}.event-facts{grid-template-columns:1fr 1fr}.event-facts div{min-height:76px;padding:.8rem .7rem}.event-facts div:first-child{grid-column:1/-1;padding-left:0;border-bottom:1px solid var(--line)}.event-facts div:nth-child(2){padding-left:0;border-left:0}.event-facts strong{font-size:.94rem}.hero-actions{gap:.8rem 1.2rem}.hero-image{margin-top:2rem}.hero-image figcaption{font-size:.7rem}.section-heading{align-items:flex-start;flex-direction:column;gap:.5rem}.count-pill{align-self:flex-start}.forum-section{display:block;padding:2rem 1.2rem;margin-top:3rem;margin-bottom:3rem}.forum-content h2{font-size:2.4rem}.forum-facts{display:block}.forum-facts div+div{margin-top:.8rem}.flyer-preview{max-width:145px;margin:2rem 0 0 1rem;justify-self:start}.teacher-section{padding-top:1rem}.search-bar{grid-template-columns:1fr;margin-top:1.8rem}.search-bar label{grid-column:1}.search-control{grid-row:2}#match-count{justify-self:start;margin:0}.directory-head{display:none}.teacher-card{grid-template-columns:minmax(0,1fr) auto;gap:.3rem 1rem;padding:.8rem .85rem}.teacher-meta h3{grid-column:1/-1}.teacher-meta p{grid-column:1;align-self:center;font-size:.83rem}.teacher-meta p span{display:inline;font-size:.71rem;text-transform:uppercase;font-weight:800;letter-spacing:.08em;margin-right:.3rem;color:var(--leaf)}.teacher-card a,.teacher-card .booking-pending{grid-column:2;grid-row:2;padding:.5rem .65rem;font-size:.75rem}.plan-card{padding:.7rem}.plan-header{display:none}.plan-row label span{display:block;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#45645b;margin-bottom:.25rem}.plan-actions{flex-direction:column;align-items:stretch;padding:.8rem .4rem .3rem}.plan-actions .button{width:100%}.school-image img{aspect-ratio:1.9}.school-image figcaption{flex-direction:column;gap:.1rem}.footer-inner{flex-direction:column;align-items:flex-start}}
@media(max-width:410px){.brand-name small{display:none}.brand-name strong{font-size:.77rem}.site-header nav .nav-book{font-size:.7rem}.teacher-card{grid-template-columns:1fr}.teacher-meta h3,.teacher-meta p,.teacher-card a,.teacher-card .booking-pending{grid-column:1}.teacher-card a,.teacher-card .booking-pending{grid-row:auto;justify-self:start;margin-top:.3rem}}
@media(max-width:560px){.time-note{display:block}.time-note strong{display:block;margin-bottom:.35rem}.plan-row{display:grid;grid-template-columns:minmax(0,1fr);position:relative;gap:.65rem;margin:.5rem 0;padding:3.15rem .85rem 1rem;border:1px solid var(--line);background:#fbfcfa}.plan-row>label{grid-column:1!important}.plan-row-tools{display:flex;position:absolute;inset:.55rem .85rem auto;align-items:center;justify-content:space-between}.plan-row-title{display:block;color:var(--ink);font-size:.89rem}.remove-row{width:auto;height:38px;min-height:38px;padding:.25rem .15rem;border:0;color:var(--leaf);font-size:.78rem;font-weight:750}.remove-icon{display:none}.remove-text{display:inline}.plan-row input,.plan-row textarea{height:48px;font-size:1rem}.plan-row textarea{height:66px}.plan-row input[type=time]{width:100%;padding-right:.75rem}.faq-list summary{font-size:.98rem}.faq-list details p{font-size:.91rem;padding-right:1rem}.faq-section{padding-bottom:4rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
@media print{@page{size:A4;margin:18mm}html,body{background:#fff!important;color:#111!important}.skip-link,.site-header,main,.site-footer{display:none!important}.print-sheet{display:block!important;font:12pt/1.45 Arial,sans-serif;color:#111}.print-sheet h1{font:400 25pt/1.2 Georgia,serif;letter-spacing:-.025em;margin:0 0 4mm}.print-sheet>p{font-size:10pt;color:#444;margin:0 0 10mm}.print-sheet table{width:100%;border-collapse:collapse;margin-bottom:8mm}.print-sheet th,.print-sheet td{text-align:left;padding:3.5mm 2mm;border-bottom:1px solid #bcc7c5;vertical-align:top}.print-sheet th{font-size:9pt;text-transform:uppercase;letter-spacing:.05em}.print-sheet td{font-size:11pt}.print-sheet tr{break-inside:avoid}.print-sheet>p:last-child{margin-top:6mm}}
