/* ---------- Typefaces ---------- */
@font-face{
  font-family:"Fraunces";
  font-style:normal;
  font-weight:450 620;
  font-display:swap;
  src:url(fonts/fraunces-regular.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122;
}
@font-face{
  font-family:"Fraunces";
  font-style:italic;
  font-weight:450 620;
  font-display:swap;
  src:url(fonts/fraunces-italic.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122;
}
@font-face{
  font-family:"Atkinson Hyperlegible";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url(fonts/ah-regular.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122;
}
@font-face{
  font-family:"Atkinson Hyperlegible";
  font-style:italic;
  font-weight:400;
  font-display:swap;
  src:url(fonts/ah-italic.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122;
}
@font-face{
  font-family:"Atkinson Hyperlegible";
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url(fonts/ah-bold.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122;
}

/* ---------- Tokens ---------- */
:root{
  --stone:#EDE7D6;
  --stone-soft:#E4DCC5;
  --ink:#221D14;
  --ink-soft:#4A4030;
  --forest:#24382B;
  --forest-deep:#182620;
  --forest-ink:#EFE7D2;
  --sage:#5B7A56;
  --gold-seal:#B9852E;
  --gold-badge:#F8CE68;
  --line: rgba(34,29,20,.18);
  --line-on-forest: rgba(239,231,210,.22);
  --maxw:820px;
}
@media (prefers-color-scheme: dark){
  :root{
    --stone:#1A211C;
    --stone-soft:#20281F;
    --ink:#EDE7D6;
    --ink-soft:#C9C0A9;
    --forest:#101A14;
    --forest-deep:#0B120E;
    --forest-ink:#F1E8CC;
    --sage:#8FAE87;
    --gold-seal:#E3B458;
    --gold-badge:#F8CE68;
    --line: rgba(237,231,214,.16);
    --line-on-forest: rgba(239,231,210,.16);
  }
}
:root[data-theme="dark"]{
  --stone:#1A211C;
  --stone-soft:#20281F;
  --ink:#EDE7D6;
  --ink-soft:#C9C0A9;
  --forest:#101A14;
  --forest-deep:#0B120E;
  --forest-ink:#F1E8CC;
  --sage:#8FAE87;
  --gold-seal:#E3B458;
  --gold-badge:#F8CE68;
  --line: rgba(237,231,214,.16);
  --line-on-forest: rgba(239,231,210,.16);
}
:root[data-theme="light"]{
  --stone:#EDE7D6;
  --stone-soft:#E4DCC5;
  --ink:#221D14;
  --ink-soft:#4A4030;
  --forest:#24382B;
  --forest-deep:#182620;
  --forest-ink:#EFE7D2;
  --sage:#5B7A56;
  --gold-seal:#B9852E;
  --gold-badge:#F8CE68;
  --line: rgba(34,29,20,.18);
  --line-on-forest: rgba(239,231,210,.22);
}

/* ---------- Base ---------- */
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} }
body{
  margin:0;
  background:var(--stone);
  color:var(--ink);
  font-family:"Atkinson Hyperlegible",Verdana,"Segoe UI",sans-serif;
  font-size:20px;
  line-height:1.65;
}
h1,h2,h3{
  font-family:"Fraunces","Iowan Old Style",Georgia,serif;
  font-weight:600;
  text-wrap:balance;
  line-height:1.15;
  margin:0;
}
em, .ital{ font-family:"Fraunces",Georgia,serif; font-style:italic; font-weight:500; }
p{margin:0 0 1rem;}
a{color:var(--gold-seal);}
a:focus-visible, button:focus-visible, .btn:focus-visible{
  outline:3px solid var(--sage);
  outline-offset:3px;
}
img{max-width:100%;display:block;}

.skip{
  position:absolute;left:-9999px;top:0;
  background:var(--forest-deep);color:var(--forest-ink);padding:.8rem 1.2rem;
  z-index:200;
}
.skip:focus{left:0;}

.kicker{
  display:block;font-size:.82rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--sage);font-weight:700;margin-bottom:.5rem;font-family:"Atkinson Hyperlegible",sans-serif;
}

/* ---------- Header ---------- */
header.site{
  background:var(--forest);
  position:sticky;top:0;z-index:60;
  border-bottom:1px solid var(--line-on-forest);
}
.bar{
  max-width:var(--maxw);margin:0 auto;padding:.7rem 1.2rem;
  display:flex;align-items:center;gap:.8rem;
}
.bar .seal-sm{width:38px;height:38px;border-radius:50%;flex:none;box-shadow:0 0 0 2px rgba(248,206,104,.55);}
.bar .word{
  color:var(--forest-ink);font-weight:700;font-size:1rem;margin-right:auto;
  font-family:"Fraunces",Georgia,serif;
}
nav.main{overflow-x:auto;-webkit-overflow-scrolling:touch;}
nav.main ul{list-style:none;display:flex;gap:.2rem;margin:0;padding:0;white-space:nowrap;}
nav.main a{
  display:block;color:var(--forest-ink);text-decoration:none;font-weight:700;font-size:.98rem;
  padding:.5rem .7rem;border-bottom:2px solid transparent;
}
nav.main a:hover{border-bottom-color:var(--gold-badge);}

/* ---------- Masthead ---------- */
.masthead{
  background:var(--forest);
  color:var(--forest-ink);
  text-align:center;
  padding:3.2rem 1.2rem 3.6rem;
}
.seal-lg{
  width:128px;height:128px;border-radius:50%;margin:0 auto 1.5rem;
  box-shadow:
    0 0 0 3px var(--forest),
    0 0 0 5px rgba(248,206,104,.65),
    0 10px 26px rgba(0,0,0,.35);
}
.masthead h1{font-size:2.5rem;color:#fff;}
.masthead .sv{
  margin:.5rem 0 1.4rem;font-size:1.15rem;color:var(--gold-badge);
}
.masthead .lead{
  max-width:600px;margin:0 auto;font-size:1.3rem;color:var(--forest-ink);opacity:.92;
}

/* ---------- Photo interlude ---------- */
.interlude{position:relative;background:var(--forest-deep);}
.interlude img{width:100%;height:clamp(220px,38vw,420px);object-fit:cover;object-position:50% 60%;}
.interlude .scrim{
  position:absolute;inset:0;
  background:linear-gradient(to top, rgba(16,26,20,.92) 0%, rgba(16,26,20,.55) 42%, rgba(16,26,20,0) 72%);
  display:flex;align-items:flex-end;
}
.interlude blockquote{
  margin:0;padding:1.6rem 1.2rem 1.8rem;max-width:var(--maxw);margin:0 auto;width:100%;
}
.interlude blockquote p{
  font-family:"Fraunces",Georgia,serif;font-style:italic;font-weight:500;
  font-size:clamp(1.25rem,2.6vw,1.6rem);color:#fff;line-height:1.4;margin:0 0 .5rem;
  text-wrap:balance;
}
.interlude blockquote cite{
  font-style:normal;font-size:.85rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--gold-badge);font-weight:700;
}

/* ---------- Main / sections ---------- */
main{max-width:var(--maxw);margin:0 auto;padding:0 1.2rem;}
section{padding:3rem 0;border-bottom:1px solid var(--line);}
section:last-of-type{border-bottom:0;}
section h2{font-size:1.8rem;}
section > p{max-width:66ch;}

.lede-fact{font-size:1.15rem;color:var(--ink-soft);max-width:60ch;}
.lede-fact .num{
  font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.2em;color:var(--gold-seal);
  font-variant-numeric:tabular-nums;
}

dl.activities{margin:1.6rem 0 0;padding:0;}
dl.activities .row{
  display:grid;grid-template-columns:minmax(0,15ch) 1fr;gap:.3rem 1.6rem;
  padding:1.1rem 0;border-top:1px solid var(--line);
}
dl.activities .row:first-child{border-top:1px solid var(--line);}
dl.activities dt{
  font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.08rem;color:var(--ink);
}
dl.activities dd{margin:0;color:var(--ink-soft);}

.fee-wrap{
  display:flex;align-items:stretch;gap:0;margin:1.6rem 0 1.8rem;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
}
.fee{flex:1 1 0;padding:1.3rem 1rem;text-align:center;}
.fee .amt{
  display:block;font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:2.1rem;
  color:var(--gold-seal);font-variant-numeric:tabular-nums;line-height:1;
}
.fee .per{display:block;font-size:.85rem;color:var(--ink-soft);margin-top:.3rem;}
.fee .cond{display:block;font-size:.95rem;margin-top:.5rem;color:var(--ink);}
.fee-div{width:1px;background:var(--line);flex:none;}

.btn{
  display:inline-block;background:var(--gold-seal);color:var(--forest-deep);text-decoration:none;
  font-weight:700;padding:.9rem 1.5rem;border-radius:4px;margin-top:.3rem;
}
.btn:hover{background:var(--gold-badge);}

.plaque{
  background:var(--stone-soft);border:1px solid var(--line);border-radius:4px;
  padding:1.6rem 1.7rem;display:inline-block;
}
.plaque p{margin:.25rem 0;}
.plaque .name{font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.2rem;}

/* ---------- Events ---------- */
.event-grid{
  display:grid;grid-template-columns:minmax(0,270px) 1fr;gap:2rem;align-items:start;margin-top:1.6rem;
}
.flyer{margin:0;}
.flyer > a{display:block;border:1px solid var(--line);border-radius:4px;overflow:hidden;line-height:0;}
.flyer > a:hover{border-color:var(--gold-seal);}
.flyer img{width:100%;height:auto;}
.flyer figcaption{font-size:.9rem;color:var(--ink-soft);margin-top:.6rem;line-height:1.4;}
.event-when{
  font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.5rem;line-height:1.25;margin:0 0 .3rem;
  color:var(--ink);text-wrap:balance;
}
.event-where{font-size:1.1rem;color:var(--ink-soft);margin-bottom:1.2rem;}
.event-sub{
  font-size:.82rem;letter-spacing:.13em;text-transform:uppercase;font-weight:700;
  color:var(--sage);margin:1.4rem 0 .2rem;
}
ul.programme{list-style:none;margin:0;padding:0;}
ul.programme li{padding:.75rem 0;border-top:1px solid var(--line);color:var(--ink);}
ul.programme li:last-child{border-bottom:1px solid var(--line);}
ul.programme .who{display:block;color:var(--ink-soft);font-size:.95em;}
.event-note{margin-top:1.2rem;font-weight:700;}

dl.schedule{margin:0;padding:0;}
dl.schedule .row{
  display:grid;grid-template-columns:minmax(0,13ch) 1fr;gap:.3rem 1.6rem;
  padding:1.1rem 0;border-top:1px solid var(--line);
}
dl.schedule .row:last-child{border-bottom:1px solid var(--line);}
dl.schedule dt{
  font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.08rem;color:var(--gold-seal);
  font-variant-numeric:tabular-nums;
}
dl.schedule dd{margin:0;color:var(--ink-soft);}
dl.schedule dd strong{display:block;color:var(--ink);font-weight:700;}

/* ---------- Footer ---------- */
footer.site{
  background:var(--forest-deep);color:var(--forest-ink);
  padding:2.6rem 1.2rem;text-align:center;
}
footer.site .fbrand{font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.2rem;color:#fff;margin-bottom:.4rem;}
footer.site a{color:var(--gold-badge);}
footer.site .fine{opacity:.65;font-size:.9rem;margin-top:1.2rem;}

@media (max-width:640px){
  body{font-size:18.5px;}
  .masthead h1{font-size:2rem;}
  .seal-lg{width:104px;height:104px;}
  dl.activities .row{grid-template-columns:1fr;gap:.35rem;}
  dl.schedule .row{grid-template-columns:1fr;gap:.35rem;}
  .event-grid{grid-template-columns:1fr;gap:1.4rem;}
  .flyer{max-width:320px;order:2;}
  .fee-wrap{flex-direction:column;}
  .fee-div{width:auto;height:1px;}
}

/* ---------- Board table ---------- */
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.table-wrap{overflow-x:auto;margin-top:1.4rem;}
table.board{width:100%;border-collapse:collapse;}
table.board th,table.board td{text-align:left;vertical-align:top;padding:.95rem 1.2rem .95rem 0;border-top:1px solid var(--line);}
table.board tbody tr:last-child th,table.board tbody tr:last-child td{border-bottom:1px solid var(--line);}
table.board thead th{
  font-size:.82rem;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--sage);
  border-top:0;padding-top:0;
}
table.board tbody th{font-weight:400;color:var(--ink-soft);white-space:nowrap;}
table.board td.name{font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.1rem;color:var(--ink);}
table.board td:last-child{color:var(--ink-soft);padding-right:0;}
@media (max-width:640px){
  table.board th,table.board td{padding-right:.6rem;}
  table.board tbody th{white-space:normal;font-size:.9rem;}
  table.board td.name{font-size:1rem;}
  table.board td:last-child{font-size:.95rem;}
}

/* ---------- Sub pages / gallery ---------- */
.pagehead{background:var(--forest);color:var(--forest-ink);text-align:center;padding:2.4rem 1.2rem 2.6rem;}
.pagehead h1{font-size:2.3rem;color:#fff;}
.pagehead a{color:var(--gold-badge);}
.pagehead p{margin:.8rem 0 0;}
nav.main a[aria-current="page"]{border-bottom-color:var(--gold-badge);color:#fff;}
.gallery{columns:3 220px;column-gap:.9rem;margin-top:1.4rem;}
.gallery figure{margin:0 0 .9rem;break-inside:avoid;}
.gallery a{display:block;border:1px solid var(--line);border-radius:4px;overflow:hidden;line-height:0;}
.gallery a:hover{border-color:var(--gold-seal);}
.gallery img{width:100%;height:auto;}
.gallery-note{font-size:.95rem;color:var(--ink-soft);margin-top:1rem;}

.bar a.brand{display:flex;align-items:center;gap:.8rem;text-decoration:none;margin-right:auto;}
