/* Carlow Pubs site styles. Values come from tokens.css.
   Desktop first; phones get one column. */

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--page);color:var(--ink);font:350 17px/1.55 var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg,video{display:block;max-width:100%}
a{color:inherit;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
:focus-visible{outline:2px solid var(--accent-ink);outline-offset:3px;border-radius:6px}
::selection{background:var(--accent);color:var(--deep)}
h1,h2,h3,h4,p,ul,figure{margin:0}
ul{padding:0;list-style:none}
button{font:inherit;color:inherit}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:absolute;left:12px;top:12px;z-index:200;padding:12px 18px;border-radius:999px;background:var(--accent);color:var(--deep);font:500 15px/1 var(--font-body);text-decoration:none;transform:translateY(-200%)}
.skip-link:focus{transform:none}
main:focus{outline:none}
.icon{width:20px;height:20px;flex-shrink:0;stroke-width:1.6}
.icon--lg{width:24px;height:24px}
.icon--sm{width:16px;height:16px}
.sicon{width:20px;height:20px;flex-shrink:0}
.wrap{max-width:calc(var(--page-max) + 2 * var(--gutter));margin:0 auto;padding:0 var(--gutter)}
.sublabel{font:500 12px/1 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:36px 0 14px}

/* Dark disc with an accent icon: the site's signature, like brass on a shopfront */
.medal{width:46px;height:46px;flex-shrink:0;border-radius:50%;background-color:var(--deep);background-image:var(--grain);color:var(--accent);display:grid;place-items:center}
.medal .sicon{width:22px;height:22px}

/* ---------- Header ---------- */
.site-header{background:var(--page);color:var(--ink);border-bottom:1px solid var(--line)}
.site-header--overlay{position:absolute;left:0;right:0;top:0;z-index:50;background:transparent;color:var(--on-deep);border-bottom:0}
.site-header__bar{height:var(--header-h);display:flex;align-items:center;justify-content:space-between;gap:24px}
.site-header--overlay .site-header__bar{border-bottom:1px solid var(--on-deep-line)}
/* Pub pages: the dark header sits in the flow and the hero follows it */
.site-header--dark{position:relative;background-color:var(--deep);background-image:var(--grain)}
.site-header--dark .site-header__bar{border-bottom:0}
@media (min-width:1000px){
  .site-header--dark ~ main .hero{min-height:clamp(560px,calc(90vh - var(--header-h)),820px)}
  .site-header--dark ~ main .hero__inner{padding-top:56px}
  .site-header--dark ~ main .hero__back{top:30px}
}
.wordmark{display:inline-flex;align-items:center;gap:12px;font:400 25px/1 var(--font-display);letter-spacing:-.01em;color:inherit;text-decoration:none}
/* The Four Lakes mark: rings in the text colour, one disc lit in lime */
.wordmark__mark{width:28px;height:28px;flex-shrink:0}
.mark__disc{fill:var(--accent);transform-box:fill-box;transform-origin:center;transition:transform .35s var(--ease)}
/* In the header the lime pours into each ring in turn, slowly, on a loop: a ring fills, holds, then drains as the
   next one fills. Fill and drain share one curve, so the lime leaves one ring exactly as it arrives in the next
   (still, with the top right ring full, for reduced motion) */
.mark__pour{fill:var(--accent);transform:translateY(25.6px);animation:mark-pour 6.4s linear infinite}
.mark__pour.mp1{animation-delay:1.6s}.mark__pour.mp2{animation-delay:3.2s}.mark__pour.mp3{animation-delay:4.8s}
@keyframes mark-pour{0%{transform:translateY(25.6px);animation-timing-function:cubic-bezier(.3,.7,.4,1)}14%,25%{transform:translateY(0);animation-timing-function:cubic-bezier(.3,.7,.4,1)}39%,100%{transform:translateY(25.6px)}}
@media (prefers-reduced-motion:reduce){.mark__pour{animation:none}.mark__pour.mp0{transform:none}}
/* Pour loader (static/img/loading*.svg, drawn by tools/make-icons.mjs) */
.loading{display:inline-flex;align-items:center;gap:10px;font:400 15px/1.4 var(--font-body);color:var(--muted)}
.loading img{width:24px;height:24px;flex-shrink:0}
.btn__loader{width:20px;height:20px;flex-shrink:0}
.pmap__canvas:not(.leaflet-container),.wo-map__canvas:not(.leaflet-container){background:var(--deep) url(/img/loading.svg?v=2) center/52px no-repeat}
/* Dot grid on dark page headers: the mark's four holes as faint dots, in the bottom right corner where
   there's no text at any width. site.js now and then lights one in lime, like a pub coming on. */
.dir-hero{position:relative;isolation:isolate}
.dir-hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='104' height='104'%3E%3Cg fill='%23F4EEE3' fill-opacity='.17'%3E%3Ccircle cx='41.5' cy='41.5' r='1.7'/%3E%3Ccircle cx='62.5' cy='41.5' r='1.7'/%3E%3Ccircle cx='41.5' cy='62.5' r='1.7'/%3E%3Ccircle cx='62.5' cy='62.5' r='1.7'/%3E%3C/g%3E%3C/svg%3E") 0 0/104px 104px repeat;-webkit-mask-image:radial-gradient(ellipse 90% 85% at 100% 100%,#000 30%,transparent 72%);mask-image:radial-gradient(ellipse 90% 85% at 100% 100%,#000 30%,transparent 72%)}
.dots-lit{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;-webkit-mask-image:radial-gradient(ellipse 90% 85% at 100% 100%,#000 30%,transparent 72%);mask-image:radial-gradient(ellipse 90% 85% at 100% 100%,#000 30%,transparent 72%)}
.dots-lit circle{fill:var(--accent);opacity:0;transform:scale(.35);transform-box:fill-box;transform-origin:center;transition:opacity 1.2s ease,transform 1.2s var(--ease)}
.dots-lit circle.on{opacity:1;transform:none}
.nav{display:flex;align-items:center;gap:34px}
.nav a{font:500 15px/1 var(--font-body);color:var(--ink-2);text-decoration:none;padding:10px 0;border-bottom:2px solid transparent;transition:color .2s,border-color .2s}
.nav a:hover{color:var(--ink)}
.nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}
.site-header--overlay .nav a{color:var(--on-deep-2)}
.site-header--overlay .nav a:hover,.site-header--overlay .nav a[aria-current="page"]{color:var(--on-deep)}
.header-mobile{display:none;align-items:center;gap:8px}
.tonight-pill{height:34px;padding:0 14px;display:inline-flex;align-items:center;border:1px solid var(--line-strong);border-radius:999px;font:500 13px/1 var(--font-body);color:inherit;text-decoration:none}
.site-header--overlay .tonight-pill{border-color:var(--on-deep-line)}
/* A lit dot on Tonight / What's on when something's on today (site.js adds it) */
.live-dot{position:relative;display:inline-block;flex-shrink:0;width:8px;height:8px;margin-right:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 1.5px var(--deep);vertical-align:middle}
.site-header--overlay .live-dot,.menu .live-dot{box-shadow:none}
.live-dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1.5px solid var(--accent);opacity:0;animation:live-ping 2.4s ease-out infinite}
.live-dot--after{width:12px;height:12px;margin:0 0 0 14px;vertical-align:.18em}
@keyframes live-ping{0%{transform:scale(.5);opacity:.9}70%,100%{transform:scale(1.6);opacity:0}}
@media (prefers-reduced-motion:reduce){.live-dot::after{animation:none}}
/* Share and add to calendar */
.ticket__acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;flex-basis:100%}
.ticket__btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);font:500 13px/1 var(--font-body);color:var(--ink);cursor:pointer;transition:border-color .2s}
.ticket__btn:hover{border-color:var(--ink)}
.ticket__btn .sicon{width:15px;height:15px;color:var(--accent-ink)}
.actbar{display:none}
/* Follow in your calendar: a button with a small menu of calendar apps */
.follow{position:relative;display:inline-block}
.follow__btn{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px 0 13px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);font:500 14px/1 var(--font-body);color:var(--ink);cursor:pointer;list-style:none;white-space:nowrap}
.follow__btn::-webkit-details-marker{display:none}
.follow__btn .sicon{width:17px;height:17px;color:var(--accent-ink)}
.follow__btn:hover,.follow[open] .follow__btn{border-color:var(--ink)}
.follow--dark .follow__btn{background:transparent;border-color:var(--on-deep-line);color:var(--on-deep)}
.follow--dark .follow__btn .sicon{color:var(--accent)}
.follow--dark .follow__btn:hover,.follow--dark[open] .follow__btn{border-color:var(--on-deep)}
.follow__menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:min(300px,calc(100vw - 32px));display:flex;flex-direction:column;padding:8px;border-radius:18px;background:var(--paper);color:var(--ink);border:1px solid var(--line);box-shadow:0 24px 50px -20px rgba(0,0,0,.45)}
.follow--dark .follow__menu{left:0;right:auto}
.follow__note{padding:8px 10px 10px;font:400 13px/1.45 var(--font-body);color:var(--muted)}
.follow__menu a,.follow__menu button{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 10px;border:0;border-radius:12px;background:none;font:500 15px/1.2 var(--font-body);color:var(--ink);text-decoration:none;text-align:left;cursor:pointer}
.follow__menu a:hover,.follow__menu button:hover{background:var(--accent-tint)}
.follow__menu .sicon,.follow__menu .icon{width:18px;height:18px;flex-shrink:0;color:var(--accent-ink)}
.dir-hero .follow{margin-top:18px}
.dir-hero .follow + .save-app{margin-top:12px}
/* 404: the mark, draining away */
.simple__mark{width:112px;height:112px;color:var(--ink)}
.mark--drain .mark__pour{animation:none;transform:translateY(25.6px)}
.mark--drain .mark__pour.mp0{transform:none;animation:mark-drain 1.8s 1s cubic-bezier(.3,.7,.4,1) forwards}
@keyframes mark-drain{to{transform:translateY(25.6px)}}
@media (prefers-reduced-motion:reduce){.mark--drain .mark__pour.mp0{animation:none;transform:translateY(25.6px)}}
@media (max-width:819px){.nav{display:none}.header-mobile{display:flex}}
.icon-btn{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid transparent;background:transparent;color:inherit;cursor:pointer;padding:0}
.menu{position:fixed;inset:0;z-index:120;background-color:var(--deep);background-image:var(--grain);color:var(--on-deep);padding:0 var(--gutter);display:flex;flex-direction:column}
.menu[hidden]{display:none}
.menu__bar{height:var(--header-h);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--on-deep-line)}
.menu nav{display:flex;flex-direction:column;margin-top:12px}
.menu nav a{font:400 38px/1.1 var(--font-display);letter-spacing:-.02em;text-decoration:none;padding:16px 0;border-bottom:1px solid var(--on-deep-line)}
.menu__note{margin-top:28px;color:var(--on-deep-2)}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:52px;padding:0 22px;border-radius:999px;border:1px solid transparent;font:500 15px/1 var(--font-body);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .2s,border-color .2s,color .2s,transform .2s var(--ease),box-shadow .2s,filter .2s}
.btn .sicon{width:18px;height:18px}
.btn:active{transform:scale(.98)}
.btn--accent{background:var(--accent);color:var(--deep)}
.btn--accent:hover{filter:brightness(1.06)}
.btn--glass{background:color-mix(in srgb,var(--on-deep) 8%,transparent);border-color:var(--on-deep-line);color:var(--on-deep);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.btn--glass:hover{background:color-mix(in srgb,var(--on-deep) 16%,transparent);border-color:color-mix(in srgb,var(--on-deep) 45%,transparent);color:#fff}
.btn--deep{background:var(--deep);color:var(--on-deep)}
.btn--deep .sicon{color:var(--accent)}
.btn--deep:hover{transform:translateY(-1px);box-shadow:0 16px 30px -18px rgba(0,0,0,.6)}
.btn--line{border-color:var(--line-strong);color:var(--ink);background:transparent}
.btn--line:hover{border-color:var(--ink);background:var(--paper)}
.btn--sm{height:42px;padding:0 16px;font-size:14px;gap:8px}
.btn--sm .sicon{width:16px;height:16px}
.btn__count{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 7px;margin-left:2px;border-radius:999px;background:var(--on-deep-line);font:500 12px/1 var(--font-body);font-variant-numeric:tabular-nums}
.text-link{display:inline-flex;align-items:center;gap:6px;font:500 15px/1.3 var(--font-body);color:var(--accent-ink);text-decoration:none}
.text-link .icon,.text-link .sicon{width:16px;height:16px;transition:transform .2s}
.text-link:hover .icon,.text-link:hover .sicon{transform:translateX(3px)}

/* ---------- Status pills (on dark by default) ---------- */
.status{display:inline-flex;align-items:center;gap:9px;height:36px;padding:0 15px;border-radius:999px;background:color-mix(in srgb,var(--on-deep) 8%,transparent);border:1px solid var(--on-deep-line);font:500 14px/1 var(--font-body);color:var(--on-deep);white-space:nowrap;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.status[hidden]{display:none}
.status__dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0}
.is-open .status__dot{background:var(--open);box-shadow:0 0 0 4px rgba(95,208,143,.2);animation:pulse 2.4s ease-in-out infinite}
.status--accent{border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent)}
.status--light{background:var(--accent-tint);border-color:transparent;color:var(--accent-ink);-webkit-backdrop-filter:none;backdrop-filter:none}
.status--light .status__dot{background:var(--accent-ink)}
.status--light.is-open .status__dot{background:var(--open-ink);box-shadow:0 0 0 4px rgba(46,156,92,.15)}
@keyframes pulse{50%{box-shadow:0 0 0 7px rgba(95,208,143,0)}}

/* ---------- Hero ---------- */
.hero{position:relative;isolation:isolate;display:flex;align-items:flex-end;min-height:clamp(640px,90vh,900px);background-color:var(--deep);background-image:var(--grain);color:var(--on-deep);overflow:hidden}
.hero__media{position:absolute;top:0;right:0;bottom:0;width:min(62vw,1060px);z-index:-1;overflow:hidden;
  /* Fade the photo itself into the dark background, so the grain carries straight across */
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.25) 12%,rgba(0,0,0,.75) 30%,#000 46%);
          mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.25) 12%,rgba(0,0,0,.75) 30%,#000 46%)}
