/* Muskoka Pulse, redesign 2026-11-03
   One navy dusk world. Accents come from the logos: sun gold #FFC56A and bright sun orange #FF9A2E (core #FFB547; bright pass 2026-11-03),
   ripple teal #33B7AA and #64A5A4, wordmark ivory #F8F5EC.
   Type: Crimson Pro (reading and headings), Source Sans 3 (labels and controls). SIL OFL 1.1. */
@font-face{font-family:"Crimson Pro";src:url(/assets/fonts/crimson-pro.woff2) format("woff2");font-weight:400 650;font-style:normal;font-display:swap}
@font-face{font-family:"Crimson Pro";src:url(/assets/fonts/crimson-pro-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Source Sans 3";src:url(/assets/fonts/source-sans-3.woff2) format("woff2");font-weight:400 650;font-style:normal;font-display:swap}

:root{
/* navy depth steps: n0 night, n1 bands, n2 page, n3 raised */
--n0:#0A1A2F;--n1:#0F2A47;--n2:#14395E;--n3:#1A4670;--card:#173F66;
--ivory:#F8F5EC;--fg:#ECE5D5;--muted:#C9D2DA;--link:#7FD3C8;
--sun1:#FFC56A;--sun2:#FF9A2E;--sun:#FF9A2E;--sun-core:#FFB547;--on-sun:#0F2440;--teal:#33B7AA;--teal2:#64A5A4;
--line:rgba(201,210,218,.16);--line-strong:rgba(100,165,164,.42);
--serif:"Crimson Pro","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
--sans:"Source Sans 3","Gill Sans","Segoe UI",system-ui,sans-serif;
/* rhythm */
--s1:.25rem;--s2:.5rem;--s3:.75rem;--s4:1rem;--s5:1.5rem;--s6:2rem;--s7:3rem;--s8:4rem;--s9:6rem;
--r-sm:8px;--r:14px;--r-lg:20px;
--wrap:76rem;--read:38rem;--gut:clamp(1.25rem,4vw,2.5rem);
--head-h:64px;
--ease:cubic-bezier(.2,.7,.2,1);
color-scheme:dark only}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--head-h) + 5rem);background:var(--n2)}
body{margin:0;font-family:var(--serif);font-size:clamp(1.125rem,1.05rem + .4vw,1.25rem);line-height:1.55;color:var(--fg);background:var(--n2);font-variant-numeric:lining-nums;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
/* Phone browsers: lock the designed navy dusk; do not auto-invert. */
:root,html{color-scheme:dark only}
html{background-color:#14395E;color:#ECE5D5}
body{background-color:#14395E;color:#ECE5D5}

img,svg{display:block;max-width:100%}
a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px;text-decoration-color:rgba(127,211,200,.55);transition:color .2s,text-decoration-color .2s}
a:hover{text-decoration-color:var(--sun1)}
:focus-visible{outline:2px solid var(--sun1);outline-offset:3px;border-radius:4px}
h1,h2,h3,h4,h5{font-family:var(--serif);font-weight:450;line-height:1.08;letter-spacing:-.012em;margin:0;color:var(--ivory);text-wrap:balance}
p{margin:0 0 1em;max-width:70ch}
b,strong{font-weight:600}
.wrap{max-width:calc(var(--wrap) + 2*var(--gut));margin:0 auto;padding:0 var(--gut)}
.skip{position:absolute;left:-999px;top:0;background:var(--sun1);color:var(--n0);padding:.75rem 1rem;z-index:99;font-family:var(--sans);font-weight:600}
.skip:focus{left:1rem;top:.5rem}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.num{font-variant-numeric:tabular-nums lining-nums}
.kicker{font:600 .75rem/1.3 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--sun1);margin:0 0 var(--s4)}

/* ---------- surfaces ---------- */
.dusk{background:linear-gradient(180deg,var(--n2) 0%,var(--n1) 100%);color:var(--ivory)}
.dusk a{color:var(--ivory)}
.paper{background:var(--n2);color:var(--fg);position:relative}
.night{background:var(--n0);color:var(--ivory)}
.section{padding:clamp(3.5rem,7vw,6rem) 0}

/* ---------- header (round 3) ----------
   Phone (<48rem): a big centred dock + wordmark, the menu button centred under it. The header is sticky with a
   negative top equal to the big brand block, so on scroll the block slides away and only the 52px bar stays; JS
   adds .compact, which fades in the small logo and moves the button right (transform and opacity only).
   48-64rem: logo left, pill and menu button right. 64rem+: logo | Events | History | Media | About | pill. */
.site-head{--sym-h:36px;--wm-h:36px;position:sticky;top:0;z-index:20;background:rgba(15,42,71,.9);-webkit-backdrop-filter:saturate(150%) blur(16px);backdrop-filter:saturate(150%) blur(16px);border-bottom:1px solid transparent;transition:background-color .3s,border-color .3s,box-shadow .3s}
.site-head.is-scrolled{background:rgba(10,26,47,.92);border-bottom-color:var(--line);box-shadow:0 8px 30px -18px rgba(0,0,0,.6)}
.head-wrap{display:flex;align-items:center;gap:var(--s4);min-height:var(--head-h)}
.brand{display:flex;align-items:center;gap:calc(var(--wm-h)*.3);min-height:44px;margin-right:auto;text-decoration:none;flex:none}
.brand .sym,.brand-mini .sym{height:var(--sym-h);width:auto;flex:none;overflow:visible}
.brand .wm,.brand-mini .wm{height:var(--wm-h);width:auto;max-width:none;flex:none}
/* dock symbol (dockglow, 2026-11-03). In the header, big phone header and compact bar the sun breathes: a soft warm
   glow swells and fades while the sun rises about 1.5px and settles, and the three amber reflections under it shimmer
   faintly, all on one 5s ease-in-out cycle. Transform and opacity only, CSS only (browsers throttle hidden tabs).
   Hover/focus brightens the glow a little. The footer stays still with a static glow. Reduced motion: static glow. */
.sym .nav-sun,.sym .nav-glow-c{transform-box:fill-box;transform-origin:50% 100%}
.sym .nav-glow-c{transform-origin:50% 50%}
.sym .nav-glow{opacity:.75;transition:opacity .45s ease-in-out}
.sym .nav-glow-c{opacity:.7}
.brand:hover .nav-glow,.brand:focus-visible .nav-glow,.foot-brand:hover .nav-glow{opacity:1}
@media (prefers-reduced-motion:no-preference){
  .site-head .sym .nav-glow-c{animation:dk-glow 5s ease-in-out infinite;will-change:opacity,transform}
  .site-head .sym .nav-sun{animation:dk-sun 5s ease-in-out infinite}
}
@keyframes dk-glow{0%,100%{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}  /* logofix 2026-11-03: never dimmer than the static .7 glow */
@keyframes dk-sun{0%,100%{transform:translateY(0)}50%{transform:translateY(-12%)}}
/* logofix 2026-11-03: the dk-wl reflection shimmer (opacity dip to .62) is removed so the amber reflections stay full strength */
.nav{display:flex;gap:.1rem;margin:0;padding:0;list-style:none}
.nav a{position:relative;display:flex;align-items:center;min-height:48px;padding:0 .85rem;font:500 1.125rem/1 var(--sans);letter-spacing:.005em;text-decoration:none;color:rgba(248,245,236,.9);transition:color .2s}
.nav a::after{content:"";position:absolute;left:.85rem;right:.85rem;bottom:9px;height:2px;border-radius:2px;background:var(--sun1);transform:scaleX(0);transform-origin:left;transition:transform .3s ease-out}
.nav a:hover{color:var(--ivory)}
.nav a:hover::after,.nav a[aria-current=page]::after{transform:scaleX(1)}
.nav a[aria-current=page]{color:var(--sun1)}
.nav-nl{display:none}
.nl-pill{display:inline-flex;align-items:center;min-height:46px;padding:0 1.25rem;border-radius:999px;background:var(--sun);color:var(--on-sun);font:600 1.0625rem/1 var(--sans);text-decoration:none;white-space:nowrap;flex:none;transition:background-color .2s,transform .2s ease-out}
.nl-pill:hover{background:var(--sun-core);transform:translateY(-1px)}
.nl-pill:focus-visible{outline-color:var(--ivory)}
.nl-pill[aria-current=page]{background:var(--ivory)}
.nl-full{display:none}
@media (min-width:80rem){.nl-full{display:inline}.nl-short{display:none}}
.head-bar{display:contents}
.brand-mini{display:none}
.menu-btn{display:none;align-items:center;justify-content:center;gap:.55rem;min-height:46px;padding:0 1.05rem 0 .9rem;border:1px solid rgba(248,245,236,.32);border-radius:999px;background:rgba(10,26,47,.35);color:var(--ivory);font:600 1.0625rem/1 var(--sans);cursor:pointer;transition:border-color .2s}
.menu-btn:hover{border-color:var(--ivory)}
.menu-ico{position:relative;width:18px;height:13px}
.menu-ico i{position:absolute;left:0;right:0;height:2px;border-radius:2px;background:currentColor;transition:transform .3s ease-out,opacity .2s}
.menu-ico i:nth-child(1){top:0}.menu-ico i:nth-child(2){top:5.5px}.menu-ico i:nth-child(3){top:11px}
.menu-open .menu-ico i:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.menu-open .menu-ico i:nth-child(2){opacity:0}
.menu-open .menu-ico i:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
@media (min-width:64rem){:root{--head-h:84px}}
/* tablets and phones: the nav folds into a full-screen panel behind the button (JS); without JS it is a wrapped row */
@media (max-width:63.99rem){
  :root{--head-h:72px}
  .site-head{--sym-h:32px;--wm-h:32px;background:rgba(15,42,71,.97);-webkit-backdrop-filter:none;backdrop-filter:none}
  .site-head.is-scrolled{background:rgba(10,26,47,.98)}
  .head-wrap{flex-wrap:wrap}
  .main-nav{order:5;flex-basis:100%}
  .main-nav .nav{flex-wrap:wrap;padding-bottom:.4rem}
  .js .head-wrap{flex-wrap:nowrap}
  .js .menu-btn{display:inline-flex}
  .js .main-nav{display:none;position:fixed;left:0;right:0;bottom:0;top:var(--panel-top,var(--head-h));z-index:30;margin:0;padding:var(--s3) var(--gut) var(--s6);overflow-y:auto;overscroll-behavior:contain;background:var(--n0);border-top:1px solid var(--line)}
  .js .menu-open .main-nav{display:block;animation:menu .28s ease-out}
  .js .main-nav .nav{flex-direction:column;padding:0}
  .js .main-nav .nav li+li{border-top:1px solid var(--line)}
  .js .main-nav .nav a{min-height:60px;padding:0;font:450 1.75rem/1 var(--serif);letter-spacing:-.01em}
  .js .main-nav .nav a::after{left:0;right:auto;width:2.5rem;bottom:10px}
  .js .nav-nl{display:block}
  .js .nav-nl a{color:var(--sun1)}
}
@media (min-width:48rem) and (max-width:63.99rem){.js .nav-nl{display:none}}
/* phones */
@media (max-width:47.99rem){
  :root{--head-h:56px}
  .site-head{--wm-h:clamp(26px,8.25vw,44px);--sym-h:calc(var(--wm-h)*1.05);--big:calc(var(--sym-h) + 1.5rem);top:calc(-1*var(--big))}
  .head-wrap{flex-direction:column;align-items:stretch;gap:0;padding-left:0;padding-right:0}
  .brand{height:var(--big);margin:0 auto;justify-content:center;padding:0}
  .nl-pill{display:none}
  .main-nav{order:5;padding:0 var(--gut)}
  .head-bar{display:flex;position:relative;align-items:center;justify-content:center;height:var(--head-h)}
  .js .head-bar .menu-btn{position:absolute;left:50%;top:5px;transform:translateX(-50%);transition:transform .35s ease-out,border-color .2s}
  .js .brand-mini{display:flex;align-items:center;gap:.4rem;position:absolute;left:var(--gut);top:0;height:var(--head-h);opacity:0;transform:translateY(6px);pointer-events:none;transition:opacity .3s ease-out,transform .3s ease-out}
  .js .brand-mini .sym{height:28px}.js .brand-mini .wm{height:26px}
  .js .compact .brand-mini{opacity:1;transform:none;pointer-events:auto}
  .js .compact .head-bar .menu-btn{transform:translateX(calc(50vw - 100% - var(--gut)))}
  .js .menu-lbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .js .menu-btn{width:52px;padding:0}
  .site-head.is-scrolled{box-shadow:none}
  .compact.site-head{border-bottom-color:var(--line);box-shadow:0 8px 30px -18px rgba(0,0,0,.6)}
}
@media (max-width:47.99rem) and (min-width:30rem){.js .menu-btn{width:auto;padding:0 1.05rem 0 .9rem}.js .menu-lbl{position:static;width:auto;height:auto;clip:auto}}
/* headrow 2026-11-03 (7:38 PM): phones get ONE header row, dock logo + wordmark on the left and the Menu button
   on the right, vertically centred. Replaces the big stacked phone header and the scrolled compact swap (the row is the
   compact state now: .compact only adds the shadow). The wordmark is sized to fit 360px without wrapping. */
@media (max-width:47.99rem){
  :root{--head-h:60px}
  .site-head{--wm-h:clamp(24px,7vw,30px);--sym-h:calc(var(--wm-h)*1.05);--big:0px;top:0}
  .head-wrap{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--s3);padding-left:var(--gut);padding-right:var(--gut);min-height:var(--head-h)}
  .js .head-wrap{flex-wrap:nowrap}
  .brand{height:var(--head-h);margin:0 auto 0 0;justify-content:flex-start;gap:calc(var(--wm-h)*.3);min-width:0}
  .head-bar{display:flex;align-items:center;justify-content:flex-end;height:var(--head-h);flex:none;margin-left:auto}
  .js .brand-mini{display:none}
  .js .head-bar .menu-btn,.js .compact .head-bar .menu-btn{position:relative;left:auto;top:auto;transform:none}
}
@keyframes menu{from{opacity:0;transform:translateY(-6px)}}

/* ---------- buttons ---------- */
.actions{display:flex;flex-wrap:wrap;gap:var(--s3);margin:var(--s6) 0 0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;min-height:50px;padding:0 1.4rem;border-radius:999px;border:1px solid transparent;font:600 1rem/1 var(--sans);letter-spacing:.005em;text-decoration:none;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s,transform .2s var(--ease)}
.btn:hover{transform:translateY(-1px)}
.btn-sun{background:var(--sun);color:var(--on-sun)!important}
.btn-sun:hover{background:var(--sun-core)}
.btn-line,.btn-ink{border-color:rgba(248,245,236,.4);color:var(--ivory)!important;background:transparent}
.btn-line:hover,.btn-ink:hover{border-color:var(--ivory);background:rgba(248,245,236,.06)}
.social a svg{width:18px;height:18px}

/* ---------- home hero ---------- */
.hero{position:relative;overflow:hidden;display:flex;flex-direction:column}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 50% at 68% 58%,rgba(255,154,46,.14),rgba(255,154,46,0) 70%);pointer-events:none}
.hero .wrap{position:relative;z-index:2;width:100%;padding-top:clamp(3.5rem,9vh,7rem)}
.hero h1{font-size:clamp(3rem,7.4vw,6.9rem);font-weight:400;line-height:.98;letter-spacing:-.025em;max-width:12.5ch}
.tagline{font:italic 400 clamp(1.3rem,2.4vw,1.65rem)/1.3 var(--serif);color:rgba(248,245,236,.88);margin:var(--s5) 0 0}
.lede{font-size:clamp(1.25rem,1.6vw,1.4rem);line-height:1.5;color:rgba(248,245,236,.9);max-width:34rem;margin:var(--s4) 0 0}
.hero-art{position:relative;z-index:1;margin-top:clamp(1rem,6vw,3rem);width:100%;pointer-events:none}
.hero-art svg{width:100%;height:clamp(220px,30vw,430px)}
@media (min-width:60rem){
  .hero{min-height:min(54rem,calc(100svh - var(--head-h)));justify-content:center}
  .hero .wrap{padding-top:clamp(3rem,7vh,5.5rem);padding-bottom:clamp(9rem,17vw,15rem)}
  .hero-art{position:absolute;left:0;right:0;bottom:0}
}
/* ripple rings from the loon-pulse motion, spreading slowly from the sun's foot */
.rings .ring{transform-box:view-box;transform-origin:var(--ox) var(--oy)}
.rings .ring0{transform:scale(.6);opacity:.75}
.rings .ring1{transform:scale(1.05);opacity:.5}
.rings .ring2{transform:scale(1.55);opacity:.3}
@media (prefers-reduced-motion:no-preference){
  .rings .ring{animation:ring 10s cubic-bezier(.25,.6,.35,1) infinite}
  .rings .ring1{animation-delay:-3.33s}.rings .ring2{animation-delay:-6.66s}
  .ripple-anim{animation:drift 12s ease-in-out infinite alternate}
}
@keyframes ring{0%{transform:scale(.4);opacity:0}12%{opacity:.85}100%{transform:scale(2.1);opacity:0}}
@keyframes drift{to{transform:translateX(-14px)}}
.js .hero .wrap>*{animation:rise .6s ease-out both}
.js .hero .wrap>:nth-child(2){animation-delay:.06s}.js .hero .wrap>:nth-child(3){animation-delay:.12s}.js .hero .wrap>:nth-child(4){animation-delay:.18s}.js .hero .wrap>:nth-child(5){animation-delay:.24s}
@keyframes rise{from{opacity:0;transform:translateY(14px)}}
@media (prefers-reduced-motion:reduce){.js .hero .wrap>*{animation:none}}

