:root{font:16px/1.55 Inter,system-ui,sans-serif;color:#142d30;background:#f2f4ec;--ink:#173736;--line:#d5ddd0}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-underline-offset:.18em}header,footer{display:flex;justify-content:space-between;padding:1.1rem max(5vw,1rem);background:var(--ink);color:#fff}main{max-width:1150px;margin:auto;padding:2rem clamp(1rem,4vw,3rem) 4rem}.hero{position:relative;overflow:hidden;background:#dce8ce;border-radius:1.6rem;padding:clamp(1.4rem,6vw,5rem);isolation:isolate}.hero h1{max-width:680px}.intro{max-width:510px;font-size:1.16rem}.art{position:absolute;right:1rem;bottom:-6.5rem;color:#b6cba9;font:23rem Georgia;z-index:-1}.art span{font-size:8rem;vertical-align:top}small{letter-spacing:.15em;font-weight:800}h1{font-size:clamp(2.3rem,6vw,4.6rem);line-height:1.03;letter-spacing:-.055em;margin:.65em 0 .35em}h2{font-size:clamp(1.5rem,3vw,2.15rem);letter-spacing:-.04em}h3{margin:0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:.8rem}article,section:not(.hero){background:#fff;padding:1.3rem;border-radius:1rem;border:1px solid var(--line)}section+section,.booking{margin-top:1rem}button,.button{display:inline-block;background:var(--ink);border:0;color:white;padding:.75rem 1rem;border-radius:.55rem;font:inherit;font-weight:650;text-decoration:none;cursor:pointer}button:disabled{opacity:.5;cursor:default}form{display:flex;flex-wrap:wrap;align-items:end;gap:.85rem}label{display:grid;gap:.25rem;font-size:.92rem}input,select{font:inherit;padding:.65rem;border:1px solid var(--line);border-radius:.45rem;background:white;color:var(--ink);max-width:100%}#booking-form{max-width:650px}#booking-status{flex-basis:100%;margin:0}nav{margin-bottom:1rem}.row{display:flex;gap:.6rem;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:.55rem 0;overflow-wrap:anywhere}.row button{padding:.35rem .65rem}table{border-collapse:collapse;width:100%;font-size:.9rem}td,th{padding:.45rem;text-align:left;border-bottom:1px solid var(--line)}#report{overflow-x:auto;margin-top:1rem}@media(max-width:600px){.art{opacity:.5}.row{align-items:flex-start}form label{width:100%}}

.week-controls{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin:1rem 0 .5rem}.week-scroll{overflow:auto;max-height:28rem;margin-bottom:1rem}.week-scroll table{min-width:590px;table-layout:fixed}.week-scroll th,.week-scroll td{text-align:center;height:2rem;padding:.2rem;border:1px solid var(--line)}.week-scroll thead th{position:sticky;top:0;background:#e9f0e1;z-index:1}.week-scroll tbody th{background:#f4f6ef}.week-scroll td{color:#63716c}.week-scroll button{padding:.2rem .35rem;font-size:.85rem}.week-scroll button[aria-pressed=true]{outline:2px solid #46752c;outline-offset:2px}
.week-scroll td:has(button){padding:0}.week-scroll td button{width:100%;min-height:2rem;border-radius:0}.week-scroll button[aria-pressed=true]{outline-offset:-3px;background:#46752c}
:root{--line:#d9e2dc;--ink:#153a32;background:#f6f8f4}
header a,footer a{text-decoration:none;font-weight:650}
.hero{background:linear-gradient(135deg,#e6efdd,#cde1cc);border:1px solid #d3e2d3}
.hero .intro{max-width:52ch}
.grid article{display:flex;flex-direction:column}
.grid article strong{margin-top:auto;font-variant-numeric:tabular-nums}
.grid article h3{letter-spacing:-.02em}
.booking{padding:clamp(.85rem,3vw,2rem)!important;scroll-margin-top:1rem}
.week-scroll{border:1px solid var(--line);border-radius:.7rem;max-height:min(32rem,60vh);overscroll-behavior:contain}
.week-scroll th,.week-scroll td{font-variant-numeric:tabular-nums}
.week-scroll tbody th,.week-scroll thead th:first-child{position:sticky;left:0}
.week-scroll thead th:first-child{z-index:2}
.week-scroll button{min-height:44px;touch-action:manipulation}
.week-scroll button[aria-pressed=true]{background:#46752c;outline:2px solid white}
.week-status,.selection-summary{font-size:.92rem;color:#39554b}
.selection-summary{font-weight:700;margin-bottom:.4rem}
.selected-slots{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}
.selected-slots button{background:#e4eedc;color:#173736;padding:.45rem .65rem;min-height:44px}
label[hidden]{display:none}
#booking-form{max-width:none;margin-top:1rem}
#booking-form input{width:100%;font-size:16px}
button,.button{touch-action:manipulation}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #547c45;outline-offset:2px}
@media(prefers-reduced-motion:no-preference){button:not(:disabled),.button{transition:transform 120ms ease-out}button:not(:disabled):active,.button:active{transform:scale(.97)}}
@media(hover:hover) and (pointer:fine){button:not(:disabled):hover,.button:hover{background:#285a49;color:white}}
@media(max-width:600px){.week-controls button{padding:.55rem;min-height:44px}.week-controls strong{white-space:nowrap;font-size:.9rem}.art{right:-4rem}.row{flex-wrap:wrap}.row input,.row select{max-width:100%}}
:root {
  --canvas:#101012;
  --panel:#19191e;
  --panel-raised:#24242c;
  --paper:#f6f3fa;
  --muted:#c3bfcd;
  --line:#3d3b48;
  --ink:#241935;
  --lilac:#d9c7fb;
  --mint:#c9efd9;
  --peach:#ffd6bd;
  --blue:#c5d9ff;
  --radius-panel:1.35rem;
  --radius-control:.65rem;
  --gutter:clamp(1rem,4vw,4rem);
  --content:86rem;
  --title:clamp(2.3rem,6.7vw,7.4rem);
  --section-title:clamp(1.7rem,4vw,3.6rem);
  --ease-out:cubic-bezier(.23,1,.32,1);
  --press:120ms;
  --reveal:560ms;
  --lift:220ms;
}
body { background:var(--canvas);color:var(--paper);color-scheme:dark }
main { max-width:var(--content);padding-inline:var(--gutter) }
header,footer { background:var(--canvas);padding-inline:var(--gutter);border-block-end:1px solid var(--line);align-items:center;gap:.75rem }
header a,footer a,nav a { min-height:44px;display:inline-flex;align-items:center }
.hero { display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:1rem 2rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-panel);padding:clamp(1.1rem,4vw,4rem) }
.hero > :not(.math-wall) { grid-column:1 }
.hero h1 { font-size:var(--title);line-height:.98;font-weight:850;letter-spacing:-.065em;text-transform:uppercase;margin:0;overflow-wrap:anywhere }
.hero .intro { margin:0;color:var(--muted) }
.hero .button { justify-self:start }
.math-wall { grid-column:2;grid-row:1 / span 4;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;align-self:stretch;transform:rotate(-4deg);padding:.6rem }
.math-wall span { display:grid;place-items:center;min-height:clamp(4rem,9vw,8rem);border-radius:var(--radius-control);background:var(--lilac);color:var(--ink);font-size:clamp(1.55rem,4.5vw,5rem);font-weight:850;letter-spacing:-.07em;line-height:1 }
.math-wall span:nth-child(3n+2) { background:var(--mint) }
.math-wall span:nth-child(3n) { background:var(--peach) }
.math-wall span:nth-child(4) { background:var(--blue) }
h2 { font-size:var(--section-title);line-height:1.08 }
.grid { gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr)) }
.grid article { color:var(--ink);border:0;border-radius:var(--radius-panel);background:var(--lilac);padding:clamp(1rem,2.4vw,2rem) }
.grid article:nth-child(2) { background:var(--mint) }
.grid article:nth-child(3) { background:var(--peach) }
.grid article a { min-height:44px;display:flex;align-items:center }
section:not(.hero) { background:var(--panel);border-radius:var(--radius-panel) }
.booking { margin-top:clamp(2rem,6vw,6rem) }
button,.button,button:not(:disabled):hover,.button:hover { color:var(--ink);background:var(--lilac);border-radius:var(--radius-control);min-height:44px }
input,select { background:var(--panel-raised);color:var(--paper);min-height:44px }
.week-scroll thead th,.week-scroll tbody th { background:var(--panel-raised) }
.week-scroll td,.week-status,.selection-summary { color:var(--muted) }
.week-scroll button[aria-pressed=true] { background:var(--mint);color:var(--ink);outline:2px solid var(--paper) }
.selected-slots button { background:var(--blue);color:var(--ink) }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible { outline-color:var(--blue) }
.grid a:focus-visible { outline-color:var(--ink) }
#admin nav { display:flex;flex-wrap:wrap;gap:.35rem .8rem;align-items:center }
#admin section { scroll-margin-top:1rem }
#admin .row > * { min-width:0 }
@media(hover:hover) and (pointer:fine) {
  .grid article:hover { transform:translateY(-4px) }
  button:not(:disabled):hover,.button:hover { filter:brightness(1.08) }
}
@media(prefers-reduced-motion:no-preference) {
  button:not(:disabled),.button { transition:transform var(--press) var(--ease-out),filter var(--press) var(--ease-out) }
  .grid article { transition:transform var(--lift) var(--ease-out) }
  [data-reveal].entered { animation:arrive var(--reveal) var(--ease-out) both }
  @keyframes arrive { from { opacity:.45;transform:translateY(14px) } to { opacity:1;transform:translateY(0) } }
}
@media(prefers-reduced-motion:reduce) { .grid article:hover { transform:none } }
@media(max-width:720px) {
  .hero,.grid { grid-template-columns:minmax(0,1fr) }
  .math-wall { grid-column:1;grid-row:auto;grid-template-columns:repeat(3,minmax(0,1fr));transform:none;padding:0;margin-top:.5rem }
  .week-controls strong { white-space:normal;text-align:center }
}
:root{
  --canvas:#131316;
  --panel:#1b1b20;
  --paper:#faf8f9;
  --muted:#d2cdd5;
  --line:#413e48;
  --display:"Arial Narrow","Roboto Condensed",Arial,sans-serif;
  --action-radius:.35rem;
  --press:120ms;
  --reveal:360ms;
}
.hero h1{font-family:var(--display);font-stretch:condensed;letter-spacing:-.045em;text-wrap:balance}
.hero{background:var(--canvas)}
.hero .intro{line-height:1.45}
button,.button,button:not(:disabled):hover,.button:hover{border-radius:var(--action-radius)}
header a:last-child,.button,#booking-form>button{background:var(--paper);color:var(--ink)}
header a:last-child{padding:0 .95rem;border-radius:var(--action-radius)}
.grid article{border-radius:var(--action-radius)}
.math-wall span{border-radius:var(--action-radius)}
.request-actions{display:flex;flex-wrap:wrap;gap:.45rem}
.week-scroll button{font-weight:750}
@media(max-width:600px){
  .week-scroll table{min-width:0;font-size:.72rem}
  .week-scroll th,.week-scroll td{padding:.1rem;overflow-wrap:anywhere}
  .week-scroll button{font-size:.7rem;padding:.1rem;letter-spacing:-.025em}
  .math-wall span{min-height:3rem}
}