.hero__media picture,.hero__media img{width:100%;height:100%;object-fit:cover}
.hero__media--map .hero__tiles{opacity:.6}
.hero__tiles{position:absolute;display:grid}
.hero__media--map .hero__tiles img{width:256px;height:256px;max-width:none;object-fit:fill}
.hero__pin{position:absolute;left:58%;top:50%;transform:translate(-50%,-100%);color:var(--accent);filter:drop-shadow(0 10px 18px rgba(0,0,0,.5))}
.hero__pin .sicon{width:64px;height:64px}
.hero:has(.hero__media--map){min-height:clamp(560px,72vh,760px)}
.hero__media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--deep) 70%,transparent) 0%,transparent 20%,transparent 66%,color-mix(in srgb,var(--deep) 62%,transparent) 100%)}
.hero__inner{position:relative;align-self:stretch;width:100%;display:flex;align-items:flex-end;justify-content:space-between;gap:32px;padding-top:calc(var(--header-h) + 56px);padding-bottom:76px}
.hero__content{max-width:660px}
.hero__back{position:absolute;top:calc(var(--header-h) + 30px);left:var(--gutter);display:inline-flex;align-items:center;gap:8px;font:500 14px/1 var(--font-body);color:var(--on-deep-2);text-decoration:none;transition:color .2s}
.hero__back:hover{color:#fff}
.hero__back .sicon{width:16px;height:16px;transition:transform .2s var(--ease)}
.hero__back:hover .sicon{transform:translateX(-3px)}
.hero__where{display:flex;align-items:center;gap:8px;font:500 17px/1.3 var(--font-body);color:var(--on-deep-2)}
.hero__where .sicon{width:18px;height:18px;color:var(--accent)}
.hero__name{font:400 clamp(96px,11.5vw,184px)/.82 var(--font-display);letter-spacing:-.04em;color:var(--on-deep);margin:26px 0 28px;text-shadow:0 20px 60px rgba(0,0,0,.35)}
.hero__blurb{font:350 22px/1.5 var(--font-body);color:color-mix(in srgb,var(--on-deep) 86%,transparent);max-width:30em;text-wrap:pretty}
.hero__status{display:flex;flex-wrap:wrap;gap:8px;margin-top:30px}
.hero__status:not(:has(.status:not([hidden]))){display:none}
.hero__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.hero__checked{font:400 13px/1.5 var(--font-body);color:var(--on-deep-2);padding-bottom:4px}
.hero__checked a{color:var(--on-deep-2);text-underline-offset:2px}
.hero__checked a:hover{color:var(--on-deep)}
/* Pub page section menu */
.pubnav{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--page) 88%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(16px);backdrop-filter:saturate(1.4) blur(16px);border-bottom:1px solid var(--line)}
.pubnav__inner{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-top:10px;padding-bottom:10px}
.pubnav__inner::-webkit-scrollbar{display:none}
.pubnav a{flex-shrink:0;display:inline-flex;align-items:center;height:38px;padding:0 16px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);font:500 14px/1 var(--font-body);color:var(--ink);text-decoration:none;transition:background .2s,color .2s,border-color .2s}
.pubnav a:hover{border-color:var(--ink)}
.pubnav a.is-on{background:var(--deep);border-color:var(--deep);color:var(--on-deep)}
.pub > .wrap > section[id]{scroll-margin-top:80px}
@media (prefers-reduced-motion:no-preference){
  .hero__media img{animation:settle 2.4s var(--ease) both}
  .hero__content > *{animation:rise 1s var(--ease) both}
  .hero__content > :nth-child(2){animation-delay:.08s}
  .hero__content > :nth-child(3){animation-delay:.16s}
  .hero__content > :nth-child(4){animation-delay:.24s}
  .hero__content > :nth-child(5){animation-delay:.32s}
}
@keyframes settle{from{transform:scale(1.08)}to{transform:scale(1)}}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* ---------- What's here ---------- */
.here{position:relative;margin-top:72px;padding:58px 60px 0;border-radius:var(--r-xl);background-color:var(--deep);background-image:var(--grain);color:var(--on-deep);scroll-margin-top:24px}
.here__head{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;padding-bottom:34px}
.here__title{font:400 clamp(64px,6.6vw,100px)/.86 var(--font-display);letter-spacing:-.04em;color:var(--on-deep)}
.here__intro{max-width:330px;font:400 15px/1.5 var(--font-body);color:var(--on-deep-2);padding-bottom:6px}
.here__intro strong{display:block;font-weight:500;color:var(--on-deep);margin-bottom:2px}
.here__cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--on-deep-line)}
.here__group{padding:26px 30px 34px;border-left:1px solid var(--on-deep-line)}
.here__group:first-child{padding-left:0;border-left:0}
.here__group:last-child{padding-right:0}
.here__label{display:flex;align-items:center;justify-content:space-between;gap:12px;font:500 12px/1 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.here__label span{font-variant-numeric:tabular-nums;letter-spacing:0;color:color-mix(in srgb,var(--on-deep) 40%,transparent)}
.here__group li{border-bottom:1px solid var(--on-deep-line)}
.here__group li:last-child{border-bottom:0}
.amen{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 0}
.amen__icon{width:40px;height:40px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;transition:background .25s,color .25s}
.amen__icon .sicon{width:22px;height:22px}
.amen__text{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.amen__label{font:500 16px/1.3 var(--font-body);color:var(--on-deep)}
.amen__sub{font:400 13px/1.4 var(--font-body);color:var(--on-deep-2);margin-top:2px}
.amen__count{font:700 26px/1 var(--font-body);letter-spacing:-.02em;color:var(--accent);font-variant-numeric:tabular-nums}
.amen--button{width:100%;margin:0;border:0;background:none;text-align:left;cursor:pointer}
.amen__go{width:30px;height:30px;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);color:var(--accent);display:grid;place-items:center;transition:background .25s,color .25s,border-color .25s,transform .25s var(--ease)}
.amen__go .sicon{width:14px;height:14px}
.amen--button:hover .amen__icon,.amen--button:hover .amen__go{background:var(--accent);border-color:var(--accent);color:var(--deep)}
.amen--button:hover .amen__go{transform:translate(2px,-2px)}
.amen--button:hover .amen__label{text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--accent)}
.here__todo{display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px;padding:22px 0 26px;border-top:1px solid var(--on-deep-line)}
.here__missed{font:400 15px/1.5 var(--font-body);color:var(--on-deep-2)}
.here__missed strong{color:var(--on-deep);font-weight:600;margin-right:4px}
.here__todo-label{font:500 12px/1 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb,var(--on-deep) 50%,transparent)}
.here__chips{display:flex;flex-wrap:wrap;gap:6px}
.here__chips .chip{border-color:color-mix(in srgb,var(--on-deep) 22%,transparent);color:var(--on-deep-2);height:30px;font-size:13px}
.here__tell{margin-left:auto;display:inline-flex;align-items:center;gap:7px;font:500 14px/1 var(--font-body);color:var(--accent);text-decoration:none}
.here__tell .sicon{width:15px;height:15px;transition:transform .2s var(--ease)}
.here__tell:hover .sicon{transform:translateX(3px)}
.here .fact:hover,.here .fact:focus-visible,.here .fact[aria-describedby]{background:var(--accent-soft);box-shadow:0 0 0 4px var(--accent-soft)}

/* ---------- Sections ---------- */
.section{margin-top:120px;scroll-margin-top:24px}
.section__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px;padding-bottom:22px;border-bottom:2px solid var(--ink)}
.section__title{font:400 clamp(48px,4.6vw,64px)/.9 var(--font-display);letter-spacing:-.035em}
.section__link{display:inline-flex;align-items:center;gap:7px;padding-bottom:6px;font:500 15px/1 var(--font-body);color:var(--accent-ink);text-decoration:none;white-space:nowrap}
.section__link .sicon{width:15px;height:15px;transition:transform .2s var(--ease)}
.section__link:hover .sicon{transform:translate(2px,-2px)}

/* ---------- What's on: tickets, then the regulars ---------- */
.tickets{display:flex;flex-direction:column;gap:12px;filter:drop-shadow(0 14px 18px rgba(21,17,15,.07)) drop-shadow(0 2px 3px rgba(21,17,15,.05))}
.section__head + .tickets,.section__head + .posts{margin-top:28px}
.ticket{--tear1:150px;--tear2:calc(100% - 220px);--hole:11px;position:relative;display:grid;grid-template-columns:var(--tear1) minmax(0,1fr) 220px;min-height:148px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  /* Punch half-circles out of the top and bottom edge where each part tears off, like a real ticket */
  --cut:transparent var(--hole),#000 calc(var(--hole) + .5px);
  -webkit-mask:radial-gradient(circle at var(--tear1) 0,var(--cut)),radial-gradient(circle at var(--tear1) 100%,var(--cut)),radial-gradient(circle at var(--tear2) 0,var(--cut)),radial-gradient(circle at var(--tear2) 100%,var(--cut));
  -webkit-mask-composite:source-in;
  mask:radial-gradient(circle at var(--tear1) 0,var(--cut)),radial-gradient(circle at var(--tear1) 100%,var(--cut)),radial-gradient(circle at var(--tear2) 0,var(--cut)),radial-gradient(circle at var(--tear2) 100%,var(--cut));
  mask-composite:intersect}
.ticket__date{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background-color:var(--deep);background-image:var(--grain);color:var(--on-deep)}
.ticket__dow{font:500 12px/1 var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.ticket__day{font:700 62px/.82 var(--font-body);letter-spacing:-.05em;font-variant-numeric:tabular-nums}
.ticket__in{font:400 12px/1 var(--font-body);color:color-mix(in srgb,var(--on-deep) 55%,transparent);margin-top:2px}
.ticket__in:empty{display:none}
.gig__date i{font:400 12px/1 var(--font-body);font-style:normal;color:var(--muted);margin-top:2px}
.actcard__in{font-style:normal;color:var(--muted)}
.ticket__mon{font:500 13px/1 var(--font-body);letter-spacing:.2em;text-transform:uppercase;color:var(--on-deep-2)}
.ticket__body,.ticket__stub{position:relative;display:flex;flex-direction:column;justify-content:center}
.ticket__body{padding:22px 32px}
.ticket__stub{padding:22px 26px;border-left:2px dashed var(--line-strong);gap:5px}
/* Notches where the ticket would tear */
.ticket__type{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font:500 13px/1 var(--font-body);color:var(--accent-ink)}
.ticket__type .sicon{width:17px;height:17px}
.ticket__tag{margin-left:6px;padding:6px 10px;border-radius:999px;background:var(--accent-tint);color:var(--accent-ink);font:500 12px/1 var(--font-body)}
.ticket__title{font:700 26px/1.12 var(--font-body);letter-spacing:-.03em;margin:10px 0 6px;text-wrap:balance}
.ticket__detail{font:400 15px/1.5 var(--font-body);color:var(--muted)}
.ticket__label{font:500 11px/1 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.ticket__time{font:500 18px/1.3 var(--font-body);color:var(--ink)}
.ticket__link{display:inline-flex;align-items:center;gap:7px;margin-top:12px;font:500 15px/1 var(--font-body);color:var(--accent-ink);text-decoration:none}
.ticket__link .sicon{width:15px;height:15px;transition:transform .2s var(--ease)}
.ticket__link:hover .sicon{transform:translate(2px,-2px)}
.tickets + .sublabel,.empty + .sublabel{margin-top:52px}
/* Homepage Coming up on wide screens: two columns of shorter tickets, time and buttons along the bottom */
@media (min-width:1000px){
  .tickets.rail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
  .rail .ticket{grid-template-columns:120px minmax(0,1fr);-webkit-mask:none;mask:none}
  .rail .ticket__stub{grid-column:1 / -1;border-left:0;border-top:2px dashed var(--line-strong);flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:6px 14px;padding:18px 22px}
  .rail .ticket__link{margin:0 0 0 auto}
  .rail .ticket__acts{flex-basis:auto;margin-top:0}
  .rail .ticket__day{font-size:52px}
  .rail .ticket__body{padding:20px 22px;justify-content:flex-start}
  .rail .ticket__title{font-size:23px}
}
.empty{display:flex;align-items:center;gap:18px;padding:24px 26px;border:1.5px dashed var(--line-strong);border-radius:var(--r-lg);font:400 17px/1.5 var(--font-body);color:var(--muted)}
.empty > .sicon{width:28px;height:28px;flex-shrink:0;color:var(--accent-ink)}
.empty p{flex:1}
.empty b{color:var(--ink);font-weight:500}
.regulars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line)}
.regular{padding:30px 34px 6px;border-left:1px solid var(--line)}
.regular:nth-child(3n+1){padding-left:0;border-left:0}
.regular:nth-child(3n){padding-right:0}
.regular .medal{margin-bottom:20px}
.regular__type{font:500 11px/1 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--accent-ink)}
.regular__title{font:700 21px/1.25 var(--font-body);letter-spacing:-.02em;margin-top:10px}
.regular__when{font:400 16px/1.45 var(--font-body);color:var(--ink-2);margin-top:6px}
.regular__detail{font:400 14px/1.5 var(--font-body);color:var(--muted);margin-top:8px}