/* ---------- inner page heads ---------- */
.page-head{position:relative;overflow:hidden}
.page-head{--rip:clamp(44px,5.5vw,80px)}
.page-head .wrap{position:relative;z-index:2;padding-top:clamp(1.25rem,3.2vw,2.5rem);padding-bottom:calc(var(--rip) + clamp(.75rem,2vw,1.5rem))}
.page-head h1{font-size:clamp(2.4rem,4.9vw,4.1rem);font-weight:400;line-height:1.02;letter-spacing:-.022em;max-width:18ch}
.page-head .kicker{margin-bottom:var(--s3)}
.page-head .lede{max-width:40rem;margin-top:var(--s4)}
/* opening block (docknav, 2026-11-03): the first H1 with its kicker and intro is centred as one unit on every page;
   body content below stays left-aligned. Event pages centre the crumbs, kicker and H1; the detail card is unchanged. */
.page-head .wrap,.hero .wrap{text-align:center}
.page-head .wrap>*,.hero .wrap>*{margin-left:auto;margin-right:auto}
.page-head h1,.hero h1{text-wrap:balance}
.page-head .lede,.hero .lede{text-wrap:pretty}
.hero .tagline{text-wrap:balance}
.hero .actions,.page-head .groups-nav,.page-head .crumbs ol{justify-content:center}
.page-head .ripples{position:absolute;inset:auto 0 0 0;z-index:1;width:100%;height:var(--rip);opacity:.9;pointer-events:none}
.page-head.compact h1{font-size:clamp(2.1rem,4.1vw,3.4rem);max-width:22ch}
.page-head:not(.compact) .crumbs+.kicker{margin-top:0}
.dusk+.paper,.dusk+.section{border-top:1px solid var(--line)}
.crumbs ol{display:flex;flex-wrap:wrap;gap:0 .55rem;list-style:none;margin:0 0 var(--s2);padding:0;font:500 .875rem/1.2 var(--sans);color:rgba(248,245,236,.78)}
.crumbs li{display:flex;align-items:center;min-width:0}
.crumbs li+li::before{content:"/";margin-right:.55rem;opacity:.55}
.crumbs a,.crumbs span{display:inline-flex;align-items:center;min-height:40px}
.crumbs a{color:var(--ivory);text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.crumbs li:last-child span{max-width:34ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;line-height:40px}

/* ---------- section heads ---------- */
.section-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s4) var(--s6);margin-bottom:clamp(2rem,4vw,3rem)}
.section-head h2{font-size:clamp(2.5rem,5vw,3.9rem);font-weight:400;letter-spacing:-.02em}
.more{display:inline-flex;align-items:center;gap:.6rem;min-height:44px;font:600 1rem/1 var(--sans);color:var(--ivory)!important;text-decoration:none}
.more::after{content:"";width:.45em;height:.45em;border-top:1.5px solid var(--sun1);border-right:1.5px solid var(--sun1);transform:rotate(45deg);transition:transform .2s var(--ease)}
.more:hover::after{transform:translate(3px) rotate(45deg)}
.more:hover{text-decoration:underline;text-decoration-color:var(--sun1)}

