@font-face{font-family:Inter Tight;src:url(/fonts/inter-tight-latin-wght-normal.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
:root{color-scheme:light;--ink:#101820;--teal:#245b5b;--bronze:#8e5a2b;--mint:#6fa39c;--stone:#d7d9d4;--muted:#4a5958;--line:#88958f;--paper:#f5f5f0}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.55 "IBM Plex Sans",sans-serif}
.top{background:#fafaf6;min-height:83px;padding:18px clamp(22px,6vw,100px);display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line)}
.wordmark{display:flex;align-items:center;gap:14px;font:600 clamp(16px,2.5vw,21px)/1 "Inter Tight",sans-serif;letter-spacing:.035em;text-transform:uppercase}
.wordmark img{flex:none;object-fit:contain}
.top-label,.eyebrow,legend,label,.muted,footer{font-family:"IBM Plex Mono",monospace;letter-spacing:.055em;text-transform:uppercase;font-size:.76rem}
.top-label,.eyebrow,.muted,footer{color:var(--muted)}
main{width:min(1060px,100% - 48px);margin:clamp(40px,8vw,102px) auto}
main.wide{width:min(1200px,100% - 48px);margin-top:46px}
.grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(30px,6vw,90px);align-items:start}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px}
h1,h2{font-family:"Inter Tight",sans-serif;font-weight:600;line-height:1.05;margin:.4em 0}
h1{font-size:clamp(2.65rem,5vw,4.3rem);letter-spacing:-.04em;max-width:11em}
h2{font-size:1.65rem}
.intro{color:var(--muted);margin-bottom:30px;max-width:44ch}
.event-details{background:#e4eae5;padding:clamp(23px,4vw,42px);border-top:2px solid var(--teal);margin-top:5px}
.event-details .eyebrow{color:var(--teal)}
.event-details p{color:var(--muted);margin:.65em 0}
.event-details .location,.instructions{white-space:pre-wrap;overflow-wrap:anywhere}
.event-details .location{margin-top:24px}
.instructions{border-top:1px solid #6fa39c70;padding-top:18px}
form{margin-top:20px}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
fieldset{border:0;margin:20px 0 22px;padding:0;min-width:0}
legend{margin-bottom:10px}
legend .muted{margin-left:8px}
.contact{margin:0 0 4px}
.booking-progress{display:inline-block;margin-left:12px;color:var(--muted);font-size:.88rem}
.slots{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:9px}
.slot{position:relative}
.slot input{position:absolute;opacity:0;width:1px;height:1px}
.slot span{position:relative;display:block;background:#fafaf7;border:1px solid var(--line);padding:13px 12px;cursor:pointer}
.slot strong,.slot small{display:block}
.slot strong{font-size:.97rem;letter-spacing:0}
.slot small{color:var(--muted);font-size:.72rem}
.slot input:checked+span{border-color:var(--teal);background:#dce9e3}
.slot input:checked+span::after{content:"";position:absolute;top:8px;right:8px;width:5px;height:9px;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg)}
.slot input:disabled+span{opacity:.63;cursor:default}
.slot input:focus-visible+span,:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
input:not([type=radio]):not([type=checkbox]),textarea{display:block;width:100%;margin:6px 0 16px;padding:10px 12px;font:400 16px "IBM Plex Sans",sans-serif;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:0}
textarea{min-height:92px}
button,.button{display:inline-block;padding:11px 18px;border:1px solid transparent;border-radius:0;background:var(--bronze);color:white;font:500 16px "IBM Plex Sans",sans-serif;text-decoration:none;cursor:pointer}
button:hover,.button:hover{background:#77481f}
button:disabled{opacity:.7;cursor:wait}
.secondary{background:transparent;border-color:var(--line);color:var(--ink)}
.secondary:hover{background:#dce9e3}
.fine{font-size:.88rem;color:var(--muted);max-width:48ch}
.notice,.current{border-left:2px solid var(--mint);background:#e4eae5;padding:12px 16px}
.current p{margin:4px 0 0}
.current strong{display:block;margin-top:6px}
.cf-turnstile{margin:2px 0 14px}
.panel{max-width:590px}
.card{border:1px solid var(--line);padding:22px}
.admin-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}
.admin-nav form{margin:0}
.events{list-style:none;padding:0}
.events li{padding:12px 0;border-bottom:1px solid var(--line)}
.events span{display:block;color:var(--muted)}
a{color:var(--teal);text-underline-offset:.22em}
.check{display:flex;align-items:center;gap:8px;margin-bottom:16px}
details{margin-top:18px}
summary{cursor:pointer}
.roster{margin-top:30px}
.roster-row{border-bottom:1px solid var(--line);padding:0 0 12px;overflow-wrap:anywhere}
footer{width:min(1200px,100% - 48px);margin:0 auto 30px;padding-top:18px;border-top:1px solid var(--line)}
footer span{margin:0 5px}
@media(max-width:700px){.grid,.admin-grid,.fields{grid-template-columns:1fr}.top-label{display:none}.event-details{grid-row:1}.event-details h2{font-size:1.35rem}}

.booking-page{max-width:760px;margin-inline:auto}
.booking-page h1{max-width:none;font-size:clamp(2.3rem,6vw,3.7rem);margin:.25em 0 .45em}
.booking-page .event-details{display:grid;grid-template-columns:1fr auto;gap:3px 18px;margin:0 0 20px;padding:15px 19px}
.booking-page .event-details .eyebrow{grid-column:1/-1}
.booking-page .event-details h2{margin:0;font-size:1.35rem}
.booking-page .event-details p{margin:0}
.booking-page .event-details .location,.booking-page .instructions{grid-column:1/-1;margin-top:4px}
.booking-card{background:#fafaf7;border:1px solid var(--line);padding:clamp(16px,4vw,28px);margin:0}
.booking-card fieldset:first-of-type{margin-top:0}
.booking-card .slots{grid-template-columns:repeat(3,minmax(0,1fr))}
.booking-card .slot span{background:#fff}
.booking-card .slot input:checked+span{background:#dce9e3}
.booking-card .fine{margin-bottom:0}
@media(max-width:700px){
  .booking-page .event-details{grid-template-columns:1fr}
  .booking-card .slot span{padding:10px 6px}
  .booking-card .slot strong{font-size:.85rem}
  .booking-card .slot small{font-size:.66rem}
}