/* ---------- Latest ---------- */
.posts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.post{position:relative;display:flex;flex-direction:column;padding:26px 26px 24px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.post:hover{transform:translateY(-4px);border-color:var(--line-strong);box-shadow:0 30px 50px -34px rgba(21,17,15,.45)}
.post__top{display:flex;align-items:center;justify-content:space-between;gap:12px;font:500 13px/1.2 var(--font-body);color:var(--muted)}
.post__src{display:inline-flex;align-items:center;gap:8px}
.post__src .sicon{width:20px;height:20px;color:var(--accent-ink)}
.post__pub{position:relative;z-index:1;font:700 15px/1.2 var(--font-body);color:var(--ink);text-decoration:none}
.post__pub:hover{text-decoration:underline}
.post__date{font-variant-numeric:tabular-nums;white-space:nowrap}
.post__text{flex:1;font:400 18px/1.5 var(--font-body);letter-spacing:-.005em;color:var(--ink);margin:18px 0 24px;text-wrap:pretty}
.post__more{display:inline-flex;align-items:center;gap:8px;font:500 14px/1 var(--font-body);color:var(--accent-ink);text-decoration:none}
.post__more::after{content:"";position:absolute;inset:0;border-radius:inherit}
.post__more .sicon{width:16px;height:16px}
.post__more .sicon:last-child{width:14px;height:14px;transition:transform .2s var(--ease)}
.post:hover .post__more .sicon:last-child{transform:translate(2px,-2px)}

/* ---------- Hours & location ---------- */
.visit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:16px;align-items:stretch;margin-top:28px}
.hours-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:30px 30px 26px;box-shadow:var(--shadow-card)}
.hours-card__top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.hours-card__top h3{font:700 22px/1.2 var(--font-body);letter-spacing:-.015em}
.hours{width:100%;border-collapse:separate;border-spacing:0}
.hours thead th{font:500 11px/1 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);text-align:left;padding:10px 12px}
.hours tbody th{font:500 16px/1 var(--font-body);color:var(--ink);text-align:left;height:46px;padding:0 12px;border-top:1px solid var(--line);white-space:nowrap}
.hours td{height:46px;padding:0 12px;border-top:1px solid var(--line);font:400 16px/1 var(--font-body);font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink-2)}
.hours .is-closed{color:var(--muted)}
.hours tr.is-today th,.hours tr.is-today td{background:var(--accent-tint);border-top-color:transparent;color:var(--ink);font-weight:500}
.hours tr.is-today + tr th,.hours tr.is-today + tr td{border-top-color:transparent}
.hours tr.is-today th{border-radius:12px 0 0 12px}
.hours tr.is-today td:last-child{border-radius:0 12px 12px 0}
.today-note{display:none;margin-left:10px;padding:4px 7px;border-radius:999px;background:var(--deep);color:var(--on-deep);font:500 10px/1 var(--font-body);letter-spacing:.1em;text-transform:uppercase;vertical-align:2px}
.hours tr.is-today .today-note{display:inline-block}
.day-short{display:none;text-decoration:none}
.hours-card:has(.hours-card__none){align-self:start}
.hours-card__none{font:400 16px/1.55 var(--font-body);color:var(--muted);padding:14px 0 4px;border-top:1px solid var(--line)}
.hours-card__foot{font:400 13px/1.5 var(--font-body);color:var(--muted);margin-top:16px}
.map-card{position:relative;min-height:500px;border-radius:var(--r-lg);overflow:hidden;background:#E9E3D8;border:1px solid var(--line);isolation:isolate}
.map-card__map{position:absolute;inset:0;display:block;overflow:hidden}
/* A block of map tiles drawn by tools/render-map.mjs, shifted so the pub sits right of centre */
.map-card__tiles{position:absolute;display:grid;transition:transform 1.4s var(--ease)}
.map-card__tiles img{width:256px;height:256px;max-width:none}
.map-card__map:hover .map-card__tiles{transform:scale(1.035)}
.map-card__pin{position:absolute;left:66%;top:44%;transform:translate(-50%,-100%);color:var(--accent);filter:drop-shadow(0 8px 14px rgba(0,0,0,.6))}
.map-card__pin .sicon{width:50px;height:50px}
.map-card__credit{position:absolute;right:10px;bottom:10px;padding:4px 7px;border-radius:6px;background:color-mix(in srgb,var(--deep) 75%,transparent);font:400 11px/1 var(--font-body);color:var(--on-deep-2)}
.map-card__open{position:absolute;right:14px;top:14px;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 13px;border-radius:999px;background:var(--paper);font:500 13px/1 var(--font-body);color:var(--ink);box-shadow:0 10px 24px -12px rgba(0,0,0,.4);opacity:0;transform:translateY(-4px);transition:opacity .2s,transform .2s var(--ease)}
.map-card__open .sicon{width:14px;height:14px}
.map-card__map:hover .map-card__open,.map-card__map:focus-visible .map-card__open{opacity:1;transform:none}
.map-card__info{position:absolute;left:20px;bottom:20px;z-index:2;width:min(380px,calc(100% - 40px));padding:22px 22px 18px;background:var(--paper);border-radius:20px;box-shadow:0 24px 50px -24px rgba(0,0,0,.5)}
.map-card__name{font:700 20px/1.2 var(--font-body);letter-spacing:-.015em}
.map-card__addr{font:400 15px/1.45 var(--font-body);color:var(--ink-2);margin-top:4px}
.map-card__near{font:400 14px/1.45 var(--font-body);color:var(--muted);margin-top:2px}
.map-card__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.map-card__social{display:flex;gap:14px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.map-card__social a{color:var(--muted);transition:color .2s}
.map-card__social a:hover{color:var(--ink)}
.map-card__social .sicon{width:22px;height:22px}
.edit-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:28px;font:400 15px/1.4 var(--font-body);color:var(--muted)}
.edit-line .sicon{width:18px;height:18px}
.edit-line a{color:var(--accent-ink);font-weight:500}

/* ---------- Last checked tooltip ---------- */
.fact{display:inline;margin:0;padding:0;border:0;background:none;font:inherit;color:inherit;text-align:inherit;cursor:help;border-radius:4px;transition:background .15s,box-shadow .15s}
.fact:hover,.fact:focus-visible,.fact[aria-describedby]{background:var(--accent-tint);box-shadow:0 0 0 4px var(--accent-tint);outline:none}
.popover{position:absolute;z-index:300;width:250px;display:flex;flex-direction:column;gap:4px;padding:12px 14px 13px;background:var(--deep);color:var(--on-deep);border-radius:12px;box-shadow:0 18px 40px -18px rgba(0,0,0,.55);text-align:left}
.popover[hidden]{display:none}
.popover__kicker{font:500 11px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.popover__date{font:500 15px/1.3 var(--font-body);margin-top:2px}
.popover__source,.popover__evidence{font:400 13px/1.4 var(--font-body);color:var(--on-deep-2)}
.popover a{color:var(--on-deep)}

/* ---------- Popups ---------- */
.sheet-backdrop{position:fixed;inset:0;z-index:100;background:color-mix(in srgb,var(--deep) 60%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;transition:opacity .3s}
.sheet{position:fixed;left:50%;top:50%;z-index:101;width:min(calc(100% - 32px),560px);max-height:86vh;overflow-y:auto;background:var(--paper);padding:26px 30px 28px;border-radius:var(--r-lg);box-shadow:0 40px 90px -30px rgba(0,0,0,.5);opacity:0;transform:translate(-50%,-46%);transition:transform .35s var(--ease),opacity .35s var(--ease)}
.sheet[hidden],.sheet-backdrop[hidden]{display:none}
.is-open .sheet-backdrop{opacity:1}
.is-open .sheet{opacity:1;transform:translate(-50%,-50%)}
.sheet__head{display:flex;align-items:center;gap:16px;padding-bottom:18px;border-bottom:2px solid var(--ink)}
.sheet__heading{flex:1;min-width:0}
.sheet__head h2{font:400 36px/.95 var(--font-display);letter-spacing:-.03em}
.sheet__hint{font:400 14px/1.4 var(--font-body);color:var(--muted);margin-top:5px}
.sheet__close{width:42px;height:42px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line-strong);background:transparent;cursor:pointer;transition:border-color .2s,background .2s}
.sheet__close:hover{border-color:var(--ink);background:var(--page)}
.sheet__close .icon{width:18px;height:18px}
.sheet__label{margin:26px 0 4px}
.sheet__row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:13px 0;border-bottom:1px solid var(--line);font:400 15px/1.4 var(--font-body)}
.sheet__row--stack{flex-direction:column;align-items:flex-start;gap:3px}
.sheet__row strong{font:700 16px/1.3 var(--font-body)}
.sheet__row--stack span{color:var(--muted);font-size:14px}
.sheet__value{color:var(--ink-2);font-size:14px;text-align:right}
.sheet__note{font:400 14px/1.45 var(--font-body);color:var(--muted);padding:6px 0}
.sheet__checked{font:400 13px/1.4 var(--font-body);color:var(--muted);margin-top:20px}
.sheet--video{width:min(calc(100% - 48px),1100px);max-height:none;padding:0;overflow:hidden;background:#000}
.sheet--video video{width:100%;max-height:82vh}
.sheet__close--float{position:absolute;top:14px;right:14px;z-index:2;border-color:rgba(255,255,255,.3);color:#fff;background:rgba(0,0,0,.35)}
.sheet__close--float:hover{background:rgba(0,0,0,.6);border-color:#fff}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 4px}
.chip{display:inline-flex;align-items:center;height:32px;padding:0 13px;border-radius:999px;border:1px dashed var(--line-strong);font:500 13px/1 var(--font-body);color:var(--ink-2)}
.chip--solid{border-style:solid}

/* ---------- Photos popup ---------- */
.lightbox{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:92px 110px 124px;background:color-mix(in srgb,var(--deep) 96%,#000);color:var(--on-deep);opacity:0;transition:opacity .3s}
.lightbox[hidden]{display:none}
.lightbox.is-open{opacity:1}
.lightbox__title{position:absolute;top:30px;left:34px;display:flex;align-items:baseline;gap:14px;font:400 30px/1 var(--font-display);letter-spacing:-.02em}
.lightbox__title span{font:500 14px/1 var(--font-body);letter-spacing:0;color:var(--on-deep-2);font-variant-numeric:tabular-nums}
.lightbox__figure{display:flex;flex-direction:column;align-items:center;gap:14px;max-width:100%;max-height:100%}
.lightbox__img{max-width:100%;max-height:calc(100vh - 270px);border-radius:14px;object-fit:contain;box-shadow:0 40px 100px -30px rgba(0,0,0,.7)}
.lightbox__caption{display:flex;justify-content:space-between;gap:24px;width:100%;font:400 14px/1.4 var(--font-body);color:var(--on-deep-2)}
.lightbox__btn{position:absolute;width:52px;height:52px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--on-deep-line);background:color-mix(in srgb,var(--on-deep) 6%,transparent);color:var(--on-deep);cursor:pointer;transition:background .2s,border-color .2s}
.lightbox__btn:hover{background:color-mix(in srgb,var(--on-deep) 16%,transparent);border-color:color-mix(in srgb,var(--on-deep) 50%,transparent)}
.lightbox__btn .sicon,.lightbox__btn .icon{width:22px;height:22px}
.lightbox__close{top:22px;right:22px}
.lightbox__prev{left:28px;top:50%;transform:translateY(-50%)}
.lightbox__next{right:28px;top:50%;transform:translateY(-50%)}
.lightbox__thumbs{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);display:flex;gap:10px}
.lightbox__thumbs button{width:76px;height:54px;padding:0;border:0;border-radius:10px;overflow:hidden;background:none;cursor:pointer;opacity:.45;transition:opacity .2s,box-shadow .2s}
.lightbox__thumbs button:hover{opacity:.8}
.lightbox__thumbs button.is-active{opacity:1;box-shadow:0 0 0 2px var(--deep),0 0 0 4px var(--accent)}
.lightbox__thumbs img{width:100%;height:100%;object-fit:cover}

/* Scroll reveal: site.js only hides things that start below the fold */
.reveal{transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.is-pending{opacity:0;transform:translateY(26px)}

/* ---------- Footer ---------- */
.site-footer{margin-top:150px;background-color:var(--deep);background-image:var(--grain);color:var(--on-deep);overflow:hidden}
.site-footer__inner{display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap;padding-top:56px}
.site-footer__line{max-width:40ch;font:400 16px/1.5 var(--font-body);color:var(--on-deep-2)}
.site-footer__nav{display:flex;flex-wrap:wrap;gap:4px 28px}
.site-footer__nav a{display:inline-block;padding:8px 0;font:500 15px/1 var(--font-body);color:var(--on-deep-2);text-decoration:none;transition:color .2s}
.site-footer__nav a:hover{color:#fff}
.site-footer__mark{display:block;padding:56px 0 40px;font:400 clamp(64px,13.6vw,196px)/.8 var(--font-display);letter-spacing:-.045em;color:var(--accent);text-decoration:none;white-space:nowrap}
.site-footer__base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 24px;position:relative;padding-top:22px;padding-bottom:30px;font:400 14px/1 var(--font-body);color:color-mix(in srgb,var(--on-deep) 55%,transparent)}
.site-footer__base::before{content:"";position:absolute;top:0;left:var(--gutter);right:var(--gutter);border-top:1px solid var(--on-deep-line)}
.site-footer__base a{color:var(--on-deep)}

/* ---------- All pubs ---------- */
.dir-hero{background-color:var(--deep);background-image:var(--grain);color:var(--on-deep);padding:calc(var(--header-h) + 84px) 0 72px}
.dir-hero__title{font:400 clamp(64px,8.4vw,132px)/.86 var(--font-display);letter-spacing:-.04em;margin:0 0 26px}
.dir-hero__sub{font:350 21px/1.5 var(--font-body);color:color-mix(in srgb,var(--on-deep) 82%,transparent);max-width:34em}
.filters{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--page) 88%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(16px);backdrop-filter:saturate(1.4) blur(16px);border-bottom:1px solid var(--line)}
.filters__inner{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:76px;padding-top:14px;padding-bottom:14px}
.filters__chips{display:flex;flex-wrap:wrap;gap:8px}
.fchip{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);font:500 14px/1 var(--font-body);color:var(--ink);cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.fchip span{font-variant-numeric:tabular-nums;color:var(--muted)}
.fchip:hover{border-color:var(--ink)}
.fchip.is-on{background:var(--deep);border-color:var(--deep);color:var(--on-deep)}
.fchip.is-on span{color:var(--accent)}
.filters__search{display:flex;align-items:center;gap:10px;height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);color:var(--muted);min-width:280px}
.filters__search .sicon{width:18px;height:18px}
.filters__search input{flex:1;min-width:0;border:0;background:none;font:400 15px/1 var(--font-body);color:var(--ink);outline:none}
.filters__search:focus-within{border-color:var(--ink)}
.dir__group{margin-top:88px;scroll-margin-top:100px}
.dir__group[hidden]{display:none}
.dir__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px;padding-bottom:20px;border-bottom:2px solid var(--ink);margin-bottom:28px}
.dir__title{font:400 clamp(44px,4.4vw,60px)/.9 var(--font-display);letter-spacing:-.035em}
.dir__count{font:700 20px/1 var(--font-body);color:var(--accent-ink);font-variant-numeric:tabular-nums}
.dir__note{flex-basis:100%;font:400 15px/1.5 var(--font-body);color:var(--muted)}
.dir__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.dir__empty{margin-top:72px;font:400 18px/1.5 var(--font-body);color:var(--muted)}
.dir__empty a{color:var(--accent-ink);font-weight:500}
.pcard[hidden]{display:none}
.pcard__link{display:flex;flex-direction:column;height:100%;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;text-decoration:none;transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.pcard__link:hover{transform:translateY(-4px);border-color:var(--line-strong);box-shadow:0 30px 50px -34px rgba(0,0,0,.45)}
.pcard__media{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:#211D19;isolation:isolate}
.pcard__media picture,.pcard__media img{width:100%;height:100%;object-fit:cover}
.pcard__media--map img{width:256px;height:256px;max-width:none;object-fit:fill}
.pcard__map{position:absolute;display:grid;transition:transform 1.2s var(--ease)}
.pcard__link:hover .pcard__map,.pcard__link:hover .pcard__media picture img{transform:scale(1.04)}
.pcard__media picture img{transition:transform 1.2s var(--ease)}
.pcard__pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);color:var(--accent);filter:drop-shadow(0 6px 12px rgba(0,0,0,.6))}
.pcard__pin .sicon{width:38px;height:38px}
.pcard__body{display:flex;flex-direction:column;flex:1;padding:20px 22px 22px}
.pcard__top{display:flex;justify-content:space-between;gap:12px;font:500 12px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.pcard__kind{color:var(--accent-ink)}
.pcard__name{font:400 34px/.95 var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:16px 0 10px}
.pcard__blurb{font:400 15px/1.5 var(--font-body);color:var(--ink-2)}
.pcard__foot{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:auto;padding-top:18px}
.pcard__status{display:inline-flex;align-items:center;gap:8px;font:500 13px/1 var(--font-body);color:var(--ink-2)}
.pcard__status[hidden]{display:none}
.pcard__status .status__dot{background:var(--line-strong)}
.pcard__status.is-open .status__dot{background:var(--open-ink);box-shadow:0 0 0 4px rgba(46,156,92,.15)}
.pcard__tags{display:flex;flex-wrap:wrap;gap:6px}
.pcard__tags span{padding:6px 10px;border-radius:999px;background:var(--accent-tint);color:var(--accent-ink);font:500 12px/1 var(--font-body)}
.pcard__soon{font:400 13px/1 var(--font-body);color:var(--muted)}
.tonight__links{display:inline-flex;gap:16px;align-items:baseline}
.dir-hero__links{margin:-8px 0 18px}
.text-link--light{display:inline-flex;align-items:center;gap:8px;font:500 16px/1 var(--font-body);color:var(--accent);text-decoration:none}
.text-link--light .sicon{width:16px;height:16px}
.weekend__date{font:500 14px/1 var(--font-body);color:var(--muted);letter-spacing:.04em}
.weekend__day + .weekend__day{margin-top:56px}
.act__plays{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.act__plays .fchip{text-decoration:none}
.act__plays .sicon{color:var(--accent-ink)}
/* Suggest an edit: the structured part */
.sform__detail{display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:16px;background:color-mix(in srgb,var(--ink) 4%,transparent)}
.sform__detail[hidden]{display:none}
.sform .sform__detail input[type="checkbox"]{width:18px;height:18px;padding:0;flex-shrink:0;accent-color:var(--deep)}
.sform__hours{display:flex;flex-direction:column;gap:8px}
.sform__day{display:grid;grid-template-columns:42px minmax(0,1fr) auto minmax(0,1fr) auto;align-items:center;gap:8px}
.sform__day b{font:600 14px/1 var(--font-body)}
.sform__day > span{font-size:13px;color:var(--muted)}
.sform .sform__day input[type="time"]{padding:9px 8px;font-size:15px}
.sform__closed{display:inline-flex;align-items:center;gap:6px;font:500 13px/1 var(--font-body);color:var(--ink-2)}
.sform__here{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px}
.sform__tick{display:flex;align-items:center;gap:8px;min-height:36px;font:400 15px/1.25 var(--font-body)}
.sform__tick span{flex:1}
.sform .sform__tick input[type="number"]{width:62px;padding:6px 8px;font-size:15px}
@media (max-width:620px){.sform__here{grid-template-columns:minmax(0,1fr)}.sform__day{grid-template-columns:36px minmax(0,1fr) minmax(0,1fr) auto;gap:6px}.sform__day > span{display:none}.sform .sform__day input[type="time"]{padding:9px 6px;text-align:center}.sform__day input[type="time"]::-webkit-calendar-picker-indicator{display:none}}
/* This weekend: the day heading says the date, so the rows don't repeat it */
.weekend .gig{grid-template-columns:minmax(0,1fr) auto}
.weekend .gig__date{display:none}
/* No photo yet: dark panel, faint dots in the corner, the mark and the street name */
.pcard__media--brand{background-color:var(--deep);background-image:var(--grain)}
.pcard__brand{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:18px 20px 20px;color:var(--on-deep)}
.pcard__brand::before{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='52' height='52'%3E%3Cg fill='%23F4EEE3' fill-opacity='.16'%3E%3Ccircle cx='20.75' cy='20.75' r='1.3'/%3E%3Ccircle cx='31.25' cy='20.75' r='1.3'/%3E%3Ccircle cx='20.75' cy='31.25' r='1.3'/%3E%3Ccircle cx='31.25' cy='31.25' r='1.3'/%3E%3C/g%3E%3C/svg%3E") 0 0/52px 52px;-webkit-mask-image:radial-gradient(ellipse 80% 90% at 100% 100%,#000 25%,transparent 70%);mask-image:radial-gradient(ellipse 80% 90% at 100% 100%,#000 25%,transparent 70%)}
.pcard__mark{position:relative;width:26px;height:26px}
.pcard__street{position:relative;font:400 clamp(30px,3vw,42px)/.9 var(--font-display);letter-spacing:-.03em;max-width:85%;transition:transform 1.2s var(--ease)}
.pcard__link:hover .pcard__street{transform:translateX(4px)}
/* Save (heart) on each card */
.pcard{position:relative}
.pcard__save{position:absolute;top:12px;right:12px;z-index:2;width:40px;height:40px;display:grid;place-items:center;border:0;border-radius:50%;background:color-mix(in srgb,var(--deep) 70%,transparent);color:var(--on-deep);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .2s var(--ease)}
.pcard__save .icon{width:19px;height:19px}
.pcard__save:hover{transform:scale(1.08)}
.pcard__save[aria-pressed="true"]{background:var(--accent);color:var(--deep)}
.pcard__save[aria-pressed="true"] .icon{fill:currentColor}
.btn--save .icon{width:18px;height:18px}
.btn--save[aria-pressed="true"] .icon{fill:var(--accent);color:var(--accent)}
.fchip--saved .icon{width:15px;height:15px;color:var(--accent-ink)}
.fchip--saved.is-on .icon{fill:currentColor}
.fchip--saved[hidden]{display:none}

/* ---------- Filters: second row of chips ---------- */
.filters__inner{flex-wrap:wrap}
.filters__has{order:3;flex-basis:100%}
/* All pubs: one filter bar (search, open now, where, type, list/map), then the "has" chips */
.pf__inner{display:flex;flex-direction:column;gap:12px;padding-top:16px;padding-bottom:16px}
.pf__row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pf__search{flex:1 1 220px;display:flex;align-items:center;gap:10px;height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);color:var(--muted)}
.pf__search:focus-within{border-color:var(--ink)}
.pf__search .sicon{width:18px;height:18px}
.pf__search input{flex:1;min-width:0;border:0;background:none;font:400 15px/1 var(--font-body);color:var(--ink);outline:none}
.pf__open{display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 16px 0 10px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);font:500 14px/1 var(--font-body);color:var(--ink);cursor:pointer}
.pf__switch{position:relative;width:34px;height:20px;border-radius:999px;background:var(--line-strong);transition:background .2s}
.pf__switch::after{content:"";position:absolute;left:3px;top:3px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s var(--ease)}
.pf__open.is-on{border-color:var(--open-ink)}
.pf__open.is-on .pf__switch{background:var(--open)}
.pf__open.is-on .pf__switch::after{transform:translateX(14px)}
.pf__seg{display:inline-flex;padding:4px;border-radius:999px;background:color-mix(in srgb,var(--ink) 7%,transparent)}
.pf__seg button{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border:0;border-radius:999px;background:none;font:500 14px/1 var(--font-body);color:var(--ink-2);cursor:pointer}
.pf__seg button span{font-variant-numeric:tabular-nums;color:var(--muted)}
.pf__seg button.is-on{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.pf__select{position:relative;display:inline-flex}
.pf__select select{appearance:none;-webkit-appearance:none;height:44px;padding:0 40px 0 16px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);font:500 14px/1 var(--font-body);color:var(--ink);cursor:pointer}
.pf__select .sicon{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--muted);pointer-events:none}
.pf__view{margin-left:auto;order:2}
.pf__has{display:flex;flex-wrap:wrap;gap:8px;order:3;flex-basis:100%}
/* On phones the controls live in a bottom sheet behind a Filters button (see the 620px block); wider than that, the
   sheet's wrappers step aside and the controls sit in the bar */
.pf__more,.pf__backdrop,.pf__sheet-head,.pf__sheet-foot{display:none}
.pf__sheet,.pf__controls{display:contents}
.fchip.is-zero{opacity:.4;cursor:default}
.fchip.is-zero:hover{border-color:var(--line-strong)}
.pf__status{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding-top:22px;padding-bottom:4px;min-height:58px}
.pf__count{font:400 16px/1 var(--font-body);color:var(--muted)}
.pf__count b{font:700 22px/1 var(--font-body);color:var(--ink);font-variant-numeric:tabular-nums}
.pf__active{display:flex;flex-wrap:wrap;gap:6px}
.pf__pill{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 10px 0 12px;border-radius:999px;border:0;background:var(--deep);color:var(--on-deep);font:500 13px/1 var(--font-body);cursor:pointer}
.pf__pill span{color:var(--accent);font-size:16px}
.pf__clear{border:0;background:none;font:500 14px/1 var(--font-body);color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.pubs-mapview .dir{display:none}
.pmap{padding-top:14px;padding-bottom:72px}
.pmap[hidden]{display:none}
.pmap__canvas{height:min(74vh,720px);min-height:440px;border-radius:var(--r-lg);overflow:hidden;background:var(--deep);isolation:isolate}
.pmap__key{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:14px;font:400 14px/1.4 var(--font-body);color:var(--muted)}
.pmap__key span{display:inline-flex;align-items:center;gap:8px}
.pmap__key i{width:12px;height:12px;border-radius:50%;background:#8E867A;box-shadow:0 0 0 2px var(--deep)}
.pmap__key i.is-open{background:var(--accent)}
.pmap__key i.is-today{width:18px;height:18px;background:var(--accent)}
.pmap__key i.is-shut{background:var(--on-deep)}
.leaflet-container .leaflet-control-attribution a{color:var(--on-deep)}
.pm-pin{width:0!important;height:0!important}
.pm-pin i{position:absolute;left:-8px;top:-8px;width:16px;height:16px;border-radius:50%;background:#8E867A;box-shadow:0 0 0 3px var(--deep),0 4px 12px rgba(0,0,0,.5);cursor:pointer;transition:transform .15s var(--ease)}
.pm-pin.is-open i{background:var(--accent)}
.pm-pin.is-today i{left:-15px;top:-15px;width:30px;height:30px;display:grid;place-items:center;background:var(--accent);color:var(--deep);box-shadow:0 0 0 3px var(--deep),0 0 0 7px color-mix(in srgb,var(--accent) 30%,transparent),0 6px 16px rgba(0,0,0,.55)}
.pm-pin.is-today i .sicon{width:16px;height:16px}
.pm-pin span{position:absolute;padding:4px 8px;border-radius:8px;background:color-mix(in srgb,var(--deep) 88%,transparent);color:var(--on-deep);font:600 12px/1.2 var(--font-body);white-space:nowrap;pointer-events:none;transition:opacity .2s}
.pm-pin.is-today span{background:var(--accent);color:var(--deep)}
/* Something on today but not open right now: same pin, cream instead of lime */
.pm-pin.is-shut i{background:var(--on-deep);box-shadow:0 0 0 3px var(--deep),0 0 0 7px color-mix(in srgb,var(--on-deep) 24%,transparent),0 6px 16px rgba(0,0,0,.55)}
.pm-pin.is-shut span{background:var(--on-deep)}
.pm-pin.lbl-r span{left:13px;top:0;transform:translateY(-50%)}
.pm-pin.lbl-l span{right:13px;top:0;transform:translateY(-50%)}
.pm-pin.lbl-t span{bottom:13px;left:0;transform:translateX(-50%)}
.pm-pin.lbl-b span{top:13px;left:0;transform:translateX(-50%)}
.pm-pin.is-today.lbl-r span{left:20px}.pm-pin.is-today.lbl-l span{right:20px}.pm-pin.is-today.lbl-t span{bottom:20px}.pm-pin.is-today.lbl-b span{top:20px}
.pm-pin.lbl-x span{left:13px;top:0;transform:translateY(-50%);opacity:0}
.pm-pin.lbl-x:hover span,.pm-pin.lbl-x:focus span{opacity:1;z-index:2}
.pm-pin:hover i,.pm-pin:focus i{transform:scale(1.2)}
.pm-pin:focus{outline:none}
.pm-pin:focus-visible i{outline:2px solid var(--accent);outline-offset:3px}
.pm-pop__today{margin:10px 0 0!important}
.pm-pop__today li{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border-radius:10px;background:var(--accent-tint);font:400 14px/1.35 var(--font-body);color:var(--ink)}
.pm-pop__today li + li{margin-top:4px}
.pm-pop__today .sicon{width:16px;height:16px;flex-shrink:0;margin-top:1px;color:var(--accent-ink)}
.pm-pop__kind{font:500 11px/1.2 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 4px!important}
.wo-pop .leaflet-popup-content a.pm-pop__name{display:block;font:700 19px/1.2 var(--font-body);color:var(--ink);text-decoration:none}
.pm-pop__status{display:inline-block;margin:8px 0 0!important;padding:4px 10px;border-radius:999px;background:var(--line);font:500 12px/1.2 var(--font-body);color:var(--ink-2)}
.pm-pop__status.is-open{background:color-mix(in srgb,var(--open) 22%,transparent);color:var(--open-ink)}
.pm-pop__tags{margin:8px 0 0!important;font:400 13px/1.4 var(--font-body);color:var(--muted)}
.wo-pop .leaflet-popup-content a.pm-pop__go{display:inline-block;margin-top:10px;font:600 14px/1 var(--font-body);color:var(--accent-ink);text-decoration:none}
/* Shared map bits: back-to-town button and arrows for places out of view */
.map-reset{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 13px 0 11px;border:0;border-radius:999px;background:var(--accent);color:var(--deep);font:700 13px/1 var(--font-body);box-shadow:0 8px 20px -8px rgba(0,0,0,.7);cursor:pointer}
.map-reset[hidden]{display:none}
.map-full{display:none}
.leaflet-container.is-full{position:fixed!important;inset:0;z-index:1200;width:auto;height:auto;min-height:0;margin:0;border-radius:0}
@media (max-width:999px){.map-full{display:inline-flex}}
.map-reset svg{width:15px;height:15px}
.map-reset:hover{filter:brightness(1.06)}
.map-edge{position:absolute;inset:0;z-index:800;pointer-events:none}
.map-edge__btn{position:absolute;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px 0 9px;border:0;border-radius:999px;background:var(--accent);color:var(--deep);font:700 13px/1 var(--font-body);box-shadow:0 8px 20px -8px rgba(0,0,0,.7);cursor:pointer;pointer-events:auto;white-space:nowrap;transition:transform .15s var(--ease)}
.map-edge__btn:hover{transform:scale(1.05)}
.map-edge__btn > span{display:grid;place-items:center;width:16px;height:16px}
.map-edge__btn svg{width:16px;height:16px}
.map-edge__btn--0{top:12px;left:50%;translate:-50% 0}
.map-edge__btn--1{top:12px;right:12px}
.map-edge__btn--2{top:50%;right:12px;translate:0 -50%}
.map-edge__btn--3{bottom:28px;right:12px}
.map-edge__btn--4{bottom:28px;left:50%;translate:-50% 0}
.map-edge__btn--5{bottom:28px;left:12px}
.map-edge__btn--6{top:50%;left:12px;translate:0 -50%}
.map-edge__btn--7{top:12px;left:56px}
.map-edge__btn em{font-style:normal}
.map-hint{position:absolute;inset:0;z-index:900;display:grid;place-items:center;margin:0;padding:24px;background:rgba(23,19,15,.55);color:#fff;font:600 16px/1.3 var(--font-body);text-align:center;pointer-events:none;opacity:0;transition:opacity .25s}
.map-hint.is-shown{opacity:1}

/* Acts: the index of cards, and each act's page */
.acts-index{padding:56px var(--gutter) 80px}
.acts__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.actcard{position:relative;display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.actcard:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:0 30px 50px -34px rgba(21,17,15,.45)}
.actcard__link{display:flex;flex-direction:column;gap:10px;flex:1;padding:24px 24px 22px;text-decoration:none;color:var(--ink)}
.actcard__icon{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--deep);color:var(--accent)}
.actcard__icon .sicon{width:20px;height:20px}
.actcard__name{font:400 30px/1 var(--font-display);letter-spacing:-.03em;margin-top:8px;padding-right:56px}
.actcard__next{font:400 15px/1.45 var(--font-body);color:var(--ink-2)}
.actcard__next b{font-weight:600;color:var(--accent-ink)}
.actcard__more{font:500 13px/1 var(--font-body);color:var(--muted)}
.actcard__socials{position:absolute;top:22px;right:20px;display:flex;gap:4px}
.act__social{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:var(--ink-2);transition:background .2s,color .2s}
.act__social:hover{background:var(--accent-tint);color:var(--accent-ink)}
.act__social .sicon{width:19px;height:19px}
.act__links{display:flex;gap:6px;margin-top:-6px}
.act__about{margin:-8px 0 26px}
.act__links .act__social{width:44px;height:44px;border:1px solid var(--on-deep-line);color:var(--on-deep)}
.act__links .act__social:hover{background:var(--accent);color:var(--deep);border-color:var(--accent)}
.dir-hero__back{display:inline-flex;align-items:center;gap:8px;margin-bottom:28px;font:500 15px/1 var(--font-body);color:var(--on-deep-2);text-decoration:none}
.dir-hero__back .sicon{width:16px;height:16px}
.dir-hero__back:hover{color:var(--on-deep)}
.act{padding-bottom:80px}
.gigs{margin-top:8px}
.gig{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:18px;align-items:center;padding:18px 0;border-bottom:1px solid var(--line)}
.gig__date{display:flex;flex-direction:column;gap:4px;font:500 14px/1 var(--font-body);color:var(--muted)}
.gig__date b{font:700 22px/1 var(--font-body);color:var(--ink);letter-spacing:-.02em}
.gig__main{display:flex;flex-direction:column;gap:6px;min-width:0}
.gig__pub{display:inline-flex;align-items:center;gap:7px;font:600 19px/1.2 var(--font-body);color:var(--ink);text-decoration:none}
.gig__pub .sicon{width:18px;height:18px;color:var(--accent-ink)}
.gig__pub:hover{text-decoration:underline;text-underline-offset:3px}
.gig__main > span{font:400 15px/1.4 var(--font-body);color:var(--muted)}
.gig__type{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;background:var(--accent-tint);font:500 13px/1 var(--font-body);color:var(--accent-ink)}
.gig__type .sicon{width:15px;height:15px}
.gigs__none{padding:22px 0;font:400 17px/1.5 var(--font-body);color:var(--muted)}
.gigs__none[hidden]{display:none}

/* Add a gig: one row per night */
.gig-rows{display:flex;flex-direction:column;gap:12px;margin:4px 0 0;padding:0;list-style:none}
.gig-row{position:relative;display:grid;grid-template-columns:180px 130px minmax(0,1fr);gap:14px 14px;padding:18px 50px 20px 18px;border-radius:16px;background:color-mix(in srgb,var(--ink) 4%,transparent)}
.gig-row .sform__label{font-size:13px}
.gig-row__act{grid-column:1 / 3}
.gig-row input,.gig-row select{height:46px}
.gig-row .sform__select select{padding-right:34px}
.gig-row .sform__select .sicon{right:12px}
.gig-row__remove{position:absolute;top:12px;right:10px;width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:50%;background:none;color:var(--muted);cursor:pointer}
.gig-row__remove:hover{background:var(--line);color:var(--ink)}
.gig-row__remove[hidden]{display:none}
.gig-row__remove .sicon{width:16px;height:16px}
.gig-add{align-self:flex-start;margin-top:12px}
.gig-paste{border-top:1px solid var(--line);padding-top:16px}
.gig-paste summary{font:500 15px/1.3 var(--font-body);color:var(--accent-ink);cursor:pointer}
.gig-paste[open] summary{margin-bottom:14px}
.suggest-page .suggest:has([data-gig-form]){grid-template-columns:minmax(0,2.4fr) minmax(0,1fr)}

/* Add to home screen: a quiet button in the page header, and the iPhone steps */
.save-app{display:inline-flex;align-items:center;gap:9px;height:42px;margin-top:22px;padding:0 16px 0 13px;border-radius:999px;border:1px solid var(--on-deep-line);background:transparent;color:var(--on-deep);font:500 14px/1 var(--font-body);cursor:pointer;transition:border-color .2s,background .2s}
.save-app:hover{border-color:var(--on-deep)}
.save-app[hidden]{display:none}
.save-app .sicon{width:18px;height:18px;color:var(--accent)}
.save-sheet{position:fixed;inset:0;z-index:320;display:flex;align-items:flex-end;justify-content:center}
.save-sheet[hidden]{display:none}
.save-sheet__backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--deep) 62%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.save-sheet__panel{position:relative;width:min(460px,100%);margin:0 12px 12px;padding:28px 24px 26px;border-radius:24px;background:var(--paper);color:var(--ink);box-shadow:0 30px 60px -20px rgba(0,0,0,.6)}
.save-sheet__close{position:absolute;top:10px;right:10px}
.save-sheet__icon img{display:block;width:64px;height:64px;border-radius:16px}
.save-sheet__title{font:400 30px/1 var(--font-display);letter-spacing:-.03em;margin:16px 0 8px}
.save-sheet__lead{font:400 16px/1.45 var(--font-body);color:var(--ink-2)}
.save-sheet__steps{display:flex;flex-direction:column;gap:10px;margin:18px 0 0;padding:0;list-style:none}
.save-sheet__steps li{display:flex;align-items:center;gap:8px;padding:12px 14px;border-radius:14px;background:color-mix(in srgb,var(--ink) 5%,transparent);font:400 15px/1.3 var(--font-body)}
.save-sheet__steps li > span{display:grid;place-items:center;flex-shrink:0;width:24px;height:24px;margin-right:4px;border-radius:50%;background:var(--deep);color:var(--accent);font:700 12px/1 var(--font-body)}
.save-sheet__steps .sicon{width:18px;height:18px;color:#0A7AFF}
.save-sheet__steps b{font-weight:600}

/* About and Privacy */
.prose{max-width:calc(720px + 2 * var(--gutter));padding-top:56px;padding-bottom:88px}
.prose__section{padding:28px 0;border-top:1px solid var(--line)}
.prose__section:first-child{border-top:0;padding-top:0}
.prose h2{font:400 30px/1 var(--font-display);letter-spacing:-.03em;margin-bottom:14px}
.prose p{font:400 18px/1.6 var(--font-body);color:var(--ink-2)}
.prose p + p{margin-top:12px}
.prose a{color:var(--accent-ink);text-underline-offset:3px}
.prose__updated{margin-top:20px;font:400 14px/1.4 var(--font-body)!important;color:var(--muted)!important}
.site-footer__small{display:flex;flex-wrap:wrap;gap:8px 20px}

/* Hover note on links to other sites */
.ext-tip{position:fixed;z-index:500;padding:7px 11px;border-radius:9px;background:var(--deep);color:var(--on-deep);font:500 13px/1 var(--font-body);white-space:nowrap;pointer-events:none;box-shadow:0 10px 24px -10px rgba(0,0,0,.6)}
.ext-tip[hidden]{display:none}
.ext-tip span{color:var(--accent)}
.home-map{height:min(64vh,600px);min-height:420px;margin-top:28px}

/* Site search: header button, then a dialog with grouped results */
.search-btn{display:inline-flex;align-items:center;gap:9px;height:40px;padding:0 10px 0 14px;margin-left:8px;border-radius:999px;border:1px solid var(--line-strong);background:transparent;color:inherit;font:500 14px/1 var(--font-body);cursor:pointer;transition:border-color .2s,background .2s}
.search-btn:hover{border-color:currentColor}
.search-btn .sicon{width:17px;height:17px}
.search-btn kbd{display:grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:6px;background:color-mix(in srgb,currentColor 12%,transparent);font:500 12px/1 var(--font-body)}
.site-header--overlay .search-btn{border-color:var(--on-deep-line)}
.site-header__bar .nav{margin-left:auto}
.search{position:fixed;inset:0;z-index:300;display:flex;justify-content:center;align-items:flex-start;padding:10vh 20px 20px}
.search[hidden]{display:none}
.search__backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--deep) 62%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .2s}
.search.is-open .search__backdrop{opacity:1}
.search__panel{position:relative;width:min(680px,100%);max-height:78vh;display:flex;flex-direction:column;border-radius:22px;background:var(--paper);color:var(--ink);box-shadow:0 40px 80px -30px rgba(0,0,0,.6);overflow:hidden;transform:translateY(-8px);opacity:0;transition:transform .2s var(--ease),opacity .2s}
.search.is-open .search__panel{transform:none;opacity:1}
.search__bar{display:flex;align-items:center;gap:12px;padding:0 14px 0 20px;border-bottom:1px solid var(--line)}
.search__bar > .sicon{width:22px;height:22px;color:var(--accent-ink);flex-shrink:0}
.search__input{flex:1;min-width:0;height:66px;border:0;background:none;font:400 20px/1 var(--font-body);color:var(--ink);outline:none}
.search__input::-webkit-search-cancel-button{display:none}
.search__close{display:inline-flex;align-items:center;justify-content:center;height:30px;padding:0 10px;border-radius:8px;border:1px solid var(--line-strong);background:none;font:500 12px/1 var(--font-body);color:var(--muted);cursor:pointer}
.search__word{display:none}
/* Phones and tablets have no Esc key */
@media (hover:none),(max-width:620px){.search__word{display:inline}.search__esc{display:none}}
.search__body{overflow-y:auto;padding:8px 10px 14px}
.search__label{padding:14px 10px 6px;font:500 11px/1 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.search__chips{display:flex;flex-wrap:wrap;gap:8px;padding:2px 10px 6px}
.search__hit{display:flex;flex-direction:column;gap:3px;padding:10px 12px 10px 46px;border-radius:12px;text-decoration:none;color:var(--ink);position:relative}
.search__hit::before{content:"";position:absolute;left:12px;top:50%;width:24px;height:24px;margin-top:-12px;border-radius:50%;background:var(--accent-tint) center/14px no-repeat}
.search__hit--pub::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%234E6A00'%3E%3Cpath d='M128 16a88 88 0 0 0-88 88c0 75.3 80 132.17 83.41 134.55a8 8 0 0 0 9.18 0C136 236.17 216 179.3 216 104a88 88 0 0 0-88-88Zm0 56a32 32 0 1 1-32 32 32 32 0 0 1 32-32Z'/%3E%3C/svg%3E")}
.search__hit--act::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%234E6A00'%3E%3Cpath d='M210.3 56.34l-80-24A8 8 0 0 0 120 40v108.26A48 48 0 1 0 136 184V98.75l69.7 20.91A8 8 0 0 0 216 112V64a8 8 0 0 0-5.7-7.66Z'/%3E%3C/svg%3E")}
.search__hit--one::before,.search__hit--reg::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%234E6A00'%3E%3Cpath d='M208 32h-24v-8a8 8 0 0 0-16 0v8H88v-8a8 8 0 0 0-16 0v8H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16Zm0 48H48V48h24v8a8 8 0 0 0 16 0v-8h80v8a8 8 0 0 0 16 0v-8h24Z'/%3E%3C/svg%3E")}
.search__hit b{font:600 16px/1.25 var(--font-body)}
.search__hit span{font:400 14px/1.35 var(--font-body);color:var(--muted)}
.search__hit:hover,.search__hit[aria-selected="true"]{background:var(--accent-tint)}
.search__more{display:inline-block;margin:4px 12px;font:500 14px/1 var(--font-body);color:var(--accent-ink)}
.search__note{padding:12px 12px 0;font:400 14px/1.4 var(--font-body);color:var(--muted)}
.search__none{padding:22px 12px;font:400 16px/1.5 var(--font-body);color:var(--muted)}
.search__none a{color:var(--accent-ink)}
/* Search results page */
.results__form{display:flex;gap:10px;max-width:720px}
.results__form .pf__search{flex:1;height:52px}
.results__form .pf__search input{font-size:16px}
.results{max-width:820px;padding-top:28px}
.results__count{font:400 16px/1.4 var(--font-body);color:var(--muted)}
.results__body .search__label{padding-left:0;padding-top:30px}
.results__body .search__hit{padding-top:14px;padding-bottom:14px}
@media (max-width:620px){.results__form .btn{display:none}}
@media (max-width:819px){.search-btn{display:none}}
@media (max-width:620px){.search{padding:0}.search__panel{width:100%;max-height:100%;height:100%;border-radius:0}}

/* What's on: a strip of day tiles that filter the list, then the kinds of night */
.wo-bar__inner{display:flex;flex-direction:column;gap:14px;padding-top:16px;padding-bottom:16px}
.wo-strip{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--gutter));padding:2px var(--gutter)}
.wo-strip::-webkit-scrollbar{display:none}
.wo-bar__top{display:flex;align-items:center;gap:8px}
.wo-bar__top .wo-strip{flex:1;min-width:0}
.dtile{flex:1 0 66px;display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 6px 11px;border-radius:16px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);cursor:pointer;transition:background .2s,border-color .2s,color .2s,transform .2s var(--ease)}
.dtile[hidden]{display:none}
.dtile:hover{border-color:var(--ink);transform:translateY(-2px)}
.dtile--mon{margin-left:10px}
.dtile__dow{font:500 11px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.dtile--wknd .dtile__dow{color:var(--accent-ink)}
.dtile__num{font:700 26px/1 var(--font-body);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.dtile__num .sicon{width:26px;height:26px;display:block}
.dtile__count{font:500 12px/1 var(--font-body);color:var(--accent-ink);white-space:nowrap}
.dtile.is-empty{opacity:.45}
.dtile.is-empty .dtile__count{color:var(--muted)}
.dtile.is-on{background:var(--deep);border-color:var(--deep);color:var(--on-deep);transform:none}
.dtile.is-on .dtile__dow{color:var(--on-deep-2)}
.dtile.is-on .dtile__count{color:var(--accent)}
.wo-types{display:flex;flex-wrap:wrap;gap:8px;min-width:0}
.wo-bar__row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.fchip[hidden]{display:none}
.wo-view{display:inline-flex;flex-shrink:0;padding:4px;border-radius:999px;background:color-mix(in srgb,var(--ink) 7%,transparent)}
.wo-view__btn{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 15px;border:0;border-radius:999px;background:transparent;font:500 14px/1 var(--font-body);color:var(--ink-2);cursor:pointer}
.wo-view__btn .sicon{width:16px;height:16px}
.wo-view__btn.is-on{background:var(--deep);color:var(--on-deep)}
.wo-view__btn.is-on .sicon{color:var(--accent)}
.wo-mapview .lday,.wo-mapview .wo__note,.wo-calview .lday,.wo-calview .wo__note{display:none}
/* Month view: a calendar, then the picked day's listings below it */
.wo-cal{padding:36px 0 64px}
.wo-cal[hidden]{display:none}
.wo-cal__head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:18px;border-bottom:2px solid var(--ink)}
.wo-cal__title{font:400 48px/.95 var(--font-display);letter-spacing:-.035em}
.wo-cal__nav{display:flex;gap:8px}
.wo-cal__btn{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);cursor:pointer}
.wo-cal__btn:hover:not(:disabled){border-color:var(--ink)}
.wo-cal__btn:disabled{opacity:.35;cursor:default}
.wo-cal__btn .sicon{width:18px;height:18px}
.wo-cal__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-top:14px}
.wo-cal__dow{padding:6px 10px 10px;font:500 12px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.wo-cal__days{grid-column:1 / -1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.wo-cal__day{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:6px;min-height:132px;padding:10px 10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--paper);text-align:left;font:inherit;color:var(--ink);cursor:default;overflow:hidden}
.wo-cal__day.has-on{cursor:pointer;transition:border-color .2s,transform .2s var(--ease)}
.wo-cal__day.has-on:hover{border-color:var(--ink)}
.wo-cal__day.is-other{background:transparent;border-color:transparent;color:var(--muted)}
.wo-cal__day.is-past{background:transparent;border-color:color-mix(in srgb,var(--line) 60%,transparent);color:var(--muted);min-height:52px}
.wo-cal__day.is-other.is-past{min-height:52px}
.wo-cal__day.is-other .wo-cal__items li,.wo-cal__day.is-other .wo-cal__items b{color:var(--muted)}
.wo-cal__day.is-today{border-color:var(--accent-ink);box-shadow:inset 0 0 0 1px var(--accent-ink)}
.wo-cal__day.is-picked{background:var(--deep);border-color:var(--deep);color:var(--on-deep)}
.wo-cal__num{font:700 20px/1 var(--font-body);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.wo-cal__day.is-today .wo-cal__num::after{content:" Today";font:500 11px/1 var(--font-body);letter-spacing:.06em;color:var(--accent-ink);vertical-align:3px;margin-left:4px}
.wo-cal__day.is-picked.is-today .wo-cal__num::after{color:var(--accent)}
.wo-cal__count{display:none;font:500 12px/1 var(--font-body);color:var(--accent-ink)}
.wo-cal__items{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}
.wo-cal__items li{font:400 12.5px/1.3 var(--font-body);color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wo-cal__items li b{font-weight:700;color:var(--ink)}
.wo-cal__items li.is-one{padding:2px 6px;margin:0 -4px;border-radius:6px;background:var(--accent-tint)}
.wo-cal__day.is-picked .wo-cal__items li,.wo-cal__day.is-picked .wo-cal__items li b{color:var(--on-deep)}
.wo-cal__day.is-picked .wo-cal__items li.is-one{background:color-mix(in srgb,var(--accent) 25%,transparent)}
.wo-cal__more{font-weight:500;color:var(--accent-ink)!important}
.wo-cal__day.is-picked .wo-cal__more{color:var(--accent)!important}
.wo-cal__none{margin-top:auto;font:400 12px/1.2 var(--font-body);color:var(--muted)}
.wo-cal__panel{margin-top:28px;scroll-margin-top:calc(var(--wo-bar, 190px) + 16px)}
.wo-cal__panel-title{font:400 40px/.95 var(--font-display);letter-spacing:-.035em;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:4px}

/* Map view: the day's events on a dark map, with the same list beside it */
.wo-map{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;padding:36px 0 64px}
.wo-map[hidden]{display:none}
.wo-map__canvas{height:min(72vh,680px);min-height:420px;border-radius:var(--r-lg);overflow:hidden;background:var(--deep);isolation:isolate}
.wo-map__tiles{filter:grayscale(1) invert(1) brightness(.78) contrast(1.05)}
.wo-map__canvas .leaflet-control-attribution{background:color-mix(in srgb,var(--deep) 75%,transparent);color:var(--on-deep-2);font:400 11px/1.4 var(--font-body)}
.wo-map__canvas .leaflet-control-attribution a{color:var(--on-deep)}
.wo-map__canvas .leaflet-bar{border:0;box-shadow:0 8px 24px -10px rgba(0,0,0,.6)}
.wo-map__canvas .leaflet-bar a{background:var(--deep);color:var(--on-deep);border-color:var(--on-deep-line)}
.wo-map__canvas .leaflet-bar a:hover{background:#2a2621}
.wo-pin{width:0!important;height:0!important}
.wo-pin span{position:absolute;left:0;top:0;transform:translate(-50%,calc(-100% - 9px));display:block;padding:7px 11px;border-radius:999px;background:var(--paper);color:var(--ink);font:700 13px/1 var(--font-body);white-space:nowrap;box-shadow:0 8px 20px -6px rgba(0,0,0,.7);cursor:pointer;transition:transform .15s var(--ease)}
.wo-pin span::after{content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:10px;margin-left:-5px;background:inherit;transform:rotate(45deg);border-radius:2px}
.wo-pin span::before{content:"";position:absolute;left:50%;bottom:-13px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:inherit;box-shadow:0 0 0 3px var(--deep)}
.wo-pin--one span{background:var(--accent);color:var(--deep)}
.wo-pin:hover span,.wo-pin:focus span{transform:translate(-50%,calc(-100% - 12px))}
.wo-pin:focus{outline:none}
.wo-pin:focus-visible span{outline:2px solid var(--accent);outline-offset:3px}
.wo-pop .leaflet-popup-content-wrapper{border-radius:16px;background:var(--paper);color:var(--ink);box-shadow:0 20px 40px -14px rgba(0,0,0,.6)}
.wo-pop .leaflet-popup-tip{background:var(--paper)}
.wo-pop .leaflet-popup-content{margin:16px 18px;min-width:220px;font:400 14px/1.4 var(--font-body)}
.wo-pop__pub{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0 0 10px!important}
.wo-pop .leaflet-popup-content a{color:var(--ink)}
.wo-pop .leaflet-popup-close-button{color:var(--muted)}
.wo-pop__pub a{font:700 17px/1.2 var(--font-body);color:var(--ink);text-decoration:none}
.wo-pop__pub a:hover{text-decoration:underline}
.wo-pop__pub span{color:var(--muted);font-size:13px}
.wo-pop__list li{display:grid;grid-template-columns:52px minmax(0,1fr);gap:2px 10px;padding:8px 0;border-top:1px solid var(--line)}
.wo-pop__list b{font-weight:700;font-variant-numeric:tabular-nums}
.wo-pop__list a{font-weight:500;text-decoration-color:var(--accent-ink);text-underline-offset:3px}
.wo-pop__acts{grid-column:2;font-size:13px;font-weight:500;color:var(--accent-ink)}
.wo-mrow__main i{font:500 14px/1.3 var(--font-body);font-style:normal;color:var(--accent-ink)}
.wo-pop__list em{grid-column:2;font-style:normal;font-size:12px;font-weight:500;color:var(--accent-ink)}
.wo-map__side{display:flex;flex-direction:column;min-height:0;max-height:min(72vh,680px)}
.wo-map__title{font:400 40px/.95 var(--font-display);letter-spacing:-.035em}
.wo-map__sub{font:500 14px/1.4 var(--font-body);color:var(--accent-ink);margin:8px 0 14px}
.wo-map__list{overflow-y:auto;border-top:2px solid var(--ink)}
.wo-mrow{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;width:100%;padding:14px 10px;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;cursor:pointer;color:var(--ink);border-radius:0;transition:background .15s}
.wo-mrow:hover{background:var(--paper)}
.wo-mrow--one{background:var(--accent-tint)}
.wo-mrow__time{font:700 15px/1.3 var(--font-body);font-variant-numeric:tabular-nums}
.wo-mrow__main{display:flex;flex-direction:column;gap:3px;min-width:0}
.wo-mrow__main b{font:700 16px/1.25 var(--font-body)}
.wo-mrow__main span{display:flex;align-items:center;gap:6px;font:600 14px/1.3 var(--font-body);color:var(--ink-2)}
.wo-map__empty{padding:16px 0;color:var(--muted)}
.fchip--one .sicon{color:var(--accent-ink)}
.wo-page .lday{scroll-margin-top:calc(var(--wo-bar, 190px) + 16px)}
.wo-page .lday__head{top:calc(var(--wo-bar, 190px) + 32px)}
.fchip .sicon{width:16px;height:16px;color:var(--accent-ink)}
.fchip.is-on .sicon{color:var(--accent)}

/* ---------- Homepage ---------- */
.home-hero{position:relative;isolation:isolate;overflow:hidden;background-color:var(--deep);background-image:var(--grain);color:var(--on-deep);padding-top:calc(var(--header-h) + 72px)}
.home-hero__map{position:absolute;top:0;right:0;bottom:0;width:min(64vw,1100px);z-index:-1;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.35) 18%,#000 48%),linear-gradient(180deg,transparent 4%,#000 26%,#000 78%,transparent);-webkit-mask-composite:source-in;
          mask-image:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.35) 18%,#000 48%),linear-gradient(180deg,transparent 4%,#000 26%,#000 78%,transparent);mask-composite:intersect;opacity:.6}
.home-hero__tiles{position:absolute;display:grid;grid-template-columns:repeat(9,256px);grid-auto-rows:256px}
.home-hero__tiles img{width:256px;height:256px;max-width:none}
.home-hero__tiles.has-on i{opacity:.35;transform:scale(.7)}
.home-hero__tiles.has-on i.is-on{opacity:1;transform:scale(1.35);background:var(--accent);animation:dotpulse 2.4s var(--ease) infinite}
.home-hero__tiles i::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--accent);opacity:0;animation:dotping 6s var(--ease) infinite;animation-delay:var(--d,0s)}
@keyframes dotping{0%{transform:scale(1);opacity:.85}22%,100%{transform:scale(3.6);opacity:0}}
@keyframes dotpulse{50%{box-shadow:0 0 0 12px color-mix(in srgb,var(--accent) 0%,transparent),0 0 30px 8px color-mix(in srgb,var(--accent) 40%,transparent)}}
.home-hero__tiles i{transition:opacity .4s,transform .4s;position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 22%,transparent),0 0 24px 4px color-mix(in srgb,var(--accent) 35%,transparent)}
.home-hero__inner{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:64px;align-items:center}
.home-hero__copy{position:relative}
.home-hero__updated{display:inline-flex;align-items:center;gap:8px;font:400 14px/1 var(--font-body);color:color-mix(in srgb,var(--on-deep) 55%,transparent)}
.home-hero__updated::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}
.home-hero__title{font:400 clamp(72px,8.2vw,132px)/.95 var(--font-display);letter-spacing:-.04em;margin:18px 0 30px}
.home-hero__title > span{display:table;position:relative}
@media (min-width:1000px){.home-hero__title > span{white-space:nowrap}}
.home-hero__title > span:last-child{color:var(--accent)}
.home-hero__sub{font:350 21px/1.5 var(--font-body);color:color-mix(in srgb,var(--on-deep) 82%,transparent);max-width:30em;text-wrap:pretty}
.tonight{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.home-hero .hero__actions{margin-top:28px}
.tonight{padding:22px 24px 18px;border-radius:var(--r-lg);background:color-mix(in srgb,var(--deep) 72%,transparent);border:1px solid var(--on-deep-line)}
.tonight__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 16px;padding-bottom:12px}
.tonight__title{font:400 32px/1 var(--font-display);letter-spacing:-.025em;white-space:nowrap}
.tonight__all{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font:500 14px/1 var(--font-body);color:var(--accent);text-decoration:none}
.tonight__all .sicon{width:15px;height:15px}
.tonight__day[hidden]{display:none}
.tonight__item{display:grid;grid-template-columns:62px minmax(0,1fr) 24px;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--on-deep-line);text-decoration:none;color:inherit}
.tonight__item:hover b{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent)}
.tonight__time{font:700 15px/1 var(--font-body);color:var(--accent);font-variant-numeric:tabular-nums}
.tonight__what{display:flex;flex-direction:column;gap:3px;min-width:0}
.tonight__what b{font:500 16px/1.25 var(--font-body);color:var(--on-deep)}
.tonight__what span{font:400 13px/1.3 var(--font-body);color:var(--on-deep-2)}
.tonight__icon{color:var(--on-deep-2)}
.tonight__icon .sicon{width:18px;height:18px}
.tonight__more,.tonight__empty{display:block;padding-top:12px;border-top:1px solid var(--on-deep-line);font:400 14px/1.4 var(--font-body);color:var(--on-deep-2)}
.tonight__more{color:var(--accent);text-decoration:none;font-weight:500}
.tonight__empty a{color:var(--accent)}
.home-stats{display:flex;flex-wrap:wrap;gap:16px 56px;margin-top:64px;padding:30px 0 40px;border-top:1px solid var(--on-deep-line)}
.home-stats li{font:400 15px/1.3 var(--font-body);color:var(--on-deep-2)}
.home-stats li[hidden]{display:none}
.home-stats b{display:block;font:700 36px/1 var(--font-body);letter-spacing:-.03em;color:var(--on-deep);margin-bottom:6px;font-variant-numeric:tabular-nums}
.finds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px}
.find{display:grid;grid-template-columns:46px minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:16px;align-items:center;padding:18px 20px;background:var(--paper);border:1px solid var(--line);border-radius:20px;text-decoration:none;transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.find:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:0 24px 40px -30px rgba(0,0,0,.45)}
.find .medal{grid-row:1 / span 2}
.find__label{font:700 18px/1.2 var(--font-body);letter-spacing:-.015em;color:var(--ink);align-self:end}
.find__count{font:400 14px/1.3 var(--font-body);color:var(--muted);grid-column:2;align-self:start}
.find__go{grid-row:1 / span 2;grid-column:3;color:var(--accent-ink);transition:transform .2s var(--ease)}
.find__go .sicon{width:18px;height:18px}
.find:hover .find__go{transform:translateX(3px)}
.ticket__pub{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:-2px 0 8px;font:500 15px/1.3 var(--font-body)}
.ticket__pub .sicon{width:16px;height:16px;color:var(--accent-ink)}
.ticket__pub a{color:var(--ink);text-decoration:none}
.ticket__pub a:hover{text-decoration:underline}
.ticket__pub span{color:var(--muted);font-weight:400}
.how{margin-top:120px}
.how__cols{grid-template-columns:repeat(3,minmax(0,1fr));padding-bottom:12px}
.how .here__group h3{font:700 20px/1.25 var(--font-body);letter-spacing:-.015em;color:var(--on-deep);margin:18px 0 8px}
.how .here__group p{font:400 15px/1.55 var(--font-body);color:var(--on-deep-2)}
.how .here__group a{color:var(--accent)}