/* ---------- event cards ---------- */
.ev-list{list-style:none;margin:0;padding:0}
.cards{display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,21.5rem),1fr))}
.ev{position:relative;display:grid;grid-template-columns:3.9rem minmax(0,1fr);gap:0 var(--s4);padding:var(--s5) var(--s5) var(--s3);background:var(--card);border:1px solid var(--line);border-radius:var(--r);transition:border-color .25s,background-color .25s,transform .35s var(--ease),box-shadow .35s var(--ease)}
.cards>.ev:hover{border-color:var(--line-strong);background:#1A4670;transform:translateY(-2px);box-shadow:0 18px 40px -24px rgba(0,0,0,.7)}
.ev::before{content:"";position:absolute;left:-1px;top:var(--s5);bottom:var(--s5);width:3px;border-radius:0 3px 3px 0;background:var(--tc,transparent);z-index:1}
.t-music{--tc:#FFC56A;--tt:#FFC56A}.t-stage{--tc:#FF9A2E;--tt:#FFB547}.t-film{--tc:#33B7AA;--tt:#5FCABF}.t-talks{--tc:#64A5A4;--tt:#8CC3C2}
.t-market{--tc:#F8F5EC;--tt:#F8F5EC}.t-family{--tc:#F2A7A0;--tt:#F2A7A0}.t-outdoors{--tc:#A3CF94;--tt:#A3CF94}.t-community{--tc:#BBAEEA;--tt:#BBAEEA}.t-other{--tc:#A9B6C3;--tt:#A9B6C3}
.ev-type,.k-type{color:var(--tt)}
.ev-type::before,.k-type::before{content:"·";margin:0 .45em;color:var(--muted)}
.ev-tags{display:flex;flex-wrap:wrap;gap:.35rem;list-style:none;margin:.65rem 0 0;padding:0}
.ev-tags li{display:inline-flex;align-items:center;min-height:24px;padding:0 .6rem;border:1px solid rgba(248,245,236,.3);border-radius:999px;font:600 .75rem/1 var(--sans);letter-spacing:.02em;color:var(--ivory)}
.ev-tags .lb-free{border-color:rgba(255,197,106,.6);color:var(--sun1)}
.legend{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;margin:0 0 clamp(1.75rem,3.5vw,2.5rem);padding:var(--s3) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.legend .flabel{margin:0}
.legend-list{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;list-style:none;margin:0;padding:0;font:500 .875rem/1.3 var(--sans);color:var(--fg)}
.legend-list li{display:inline-flex;align-items:center;gap:.45rem}
.legend-list li::before{content:"";width:3px;height:14px;border-radius:2px;background:var(--tc)}
.all-week{display:flex;justify-content:center;margin:clamp(2rem,4vw,2.75rem) 0 0}
.ev:target{border-color:var(--sun1);box-shadow:0 0 0 1px var(--sun1)}
.when{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;align-self:start;padding:.55rem 0 .6rem;border-radius:var(--r-sm);background:var(--n1);border:1px solid var(--line);text-align:center}
.when .dow{font:600 .6875rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--sun1)}
.when .day{font:450 2rem/1 var(--serif);color:var(--ivory);margin-top:.3rem;font-variant-numeric:tabular-nums lining-nums}
.when .mon{font:600 .8125rem/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:.3rem}
.when .span{font:italic 400 .8125rem/1.15 var(--serif);color:var(--muted);margin-top:.45rem;padding:0 .2rem}
.ev-body{display:flex;flex-direction:column;min-width:0}
.ev.no-when{grid-template-columns:minmax(0,1fr)}
.ev-time{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:.55rem 0 0;font:600 1.0625rem/1.35 var(--sans);color:var(--ivory);font-variant-numeric:tabular-nums lining-nums}
.tonight{display:inline-flex;align-items:center;min-height:22px;padding:0 .5rem;border-radius:999px;background:var(--sun1);color:var(--n0);font:700 .6875rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.ev-runs{margin:.2rem 0 0;font:400 .9375rem/1.35 var(--sans);color:var(--muted)}
.day+.day{margin-top:clamp(1.75rem,3.5vw,2.5rem)}
.grp-sub+.day,.wk-head+[data-week] .day:first-child{margin-top:var(--s5)}
.day-h{display:block;margin:0 0 var(--s4);padding-top:.8rem;border-top:1px solid var(--line-strong);font:450 clamp(1.4rem,2.2vw,1.7rem)/1.15 var(--serif);color:var(--ivory)}
.dh-dow{color:var(--ivory)}
.dh-sep{white-space:pre}
.dh-tag{vertical-align:.2em;margin-left:.6rem;display:inline-flex;align-items:center;min-height:24px;padding:0 .6rem;border-radius:999px;background:var(--sun1);color:var(--n0);font:700 .6875rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.grp-sub,.wk-head p{font-variant-numeric:lining-nums}
@media (min-width:64rem){
  .grp .day,[data-week] .day{display:grid;grid-template-columns:12.5rem minmax(0,1fr);gap:var(--s5);align-items:start}
  .grp .day-h,[data-week] .day-h{position:sticky;top:calc(var(--head-h) + 5.5rem);display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;margin:0;padding-top:.9rem;border-top:1px solid var(--line-strong)}
  [data-week] .day-h{top:calc(var(--head-h) + 1.5rem)}
  .grp .dh-sep,[data-week] .dh-sep{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .grp .dh-tag,[data-week] .dh-tag{margin-left:0}
  .grp .dh-date,[data-week] .dh-date{font-size:.8em;color:var(--fg)}
  .grp .day .cards,[data-week] .day .cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr))}
}
.ev-town{font:600 .75rem/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--link);margin:.15rem 0 .45rem}
.ev h3,.ev h4,.ev h5{font:450 clamp(1.5rem,1.4rem + .4vw,1.625rem)/1.14 var(--serif);letter-spacing:-.01em;margin:0}
.ev h3 a,.ev h4 a,.ev h5 a{text-decoration:none}
.cards>.ev h3 a::after,.cards>.ev h4 a::after,.cards>.ev h5 a::after{content:"";position:absolute;inset:0;border-radius:var(--r);z-index:0}
.ev h3 a:focus-visible,.ev h4 a:focus-visible,.ev h5 a:focus-visible{outline:none}
.ev h3 a:focus-visible::after,.ev h4 a:focus-visible::after,.ev h5 a:focus-visible::after{outline:2px solid var(--sun1);outline-offset:2px}
.cards>.ev:hover h3 a,.cards>.ev:hover h4 a,.cards>.ev:hover h5 a{text-decoration:underline;text-decoration-color:var(--sun1)}
.meta{margin:.45rem 0 0;font:400 1rem/1.4 var(--sans);color:var(--muted)}
.meta b{font-weight:600;color:var(--fg)}
.desc{margin:.6rem 0 0;font-size:clamp(1.125rem,1.08rem + .2vw,1.1875rem);line-height:1.45;color:var(--fg)}
.checked{font:italic 400 1rem/1.4 var(--serif);color:var(--muted);margin:.5rem 0 0}
.ev-links{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:.1rem 1.25rem;margin:auto 0 0;padding-top:.75rem;font:600 .875rem/1 var(--sans)}
.ev-links a{display:inline-flex;align-items:center;min-height:32px;color:var(--link);text-decoration:none}
.ev-links a:hover{text-decoration:underline;text-decoration-color:var(--sun1)}
.tag{display:inline-block;font:600 .6875rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;padding:.35rem .55rem;border:1px solid currentColor;border-radius:999px;color:var(--sun1);vertical-align:.25em;margin-left:.5rem}
.empty{padding:var(--s6) 0;color:var(--muted)}
.empty a{color:var(--link)}

/* home: this week in day groups */
.wk-grp+.wk-grp{margin-top:clamp(2.5rem,5vw,3.5rem)}
.wk-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:.25rem var(--s4);padding-bottom:var(--s3);margin-bottom:var(--s5);border-bottom:1px solid var(--line)}
.wk-head h3{font:450 clamp(1.6rem,2.6vw,2rem)/1.1 var(--serif);display:flex;align-items:center;gap:.65rem}
.wk-head h3::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--teal2);flex:none}
.wk-grp:first-of-type .wk-head h3::before{background:var(--sun1);box-shadow:0 0 0 4px rgba(255,197,106,.16)}
.wk-head p{margin:0;font:450 clamp(1.15rem,1.8vw,1.35rem)/1.3 var(--serif);color:var(--fg)}
.towns{margin-top:clamp(2.5rem,5vw,3.5rem);display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3) var(--s4)}
.towns-h{font:600 .75rem/1.3 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.town-chips{display:flex;flex-wrap:wrap;gap:var(--s2);list-style:none;margin:0;padding:0}

/* ---------- filter bar and chips ---------- */
.filter{position:sticky;top:var(--head-h);z-index:10;background:rgba(15,42,71,.9);-webkit-backdrop-filter:saturate(150%) blur(16px);backdrop-filter:saturate(150%) blur(16px);border-bottom:1px solid var(--line)}
.filter .wrap{display:flex;align-items:center;gap:var(--s4);padding-top:.6rem;padding-bottom:.6rem}
.flabel{flex:none;font:600 .7rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0}
.chips{display:flex;gap:var(--s2);overflow-x:auto;scrollbar-width:none;min-width:0;padding:2px;margin:-2px}
.chips::-webkit-scrollbar{display:none}
@media (max-width:47.99rem){
  .filter .wrap{display:block;padding-right:0}
  .flabel{margin-bottom:.5rem}
  .chips{margin:0 0 -2px;padding:2px var(--gut) 2px 2px;-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent)}
}
.chip{flex:0 0 auto;display:inline-flex;align-items:center;min-height:44px;padding:0 1.05rem;border-radius:999px;border:1px solid rgba(100,165,164,.6);background:transparent;color:var(--fg);font:500 .9375rem/1 var(--sans);text-decoration:none;cursor:pointer;transition:border-color .2s,background-color .2s,color .2s}
.chip:hover{border-color:var(--ivory);background:rgba(248,245,236,.05)}
.chip[aria-pressed=true],.chip[aria-current=page]{background:var(--sun1);border-color:var(--sun1);color:var(--n0)}
.status{font:italic 400 1.0625rem/1.4 var(--serif);color:var(--muted);margin:0 0 var(--s2)}
.status a{color:var(--link)}

