:root{--bg:#fff;--panel:#f3f4f2;--ink:#1b1f1d;--muted:#4d5552;--line:#cfd3d0;--line-strong:#6b7370;--accent:#0f6b4f;
--accent-hover:#0a4a37;--accent-shadow:#08402f;--on-accent:#fff;--ok-fg:#23415c;--ok-bg:#e3ebf2;--due-fg:#6b4200;
--due-bg:#fcedcc;--old-fg:#8c2419;--old-bg:#f9e1dc;--focus:#fd0;--focus-ink:#0b0c0c;--focus-bar:#0b0c0c;
--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans","Helvetica Neue",Arial,sans-serif;
--head:var(--font);color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--bg:#161a19;--panel:#202523;--ink:#e8ecea;--muted:#b3bbb8;--line:#353c39;
--line-strong:#87908c;--accent:#84d0ae;--accent-hover:#a6e0c6;--accent-shadow:#3d7a62;--on-accent:#0e1a15;
--ok-fg:#b8cfe6;--ok-bg:#22303d;--due-fg:#f0c674;--due-bg:#3a2e12;--old-fg:#f3a79c;--old-bg:#42221d;--focus-bar:#fd0}}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.1875rem/1.3158 var(--font)}
a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em}
a:hover{color:var(--accent-hover);text-decoration-thickness:3px}
:focus-visible{outline:3px solid transparent}
a:focus-visible,button:focus-visible,summary:focus-visible{background:var(--focus);color:var(--focus-ink);
box-shadow:0 -2px var(--focus),0 4px var(--focus-bar);text-decoration:none}
input:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:0;box-shadow:inset 0 0 0 2px var(--focus-bar)}
.skip{position:absolute;left:-9999px;top:8px;padding:8px 12px;z-index:10}
.skip:focus-visible{left:16px}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
[hidden]{display:none!important}
.wrap{width:min(63.75rem,100% - 32px);margin-inline:auto}
h1,h2,h3{font-family:var(--head);font-weight:700;letter-spacing:0}
h1{font-size:2rem;line-height:1.09375;margin:24px 0 12px;max-width:20em}
h2{font-size:1.5rem;line-height:1.1667;margin:32px 0 12px;padding-top:12px;border-top:3px solid var(--ink)}
h3{font-size:1.1875rem;line-height:1.3158;margin:24px 0 8px}
p{margin:0 0 12px}
h1,h2,h3,p,li,dt,dd,figcaption,caption{overflow-wrap:anywhere}
.lede{max-width:38em;margin-bottom:16px}
.small,.meta{font-size:1rem;line-height:1.25}
.muted,.meta{color:var(--muted)}
.num,time,.count,.presets .n,table{font-variant-numeric:tabular-nums lining-nums}
header.site{border-bottom:1px solid var(--line)}
header.site .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;column-gap:24px}
.brand{display:inline-flex;align-items:center;gap:8px;min-height:48px;color:var(--ink);text-decoration:none;
font-family:var(--head);font-size:1.375rem;font-weight:700}
.brand:hover{color:var(--ink)}
.brand .dot{color:var(--accent)} .brand .tld{font-weight:400}
header.site nav ul{display:flex;flex-wrap:wrap;gap:0 14px;margin:0;padding:0;list-style:none}
header.site nav a{display:inline-flex;align-items:center;min-height:44px;font-size:1rem;text-decoration:none;
border-bottom:4px solid transparent;padding-top:4px}
header.site nav a[aria-current]{font-weight:700;border-bottom-color:var(--accent)}
main{padding-bottom:16px}
.crumbs ol{display:flex;flex-wrap:wrap;margin:16px 0 0;padding:0;list-style:none;font-size:1rem;line-height:1.25}
.crumbs li+li::before{content:"›";color:var(--muted);padding:0 8px}
.crumbs li{display:inline-flex;align-items:center;min-height:44px}
.crumbs a{display:inline-flex;align-items:center;min-height:44px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 16px;font:inherit;
text-align:center;text-decoration:none;color:var(--ink);background:var(--panel);border:1px solid var(--line-strong);
border-radius:0;cursor:pointer}
.btn:hover{color:var(--ink);border-color:var(--ink);text-decoration:underline}
.btn.primary{color:var(--on-accent);background:var(--accent);border-color:var(--accent);box-shadow:0 2px 0 var(--accent-shadow)}
.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.btn.wide{width:100%}
.actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:8px;margin:12px 0 0;padding:0;
list-style:none}
.actions .btn{width:100%;height:100%}
.tag{display:inline-flex;align-items:center;gap:6px;font-size:1rem;line-height:1.25;padding:2px 8px;white-space:nowrap;
vertical-align:2px}
.tag::before{content:"";width:8px;height:8px;border-radius:50%;border:1.5px solid currentColor;flex:none}
.tag.ok{color:var(--ok-fg);background:var(--ok-bg)} .tag.ok::before{background:currentColor}
.tag.due{color:var(--due-fg);background:var(--due-bg)}
.tag.due::before{background:linear-gradient(90deg,currentColor 50%,transparent 50%)}
.tag.old{color:var(--old-fg);background:var(--old-bg)}
.tag.plain{color:var(--ink);background:var(--panel);border:1px solid var(--line);padding:1px 7px}
.tag.plain::before{display:none}
.tag.now{background:var(--bg);border-color:var(--ink)}
.panel{background:var(--panel);border:1px solid var(--line);padding:24px;margin:12px 0 16px}
.panel>:last-child{margin-bottom:0}
.panel.bad{border:2px solid var(--old-fg);border-left-width:8px}
.panel h2,.panel h3{border:0;padding:0;margin:0 0 8px;font-size:1.3125rem;line-height:1.1905}
.presets{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 8px;padding:0;list-style:none;max-width:27rem}
.presets li{display:flex}
.presets a{flex:1;display:flex;flex-direction:column;justify-content:center;min-height:56px;padding:6px 10px;
border:1px solid var(--line-strong);background:var(--panel);text-decoration:none}
.presets .l{font-size:1rem;line-height:1.25;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em}
.presets .n{color:var(--ink);font-weight:700}
.jump ul{display:flex;flex-wrap:wrap;gap:0 16px;margin:0 0 8px;padding:0;list-style:none}
.jump a{display:inline-flex;align-items:center;min-height:44px}
table.sched{width:100%;border-collapse:collapse;table-layout:fixed;margin:0 0 24px}
table.sched caption{text-align:left;font-family:var(--head);font-weight:700;padding:16px 0 8px}
table.sched th,table.sched td{padding:10px 12px 10px 0;border-bottom:1px solid var(--line);vertical-align:top;text-align:left;
font-weight:400}
table.sched thead th{font-size:1rem;line-height:1.25;font-weight:700;border-bottom:2px solid var(--line-strong);padding-top:0}
table.sched th.t{font-weight:700}
table.sched .num{text-align:right}
table.sched td.cal{text-align:right;padding-right:0;font-size:1rem}
table.sched td.cal a{display:inline-block;padding:4px 0}
table.sched .city{display:block;font-size:1rem;line-height:1.25;color:var(--muted)}
table.sched td.where a{display:inline-block;padding:2px 0}
table.sched tr.cont th.t,table.sched tr.cont .num{color:var(--muted)}
table.sched .gtd .none{color:var(--muted)}
table.sched .tag{white-space:normal} table.sched td.ev,table.sched td.where{overflow-wrap:anywhere}
col.c-start{width:4.5rem} col.c-where{width:24%} .home col.c-where{width:38%} col.c-buy{width:6.5rem} col.c-gtd{width:7.5rem} col.c-cal{width:8.5rem}
.m-only{display:none}
.cal-icon{display:none}
.chips{margin:8px 0 4px}
.chipgroup{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}
.chipgroup .gl{width:100%;font-size:1rem}
.chip{min-height:40px;padding:0 14px;font:inherit;font-size:1rem;line-height:1.25;color:var(--ink);background:var(--bg);
border:1px solid var(--line-strong);border-radius:0;cursor:pointer}
.chip:hover{border-color:var(--ink)}
.chip[aria-pressed="true"]{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}
.chip[aria-pressed="true"]::before{content:"";display:inline-block;width:.35em;height:.7em;border:solid currentColor;
border-width:0 2px 2px 0;transform:rotate(45deg);margin:0 .55em .15em 0}
.linkbtn{font:inherit;font-size:1rem;color:var(--accent);background:none;border:0;padding:10px 0;text-decoration:underline;cursor:pointer}
.btn:focus-visible,.btn.primary:focus-visible,.chip:focus-visible,.chip[aria-pressed="true"]:focus-visible,
.linkbtn:focus-visible,.presets a:focus-visible{color:var(--focus-ink);background:var(--focus);border-color:var(--focus);
box-shadow:0 -2px var(--focus),0 4px var(--focus-bar);text-decoration:none}
a:focus-visible .l,a:focus-visible .n,a:focus-visible .cn,a:focus-visible .cc,a:focus-visible .dot{color:var(--focus-ink)}
.count{min-height:1.5625rem;margin:0 0 8px}
.citylist{columns:2 9.5rem;column-gap:24px;margin:0 0 8px;padding:0;list-style:none}
.citylist li{break-inside:avoid}
.citylist a{display:block;padding:6px 0;text-decoration:none}
.citylist .cn{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em}
.citylist a:hover .cn{text-decoration-thickness:3px}
.citylist .cc{display:block;font-size:1rem;line-height:1.25;color:var(--muted)}
.rooms{margin:0 0 16px;padding:0;list-style:none}
.rooms>li{padding:10px 0;border-bottom:1px solid var(--line)}
.rooms>li:first-child{border-top:1px solid var(--line)}
.rooms a.rn{display:inline-block;padding:2px 0}
.rooms .small{display:block}
.fests{margin:0 0 16px;padding:0;list-style:none}
.fests>li{padding:12px 0;border-bottom:1px solid var(--line)}
.fests>li:first-child{border-top:1px solid var(--line)}
.fests .fd{font-weight:700;margin:0 0 2px}
.fests .fn{margin:0}
.fests a{display:inline-block;padding:2px 0}
.facts{margin:0 0 16px}
.facts dt{font-weight:700;font-size:1rem;line-height:1.25;margin-top:12px}
.facts dd{margin:2px 0 0}
.nc{color:var(--muted)}
.fresh{margin:0 0 16px}
.fresh p{margin:6px 0}
.fresh .tags{display:flex;flex-wrap:wrap;gap:8px}
details{margin:0 0 12px;border-top:1px solid var(--line)}
details>summary{display:flex;align-items:center;min-height:44px;cursor:pointer;font-weight:700;color:var(--accent);
text-decoration:underline;text-underline-offset:.15em}
.notice{border:1px solid var(--line-strong);margin:16px 0}
.notice .bar{background:var(--panel);padding:8px 12px;font-size:1rem;line-height:1.25;border-bottom:1px solid var(--line-strong)}
.notice p{padding:12px;margin:0;max-width:38em}
.prose{max-width:38em}
.prose li{margin:6px 0}
.mail{font-size:1.3125rem;word-break:break-all}
.tools{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:0 0 16px}
.tools label{display:block;font-size:1rem;margin-bottom:4px}
.tools input{font:inherit;min-height:44px;padding:8px 10px;width:min(22rem,100%);border:1px solid var(--line-strong);
background:var(--bg);color:var(--ink);border-radius:0}
.form label,.form legend{display:block;font-weight:700;margin:16px 0 4px;padding:0}
.form .hint{font-size:1rem;line-height:1.25;color:var(--muted);margin:0 0 6px}
.form input[type=email],.form input[type=text],.form input[type=tel],.form input[type=url],.form select,
.form textarea{display:block;font:inherit;
width:min(30rem,100%);min-height:44px;padding:8px 10px;color:var(--ink);background:var(--bg);
border:1px solid var(--line-strong);border-radius:0}
.form textarea{min-height:8rem}
.form button{margin-top:16px}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.map{margin:24px 0}
.map svg{display:block;width:100%;max-width:260px;height:auto}
.cityblock h3 .small{font-weight:400;font-family:var(--font)}
.map figcaption{margin-top:8px}
.key{display:inline-block;width:12px;height:12px;border-radius:50%;vertical-align:-1px;margin:0 4px 0 12px}
.key:first-child{margin-left:0}
.key.on{background:var(--accent)} .key.off{border:1.5px solid var(--ink)}
.map .land{fill:var(--panel);stroke:var(--line-strong);stroke-width:.8} .map .ie{fill:none;stroke:var(--line);stroke-width:.8}
.map circle.on{fill:var(--accent);stroke:var(--bg);stroke-width:1.5} .map circle.off{fill:var(--bg);stroke:var(--ink);stroke-width:1.5}
.map circle.fest{fill:var(--bg);stroke:var(--accent);stroke-width:3}
.key.fest{border:3px solid var(--accent)}
.map a:hover circle{stroke-width:3} .map a:focus-visible circle{fill:var(--focus);stroke:var(--focus-bar);stroke-width:3}
footer.site{border-top:3px solid var(--ink);margin-top:48px;padding:8px 0 48px;font-size:1rem;line-height:1.25}
footer.site ul{display:flex;flex-wrap:wrap;gap:0 20px;margin:0 0 8px;padding:0;list-style:none}
footer.site ul a{display:inline-flex;align-items:center;min-height:44px}
footer.site p{margin:8px 0;max-width:46em}
@media (max-width:479.98px){.crumbs li:not(.parent){display:none}.crumbs li+li::before{content:none}
.crumbs li.parent a::before{content:"‹";padding-right:8px;text-decoration:none;display:inline-block}}
@media (max-width:51.99rem){
table.sched,table.sched tbody,table.sched caption{display:block}
table.sched thead,table.sched colgroup,table.sched .where,table.sched .buy,table.sched .gtd,table.sched .cal{display:none}
table.sched tr{display:grid;grid-template-columns:4rem minmax(0,1fr);column-gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
table.sched th,table.sched td{display:block;padding:0;border:0}
.m-only{display:block}
.cal-icon{display:flex;width:44px;height:44px;align-items:center;color:var(--accent)}
.m-where a{display:inline-block;padding:2px 0;font-size:1rem}
.m-where{font-size:1rem;line-height:1.25;margin-top:2px}}
@media (min-width:640px){
.wrap{width:min(63.75rem,100% - 48px)}
h1{font-size:3rem;line-height:1.0417;margin:32px 0 16px}
h2{font-size:1.75rem;line-height:1.1429;margin-top:48px}
h3,table.sched caption{font-size:1.3125rem;line-height:1.1905}
.lede{font-size:1.3125rem;line-height:1.3333}
header.site nav ul{gap:0 24px}
header.site nav a{font-size:1.1875rem;min-height:64px}
.actions{display:flex;flex-wrap:wrap}
.actions .btn{width:auto}
.facts{display:grid;grid-template-columns:13rem minmax(0,1fr)}
.facts dt,.facts dd{margin:0;padding:10px 0;border-bottom:1px solid var(--line)}
.chipgroup .gl{width:auto;margin-right:4px}
.home-top{display:grid;gap:0 32px}
.btn.wide{width:auto}}
@media (min-width:900px){.home-top,.hub-top{display:grid;grid-template-columns:2fr 1fr;gap:0 32px}
.map svg{max-width:340px}.home-top>section>h2{margin-top:32px}
.citylist{columns:4 11rem}}
@media print{header.site nav,.cal-icon,td.cal,.chips,.tools,footer.site ul{display:none}}
@font-face{font-family:"Public Sans";src:url(/fonts/public-sans-700.woff2) format("woff2");font-weight:700;
font-display:optional}:root{--head:"Public Sans",var(--font)}