/* ---------- What's on ---------- */
.wo{padding-top:16px}
.lday{display:grid;grid-template-columns:250px minmax(0,1fr);gap:40px;padding:40px 0;border-bottom:1px solid var(--line);scroll-margin-top:150px}
.lday[hidden]{display:none}
.lday__head{position:sticky;top:150px;align-self:start;display:flex;flex-direction:column;gap:8px}
.lday__dow{font:400 40px/.9 var(--font-display);letter-spacing:-.035em}
.lday__date{font:500 15px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.lday__count{font:500 13px/1 var(--font-body);color:var(--accent-ink)}
.lrow{display:grid;grid-template-columns:78px 44px minmax(0,1fr) auto;gap:18px;align-items:start;padding:20px 0;border-top:1px solid var(--line)}
.lrow:first-child{border-top:0;padding-top:4px}
.lrow[hidden]{display:none}
.lrow--one{background:var(--accent-tint);border-top-color:transparent;border-radius:16px;margin:2px -18px;padding:20px 18px}
.lrow--one + .lrow{border-top-color:transparent}
.lrow--one .lrow__icon{background:var(--deep);color:var(--accent)}
.lrow__time{font:700 18px/1 var(--font-body);letter-spacing:-.01em;color:var(--ink);font-variant-numeric:tabular-nums;padding-top:13px}
.lrow__icon{width:44px;height:44px;border-radius:50%;background:var(--accent-tint);color:var(--accent-ink);display:grid;place-items:center}
.lrow__icon .sicon{width:20px;height:20px}
.lrow__main{display:flex;flex-direction:column;gap:7px;min-width:0;padding-top:4px}
.lrow__title{font:700 22px/1.2 var(--font-body);letter-spacing:-.02em;color:var(--ink);text-decoration:none;text-wrap:balance}
.lrow__title:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent-ink)}
.lrow__pub{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:400 15px/1.3 var(--font-body);color:var(--muted)}
.lrow__pub a{display:inline-flex;align-items:center;gap:6px;font:600 17px/1.2 var(--font-body);letter-spacing:-.01em;color:var(--ink-2);text-decoration:none}
.lrow__pub a .sicon{width:17px;height:17px;color:var(--accent-ink)}
.lrow__pub a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.lrow__acts,.acts{display:flex;align-items:flex-start;gap:7px;font:500 16px/1.35 var(--font-body);color:var(--accent-ink)}
.lrow__acts .sicon,.acts .sicon{width:16px;height:16px;flex-shrink:0;margin-top:2px}
.acts{margin:6px 0 4px;font-size:15px}
.lrow__detail{font:400 15px/1.5 var(--font-body);color:var(--muted);max-width:60ch}
.lrow__tag{margin-top:10px;padding:6px 10px;border-radius:999px;border:1px solid var(--line);font:500 12px/1 var(--font-body);color:var(--muted);white-space:nowrap}
.lrow__tag--one{border-color:transparent;background:var(--accent-tint);color:var(--accent-ink)}
.lday__empty{font:400 16px/1.5 var(--font-body);color:var(--muted);padding-top:6px}
.lday__empty[hidden]{display:none}
.wo__note{display:flex;align-items:flex-start;gap:10px;margin-top:40px;font:400 15px/1.4 var(--font-body);color:var(--muted)}
.wo__note .sicon{flex-shrink:0;width:18px;height:18px;margin-top:1px}
.wo__note a{color:var(--accent-ink);font-weight:500}