/* ---------- events page groups ---------- */
.grp{margin-top:clamp(3rem,6vw,4.5rem)}
.grp:first-child{margin-top:var(--s6)}
.month-head{display:flex;align-items:baseline;gap:var(--s4);padding-bottom:var(--s3);border-bottom:1px solid var(--line)}
.month-head h2{font-size:clamp(2.25rem,4.6vw,3.4rem);font-weight:400;letter-spacing:-.02em}
.count{font:500 .875rem/1 var(--sans);letter-spacing:.04em;color:var(--muted)}
.grp-sub{margin:var(--s3) 0 0;font:italic 400 1.0625rem/1.3 var(--serif);color:var(--muted)}
#today .grp-sub{font:450 clamp(1.25rem,2vw,1.55rem)/1.25 var(--serif);font-style:normal;color:var(--ivory)}
.grp>.ev-list,.grp>.grp-sub+.ev-list{margin-top:var(--s5)}
.month{margin-top:clamp(2rem,4vw,3rem)}
.sub-head{display:flex;align-items:baseline;gap:var(--s4);margin:0 0 var(--s4)}
.sub-head h3{font-size:clamp(1.6rem,2.6vw,2rem);font-weight:450}

/* note boxes */
.notebox{margin-top:clamp(2.5rem,5vw,4rem);padding:clamp(1.5rem,3vw,2.25rem);background:var(--n1);border:1px solid var(--line);border-radius:var(--r-lg)}
.nb-h{font-size:clamp(1.6rem,2.6vw,2rem);font-weight:450;margin-bottom:var(--s3)}
.notebox p{max-width:var(--read);color:var(--fg)}
.notebox a{color:var(--link)}
.notebox .ev-list{display:grid;gap:var(--s3);margin-top:var(--s4)}
.notebox .ev{background:var(--n2)}
.notebox .when{padding:.6rem 0}

/* ---------- event detail ---------- */
.ev-page{display:grid;gap:clamp(2.5rem,5vw,4rem);align-items:start}
@media (min-width:60rem){.ev-page{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.rel{position:sticky;top:calc(var(--head-h) + 1.5rem)}.ev-page .back{grid-column:1}}
.ev-sec{padding-top:clamp(1.25rem,3vw,2.25rem)}
.ev-ticket{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s5) clamp(1.25rem,3vw,2rem);padding:clamp(1.5rem,3.5vw,2.5rem);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 30px 60px -40px rgba(0,0,0,.7)}
.ev-ticket::before{content:"";position:absolute;left:-1px;top:clamp(1.5rem,3.5vw,2.5rem);bottom:clamp(1.5rem,3.5vw,2.5rem);width:3px;border-radius:0 3px 3px 0;background:var(--tc,transparent)}
.big-when{width:5.5rem;padding:.8rem 0 .9rem}
.big-when .dow{font-size:.75rem}
.big-when .day{font-size:3rem}
.big-when .mon{font-size:.8125rem}
.ev-facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 var(--s5);margin:0}
.ev-facts dt,.ev-facts dd{padding:.62rem 0;border-top:1px solid var(--line)}
.ev-facts dt:first-of-type,.ev-facts dd:first-of-type{border-top:0;padding-top:0}
.ev-facts dt{font:600 .75rem/1.9 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--sun1)}
.ev-facts dd{margin:0;font-size:1.25rem;line-height:1.35;color:var(--ivory)}
.ev-facts a{color:var(--ivory);text-decoration-color:var(--link)}
.ev-facts a:hover{text-decoration-color:var(--sun1)}
.ev-ticket .checked{margin-top:var(--s3)}
.ev-ticket .actions{margin-top:var(--s5)}
.ev-tags-lg{margin:0 0 var(--s4)}
.ev-about{margin:var(--s5) 0 0;padding-top:var(--s5);border-top:1px solid var(--line);font-size:1.2rem;line-height:1.5;color:var(--fg)}
@media (max-width:35rem){
  .ev-ticket{grid-template-columns:1fr}
  .big-when{flex-direction:row;align-items:baseline;gap:.5rem;width:auto;justify-self:start;padding:.55rem .9rem}
  .big-when .day{font-size:1.75rem;margin:0}.big-when .mon,.big-when .span{margin:0}
  .ev-ticket{gap:var(--s4)}
  .ev-facts{grid-template-columns:4.4rem minmax(0,1fr);gap:0 var(--s3)}
  .ev-facts dt{font-size:.6875rem;letter-spacing:.12em}
  .ev-facts dd{font-size:1.125rem}
  .ev-ticket .actions{gap:var(--s2)}
  .ev-ticket .actions .btn{flex:1 1 auto;padding:0 1rem}
}
.rel{display:grid;gap:clamp(2rem,4vw,2.75rem)}
.rel-h{font-size:1.6rem;font-weight:450;padding-bottom:var(--s3);border-bottom:1px solid var(--line);margin-bottom:0}
.rel-list{list-style:none;margin:0;padding:0}
.rel-list li{border-bottom:1px solid var(--line)}
.rel-list a{display:flex;align-items:baseline;gap:var(--s4);min-height:52px;padding:.75rem 0;color:var(--ivory);text-decoration:none;line-height:1.3}
.rel-list a:hover .rl-t{text-decoration:underline;text-decoration-color:var(--sun1)}
.rl-d{flex:none;width:6.6rem;white-space:nowrap;font:600 .8125rem/1.6 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--sun1)}
.rel p{margin:var(--s3) 0 0}
.rel p a,.back a{display:inline-flex;align-items:center;min-height:44px;font:600 1rem/1 var(--sans);color:var(--link)}
.back{margin:0}

/* ---------- history band (image-led) ---------- */
.archive{background:var(--n1);color:var(--fg);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.archive .wrap{display:grid;gap:clamp(1.75rem,4vw,4rem);padding-top:clamp(3.5rem,7vw,6rem);padding-bottom:clamp(3.5rem,7vw,6rem);align-items:center}
@media (min-width:60rem){.archive .wrap{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}}
.archive figure{margin:0}
.archive .photo{position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--n3);box-shadow:0 40px 80px -50px rgba(0,0,0,.9)}
.archive .photo::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(248,245,236,.1);background:linear-gradient(180deg,rgba(20,57,94,0) 60%,rgba(10,26,47,.25));pointer-events:none}
.archive img{width:100%;height:auto;filter:saturate(.92) contrast(1.03)}
.archive figcaption{font:400 .875rem/1.45 var(--sans);color:var(--muted);margin-top:var(--s3)}
.archive figcaption a{color:var(--muted)}
.archive .yr{font:italic 400 clamp(1.4rem,2.2vw,1.75rem)/1 var(--serif);color:var(--sun1);margin:0 0 var(--s3)}
.archive h2{font-size:clamp(2.3rem,4.6vw,3.6rem);font-weight:400;letter-spacing:-.02em;margin-bottom:var(--s4)}
.archive p{max-width:var(--read)}
.archive .src{color:var(--muted)}
.archive .src a{color:var(--fg)}
.archive .btn{margin-top:var(--s3)}

/* ---------- follow band ---------- */
.follow .wrap{padding-top:clamp(3.5rem,7vw,5.5rem);padding-bottom:clamp(3.5rem,7vw,5.5rem);text-align:center;display:flex;flex-direction:column;align-items:center}
.follow h2{font-size:clamp(2.25rem,4.4vw,3.2rem);font-weight:400;letter-spacing:-.02em;margin-bottom:var(--s3)}
.follow p{color:rgba(248,245,236,.85);max-width:32rem}
.social{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s3);margin-top:var(--s4)}

/* ---------- history page ---------- */
.groups-nav{display:flex;flex-wrap:wrap;gap:var(--s2);list-style:none;margin:var(--s6) 0 0;padding:0}
.groups-nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 1rem;border:1px solid rgba(248,245,236,.3);border-radius:999px;font:500 .9375rem/1 var(--sans);text-decoration:none;transition:border-color .2s,background-color .2s}
.groups-nav a:hover{border-color:var(--ivory);background:rgba(248,245,236,.05)}
.group{padding:clamp(3.5rem,7vw,5.5rem) 0 0}
.group:last-child{padding-bottom:clamp(3.5rem,7vw,5.5rem)}
.group-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s5);align-items:start;padding-bottom:var(--s5);margin-bottom:var(--s5);border-bottom:1px solid var(--line)}
.chap{font:400 clamp(2.5rem,5vw,3.9rem)/.9 var(--serif);color:var(--sun1);margin:0;min-width:2ch}
.group h2{font-size:clamp(2.25rem,4.6vw,3.4rem);font-weight:400;letter-spacing:-.02em}
.group .intro{max-width:var(--read);color:var(--muted);margin:var(--s3) 0 0}
.grid{display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr))}
.story{padding:clamp(1.5rem,2.5vw,2rem);background:var(--card);border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column}
.story:target{border-color:var(--sun1);box-shadow:0 0 0 1px var(--sun1)}
.story .yr{font:italic 400 1.25rem/1 var(--serif);color:var(--sun1);margin:0 0 var(--s3)}
.story h3{font-size:1.6rem;font-weight:450;margin-bottom:var(--s3)}
.story p{max-width:var(--read)}
.story>p:not(.yr):not(.src):not(.rel-line){font-size:1.1875rem}
.story .src{margin-top:auto;padding-top:var(--s3);border-top:1px solid var(--line)}
.src{font:400 .875rem/1.5 var(--sans);color:var(--muted);margin:var(--s3) 0 0}
.src a{color:var(--link)}
.rel-line{font:400 .875rem/1.5 var(--sans);color:var(--muted);margin:.25rem 0 0}
.rel-line a{display:inline-flex;align-items:center;min-height:44px;color:var(--link);font-weight:600}