/* ---------- Suggest an edit ---------- */
.suggest{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:64px;align-items:start;margin-top:72px}
.suggest__card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:36px 36px 32px;box-shadow:var(--shadow-card)}
.sform{display:flex;flex-direction:column;gap:22px}
.sform__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.sform__field{display:flex;flex-direction:column;gap:8px}
.sform__label{font:500 14px/1.2 var(--font-body);color:var(--ink);padding:0}
.sform__label i{font-style:normal;color:var(--muted);font-weight:400;margin-left:6px}
.sform input:not([type=radio]),.sform select,.sform textarea{width:100%;font:400 16px/1.4 var(--font-body);color:var(--ink);background:var(--page);border:1px solid var(--line-strong);border-radius:14px;padding:13px 15px;transition:border-color .2s,background .2s}
.sform textarea{resize:vertical;min-height:140px}
.sform input:focus,.sform select:focus,.sform textarea:focus{outline:none;border-color:var(--ink);background:var(--paper)}
.sform__select{position:relative;display:block}
.sform__select select{appearance:none;-webkit-appearance:none;padding-right:44px;cursor:pointer}
.sform__select .sicon{position:absolute;right:16px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted);pointer-events:none}
.sform__who{display:flex;flex-wrap:wrap;gap:10px;border:0;margin:0;padding:0}
.sform__who legend{margin-bottom:10px}
.sform__choice input{position:absolute;opacity:0;pointer-events:none}
.sform__choice span{display:inline-flex;align-items:center;gap:10px;height:48px;padding:0 18px;border-radius:999px;border:1px solid var(--line-strong);font:500 15px/1 var(--font-body);cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.sform__choice span .sicon{width:18px;height:18px;color:var(--accent-ink)}
.sform__choice input:checked + span{background:var(--deep);border-color:var(--deep);color:var(--on-deep)}
.sform__choice input:checked + span .sicon{color:var(--accent)}
.sform__choice input:focus-visible + span{outline:2px solid var(--accent-ink);outline-offset:3px}
.sform__error{font:500 15px/1.4 var(--font-body);color:#B3261E}
.sform__error[hidden]{display:none}
.sform__submit{align-self:flex-start;height:54px;padding:0 26px;font-size:16px}
.sform__sent{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:12px 0}
.sform__sent h2{font:400 40px/.95 var(--font-display);letter-spacing:-.03em}
.sform__sent p{font:400 17px/1.5 var(--font-body);color:var(--ink-2);margin-bottom:8px}
.suggest__title{font:400 34px/.95 var(--font-display);letter-spacing:-.03em;padding-bottom:18px;border-bottom:2px solid var(--ink)}
.steps{display:flex;flex-direction:column}
.steps li{display:grid;grid-template-columns:46px minmax(0,1fr);gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}
.steps b{display:block;font:700 17px/1.3 var(--font-body);margin:2px 0 4px}
.steps p{font:400 15px/1.5 var(--font-body);color:var(--muted)}
.edit-line span[aria-hidden]{margin:0 4px;color:var(--line-strong)}

/* ---------- Simple pages (holding homepage, 404) ---------- */
.simple{padding:88px 0 24px;display:flex;flex-direction:column;gap:18px;max-width:640px}
.simple h1{font:400 clamp(56px,7vw,96px)/.88 var(--font-display);letter-spacing:-.035em}
.simple__aside{font:500 13px/1 var(--font-body);letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink)}
.simple__text{font:350 20px/1.55 var(--font-body)}
.simple__links{display:flex;flex-direction:column;gap:12px}

/* ---------- Narrower screens ---------- */
@media (max-width:1159px){
  .here{padding:48px 40px 0}
  .here__cols{grid-template-columns:repeat(2,minmax(0,1fr))}
  .here__group:nth-child(odd){padding-left:0;border-left:0}
  .here__group:nth-child(even){padding-right:0}
  .here__group:nth-child(n+3){border-top:1px solid var(--on-deep-line)}
  .ticket{--tear1:130px;--tear2:calc(100% - 200px);grid-template-columns:var(--tear1) minmax(0,1fr) 200px}
}
@media (max-width:999px){
  .suggest{grid-template-columns:minmax(0,1fr);gap:48px}
  .suggest-page .suggest:has([data-gig-form]){grid-template-columns:minmax(0,1fr)}
  .home-hero__inner{grid-template-columns:minmax(0,1fr);gap:40px}
  .home-hero__map{width:100%;opacity:.35;-webkit-mask-image:linear-gradient(180deg,#000 30%,transparent 75%);mask-image:linear-gradient(180deg,#000 30%,transparent 75%)}
  .finds{grid-template-columns:repeat(2,minmax(0,1fr))}
  .acts__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lday{grid-template-columns:minmax(0,1fr);gap:18px}
  .wo-map{grid-template-columns:minmax(0,1fr)}
  .wo-map__side{max-height:none}
  .wo-map__canvas{height:62vh}
  .lday__head{position:static;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
  .lrow{grid-template-columns:58px minmax(0,1fr);gap:14px}
  .lrow__icon{display:none}
  .lrow__tag{grid-column:2;justify-self:start;margin-top:-4px}
  .lrow__title{font-size:19px}
  .lrow__pub a{font-size:16px}
  .lrow__time{font-size:16px;padding-top:4px}
  .wo-bar__inner{gap:10px;padding-top:10px;padding-bottom:10px}
  .pf__inner{gap:10px;padding-top:12px;padding-bottom:12px}
  .wo-cal__title{font-size:34px}
  .wo-cal__days{gap:4px}
  .wo-cal__day{min-height:62px;padding:7px 6px;border-radius:10px;align-items:center;text-align:center}
  .wo-cal__num{font-size:16px}
  .wo-cal__day.is-today .wo-cal__num::after{display:none}
  .wo-cal__items,.wo-cal__none{display:none}
  .wo-cal__count{display:block;font-size:11px}
  .wo-cal__dow{padding:6px 0 8px;text-align:center;letter-spacing:.04em}
  .wo-cal__panel-title{font-size:30px}
  .pf__row{gap:8px}
  .pf__search{flex-basis:100%}
  .pf__seg button{padding:0 10px;white-space:nowrap}
  .pf__seg button span{display:none}
  .pf__open{padding-right:12px}
  .pf__has{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--gutter));padding:0 var(--gutter)}
  .pf__has .fchip{flex-shrink:0}
  .pmap__canvas{height:68vh}
  .dtile{flex:0 0 58px;padding:8px 4px 9px;gap:4px;border-radius:14px}
  .dtile__num{font-size:21px}
  .wo-bar__row{gap:10px}
  .wo-view__btn{padding:0 11px}
  .wo-types{flex:1;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-left:calc(-1 * var(--gutter));padding-left:var(--gutter)}
  .wo-types .fchip{flex-shrink:0}
  .dir__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filters__inner{flex-direction:column;flex-wrap:nowrap;align-items:stretch}
  .filters__inner > *{min-width:0}
  .filters__search{min-width:0}
  .hero{display:block;min-height:0}
  .hero__media{position:relative;width:100%;height:56vh;min-height:340px;z-index:0;-webkit-mask-image:none;mask-image:none}
  .hero__media::after{background:linear-gradient(180deg,color-mix(in srgb,var(--deep) 65%,transparent) 0%,transparent 28%,transparent 55%,var(--deep) 100%)}
  .hero__inner{flex-direction:column;align-items:flex-start;margin-top:-140px;padding-top:0;padding-bottom:48px}
  .hero__back{display:none}
  .hero__content{min-width:0;max-width:100%}
  .hero__name{font-size:min(96px,calc((100vw - 2 * var(--gutter)) / (var(--name-len, 8) * .66)))}
  .visit{grid-template-columns:minmax(0,1fr)}
  .regulars{grid-template-columns:minmax(0,1fr)}
  .regular,.regular:nth-child(n){padding:24px 0;border-left:0;border-bottom:1px solid var(--line)}
  .ticket{grid-template-columns:120px minmax(0,1fr);-webkit-mask:none;mask:none}
  .posts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ticket__stub{grid-column:1 / -1;border-left:0;border-top:2px dashed var(--line-strong);flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:6px 14px;padding:20px 24px}
  .ticket__link{margin:0 0 0 auto}
  .ticket__day{font-size:52px}
  .ticket__body{padding:20px 22px}
  .section{margin-top:88px}
}
@media (max-width:620px){
  .sform__row{grid-template-columns:minmax(0,1fr)}
  .gig-row{grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);column-gap:10px;align-items:end;padding:14px 40px 14px 14px}
  .gig-row input[type="date"]{padding-left:10px;padding-right:8px}
  .gig-row__pub,.gig-row__act{grid-column:1 / -1}
  .suggest__card{padding:24px 20px}
  .finds{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .find{grid-template-columns:minmax(0,1fr);grid-template-rows:none;align-items:start;padding:16px 16px 18px}
  .find .medal{grid-row:auto;width:40px;height:40px;margin-bottom:14px}
  .find .medal .sicon{width:20px;height:20px}
  .find__label{font-size:16px}
  .find__count{grid-column:1;font-size:13px;margin-top:3px}
  .find__go{display:none}
  .acts__grid{grid-template-columns:minmax(0,1fr)}
  .gig{grid-template-columns:64px minmax(0,1fr);gap:14px}
  .gig__type{display:none}
  .wordmark__mark{width:24px;height:24px}
  .follow__menu{left:0;right:auto}
  /* Pub pages: once the hero buttons scroll away, Directions and Call sit in a bar at the bottom */
  .actbar{display:flex;align-items:center;gap:10px;position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:90;padding:9px 9px 9px 16px;border-radius:20px;background-color:var(--deep);background-image:var(--grain);color:var(--on-deep);box-shadow:0 18px 40px -12px rgba(0,0,0,.55);transform:translateY(160%);transition:transform .35s var(--ease)}
  .actbar.is-shown{transform:none}
  .actbar__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
  .actbar__info b{font:400 19px/1 var(--font-display);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .actbar__status{font:500 12px/1.2 var(--font-body);color:var(--on-deep-2)}
  .actbar__status:empty{display:none}
  .actbar__status.is-open{color:var(--open)}
  .actbar__call{flex-shrink:0;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--on-deep-line);color:var(--on-deep)}
  .actbar__call .sicon{width:18px;height:18px}
  .actbar .follow{flex-shrink:0}
  .actbar .follow__btn{height:44px;padding:0 16px 0 13px;background:var(--accent);border-color:var(--accent);color:var(--deep)}
  .actbar .follow__btn .sicon{color:var(--deep)}
  .actbar .follow__menu{top:auto;bottom:calc(100% + 22px);left:auto;right:-9px}
  body:has(.actbar) .site-footer{padding-bottom:84px}
  /* Homepage: Coming up and Latest swipe sideways instead of stacking */
  .rail{display:flex;flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;margin-left:calc(-1 * var(--gutter));margin-right:calc(-1 * var(--gutter));padding:4px var(--gutter) 14px;scroll-padding:0 var(--gutter);scrollbar-width:none;list-style:none}
  .rail::-webkit-scrollbar{display:none}
  .rail > *{flex:0 0 86%;min-width:0;scroll-snap-align:start}
  /* One row stays stuck to the top: search, Filters, list/map. Everything else is in the sheet. */
  .filters.pf{-webkit-backdrop-filter:none;backdrop-filter:none;background:color-mix(in srgb,var(--page) 96%,transparent)}
  .pf__row{flex-wrap:nowrap;gap:8px}
  .pf__search{flex:1 1 auto;min-width:0;padding:0 12px;gap:8px}
  .pf__more{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;height:44px;padding:0 12px 0 10px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper);font:500 14px/1 var(--font-body);color:var(--ink);cursor:pointer}
  .pf__more .icon{width:18px;height:18px}
  .pf__more-n{min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:var(--deep);color:var(--accent);font:700 12px/20px var(--font-body);text-align:center}
  .pf__more-n[hidden]{display:none}
  .pf__view{margin:0;flex-shrink:0}
  .pf__view .wo-view__btn{width:38px;height:36px;padding:0;justify-content:center}
  .pf__view .wo-view__label{display:none}
  .pf.is-sheet-open{z-index:150}
  .pf.is-sheet-open .pf__backdrop{display:block;position:fixed;inset:0;z-index:1;background:rgba(23,19,15,.5)}
  .pf__sheet{display:flex;flex-direction:column;gap:18px;position:fixed;left:0;right:0;bottom:0;z-index:2;max-height:86vh;overflow-y:auto;overscroll-behavior:contain;padding:0 18px calc(18px + env(safe-area-inset-bottom,0px));background:var(--paper);border-radius:24px 24px 0 0;box-shadow:0 -24px 60px -24px rgba(0,0,0,.5);transform:translateY(105%);visibility:hidden;transition:transform .32s var(--ease),visibility 0s .32s}
  .pf.is-sheet-open .pf__sheet{transform:none;visibility:visible;transition:transform .32s var(--ease)}
  .pf__sheet-head{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:1;background:var(--paper);padding:18px 0 4px}
  .pf__sheet-head b{font:400 30px/1 var(--font-display);letter-spacing:-.02em}
  .pf__controls{display:flex;flex-direction:column;align-items:stretch;gap:12px}
  .pf__controls .pf__open{align-self:flex-start}
  .pf__select select{width:100%}
  .pf__seg{display:flex}
  .pf__seg button{flex:1;justify-content:center}
  .pf__seg button span{display:inline}
  .pf__has{flex-wrap:wrap;overflow:visible;margin:0;padding:0;order:0}
  .pf__sheet-foot{display:block;position:sticky;bottom:0;z-index:1;background:var(--paper);padding-top:6px}
  .pf__sheet-foot .btn{width:100%;justify-content:center}
  .home-stats{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:14px;margin-top:48px;padding:24px 0 32px}
  .home-stats li{font-size:13px}
  .home-stats b{font-size:30px}
  .here__title{font-size:clamp(40px,12vw,52px)}
  .dir-hero__title{font-size:clamp(44px,12.5vw,64px);line-height:.94;margin-bottom:20px}
  .dir-hero__sub{font-size:18px}
  /* What's on: the day strip stays stuck; types and List/Month/Map open in a sheet from the button beside it */
  .wo-bar.filters{-webkit-backdrop-filter:none;backdrop-filter:none;background:color-mix(in srgb,var(--page) 96%,transparent)}
  .wo-bar__top .wo-strip{margin-right:0;padding-right:4px}
  .wo-more{width:46px;height:58px;padding:0;justify-content:center;position:relative;border-radius:14px}
  .wo-more .pf__more-n{position:absolute;top:-6px;right:-6px}
  .wo-bar.is-sheet-open{z-index:150}
  .wo-bar.is-sheet-open .pf__backdrop{display:block;position:fixed;inset:0;z-index:1;background:rgba(23,19,15,.5)}
  .wo-bar__row{flex-direction:column;align-items:stretch;gap:18px;position:fixed;left:0;right:0;bottom:0;z-index:2;max-height:86vh;overflow-y:auto;overscroll-behavior:contain;padding:0 18px calc(18px + env(safe-area-inset-bottom,0px));background:var(--paper);border-radius:24px 24px 0 0;box-shadow:0 -24px 60px -24px rgba(0,0,0,.5);transform:translateY(105%);visibility:hidden;transition:transform .32s var(--ease),visibility 0s .32s}
  .wo-bar.is-sheet-open .wo-bar__row{transform:none;visibility:visible;transition:transform .32s var(--ease)}
  .wo-bar__row .pf__sheet-head{order:-2}
  .wo-bar__row > .wo-view{order:-1}
  .wo-bar__row > .wo-view .wo-view__btn{flex:1;justify-content:center}
  .wo-types{flex:none;flex-wrap:wrap;overflow:visible;margin:0;padding:0}
  .wo-bar__row .pf__sheet-foot{order:5}
  .home-map{height:62vh;min-height:380px}
  .leaflet-control-zoom{display:none}
  .map-edge__btn{height:30px;padding:0 10px 0 8px;gap:4px;font-size:13px}
  .map-edge__btn em{display:none}
  .map-edge__btn--7{left:12px}
  .map-edge__btn--3,.map-edge__btn--4,.map-edge__btn--5{bottom:44px}
  .leaflet-container .leaflet-control-attribution{font-size:10px}
  .leaflet-top.leaflet-left{top:44px}
  .pm-pin i{left:-6px;top:-6px;width:12px;height:12px;box-shadow:0 0 0 2px var(--deep),0 3px 8px rgba(0,0,0,.5)}
  .site-footer{margin-top:100px}
  .site-footer__inner{flex-direction:column;align-items:flex-start;gap:22px;padding-top:44px}
  .site-footer__nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;width:100%}
  .site-footer__nav a{padding:10px 0;font-size:16px}
  .site-footer__mark{padding:36px 0 28px;font-size:calc((100vw - 2 * var(--gutter)) * .162)}
  .site-footer__base{flex-direction:column;gap:16px;padding-bottom:36px}
  .site-footer__small{gap:12px 22px}
  .site-footer__small > span{flex-basis:100%}
  .dir__grid{grid-template-columns:minmax(0,1fr)}
  /* All pubs on phones: compact rows, so 40 pubs aren't 40 screens long */
  .pubs-page .dir__grid{gap:10px}
  .pubs-page .pcard__link{flex-direction:row;align-items:stretch;border-radius:18px}
  .pubs-page .pcard__media{flex:0 0 104px;aspect-ratio:auto;min-height:118px}
  .pubs-page .pcard__brand{padding:0;align-items:center;justify-content:center}
  .pubs-page .pcard__street{display:none}
  .pubs-page .pcard__mark{width:34px;height:34px}
  .pubs-page .pcard__body{padding:14px 52px 14px 14px;min-width:0}
  .pubs-page .pcard__top{font-size:10px}
  .pubs-page .pcard__top > span:first-child{display:none}
  .pubs-page .pcard__name{font-size:22px;margin:6px 0 4px}
  .pubs-page .pcard__blurb{display:none}
  .pubs-page .pcard__foot{padding-top:8px;gap:8px}
  .pubs-page .pcard__tags span:nth-child(n+3){display:none}
  .pubs-page .pcard__save{top:50%;right:8px;transform:translateY(-50%);width:36px;height:36px;background:transparent;color:var(--muted);-webkit-backdrop-filter:none;backdrop-filter:none}
  .pubs-page .pcard__save[aria-pressed="true"]{background:transparent;color:var(--accent-ink)}
  .filters__chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--gutter));padding:0 var(--gutter)}
  .fchip{flex-shrink:0}
  .here{padding:36px 20px 0}
  .here__head{flex-direction:column;align-items:flex-start;gap:16px}
  .here__cols{grid-template-columns:minmax(0,1fr)}
  .here__group,.here__group:nth-child(n){padding:20px 0 24px;border-left:0}
  .here__group:nth-child(n+2){border-top:1px solid var(--on-deep-line)}
  .here__tell{margin-left:0}
  .ticket{grid-template-columns:minmax(0,1fr)}
  .ticket__date{flex-direction:row;padding:16px;gap:12px}
  .ticket__day{font-size:40px}
  .ticket__title{font-size:25px}
  /* Phones: the time, then View post, then the buttons, all down the left */
  .ticket__link{flex-basis:100%;margin:2px 0 0}
  .posts{grid-template-columns:minmax(0,1fr)}
  .post{padding:22px 20px 20px}
  .map-card{min-height:540px}
  .map-card__info{right:16px;left:16px;bottom:16px;width:auto}
  .lightbox{padding:72px 16px 110px}
  .lightbox__prev,.lightbox__next{display:none}
  .hours-card{padding:22px 16px 20px}
  .hours thead th{padding:10px 8px}
  .hours tbody th,.hours td{padding:0 8px;font-size:15px}
  .day-long{display:none}
  .day-short{display:inline}
  .hours tr.is-today .today-note{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
}
@media (max-width:420px){
  .home-hero__title{font-size:18vw}
    .section__title{font-size:clamp(36px,12vw,48px)}
  .wordmark{font-size:21px;gap:9px}
  .wordmark__mark{width:22px;height:22px}
  .site-header__bar{gap:10px}
  .header-mobile{gap:2px}
  .header-mobile .icon-btn{width:38px}
  .tonight-pill{padding:0 11px}
  .hours tbody th,.hours td{padding:0 6px;font-size:14px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