/* ---------- lakes ---------- */
.depth-chart{padding:clamp(2rem,4vw,3rem) 0 clamp(3rem,5vw,4rem)}
.depth-chart .kicker{margin-bottom:var(--s3)}
.chart-rule{height:12px;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);background:repeating-linear-gradient(90deg,rgba(100,165,164,.45) 0 1px,transparent 1px 24px) 0 0/100% 5px no-repeat;margin:0}
.dc{position:relative;padding-top:1.6rem;--dcn:7.6rem}
.dc-scale{position:absolute;left:var(--dcn);right:3.8rem;top:0;bottom:2.8rem}
.dc-scale span{position:absolute;top:0;bottom:0;border-left:1px solid rgba(100,165,164,.2);font:400 .6875rem/1 var(--sans);color:rgba(248,245,236,.66);padding-left:4px}
.dc-row{position:relative;display:grid;grid-template-columns:var(--dcn) 1fr 3.8rem;align-items:center;min-height:46px}
.dc-name{font:500 .9375rem/1.2 var(--sans);text-decoration:none;color:rgba(248,245,236,.92)!important}
.dc-name:hover{text-decoration:underline}
.dc-bar{position:relative;height:16px}
.dc-max{position:absolute;left:0;top:7px;height:2px;border-radius:2px;background:var(--c)}
.dc-max::after{content:"";position:absolute;right:-1px;top:-6px;width:2px;height:14px;border-radius:2px;background:var(--c)}
.dc-mean{position:absolute;top:2px;width:10px;height:10px;margin-left:-5px;margin-top:1px;border:1.5px solid var(--ivory);border-radius:50%;background:var(--n1)}
.dc-val{text-align:right;font:600 .9375rem/1 var(--sans);font-variant-numeric:tabular-nums}
.dc-key .dc-val,.dc-key .dc-name{color:var(--sun1)!important}
.dc-key .dc-max{box-shadow:0 0 12px rgba(255,197,106,.5)}
.dc-legend{font:400 .875rem/1.4 var(--sans);color:rgba(248,245,236,.78);margin:var(--s4) 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}
.lg-max{display:inline-block;width:22px;height:2px;background:var(--teal2)}
.lg-mean{display:inline-block;width:10px;height:10px;border:1.5px solid var(--ivory);border-radius:50%;margin-left:.8rem}
.lakes{display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,30rem),1fr))}
.lake{display:grid;grid-template-columns:minmax(0,1fr) 7.5rem;gap:0 var(--s5);padding:clamp(1.5rem,3vw,2.25rem);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg)}
.lake:target{border-color:var(--sun1);box-shadow:0 0 0 1px var(--sun1)}
.lake h2{grid-column:1;font-size:clamp(2rem,3.2vw,2.5rem);font-weight:400;letter-spacing:-.015em;align-self:end}
.lake .outline{grid-column:2;grid-row:1/3;align-self:start;justify-self:end;width:100%}
.lake .outline svg{width:100%;height:auto;max-height:8rem}
.facts{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:var(--s4) var(--s5);margin:var(--s5) 0 0}
.fact{border-top:1px solid var(--line-strong);padding-top:.7rem}
.facts dt{font:600 .6875rem/1.3 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.facts dd{margin:.35rem 0 0;font:450 1.5rem/1.05 var(--serif);color:var(--ivory)}
.lake .notes{grid-column:1/-1;margin:var(--s5) 0 0;padding:0;list-style:none}
.lake .notes li{position:relative;padding-left:1.1rem;margin:.4rem 0;max-width:var(--read);font-size:1.125rem}
.lake .notes li::before{content:"";position:absolute;left:0;top:.68em;width:5px;height:5px;border-radius:50%;background:var(--teal2)}
.lake .src,.lake .rel-line{grid-column:1/-1}
.lake .src{margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line)}
.osm-note{margin-top:var(--s5)}
@media (max-width:30rem){.lake{grid-template-columns:minmax(0,1fr) 5.5rem}}

/* ---------- media directory ---------- */
.md-grp{margin-top:clamp(2.5rem,5vw,4rem)}
.md-grp:first-of-type{margin-top:var(--s5)}
.md-grp h2{display:flex;align-items:baseline;gap:var(--s3);padding-bottom:var(--s3);border-bottom:1px solid var(--line);margin:0 0 var(--s5);font-size:clamp(2rem,3.6vw,2.75rem);font-weight:400;letter-spacing:-.015em}
.md-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,21.5rem),1fr))}
.md{position:relative;display:flex;flex-direction:column;padding:var(--s5);background:var(--card);border:1px solid var(--line);border-radius:var(--r);transition:border-color .25s,background-color .25s,transform .35s var(--ease),box-shadow .35s var(--ease)}
.md:hover{border-color:var(--line-strong);background:var(--n3);transform:translateY(-2px);box-shadow:0 18px 40px -24px rgba(0,0,0,.7)}
.md h3{font:450 clamp(1.5rem,1.4rem + .4vw,1.625rem)/1.15 var(--serif);margin:0 0 .35rem}
.md h3 a{color:var(--ivory);text-decoration:none}
.md h3 a::after{content:"";position:absolute;inset:0;border-radius:var(--r)}
.md h3 a:focus-visible{outline:none}
.md h3 a:focus-visible::after{outline:2px solid var(--sun1);outline-offset:2px}
.md:hover h3 a{text-decoration:underline;text-decoration-color:var(--sun1)}
.md .meta{margin:0 0 .5rem;font:600 .75rem/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--link);order:-1}
.md .desc{margin:0}
.md-url{margin:auto 0 0;padding-top:var(--s4);font:400 .8125rem/1.4 var(--sans);color:var(--muted);overflow-wrap:anywhere}

/* ---------- prose, about, forms ---------- */
.prose{max-width:var(--read)}
.prose p{font-size:1.3125rem;line-height:1.6}
.about h2{font-size:clamp(1.9rem,3.2vw,2.4rem);font-weight:450;margin:clamp(2.5rem,5vw,3.5rem) 0 var(--s4);padding-top:var(--s5);border-top:1px solid var(--line)}
.about h2:first-child{margin-top:0;padding-top:0;border-top:0}
.about h3{font-size:1.5rem;font-weight:450;margin:var(--s6) 0 var(--s2)}
.about a,.prose a{color:var(--link)}
.src-list{padding-left:1.1rem;margin:.4rem 0}
.src-list li{margin:.35rem 0}
.fix-form{max-width:34rem;margin-top:var(--s4);padding:clamp(1.25rem,3vw,2rem);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg)}
.fix-form .btn{justify-self:start;margin-top:var(--s3);background:transparent}
textarea.nl-input{padding:.75rem .9rem;min-height:8rem;resize:vertical;line-height:1.45}

/* ---------- newsletter ---------- */
.nl-grid{display:grid;gap:clamp(2rem,5vw,4.5rem);grid-template-columns:minmax(0,1fr) minmax(0,27rem);align-items:start}
@media (max-width:52rem){.nl-grid{grid-template-columns:1fr}.nl-card{order:-1}}
.nl-pitch h2{font-size:clamp(1.9rem,3.2vw,2.4rem);font-weight:450;margin-bottom:var(--s4)}
.nl-list{list-style:none;padding:0;margin:0 0 var(--s5);font-size:1.3125rem}
.nl-list li{padding:.85rem 0;border-top:1px solid var(--line)}
.nl-list li:last-child{border-bottom:1px solid var(--line)}
.nl-list b{color:var(--ivory);font-weight:600}
.nl-sample{display:inline-flex;align-items:center;min-height:44px;font:600 1rem/1 var(--sans);color:var(--link)}
.nl-card{position:sticky;top:calc(var(--head-h) + 1.5rem);padding:clamp(1.5rem,3vw,2.25rem);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 30px 60px -40px rgba(0,0,0,.75);color:var(--fg)}
.nl-card::before{content:"";display:block;height:3px;margin:calc(-1*clamp(1.5rem,3vw,2.25rem)) calc(-1*clamp(1.5rem,3vw,2.25rem)) clamp(1.25rem,2.5vw,1.75rem);border-radius:var(--r-lg) var(--r-lg) 0 0;background:linear-gradient(90deg,var(--sun1),var(--sun2) 30%,var(--teal) 70%,var(--teal2))}
@media (max-width:52rem){.nl-card{position:static}}
.nl-form{display:grid;gap:.5rem}
.nl-label{font:600 .9375rem/1.3 var(--sans);margin-top:.6rem;color:var(--ivory)}
.nl-opt{font-weight:400;color:var(--muted)}
.nl-input{font:400 1.0625rem/1.2 var(--sans);min-height:50px;padding:0 .95rem;border:1px solid var(--teal2);border-radius:var(--r-sm);background:var(--n1);color:var(--ivory);transition:border-color .2s,box-shadow .2s}
.nl-input::placeholder{color:var(--muted)}
.nl-input:focus{outline:2px solid var(--sun1);outline-offset:1px;border-color:var(--sun1)}
.nl-consent{display:flex;gap:.7rem;align-items:flex-start;margin:var(--s4) 0 var(--s2);font:400 .9375rem/1.5 var(--sans)}
.nl-consent input{width:20px;height:20px;margin-top:.15rem;flex:none;accent-color:var(--sun1)}
.nl-btn{width:100%;border:0}
.nl-fine{font:400 .8125rem/1.55 var(--sans);color:var(--muted);margin:var(--s3) 0 0}

/* ---------- footer (round 3): brand band with signup, link columns, base line ---------- */
.site-foot{background:#071324;color:rgba(248,245,236,.84);font:400 1rem/1.55 var(--sans);border-top:2px solid transparent;border-image:linear-gradient(90deg,var(--sun1),var(--sun2) 35%,var(--teal) 70%,var(--teal2)) 1}
.site-foot a{color:rgba(248,245,236,.92)}
.foot-band{background:var(--n0);border-bottom:1px solid var(--line)}
.foot-band-in{display:grid;gap:clamp(1.75rem,4vw,3.5rem);padding-top:clamp(2.75rem,6vw,4.5rem);padding-bottom:clamp(2.5rem,5vw,3.5rem);align-items:center}
@media (min-width:60rem){.foot-band-in{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}}
.foot-brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none;margin:0 0 var(--s4)}
.foot-brand .sym{height:40px;width:auto;overflow:visible}.foot-brand .wm{height:40px;width:auto;max-width:none}
@media (max-width:30rem){.foot-brand .sym{height:32px}.foot-brand .wm{height:32px}}
.foot-tag{font:italic 400 clamp(1.35rem,1.2rem + .6vw,1.6rem)/1.3 var(--serif);color:var(--ivory);margin:0 0 var(--s3)}
.foot-blurb{color:rgba(248,245,236,.78);max-width:34rem;margin:0}
.foot-nl{padding:clamp(1.25rem,3vw,1.75rem);background:var(--n1);border:1px solid var(--line);border-radius:var(--r-lg)}
.foot-nl-h{font:450 clamp(1.5rem,1.35rem + .5vw,1.8rem)/1.2 var(--serif);color:var(--ivory);margin:0 0 var(--s3)}
.foot-nl-h span{display:block;font:400 .9375rem/1.4 var(--sans);color:var(--muted);margin-top:.25rem}
.foot-nl-row{display:grid;gap:.6rem}
@media (min-width:36rem){.foot-nl-row{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto}}
.foot-nl .nl-input{width:100%;min-width:0}
.foot-nl .btn{min-height:50px}
.foot-consent{margin:var(--s3) 0 0;font-size:.875rem;color:rgba(248,245,236,.8)}
.foot-cols{display:grid;gap:var(--s6) var(--s5);grid-template-columns:repeat(2,minmax(0,1fr));padding-top:clamp(2.5rem,5vw,3.5rem);padding-bottom:clamp(2rem,4vw,3rem)}
@media (min-width:48rem){.foot-cols{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:64rem){.foot-cols{grid-template-columns:repeat(5,minmax(0,1fr))}}
.fcol-h{font:600 .8125rem/1.3 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--sun1);margin:0 0 var(--s2)}
.fcol ul{list-style:none;margin:0;padding:0}
.fcol li a{display:inline-flex;align-items:center;gap:.55rem;min-height:40px;text-decoration:none;color:rgba(248,245,236,.9);transition:color .2s}
.fcol li a:hover{color:var(--ivory);text-decoration:underline;text-decoration-color:var(--sun1)}
.foot-social svg{width:22px;height:22px;flex:none}
.foot-base{display:flex;flex-wrap:wrap;gap:.5rem 2rem;justify-content:space-between;padding-top:var(--s5);padding-bottom:var(--s6);border-top:1px solid var(--line);font-size:.9375rem}
.foot-base p{margin:0}
.site-foot .fine{font-size:.8125rem;color:rgba(248,245,236,.68);max-width:46rem}
@media (max-width:30rem){.foot-base .dot{display:none}.foot-base p:first-child a,.foot-base p:first-child{display:block}}

/* ---------- history timeline ---------- */
.sec-h{font-size:clamp(2.4rem,4.8vw,3.6rem);font-weight:400;letter-spacing:-.02em;margin:0 0 var(--s3)}
.tl-lede{color:var(--muted);max-width:44rem;font-size:clamp(1.15rem,1.08rem + .3vw,1.3rem)}
.old-anchor{position:relative;display:block;height:0}
.tl,.tl-items{list-style:none;margin:0;padding:0}
.tl{margin-top:clamp(1.5rem,4vw,2.5rem)}
.tl-era{position:relative;padding-left:clamp(1.75rem,4vw,2.75rem)}
.tl-era::before{content:"";position:absolute;left:clamp(.45rem,1.1vw,.7rem);top:.4rem;bottom:0;width:2px;background:linear-gradient(180deg,var(--sun1),var(--teal2) 40%,rgba(100,165,164,.35))}
.tl-era+.tl-era{margin-top:clamp(2.5rem,5vw,3.5rem)}
.tl-era-h{position:relative;display:flex;align-items:baseline;gap:var(--s3);font-size:clamp(1.8rem,3.4vw,2.6rem);font-weight:400;margin:0 0 var(--s4)}
.tl-era-h::before{content:"";position:absolute;left:calc(-1*clamp(1.75rem,4vw,2.75rem) + clamp(.45rem,1.1vw,.7rem) - 7px);top:.35em;width:16px;height:16px;border-radius:50%;background:var(--sun1);box-shadow:0 0 0 5px rgba(255,197,106,.18)}
.tl-items{display:grid;gap:var(--s4)}
@media (min-width:64rem){.tl-items{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tl-item{position:relative}
.tl-dot{position:absolute;left:calc(-1*clamp(1.75rem,4vw,2.75rem) + clamp(.45rem,1.1vw,.7rem) - 4px);top:1.9rem;width:10px;height:10px;border-radius:50%;background:var(--n2);border:2px solid var(--teal2)}
@media (min-width:64rem){.tl-item:nth-child(2n) .tl-dot{display:none}}
.tl-item .story{height:100%}
.tl-topic{font:600 .75rem/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--link);margin:0 0 .5rem}
.story h4{font-size:clamp(1.5rem,1.4rem + .4vw,1.7rem);font-weight:450;margin-bottom:var(--s3)}
.tl-undated::before{background:repeating-linear-gradient(180deg,rgba(100,165,164,.6) 0 6px,transparent 6px 12px)}
.tl-undated .tl-era-h::before{background:var(--n2);border:2px solid var(--teal2);box-shadow:none}
.tl-note{color:var(--muted);font-style:italic;margin:-.5rem 0 var(--s4)}
.lakes-sec{border-top:1px solid var(--line)}

/* ---------- events: map, search and filters ---------- */
.evt-sec{padding:clamp(1.5rem,3vw,2.25rem) 0 0}
.js .filter-links{display:none}
.ev-tools{display:none}
.js .ev-tools{display:block;margin-top:var(--s5);padding:clamp(1rem,2.5vw,1.5rem);background:var(--n1);border:1px solid var(--line);border-radius:var(--r-lg)}
.evt-row{display:flex;align-items:center;gap:var(--s3) var(--s4);flex-wrap:wrap}
.evt-row+.evt-row{margin-top:var(--s3)}
.evt-row .flabel{width:4.5rem}
.evt-row .chips{flex:1 1 0;flex-wrap:wrap;overflow:visible;-webkit-mask-image:none;mask-image:none;padding:2px;margin:-2px}
.ev-q{flex:1 1 16rem;min-height:50px;padding:0 1rem;border:1px solid var(--teal2);border-radius:999px;background:var(--n2);color:var(--ivory);font:400 1.0625rem/1.2 var(--sans)}
.ev-q:focus{outline:2px solid var(--sun1);outline-offset:1px;border-color:var(--sun1)}
.ev-q::placeholder{color:var(--muted)}
.chip-date{position:relative;gap:.5rem}
.chip-date input{background:transparent;border:0;color:inherit;font:inherit;color-scheme:dark;min-height:40px}
.chip-date.on{background:var(--sun1);border-color:var(--sun1);color:var(--n0)}
.chip-date.on input{color-scheme:light}
.evt-foot{display:flex;justify-content:flex-end;margin:var(--s3) 0 0}
.btn-clear{min-height:44px;padding:0 1rem;border:0;background:none;color:var(--link);font:600 1rem/1 var(--sans);text-decoration:underline;text-underline-offset:.2em;cursor:pointer}
.btn-clear[disabled]{color:var(--muted);text-decoration:none;cursor:default}
@media (max-width:47.99rem){.evt-row{display:block}.evt-row .flabel{width:auto;margin-bottom:.4rem}.ev-q{width:100%}}
.ev-map{background:var(--n1);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.map-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1rem;min-height:54px;padding:.6rem clamp(1rem,2.5vw,1.5rem)}
.map-t{font:600 1.0625rem/1.2 var(--sans);color:var(--ivory);margin:0}
.map-cap{font:400 .9375rem/1.3 var(--sans);color:var(--muted);margin:0}
.map-tog{display:none;margin-left:auto;min-height:44px;padding:0 1rem;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--ivory);font:600 .9375rem/1 var(--sans);cursor:pointer;transition:transform .2s ease-out}
.js .map-tog{display:inline-flex;align-items:center}
.map-tog:hover{transform:translateY(-1px)}.map-tog:focus-visible{outline:2px solid var(--sun1);outline-offset:2px}
.map-in[hidden]{display:none}
.map-total{font:400 1rem/1.4 var(--sans);color:var(--fg);border-top:1px solid var(--line);padding-top:.6rem;margin:0}
.map-else{display:inline-flex;align-items:center;min-height:44px;color:var(--ivory)}
.map-in{display:grid;gap:var(--s4);padding:0 clamp(.75rem,2vw,1.25rem) clamp(1rem,2.5vw,1.5rem)}
@media (min-width:64rem){.map-in{grid-template-columns:minmax(0,1fr) 17rem;align-items:start}}
.pm{position:relative;min-width:0}
.pm-stage{position:relative;aspect-ratio:4/3.4;border-radius:var(--r);overflow:hidden;background:#09111d;touch-action:none;user-select:none;-webkit-user-select:none}
@media (min-width:48rem){.pm-stage{aspect-ratio:16/11}}
.pm-stage:focus-visible{outline:2px solid var(--sun1);outline-offset:2px}
.pm-cv{position:absolute;inset:0;display:block}
.pm-wait{position:absolute;inset:0;display:grid;place-items:center;margin:0;font:italic 400 1.1rem/1 var(--serif);color:rgba(248,245,236,.55)}
.pm-ready .pm-wait,.pm-fail .pm-wait{display:none}
.pm-labels{position:absolute;inset:0;pointer-events:none}
.pm-town{position:absolute;left:0;top:0;display:inline-flex;align-items:center;gap:.4rem;min-height:28px;padding:0 .55rem 0 0;border-radius:999px;pointer-events:auto;text-decoration:none;font:600 .9375rem/1 var(--sans);color:#fff;white-space:nowrap}
.pm-town span,.pm-town b{transform:translateY(var(--dy,0))}
.pm-town span{padding:.3rem .5rem;border-radius:999px;background:rgba(9,17,29,.86)}
.pm-town b{min-width:1.6rem;padding:.3rem .45rem;border-radius:999px;background:rgba(255,181,74,.18);color:#ffcf8a;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}
.pm-dot{flex:none;width:18px;height:18px;display:grid;place-items:center}
.pm-dot::before{content:"";width:calc(var(--r)*2);height:calc(var(--r)*2);max-width:none;border-radius:50%;background:#ffb54a;border:2px solid #09111d;box-shadow:0 0 0 2px rgba(255,181,74,.35)}
.pm-narrow .pm-town{font-size:.8125rem;gap:.25rem}
.pm-narrow .pm-ctl button{width:40px;height:40px}
.pm-nameless:not(:hover):not(:focus-visible) span{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pm-narrow .pm-town:not(.pm-sel) b{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pm-left{flex-direction:row-reverse;padding:0 0 0 .55rem}
.pm-town:hover span,.pm-town:focus-visible span{background:#fff;color:#09111d}
.pm-town:focus-visible{outline:2px solid #ffb54a;outline-offset:2px}
.pm-sel span{background:#ffb54a;color:#2a1a00}.pm-sel b{background:#2a1a00;color:#ffb54a}
.pm-ctl{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:6px}
.pm-ctl button{width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.25);border-radius:12px;background:rgba(9,17,29,.88);color:#fff;font:600 1.4rem/1 var(--sans);cursor:pointer}
.pm-ctl button:hover{border-color:#fff}
.pm-off .pm-home{color:#ffb54a;border-color:#ffb54a}
.pm-credit{margin:.4rem 0 0;font:400 .8125rem/1.4 var(--sans);color:var(--muted)}
.pm-credit a{color:var(--muted)}
.pm-fail .pm-stage::after{content:"The map could not load. Use the list.";position:absolute;inset:0;display:grid;place-items:center;font:400 1rem/1 var(--sans);color:var(--muted)}
.map-h{font:450 1.5rem/1.2 var(--serif);margin:0 0 var(--s2)}
.map-list{list-style:none;margin:0;padding:0}
.map-list li{display:flex;flex-wrap:wrap;align-items:center;gap:.1rem .5rem;border-top:1px solid var(--line);font:400 1rem/1.3 var(--sans);color:var(--muted)}
.map-list a{display:inline-flex;align-items:center;min-height:44px;color:var(--ivory);font-weight:600}
.map-list .num{margin-left:auto;color:var(--fg)}
.map-list a[aria-current]{color:var(--sun1)}
.map-note{font:400 .9375rem/1.45 var(--sans);color:var(--muted);margin:var(--s3) 0 0}

/* ---------- media logos ---------- */
.md-logo{display:flex;align-items:center;justify-content:flex-start;height:64px;padding:12px 16px;margin:0 0 var(--s4);background:var(--ivory);border-radius:var(--r-sm);order:-2}
.md-logo img{height:40px;width:auto;max-width:100%;object-fit:contain}
.md-disclaim{font:400 .875rem/1.5 var(--sans);color:var(--muted);margin-top:var(--s3)}

/* ---------- scroll reveal ----------
   Nothing is hidden by default. JS adds .rv-in only to elements that were below the fold at load, and only once the
   reader scrolls, so full-page captures, link previews, print and slow phones always see the content. */
@media (prefers-reduced-motion:no-preference){
  @keyframes rv{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
  .rv-in{animation:rv .5s ease-out backwards}
  @keyframes rvf{from{opacity:0}to{opacity:1}}
  .day-h.rv-in{animation-name:rvf}
  .cards>.rv-in:nth-child(3n+2){animation-delay:.06s}.cards>.rv-in:nth-child(3n+3){animation-delay:.12s}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
@media print{.ev-tools,.ev-map{display:none!important}.rv-in{animation:none!important;opacity:1!important;transform:none!important}.site-head,.filter,.site-foot,.hero-art,.ripples{display:none}.dusk,.paper,body{background:#fff;color:#000}h1,h2,h3,h4,h5{color:#000}.ev,.story,.lake,.md{border:1px solid #999;background:#fff;box-shadow:none}}
.filter+.section{padding-top:clamp(2rem,4vw,3rem)}
@media (max-width:35rem){.group-head{display:block}.chap{margin-bottom:var(--s3)}}
@media (max-width:63.99rem){.menu-lock,.menu-lock body{overflow:hidden}}

/* media filter: shown only with JS, set from the first paint so nothing shifts */
[data-media-filter]{display:none}
.js [data-media-filter]{display:block}
/* phones: each filter group is one row that scrolls sideways inside the panel, so the list starts sooner */
@media (max-width:47.99rem){
  .evt-row{gap:var(--s2)}
  .evt-row .flabel{width:auto;flex:0 0 100%}
  .evt-row .chips{flex:1 1 100%;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;margin:-2px calc(-1*clamp(1rem,2.5vw,1.5rem));padding:2px clamp(1rem,2.5vw,1.5rem)}
  .evt-row .chips::-webkit-scrollbar{display:none}
  .evt-row .chip{flex:none}
}

/* Year on every event date (2026-11-03 9:01 PM) */
.when .yr{font:600 .6875rem/1 var(--sans);letter-spacing:.14em;color:var(--muted);margin-top:.3rem;font-variant-numeric:tabular-nums lining-nums}
@media (max-width:35rem){.big-when .yr{margin:0}}
.page-head .updated{width:fit-content;margin:.6rem auto 0;text-align:center;font:600 .8125rem/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--sun2,#FFB547)}
.page-head .updated time{display:inline-block;border:1px solid currentColor;border-radius:2px;padding:.2rem .5rem;transform:rotate(-1deg)}

/* Wordmark shine (live since 2026-11-03; build.py always appends this to site.css).
   A gold-to-ivory glint crosses the header wordmark once just after load, then every --wm-shine-every seconds.
   The band is 220% wide with the glint at its middle, so one unit of background-position (100%) is exactly the
   glint entering at the left edge to leaving at the right edge. CSS only: a gradient on a pseudo-element masked to the wordmark's own letterforms, moved with background-position
   (paint only, no layout, so CLS stays 0). The sweep always takes --wm-shine-sweep seconds whatever the interval:
   the background travels interval/sweep crossings per cycle and is only over the letters for one of them.
   Timing against the dock glow (5s cycle, peaks at 2.5s, 7.5s, 12.5s...): the glint runs 0.4s to 1.6s, then
   10.4s to 11.6s and so on, so it never overlaps a glow peak (it sits 0.9s to 2.1s clear of the next one) when the
   interval is a multiple of 5. Reduced motion: no glint at all. Wordmark colours and contrast are unchanged at rest.
   logofix 2026-11-03: the glint is light ivory/white blended with screen, so it only ever adds light (the old
   gold stop at .92 replaced the ivory letters with darker gold mid-sweep).
   bright 2026-11-03: the glint is sun gold #FFC56A at the edges to a warm white core, still screen-blended so it only adds light. */
:root{--wm-shine-every:10;--wm-shine-sweep:1.2;--wm-shine-delay:.4s}
.wm-sh{position:relative;display:block;flex:none;line-height:0}
@media (prefers-reduced-motion:no-preference){
  .site-head .wm-sh::after{content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(100deg,transparent 0 45.5%,rgba(255,197,106,0) 45.5%,rgba(255,197,106,.85) 47.5%,rgba(255,224,170,.95) 49%,#FFF8EA 50%,rgba(255,224,170,.95) 51%,rgba(255,197,106,.85) 52.5%,rgba(255,197,106,0) 54.5%,transparent 54.5% 100%) no-repeat;mix-blend-mode:screen;
    background-size:220% 100%;background-position:100% 0;
    -webkit-mask:url(/assets/img/logo-nav-wordmark.svg) 0 0/100% 100% no-repeat;mask:url(/assets/img/logo-nav-wordmark.svg) 0 0/100% 100% no-repeat;
    animation:wm-shine calc(var(--wm-shine-every) * 1s) linear var(--wm-shine-delay) infinite backwards}
}
@keyframes wm-shine{from{background-position:100% 0}to{background-position:calc(100% - var(--wm-shine-every) / var(--wm-shine-sweep) * 100%) 0}}

/* menu style (2026-11-03, 7:39 PM; LIVE since approved 8:04 PM EST). Always built into site.css.
   Closed: three water lines like the dock's ripples (staggered, teal + gold) in a thin gold-ring pill; they ripple on hover/tap
   and morph into an X when open. Open: a navy panel drops in, items stagger in on thin gold rules, the current page gets a
   small orange sun dot, faint lake-outline texture behind. The Folk page keeps its felt button and felt panel. */
@media (max-width:63.99rem){
  .js body:not(.folk-pg) .menu-btn{border:1.5px solid rgba(255,197,106,.72);background:rgba(10,26,47,.55);box-shadow:inset 0 0 0 1px rgba(255,197,106,.10),0 0 14px -6px rgba(255,197,106,.55);transition:border-color .2s,box-shadow .25s}
  .js body:not(.folk-pg) .menu-btn:hover,.js body:not(.folk-pg) .menu-btn[aria-expanded=true]{border-color:#FFC56A;box-shadow:inset 0 0 0 1px rgba(255,197,106,.18),0 0 18px -4px rgba(255,197,106,.6)}
  .js body:not(.folk-pg) .menu-ico{width:22px;height:14px}
  .js body:not(.folk-pg) .menu-ico i{left:50%;right:auto;height:2.5px;border-radius:2px;transform:translateX(-50%);transition:transform .35s cubic-bezier(.3,.7,.3,1),width .35s cubic-bezier(.3,.7,.3,1),opacity .2s,background-color .3s}
  .js body:not(.folk-pg) .menu-ico i:nth-child(1){top:0;width:22px;background:#33B7AA}
  .js body:not(.folk-pg) .menu-ico i:nth-child(2){top:5.75px;width:15px;background:linear-gradient(90deg,#FFC56A,#FF9A2E)}
  .js body:not(.folk-pg) .menu-ico i:nth-child(3){top:11.5px;width:8px;background:#FFC56A}
  .js body:not(.folk-pg) .menu-btn:hover .menu-ico i,.js body:not(.folk-pg) .menu-btn:active .menu-ico i{animation:mn-rip 1.4s ease-in-out infinite}
  .js body:not(.folk-pg) .menu-btn:hover .menu-ico i:nth-child(2),.js body:not(.folk-pg) .menu-btn:active .menu-ico i:nth-child(2){animation-delay:.14s}
  .js body:not(.folk-pg) .menu-btn:hover .menu-ico i:nth-child(3),.js body:not(.folk-pg) .menu-btn:active .menu-ico i:nth-child(3){animation-delay:.28s}
  .js body:not(.folk-pg) .menu-open .menu-ico i{animation:none;width:20px;background:#FFC56A}
  .js body:not(.folk-pg) .menu-open .menu-ico i:nth-child(1){transform:translateX(-50%) translateY(5.75px) rotate(45deg)}
  .js body:not(.folk-pg) .menu-open .menu-ico i:nth-child(2){opacity:0;transform:translateX(-50%) scaleX(.2)}
  .js body:not(.folk-pg) .menu-open .menu-ico i:nth-child(3){transform:translateX(-50%) translateY(-5.75px) rotate(-45deg)}
  /* open panel */
  .js body:not(.folk-pg) .main-nav{border-top:1px solid rgba(255,197,106,.38);
    background:linear-gradient(rgba(8,27,43,.94),rgba(8,27,43,.94)),url('/assets/maps/lakes.svg?v=fine1105') center/cover no-repeat,var(--n0)}
  .js body:not(.folk-pg) .menu-open .main-nav{animation:mn-drop .34s cubic-bezier(.2,.75,.25,1) both}
  .js body:not(.folk-pg) .main-nav .nav{position:relative}
  .js body:not(.folk-pg) .main-nav .nav li{position:relative}
  .js body:not(.folk-pg) .main-nav .nav li+li{border-top:0}
  .js body:not(.folk-pg) .main-nav .nav li+li::before{content:"";position:absolute;left:0;top:0;width:100%;height:1px;background:linear-gradient(90deg,rgba(255,197,106,.55),rgba(255,197,106,.22) 70%,rgba(255,197,106,0));transform-origin:left;}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li{animation:mn-item .42s cubic-bezier(.2,.75,.25,1) both}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li+li::before{animation:mn-rule .5s cubic-bezier(.2,.75,.25,1) both;animation-delay:inherit}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li:nth-child(1){animation-delay:.06s}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li:nth-child(2){animation-delay:.10s}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li:nth-child(3){animation-delay:.14s}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li:nth-child(4){animation-delay:.18s}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li:nth-child(5){animation-delay:.22s}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li:nth-child(6){animation-delay:.26s}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li:nth-child(7){animation-delay:.30s}
  .js body:not(.folk-pg) .menu-open .main-nav .nav li:nth-child(n+8){animation-delay:.34s}
  .js body:not(.folk-pg) .main-nav .nav a[aria-current=page]{color:#FFC56A;padding-left:1.35rem}
  .js body:not(.folk-pg) .main-nav .nav a[aria-current=page]::before{content:"";position:absolute;left:0;top:50%;width:9px;height:9px;margin-top:-4.5px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#FFC56A,#FF9A2E 70%);box-shadow:0 0 10px 1px rgba(255,154,46,.55)}
  .js body:not(.folk-pg) .main-nav .nav a[aria-current=page]::after{transform:scaleX(0)}
  .js body:not(.folk-pg) .main-nav .nav a[aria-current=page]:hover::after{transform:scaleX(0)}
}
@keyframes mn-rip{0%,100%{transform:translateX(-50%) scaleX(1)}35%{transform:translateX(calc(-50% + 1.5px)) scaleX(.86)}70%{transform:translateX(calc(-50% - 1.5px)) scaleX(1.08)}}
@keyframes mn-drop{from{opacity:0;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes mn-item{from{opacity:0;transform:translateY(-10px)}}
@keyframes mn-rule{from{transform:scaleX(0)}}
@media (prefers-reduced-motion:reduce){
  .js body:not(.folk-pg) .menu-ico i{transition:none}
  .js body:not(.folk-pg) .menu-btn:hover .menu-ico i,.js body:not(.folk-pg) .menu-btn:active .menu-ico i,
  .js body:not(.folk-pg) .menu-open .main-nav,.js body:not(.folk-pg) .menu-open .main-nav .nav li,.js body:not(.folk-pg) .menu-open .main-nav .nav li+li::before{animation:none}
}
@media (forced-colors:active){.js body:not(.folk-pg) .menu-ico i{background:ButtonText}}


/* === audit-fix 2026-11-05 (staging): scoped layout/clipping/contrast fixes; folk page untouched === */
/* Ticket stubs: keep rivets clear of titles; jobs keep their own card style */
body:not(.folk-pg) .ev{
  padding:calc(var(--s5) + .35rem) calc(var(--s5) + .45rem) calc(var(--s3) + .35rem);
  overflow:visible;
}
body:not(.folk-pg) .ev :is(h3,h4,h5){
  position:relative;z-index:1;padding-right:.15rem;
  overflow-wrap:anywhere;hyphens:auto;
}
body:not(.folk-pg) .ev.no-when{--perf:2.55rem}
body:not(.folk-pg) .jobs .job,
body:not(.folk-pg) .job.ev{
  -webkit-mask:none!important;mask:none!important;
  box-shadow:none!important;
  background:rgba(10,33,58,.78)!important;
  border:1px solid var(--line,rgba(248,245,236,.16))!important;
  border-left:3px solid #33B7AA!important;
  border-radius:var(--r-lg,14px)!important;
  padding:clamp(1.1rem,2.6vw,1.5rem) clamp(1.1rem,2.6vw,1.6rem)!important;
}
body:not(.folk-pg) .jobs .job::after,
body:not(.folk-pg) .job.ev::after{content:none!important;display:none!important}
body:not(.folk-pg) .jobs .job[data-type=health]{border-left-color:#FF9A2E!important}
body:not(.folk-pg) .jobs .job[data-type=education]{border-left-color:#FFC56A!important}
body:not(.folk-pg) .jobs .job[data-type=other]{border-left-color:#64a5a4!important}
body:not(.folk-pg) .jobs .job h3{overflow-wrap:anywhere}

/* Town day headings: room for long dates, less cramped sticky column */
@media (min-width:64rem){
  body:not(.folk-pg) .grp .day,
  body:not(.folk-pg) [data-week] .day{grid-template-columns:minmax(13.5rem,15rem) minmax(0,1fr);gap:var(--s5)}
  body:not(.folk-pg) .grp .day-h,
  body:not(.folk-pg) [data-week] .day-h{gap:.65rem}
  body:not(.folk-pg) .day-h .dh-date{display:block;margin-left:0;margin-top:.15rem;line-height:1.25;max-width:14rem}
}
body:not(.folk-pg) .day-h{overflow-wrap:anywhere}

/* Footer first-name field: stop placeholder clipping */
.foot-nl-row{align-items:stretch}
.foot-nl .nl-input{min-width:0;width:100%;overflow:visible;text-overflow:clip}
.foot-nl .nl-input::placeholder{letter-spacing:0;font-size:.95em;opacity:.9}
@media (min-width:36rem){
  .foot-nl-row{grid-template-columns:minmax(0,1.4fr) minmax(8.5rem,1fr) auto}
}

/* Events filter: keep status + empty state with the tools */
.ev-tools + .filter-live{margin:var(--s3) 0 var(--s4)}
.filter-live .status{margin:0 0 .35rem;font-size:1rem}
.filter-live .empty{margin:0;padding:var(--s4);border:1px dashed var(--line);border-radius:var(--r);background:rgba(10,26,47,.35);color:var(--fg)}
.filter-live .empty a{color:var(--link)}
#filter-status{margin-top:var(--s3)}

/* Town chip row: clearer scroll cue on narrow screens */
@media (max-width:63.99rem){
  .evt-row .chips{
    -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 88%,transparent 100%);
    mask-image:linear-gradient(90deg,#000 0%,#000 88%,transparent 100%);
    padding-right:1.75rem;
  }
  .evt-row{position:relative}
  .evt-row::after{
    content:"";position:absolute;right:0;top:1.6rem;bottom:.2rem;width:1.4rem;pointer-events:none;
    background:linear-gradient(90deg,transparent,rgba(10,26,47,.55));
  }
}
.chips{scrollbar-width:thin}

/* Media cards + URLs */
body:not(.folk-pg) .md{min-height:11.5rem}
body:not(.folk-pg) .md-url,
body:not(.folk-pg) .md .md-url{
  font-family:var(--sans)!important;font-weight:400!important;letter-spacing:0!important;text-transform:none!important;
  overflow-wrap:anywhere;word-break:break-word;line-height:1.45;color:var(--muted);
}
.md-list{align-items:stretch}
.md-list .md{height:100%}

/* Metadata contrast (measured: muted #C9D2DA on #173F66 ~4.3:1; nudge for small caps) */
body:not(.folk-pg) :is(.meta,.ev-runs,.checked,.count,.map-cap,.pm-credit,.md-disclaim,.job-dates){color:#D7DEE5}
body:not(.folk-pg) :is(.when .mon,.when .span,.when .yr){color:#0F2440}

/* Homepage picks: tighten excess gap without changing direction */
@media (min-width:56.25rem){
  body.home [data-week]{gap:clamp(1.1rem,2vw,1.75rem) clamp(1.1rem,2.2vw,1.85rem);margin-top:var(--s4)}
}
body.home .wk-grp{margin-top:clamp(1.5rem,3vw,2.25rem)}
body.home .wk-grp + .wk-grp{margin-top:clamp(1.75rem,3.2vw,2.5rem)}

/* Roads dark OSM tiles (CARTO CDN now watermarks without a key) */
.rd-map .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.95) contrast(.92) saturate(.85)}
.rd-map .leaflet-container{background:#09111d}
.rd-map-loading,.rd-map-error{
  position:absolute;inset:0;display:grid;place-items:center;z-index:500;
  margin:0;padding:1rem;text-align:center;font:400 1rem/1.4 var(--sans);color:var(--fg);
  background:rgba(9,17,29,.72);pointer-events:none
}
.rd-map-error{color:var(--sun1)}
.rd-map{position:relative}

/* Sample newsletter back link (on site chrome pages only) */
.nl-sample-back{display:inline-flex;align-items:center;min-height:44px;margin:0 0 1rem;color:var(--link);font:500 .95rem/1.3 var(--sans);text-decoration:underline;text-underline-offset:.18em}

/* === audit-fix 2026-11-05b: 768px menu while scrolled + X/Menu overlap (folk files untouched) === */
@media (max-width:63.99rem){
  /* Freeze page under a fixed body so sticky header cannot collapse off-screen */
  .menu-lock,.menu-lock body{overflow:hidden;overscroll-behavior:none}
  .menu-lock body{position:fixed;left:0;right:0;width:100%}
  /* Keep logo, newsletter pill and Close control visible above the panel */
  .js .site-head.menu-open{
    position:fixed;top:0;left:0;right:0;width:100%;z-index:40;
    background:rgba(10,26,47,.98);border-bottom-color:var(--line);
    box-shadow:0 8px 30px -18px rgba(0,0,0,.6)
  }
  .js .menu-open .main-nav{z-index:35;top:var(--panel-top,var(--head-h))}
  /* Open state: icon-only Close. Rotated X bars were spilling into the Menu label. */
  .js body:not(.folk-pg) .menu-open .menu-btn{
    width:56px;min-width:56px;height:56px;min-height:56px;padding:0;gap:0
  }
  .js body:not(.folk-pg) .menu-open .menu-btn .menu-lbl{
    position:absolute!important;width:1px!important;height:1px!important;padding:0!important;
    margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;
    white-space:nowrap!important;border:0!important
  }
  .js body:not(.folk-pg) .menu-open .menu-ico{overflow:visible;flex:none}
}
