:root{
  --blue:#0070c0; --blue-dark:#005a9a; --blue-tint:#d9ebf8;
  --ink:#3f3931; --ink-strong:#322b25;
  --bg:#ffffff; --panel:#edece8;
  --brown:#473d35; --brown-dark:#3a322c; --brick:#a8472b;
  --c-free:#3d8a4a; --c-open:#0070c0; --c-recep:#8b5fbf; --c-close:#e0762e; --c-gold:#c9a227;
  --c-walk:#1f8a7d; --c-talk:#4a6d92; --c-market:#8a5a2b;
  --rule:#3f3931; --rule-soft:#ddd8ce;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Lora',Georgia,serif;color:var(--ink);background:var(--bg);font-size:18px;line-height:1.62;-webkit-font-smoothing:antialiased}
.wrap{max-width:1120px;margin:0 auto;padding:0 30px}
a{color:inherit;text-decoration:none}
.blue-word{color:var(--blue);font-weight:600}
.hidden{display:none}

/* ---------- HEADER ---------- */
.site-header{background:#0070c0;padding:0;border-bottom:1px solid var(--rule-soft);margin-bottom:88px;overflow:visible}
.site-header__in{height:56px}
.logo{position:relative;top:34px;z-index:5}
.logo img{border-radius:14px;box-shadow:0 6px 16px rgba(0,0,0,.18)}
.site-header__in{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:14px}
.logo{width:104px;height:104px;display:block;overflow:visible;line-height:0;flex:0 0 auto}
.logo img{width:100%;height:100%;object-fit:cover;display:block}
.logo__main,.logo__sub{display:none}
.topnav{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px 20px;
        flex:0 1 auto;min-width:0}
.topnav a{font-family:'Lora',serif;font-weight:500;font-size:17px;line-height:1;
          letter-spacing:.01em;text-transform:lowercase;color:#fff;
          padding:16px 16px 15px;white-space:nowrap;transition:background .15s}
.topnav a:hover,.topnav a:focus-visible{opacity:.75}
.nav-toggle{display:none}
@media(max-width:620px){
  .site-header__in{gap:10px;justify-content:flex-start;position:relative}
  /* mobile: drop the blue header BAR entirely -- only the floating rounded logo remains */
  .site-header{margin-bottom:44px;background:transparent;border-bottom:none}
  .site-header__in{height:46px}
  .logo{width:78px;height:78px;top:24px;border-radius:11px}
  /* hamburger button removed on mobile (owner, Jul 2026) -- the bottom bar (Home/Map/Search) is
     the mobile nav now; the dropdown menu it toggled stays hidden since nothing can open it. */
  .nav-toggle{display:none}
  .nav-toggle span{position:relative;display:block;width:24px;height:2px;background:#fff;border-radius:2px;transition:background .15s}
  .nav-toggle span::before,.nav-toggle span::after{content:'';position:absolute;left:0;width:24px;height:2px;background:#fff;border-radius:2px;transition:transform .15s,top .15s}
  .nav-toggle span::before{top:-7px}
  .nav-toggle span::after{top:7px}
  /* menu collapses into a dropdown, revealed when the button is tapped */
  .topnav{display:none;position:absolute;top:calc(100% + 10px);right:0;z-index:60;
          flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:0;padding:0;
          background:#0070c0;border-radius:10px;min-width:172px;box-shadow:0 12px 30px rgba(0,0,0,.22)}
  .site-header__in.nav-open .topnav{display:flex}
  .topnav a{font-size:16px;letter-spacing:.01em;padding:14px 20px;border-bottom:1px solid rgba(255,255,255,.16)}
  .topnav a:last-child{border-bottom:none}
  /* bars morph into an X when open */
  .site-header__in.nav-open .nav-toggle span{background:transparent}
  .site-header__in.nav-open .nav-toggle span::before{top:0;transform:rotate(45deg)}
  .site-header__in.nav-open .nav-toggle span::after{top:0;transform:rotate(-45deg)}
}

/* ---------- PAGE HERO / INTRO ---------- */
.page-hero .page-hero__dates{font-family:'Caveat',cursive;font-weight:600;font-size:30px;line-height:1.2;color:var(--blue);opacity:1;margin-top:6px}
.page-hero{text-align:center;padding:18px 0 6px;max-width:780px;margin:0 auto}
.page-hero h1{font-weight:600;font-size:clamp(34px,5.5vw,56px);line-height:1.04;color:var(--ink-strong)}
.page-hero h1.h1-home{font-size:clamp(30px,4.6vw,46px);text-wrap:balance}
.page-hero p{font-size:18px;margin-top:14px;opacity:.9}

/* ---------- SECTION HEAD ---------- */
.shead{text-align:center;margin:64px 0 32px}
.tag-blue{display:inline-block;background:var(--blue);color:#fff;font-weight:600;letter-spacing:.1em;text-transform:uppercase;font-size:13px;padding:7px 15px;margin-bottom:18px;border-radius:999px}
.tag--closing{background:var(--c-close)}
.shead h2{font-weight:600;font-size:clamp(26px,4vw,38px);line-height:1.08;color:var(--ink-strong)}
.shead p{font-family:'Caveat',cursive;font-size:24px;opacity:.8;margin-top:6px}

/* ---------- HERO STANDOUT ---------- */
.hero{position:relative;overflow:hidden;min-height:440px;display:flex;align-items:center;justify-content:center;text-align:center;background:linear-gradient(150deg,#5a3a2e,#3f2a25 45%,#6b4632)}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 80% at 50% 35%,rgba(220,210,190,.22),transparent 70%)}
.hero__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.hero__scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(150deg,rgba(48,30,24,.74),rgba(34,24,21,.55) 45%,rgba(58,36,24,.74))}
.hero__in{position:relative;z-index:2;color:#fff;padding:48px 30px;max-width:660px}
.hero__in h3{font-weight:600;font-size:clamp(28px,4.4vw,40px);line-height:1.12;text-shadow:0 2px 18px rgba(0,0,0,.4)}
.hero__meta{font-size:18px;margin-top:14px;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.hero__cat{font-style:italic;font-size:18px;margin-top:14px;opacity:.95;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.pill{display:inline-block;margin-top:26px;background:var(--blue);color:#fff;border-radius:999px;padding:14px 34px;font-weight:600;font-size:17px;transition:background .2s,transform .2s}
.pill:hover{background:var(--blue-dark);transform:translateY(-2px)}
.note{text-align:center;font-style:italic;font-size:14px;color:#9a948a;margin-top:10px}

/* ---------- CARD (image-first tile, v145) ---------- */
/* The photo IS the card: a rounded image tile with the kicker badge floating top-left and a
   gradient caption (date / title / venue) overlaid at the bottom. Image leads, text is secondary. */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:18px}
.card{position:relative;display:block;border-radius:16px;overflow:hidden;isolation:isolate;
  text-decoration:none;background:var(--blue);box-shadow:0 8px 22px -12px rgba(43,38,31,.55);
  transition:transform .18s ease,box-shadow .18s ease}
.card:hover{transform:translateY(-2px);box-shadow:0 16px 32px -14px rgba(43,38,31,.55)}
.card__panel{position:relative;display:block;aspect-ratio:4/3;padding:0;overflow:hidden}
.card__panel.is-blue{background:linear-gradient(150deg,var(--blue),#03426f)}
.card__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
/* readability scrim -- dark at the bottom where the caption sits, clear at the top */
.card__panel::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(to top,rgba(14,11,8,.86) 0%,rgba(14,11,8,.44) 32%,rgba(14,11,8,0) 58%)}
.card__kick{position:absolute;top:11px;left:11px;z-index:3;font-family:'Quicksand',sans-serif;
  font-weight:700;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#fff;
  background:var(--blue);padding:4px 10px;border-radius:999px;line-height:1.1;white-space:nowrap;
  box-shadow:0 2px 7px rgba(0,0,0,.3)}
.kick--opening{background:var(--c-open)}
.kick--reception{background:var(--c-recep)}
.kick--free_day{background:var(--c-free)}
.kick--closing{background:var(--c-close)}
.kick--art_walk{background:var(--c-walk)}
.kick--talk{background:var(--c-talk)}
.kick--market{background:var(--c-market)}
.kick--exhibition{background:rgba(20,16,12,.66)}
.card__cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:12px 14px 13px}
.card__date{display:block;font-family:'Quicksand',sans-serif;font-weight:700;font-size:12px;
  letter-spacing:.03em;color:rgba(255,255,255,.94);margin-bottom:2px;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.card__title{font-family:'Lora',serif;font-weight:600;font-size:19px;line-height:1.16;color:#fff;
  text-shadow:0 1px 5px rgba(0,0,0,.6);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card__title em{font-style:italic}
.card__venue{font-family:'Quicksand',sans-serif;font-weight:500;font-size:12.5px;color:rgba(255,255,255,.9);
  margin-top:4px;line-height:1.35;text-shadow:0 1px 3px rgba(0,0,0,.55);
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.card__more{margin-top:auto;padding-top:10px;color:var(--blue);font-weight:600;font-size:15px}
.card__more::after{content:" \2192"}

/* ---------- DAY BY DAY (four-column grid) ---------- */
.daygrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:6px}
@media(max-width:1000px){.daygrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.daygrid{grid-template-columns:1fr}}
.dayblock{display:flex;flex-direction:column;border:1px solid var(--rule-soft);border-radius:10px;overflow:hidden;background:var(--bg)}
.dayblock__date{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;padding:10px 14px;background:var(--blue-tint);border-bottom:1px solid var(--rule-soft)}
.dd{font-family:'Quicksand',sans-serif;font-weight:700;font-size:26px;line-height:1;color:var(--ink-strong)}
.dw{font-style:italic;font-size:14px;opacity:.8}
.dn{font-family:'Caveat',cursive;font-size:18px;color:var(--blue);line-height:1;flex:1 1 100%}
.dayblock__items{display:flex;flex-direction:column}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:10px 14px;border-bottom:1px solid var(--rule-soft)}
.row__sq{flex:0 0 auto;width:44px;height:44px;border-radius:5px;overflow:hidden;position:relative;background:var(--blue)}
.row__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.row:last-child{border-bottom:none}
.row:hover{background:#faf8f3}
.row__title{font-weight:600;font-size:15px;flex:1 1 120px;color:var(--ink-strong);line-height:1.25}
.row__title em{font-style:italic;font-weight:500}
.flag{font-style:italic;font-weight:600;font-size:13px;color:var(--blue);margin-left:6px}
.flag.final{color:var(--brick)}
.row__venue{font-size:13px;opacity:.8;flex:1 1 auto}
.row__code{font-family:'Quicksand',sans-serif;font-weight:600;font-size:11px;letter-spacing:.06em;background:var(--panel);padding:2px 7px;color:var(--brown)}
.row__time{font-style:italic;font-size:13px;flex:0 0 auto}
.row__more{font-size:13px;color:var(--blue);font-weight:600}
.row__more::after{content:" \2197"}
.quiet{padding:20px 0 20px 24px;font-style:italic;opacity:.85;border-left:1px solid var(--rule-soft);font-size:16px}

/* ---------- ONGOING ---------- */
.areas{display:grid;grid-template-columns:repeat(3,1fr);gap:30px 34px}
.area h3{font-weight:600;font-size:20px;color:var(--ink-strong);border-bottom:2px solid var(--blue);padding-bottom:8px;margin-bottom:12px;display:flex;justify-content:space-between;align-items:baseline}
.area h3 .c{font-family:'Quicksand',sans-serif;font-weight:600;font-size:13px;letter-spacing:.06em;color:var(--blue)}
.area ul{list-style:none}
.area li{font-size:15px;opacity:.9;line-height:1.5;padding:8px 0;border-bottom:1px solid var(--rule-soft)}
.area li:last-child{border-bottom:none}
.area li b{font-weight:600;color:var(--ink-strong)}
.area li em{font-style:italic}

/* ---------- NOTES ---------- */
.notewrap{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:8px}
.notecol{padding:30px 32px}
.notecol.grey{background:var(--panel)}
.notecol.dark{background:var(--brown);color:#efe9df}
.notecol h3{font-weight:600;font-size:24px;margin-bottom:16px;color:var(--ink-strong)}
.notecol.dark h3{color:#fff}
.notecol ul{list-style:none}
.notecol li{position:relative;padding:9px 0 9px 24px;font-size:16px;line-height:1.5}
.notecol li::before{content:"\2014";position:absolute;left:0;font-weight:600;color:var(--blue)}
.notecol.dark li::before{content:"!";color:#e8a07f;font-weight:700}
.notecol li b{font-weight:600}
.notecol.dark li{color:#ded7cc}
.notecol.dark li b{color:#fff}

/* ---------- EVENT DETAIL ---------- */
.detail{max-width:900px;margin:8px auto 0}
.detail__media{min-height:380px;display:flex;align-items:flex-end;background:linear-gradient(150deg,#5a3a2e,#3f2a25 50%,#6b4632);position:relative}
.detail__media::before{content:"";position:absolute;inset:0;background:radial-gradient(70% 90% at 50% 30%,rgba(225,215,195,.20),transparent 70%)}
.detail__head{background:var(--panel);padding:40px 44px}
.detail__title{font-weight:600;font-size:clamp(30px,5vw,46px);line-height:1.08;color:var(--ink-strong)}
.detail__title em{font-style:italic}
.detail__meta{font-size:19px;margin-top:14px}
.detail__cat{font-style:italic;font-size:18px;margin-top:14px;opacity:.85}
.detail__body{padding:34px 4px 0;font-size:18px}
.detail__body p{margin-bottom:18px}
.share{margin-top:26px;padding-top:22px;border-top:1px solid var(--rule-soft)}
.share__label{font-weight:600;font-size:20px;color:var(--ink-strong);margin-bottom:14px}
.share__row{display:flex;gap:24px}
.share__row a{font-family:'Quicksand',sans-serif;font-weight:700;font-size:20px;color:var(--brown)}
.share__row a:hover{color:var(--blue)}
.detail__map{margin-top:30px;height:240px;border:1px solid var(--rule-soft);background:
  repeating-linear-gradient(0deg,#f0eee9,#f0eee9 22px,#e8e5de 23px),
  repeating-linear-gradient(90deg,#f4f2ed,#f4f2ed 22px,#ece9e2 23px);
  display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;color:var(--ink);position:relative}
.detail__map .pin{width:24px;height:24px;background:var(--brick);border-radius:50% 50% 50% 0;transform:rotate(-45deg)}
.detail__map .loc{font-style:italic;font-size:16px}

/* ---------- STANDOUTS (BLOG) ---------- */
.lead-note{max-width:760px;margin:6px auto 0;text-align:center;font-size:20px;line-height:1.5}
.posts{max-width:760px;margin:46px auto 0;display:flex;flex-direction:column;gap:52px}
.post__date{font-family:'Quicksand',sans-serif;font-weight:600;letter-spacing:.04em;color:var(--blue);font-size:15px;margin-bottom:10px}
.post__img{aspect-ratio:16/10;background:linear-gradient(135deg,#b06a45,#7d4a39 55%,#caa06f);margin-bottom:18px}
.post__img.alt{background:linear-gradient(135deg,#3f566b,#2b3d4d 60%,#6a8398)}
.post__title{font-weight:600;font-size:28px;line-height:1.14;color:var(--ink-strong);margin-bottom:12px}
.post__title em{font-style:italic}
.post__body{font-size:17.5px}
.post__body p{margin-bottom:14px}
.post__foot{margin-top:16px;display:flex;align-items:center;gap:14px}
.post__tag{display:inline-block;background:var(--blue);color:#fff;font-weight:600;letter-spacing:.08em;text-transform:uppercase;font-size:12px;padding:5px 12px}
.post__by{font-style:italic;opacity:.8;font-size:15px}

/* ---------- PROSE (about / privacy) ---------- */
.prose{max-width:720px;margin:34px auto 0;font-size:18px}
.prose p{margin-bottom:18px}
.prose h2{font-weight:600;font-size:26px;color:var(--ink-strong);margin:30px 0 12px}
.prose a{color:var(--blue);font-weight:600}
.prose .role{font-style:italic;opacity:.85}

/* ---------- CONTACT ---------- */
.contact-grid{max-width:980px;margin:34px auto 0;display:grid;grid-template-columns:1fr 1fr;gap:48px}
.contact-info{font-size:16.5px}
.contact-info p{margin-bottom:16px}
.contact-info a{color:var(--blue);font-weight:600}
.addr{font-style:normal;background:var(--panel);padding:18px 20px;display:inline-block;line-height:1.5}
.form{display:flex;flex-direction:column;gap:16px}
.form h3{font-weight:600;font-size:22px;color:var(--ink-strong)}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:14px;font-weight:600;letter-spacing:.02em}
.field input,.field textarea{font-family:'Lora',serif;font-size:16px;padding:11px 13px;border:1px solid var(--rule-soft);background:#fff;color:var(--ink)}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--blue)}
.btn{align-self:flex-start;background:var(--blue);color:#fff;border:none;border-radius:999px;padding:13px 32px;font-family:'Lora',serif;font-weight:600;font-size:16px;cursor:pointer;transition:background .2s,transform .2s}
.btn:hover{background:var(--blue-dark);transform:translateY(-2px)}
.newsletter{max-width:980px;margin:42px auto 0;background:var(--panel);padding:28px 32px}
.newsletter h3{font-weight:600;font-size:22px;color:var(--ink-strong);margin-bottom:6px}
.newsletter .row2{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px}
.newsletter input{flex:1 1 240px;font-family:'Lora',serif;font-size:16px;padding:11px 13px;border:1px solid var(--rule-soft);background:#fff}

/* ---------- FOOTER ---------- */
.site-footer{margin-top:72px;background:#0070c0;padding:14px 0}
.site-footer .wrap{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 20px}
.mission{font-weight:500;font-size:clamp(22px,3.4vw,30px);line-height:1.3;max-width:720px;margin:0 auto;color:var(--ink-strong)}
.mission em{font-style:italic;color:var(--blue)}
.footlinks{display:flex;flex-flow:row wrap;align-items:center;gap:8px 22px}
.footlinks a{font-family:'Lora',serif;font-weight:500;font-size:17px;line-height:1;letter-spacing:.01em;text-transform:lowercase;color:#fff}
.footlinks a:hover{opacity:.8}
@media(max-width:560px){.site-footer .wrap{justify-content:center;text-align:center}}
.copy{margin:0;font-size:13.5px;letter-spacing:.04em;color:#fff;opacity:.9}

/* ---------- TO TOP ---------- */
.totop{position:fixed;right:22px;bottom:22px;width:54px;height:54px;border-radius:50%;background:var(--brown-dark);color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;z-index:60;box-shadow:0 6px 18px -6px rgba(0,0,0,.5);transition:transform .2s,opacity .25s;opacity:0;pointer-events:none}
.totop.show{opacity:1;pointer-events:auto}
.totop:hover{transform:translateY(-3px)}

/* ---------- RESPONSIVE ---------- */
@media(max-width:900px){
  .grid{grid-template-columns:repeat(2,1fr)}
  .areas{grid-template-columns:1fr 1fr}
  .contact-grid{grid-template-columns:1fr;gap:32px}
}
@media(max-width:620px){
  .wrap{padding:0 18px}
  body{font-size:17px}
  /* Featured / On View grids become a 2-col image gallery on mobile (streamlined browse), while
     the weekly columns stay full-width single tiles. Smaller caption type for the tighter cards. */
  .grid{grid-template-columns:1fr 1fr;gap:12px}
  .grid .card__title{font-size:15px}
  .grid .card__venue{font-size:11px}
  .grid .card__kick{font-size:9.5px;padding:3px 8px;top:8px;left:8px}
  .grid .card__cap{padding:9px 10px 10px}
  .grid .card__date{font-size:10.5px}
  .areas{grid-template-columns:1fr}
  .notewrap{grid-template-columns:1fr}
  .quiet,.mcard{padding-left:0}
  .quiet{border-left:none}
  .menu a{font-size:26px}
  .detail__head{padding:28px 24px}
}

/* (Image-first card styles live in the CARD block above, v145 -- the old colored-panel/overlay
   rules that were here are superseded.) */


/* Calendar: featured mini-cards + routine row dots */
.mcard{display:flex;align-items:center;gap:14px;padding:12px 0 12px 24px;border-bottom:1px solid var(--rule-soft);text-decoration:none;color:inherit}
.mcard:last-child{border-bottom:none}
.mcard:hover{background:#faf8f3}
.mcard__thumb{flex:0 0 auto;width:84px;height:84px;border-radius:6px;overflow:hidden;position:relative;background:var(--blue)}
.mcard__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.mcard__main{flex:1 1 auto;display:flex;flex-direction:column;gap:3px;min-width:0}
.mcard__main .card__kick{position:static;align-self:flex-start;font-size:11px;padding:2px 8px}
.mcard__title{font-weight:600;font-size:18px;line-height:1.18;color:var(--ink-strong)}
.mcard__venue{font-size:14px;opacity:.8;line-height:1.35}
.mcard__when{flex:0 0 auto;font-style:italic;font-size:14px;color:var(--ink);white-space:nowrap;padding-left:6px}
.thumb--opening{background:var(--c-open)}
.thumb--reception{background:var(--c-recep)}
.thumb--closing{background:var(--c-close)}
.thumb--art_walk{background:var(--c-walk)}
.thumb--talk{background:var(--c-talk)}
.thumb--market{background:var(--c-market)}
.thumb--exhibition{background:#6b6258}
.thumb--free_day{background:var(--c-free)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:9px;vertical-align:middle;background:var(--blue)}
.dot--opening,.dot--reception{background:var(--c-recep)}
.dot--closing{background:var(--c-close)}
.dot--art_walk{background:var(--c-walk)}
.dot--talk{background:var(--c-talk)}
.dot--market{background:var(--c-market)}
.dot--exhibition{background:#6b6258}

/* Press / Writings reading list */
.page-hero .updated{font-family:'Quicksand',sans-serif;font-size:13px;color:#9a948a;margin-top:6px}
.wintro{font-size:15px;color:#6b6258;background:#f6f4ef;border:1px solid var(--rule-soft);padding:12px 16px;border-radius:8px;margin:0 0 8px;line-height:1.5}
.wintro a{color:var(--blue);font-weight:600}
.wmonth{margin:0}
.wmonth > h2{font-family:'Lora',serif;font-weight:600;font-size:23px;color:var(--ink-strong);border-bottom:2px solid var(--rule);padding-bottom:8px;margin:38px 0 2px}
.wlist__item{padding:18px 0;border-bottom:1px solid var(--rule-soft)}
.wlist__item:last-child{border-bottom:none}
.wlist__meta{font-family:'Quicksand',sans-serif;font-size:12.5px;color:#8a8278;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:5px}
.wlist__outlet{font-weight:600;color:var(--brown)}
.dotsep{color:#cfc8ba}
.wlist__title{font-size:20px;line-height:1.25;margin:0 0 5px}
.wlist__title a{color:var(--ink-strong);text-decoration:none;border-bottom:1px solid transparent;transition:color .15s,border-color .15s}
.wlist__title a:hover{color:var(--blue);border-bottom-color:var(--blue)}
.wlist__title a::after{content:" \2197";font-size:.78em;color:var(--blue);opacity:.65}
.wlist__sum{font-size:16px;line-height:1.5;margin:0;color:var(--ink)}
.wlist__venue{color:#8a8278;font-style:italic}
.wlist__by{font-family:'Quicksand',sans-serif;font-size:12.5px;color:#9a948a;margin:4px 0 0}
.wtag{font-family:'Quicksand',sans-serif;font-weight:600;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:#6b6258;padding:2px 8px;border-radius:999px;white-space:nowrap}
.wtag--review{background:var(--brick)}
.wtag--profile,.wtag--interview{background:var(--blue)}
.wtag--news{background:#b9802b}
.wtag--essay{background:#7b4fb0}
.wtag--preview,.wtag--feature{background:#2b8a86}
.wtag--institutional{background:#6b6258}

/* Lock every fetched image to a fixed size (no stretch, no layout shift) */
.card__photo,.mcard__img{object-fit:cover;width:100%;height:100%;display:block}
.card__panel,.mcard__thumb{overflow:hidden}

/* Images never zoom/scale/animate on hover — fully static */
.card__photo,.mcard__img{transform:none!important;transition:none!important}
.card:hover .card__photo,.mcard:hover .mcard__img,
.card:hover .card__panel,.mcard:hover .mcard__thumb{transform:none!important}

/* No-image cards use the logo blue; keep the kick chip and text legible on blue */
.card__panel.is-blue .card__kick{background:rgba(255,255,255,.22);color:#fff}
.card__panel.is-blue .card__date,
.card__panel.is-blue .card__when{color:#fff}

/* ── Calendar rating block (editorial layer) ─────────────────────────────── */
.card__rate{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:7px 0 0}
.stars{color:var(--c-gold);font-size:14px;letter-spacing:1px;line-height:1;white-space:nowrap}
.card__badges{display:inline-flex;flex-wrap:wrap;gap:5px}
.badge{font-family:'Quicksand',sans-serif;font-weight:600;font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;padding:2px 8px;border-radius:999px;line-height:1.55;white-space:nowrap}
.badge--last{background:#fbe9da;color:#c25a17}
.badge--open{background:#d9ebf8;color:#005a9a}
.badge--free{background:#e1efe1;color:#2f6b3c}
.badge--paid{background:#efe8da;color:#7a5a1e}
.badge--time{background:#eceae5;color:#6b6258}
.badge--gem{background:#efe6f6;color:#6b3fa0}
.badge--first{background:#e3f0fa;color:#005a9a}
.card__why{font-family:'Lora',serif;font-style:italic;font-size:13px;line-height:1.45;color:#5c5650;margin:7px 0 0}
.card__who{font-family:'Quicksand',sans-serif;font-size:12px;color:#8a8278;margin:5px 0 0}
.card__who span{font-weight:700;color:#6b6258;text-transform:uppercase;letter-spacing:.04em;font-size:11px;margin-right:3px}
/* compact rating block inside calendar mini-cards */
.mcard .card__rate{margin-top:5px;gap:4px 7px}
.mcard .stars{font-size:13px}

/* ---------------------------------------------------------------- Born on This Day */
.bday-sec{border-top:1px solid var(--rule-soft);margin-top:54px;padding-top:46px;padding-bottom:8px}
.bday-head{margin-bottom:26px}
.bday-kicker{display:inline-block;font-family:'Quicksand',sans-serif;font-weight:600;font-size:13px;
  letter-spacing:.1em;text-transform:uppercase;color:#fff;background:var(--brick);padding:6px 13px;border-radius:999px;margin-bottom:14px}
.bday-head h2{font-weight:600;font-size:clamp(30px,4.6vw,46px);line-height:1.05;color:var(--ink-strong)}
.bday-sub{font-family:'Caveat',cursive;font-size:23px;opacity:.82;margin-top:4px;max-width:60ch}
.bday-card{display:flex;gap:30px;align-items:stretch;background:var(--bg);border:1px solid var(--rule-soft)}
.bday-portrait{width:150px;aspect-ratio:4/5;margin:6px 0 0;position:relative;overflow:hidden;border-radius:8px;
  background:linear-gradient(150deg,var(--blue) 0%,var(--blue-dark) 55%,var(--brown) 100%);
  background-size:cover;background-position:center top;display:flex;align-items:center;justify-content:center}
.bday-initials{font-family:'Lora',serif;font-weight:600;font-size:40px;color:rgba(255,255,255,.92);letter-spacing:.02em}
.bday-portrait.has-img .bday-initials{display:none}
.bday-body{flex:1 1 auto;padding:24px 32px 26px 2px;min-width:0}
.bday-when{font-family:'Quicksand',sans-serif;font-weight:600;font-size:13px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--brick);margin-bottom:4px}
.bday-name{font-weight:600;font-size:clamp(26px,3.5vw,38px);line-height:1.08;color:var(--ink-strong);margin:0 0 10px}
.bday-bio{font-size:17px;line-height:1.55;color:var(--ink);margin:0 0 20px;max-width:54ch}
.bday-work{flex:0 0 calc(50% - 15px);background:var(--blue-tint);padding:24px 22px 20px}
.bday-work-label{display:block;font-family:'Quicksand',sans-serif;font-weight:600;font-size:11px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--blue-dark);margin-bottom:5px}
.bday-work-title{font-family:'Lora',serif;font-style:italic;font-size:20px;line-height:1.3;color:var(--ink-strong);margin:0 0 3px}
.bday-work-meta{font-size:14px;color:var(--ink);opacity:.78;margin:0}
.bday-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}
.bday-link{display:inline-block;font-family:'Quicksand',sans-serif;font-weight:600;font-size:14px;
  letter-spacing:.02em;background:var(--blue);color:#fff;border:1px solid var(--blue);
  padding:9px 18px;border-radius:999px;transition:background .2s,transform .2s,color .2s}
.bday-link:hover{background:var(--blue-dark);border-color:var(--blue-dark);transform:translateY(-1px)}
.bday-link--ghost{background:transparent;color:var(--blue-dark)}
.bday-link--ghost:hover{background:var(--blue-tint);color:var(--blue-dark);transform:translateY(-1px)}
@media (max-width:700px){
  .bday-card{flex-direction:column;gap:0}
  .bday-work{flex-basis:auto;padding:20px 20px 18px}
  .bday-body{padding:22px 22px}
  .bday-bio{max-width:none}
}
.bday-kicker:empty{display:none}

/* ---------------------------------------------------------------- demo badge + dev disclaimer */
/* beta rides the logo badge like an exponent (top-right, slightly overhanging) */
.beta-tag{position:absolute;top:-7px;right:-16px;z-index:6;font-family:'Quicksand',sans-serif;font-weight:700;
  font-size:10.5px;line-height:1;letter-spacing:.14em;text-transform:uppercase;color:#fff;
  background:var(--brick);padding:4px 7px 3px;border-radius:9px;white-space:nowrap;
  box-shadow:0 2px 6px rgba(0,0,0,.18)}
@media(max-width:620px){ .beta-tag{top:-6px;right:-12px;font-size:9.5px;padding:3px 6px 2px} }
.dev-disclaimer{max-width:620px;margin:22px auto 0;padding:11px 16px;border:1px solid var(--brick);
  border-radius:6px;background:rgba(168,71,43,.05);font-family:'Quicksand',sans-serif;font-size:13px;
  line-height:1.5;letter-spacing:.01em;color:var(--brick)}

/* signature-work image (public-domain / Commons only; hidden until JS finds a free image) */
.bday-workimg{display:block;width:100%;height:auto;margin:0 0 12px;
  border-radius:6px;box-shadow:0 1px 6px rgba(0,0,0,.18)}

/* image attribution credits (author + license from Wikimedia Commons) */
.bday-credit{display:none;font-family:'Quicksand',sans-serif;font-size:10.5px;letter-spacing:.02em;line-height:1.35}
.bday-credit a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor}
.bday-credit a:hover{opacity:.8}
.bday-credit--over{position:absolute;left:0;right:0;bottom:0;padding:6px 9px;text-align:left;color:#fff;
  background:linear-gradient(to top,rgba(0,0,0,.62),rgba(0,0,0,0))}
.bday-credit--work{color:var(--ink);opacity:.62;margin:-4px 0 12px}
.bday-credit--photo{color:var(--ink);opacity:.55;margin:7px 0 0;max-width:180px}

/* non-clickable event tiles (no usable external link) — remove the hover affordance */
.card--static:hover{box-shadow:none}
.mcard--static:hover,.row--static:hover{background:transparent}

/* Atlas venue storefront photo (Google Street View) */
.vp-photo{display:none;margin:26px 0 0;border:1px solid var(--rule-soft);border-radius:10px;overflow:hidden;position:relative;line-height:0;background:#e9e6df}
.vp-photo.is-shown{display:block}
.vp-photo img{display:block;width:100%;height:auto}
.vp-photo__cap{position:absolute;right:0;bottom:0;line-height:1.2;font-family:'Quicksand',sans-serif;font-size:10.5px;letter-spacing:.02em;color:#fff;background:rgba(0,0,0,.45);padding:3px 8px;border-top-left-radius:8px}

/* venue page: live events pulled from data/events.json */
.vp-events ul{list-style:none;margin:0;padding:0}
.vp-events li{padding:11px 0;border-bottom:1px solid var(--rule-soft)}
.vp-events li:last-child{border-bottom:none}
.vp-ev-title{font-family:'Lora',serif;font-weight:600;font-size:17px;color:var(--ink-strong);text-decoration:none}
a.vp-ev-title:hover{color:var(--blue-dark)}
.vp-ev-meta{display:block;margin-top:3px;font-family:'Quicksand',sans-serif;font-weight:600;font-size:13.5px;color:var(--ink-soft)}
.vp-ev-kind{display:inline-block;margin-left:8px;padding:1px 7px;border:1px solid var(--rule-soft);border-radius:9px;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}
.vp-ev-none{font-size:15.5px;color:var(--ink-soft);margin:0}

/* footer bar: the beta note reads as plain small text, not a boxed warning */
.site-footer .dev-disclaimer{border:none;background:none;color:#fff;opacity:.75;margin:0;padding:0;max-width:none;font-size:clamp(9px,2.9vw,11.5px);white-space:nowrap;letter-spacing:.01em}

/* Standout: editorial hook + editor's note */
.hero__kick{font-family:'Quicksand',sans-serif;font-weight:700;font-size:13px;letter-spacing:.09em;
  text-transform:uppercase;color:#ffd9a8;margin:0 0 8px}
.hero-note{margin:18px 0 8px;padding:18px 22px 17px;max-width:620px;
  background:rgba(12,16,22,.55);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  border:1px solid rgba(255,255,255,.14);border-left:3px solid #ffd9a8;border-radius:0 12px 12px 0}
.hero-note__label{display:flex;align-items:center;gap:10px;font-family:'Quicksand',sans-serif;
  font-weight:700;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#ffd9a8;margin-bottom:9px}
.hero-note__label::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,rgba(255,217,168,.5),transparent)}
.hero-note p{margin:0;font-family:'Lora',serif;font-style:italic;font-size:15.5px;line-height:1.68;
  color:rgba(255,255,255,.93);text-shadow:0 1px 2px rgba(0,0,0,.35)}
.hero-note p::first-letter{float:left;font-family:'Lora',serif;font-style:normal;font-weight:600;
  font-size:2.55em;line-height:.85;padding:3px 9px 0 0;color:#ffd9a8}
@media(max-width:620px){ .hero-note{padding:14px 15px} .hero-note p{font-size:14.5px} }
.card__hook{margin-top:6px;font-family:'Lora',serif;font-style:italic;font-size:13.5px;line-height:1.45;
  color:var(--blue-dark);padding-left:10px;border-left:2px solid var(--blue-tint)}

#homemap .leaflet-tile-pane{filter:grayscale(1)}
#homemap .leaflet-hotpins-pane path{filter:drop-shadow(0 1px 5px rgba(236,72,153,.55))}
/* Venue name under each map dot -- tiny label, no box: a white halo (text-shadow) gives the
   letters contrast over the grey map. Bound only on the map page (main.js); mobile only.
   main.js declutters them so only non-overlapping names show (more appear as you zoom in). */
.leaflet-tooltip.pin-label{background:none;border:none;box-shadow:none;padding:0;
  -webkit-backdrop-filter:none;backdrop-filter:none;
  color:#0f3f60;font-family:'Quicksand',sans-serif;font-weight:700;font-size:var(--pin-label-fs,8px);line-height:1.15;
  letter-spacing:.01em;white-space:nowrap;
  text-shadow:0 0 2px #fff,0 0 3px #fff,0 0 4px #fff,0 1px 1px rgba(255,255,255,.95)}
.leaflet-tooltip.pin-label::before{display:none}      /* drop the default tooltip arrow */
.leaflet-tooltip.pin-label.pin-label--off{display:none}   /* decluttered out (would overlap) */
@media(min-width:621px){ .leaflet-tooltip.pin-label{display:none} }   /* mobile map only */
/* "My location" map control -- target/crosshair button below the zoom control. */
.loc-ctrl a{display:flex;align-items:center;justify-content:center;width:30px;height:30px}
.loc-ctrl svg{width:19px;height:19px}
.loc-ctrl .loc-dot{fill:#0070c0}
.loc-ctrl .loc-ring,.loc-ctrl .loc-tick{fill:none;stroke:#0070c0;stroke-width:2;stroke-linecap:round}
.loc-ctrl.is-locating svg{opacity:.35}
.loc-ctrl.is-locating a{cursor:progress}

/* ---- Floating event sheet (map page): tap a dot -> image-first card, X to close, heart to save ---- */
.evsheet-back{position:fixed;inset:0;z-index:2000;background:rgba(18,14,10,.55);opacity:0;pointer-events:none;
  transition:opacity .22s;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.evsheet-back.is-open{opacity:1;pointer-events:auto}
.evsheet{position:fixed;z-index:2010;left:50%;top:50%;transform:translate(-50%,-46%) scale(.985);
  width:min(92vw,430px);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;
  background:var(--bg);border-radius:20px;box-shadow:0 24px 64px -14px rgba(0,0,0,.55);
  opacity:0;pointer-events:none;transition:opacity .22s,transform .22s}
.evsheet.is-open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
/* hero (with the X + heart) stays fixed; only the body scrolls -- so close/save are always reachable */
.evsheet__hero{position:relative;flex:0 0 auto;aspect-ratio:16/10;overflow:hidden;background:var(--blue);border-radius:20px 20px 0 0}
.evsheet__hero.noimg{background:linear-gradient(150deg,var(--blue),#03426f)}
.evsheet__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.evsheet__hero::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to bottom,rgba(10,8,6,.34),rgba(10,8,6,0) 34%)}
.evsheet__kick{position:absolute;left:14px;bottom:12px;z-index:2;font-family:'Quicksand',sans-serif;
  font-weight:700;font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:#fff;
  padding:5px 12px;border-radius:999px;box-shadow:0 2px 8px rgba(0,0,0,.32)}
.evsheet__heart,.evsheet__x{position:absolute;top:12px;z-index:3;width:44px;height:44px;border:none;
  border-radius:50%;background:rgba(255,255,255,.94);font-size:19px;line-height:44px;text-align:center;
  cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.32);padding:0}
.evsheet__heart{left:12px;color:#ec4899}
.evsheet__x{right:12px;color:#3f3931;font-size:17px}
.evsheet__body{padding:16px 18px 20px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.evsheet__venue{font-family:'Lora',serif;font-weight:600;font-size:22px;line-height:1.2;color:var(--ink-strong)}
.evsheet__addr{font-family:'Quicksand',sans-serif;font-size:13px;color:#8a8378;margin-top:3px}
.evsheet__shows{margin-top:14px;display:flex;flex-direction:column;gap:9px}
.evsheet__show{display:block;text-decoration:none;background:#f4f2ee;border:1px solid var(--rule-soft);
  border-radius:12px;padding:11px 13px;transition:background .15s}
.evsheet__show:hover{background:#efece6}
.evsheet__show-top{display:flex;align-items:center;gap:8px;margin-bottom:2px}
.evsheet__tag{font-family:'Quicksand',sans-serif;font-weight:700;font-size:10px;letter-spacing:.04em;
  text-transform:uppercase;color:#fff;background:var(--blue);padding:2px 7px;border-radius:999px}
.evsheet__show-date{font-family:'Quicksand',sans-serif;font-weight:600;font-size:12px;color:var(--blue-dark)}
.evsheet__show-title{font-family:'Lora',serif;font-weight:600;font-size:16px;line-height:1.25;color:var(--ink-strong)}
.evsheet__actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
.evsheet__drive{font-family:'Quicksand',sans-serif;font-weight:700;font-size:13px;color:#fff;
  background:var(--blue);border:none;border-radius:999px;padding:9px 16px;cursor:pointer}
.evsheet__vlink{font-family:'Quicksand',sans-serif;font-weight:600;font-size:13.5px;color:var(--blue);text-decoration:none;white-space:nowrap}

/* Homepage single-event sheet: blue variant of the map sheet, with complete show info. */
.evsheet--home{background:#0f6cb5;color:#fff}
.evsheet--home .evsheet__body{color:#fff}
.es2-when{font-family:'Quicksand',sans-serif;font-weight:700;font-size:12.5px;letter-spacing:.03em;color:rgba(255,255,255,.9);margin:0}
.es2-title{font-family:'Lora',serif;font-weight:600;font-size:23px;line-height:1.18;color:#fff;margin:6px 0 0}
.es2-venue{font-family:'Quicksand',sans-serif;font-weight:600;font-size:14.5px;color:#fff;margin:9px 0 0}
.es2-addr{font-family:'Quicksand',sans-serif;font-size:13px;color:rgba(255,255,255,.78);margin:2px 0 0}
.es2-hours{font-family:'Quicksand',sans-serif;font-weight:600;font-size:13px;color:rgba(255,255,255,.86);margin:7px 0 0}
.es2-desc{font-family:'Lora',serif;font-size:16px;line-height:1.55;color:rgba(255,255,255,.96);margin:13px 0 0}
.es2-actions{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0 2px}
.es2-more,.es2-dir{font-family:'Quicksand',sans-serif;font-weight:700;font-size:13.5px;color:#fff;text-decoration:none;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.42);border-radius:999px;padding:10px 17px}
.es2-more:hover,.es2-dir:hover{background:rgba(255,255,255,.27)}
.walkbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:12px 0 0;padding:10px 14px;
  border:1px solid var(--rule-soft);border-radius:10px;background:#fff;font-family:'Quicksand',sans-serif;font-size:13.5px}
.walkbar__label{font-weight:700;letter-spacing:.1em;text-transform:uppercase;font-size:11.5px;color:#8a8378}
.walkbar__btn{font-family:'Quicksand',sans-serif;font-size:13px;font-weight:600;padding:6px 12px;border-radius:999px;
  border:1px solid var(--rule-soft);background:#fff;color:var(--ink);cursor:pointer;text-decoration:none}
.walkbar__btn--go{background:#0070c0;border-color:#0070c0;color:#fff}
.walkbar__btn--quiet{border:none;color:#8a8378}
.walkhint{margin:8px 0 0;font-size:13px;color:#8a8378;font-style:italic}
.concierge{max-width:820px;margin:6px auto 30px;padding:22px 26px;border:1px solid var(--rule-soft);
  border-radius:14px;background:#fff}
.concierge{display:none !important}   /* removed from mobile per owner (Jul 7); was desktop-hidden already, so now hidden at every width. Markup kept in place, inert + reversible. */
@media(max-width:620px){ .concierge{margin-top:14px} }
/* ---- mobile cover carousel (swipe, near-full-bleed) ---- */
.cover{display:none}
@media(max-width:620px){
  .cover{display:block;margin:10px -22px 6px}
  .cover__track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:10px;
    padding:0 22px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .cover__track::-webkit-scrollbar{display:none}
  .cover__slide{position:relative;flex:0 0 92%;scroll-snap-align:center;height:64vh;min-height:380px;
    border-radius:20px;background-size:cover;background-position:center;background-color:#e7e2d9;
    overflow:hidden;text-decoration:none;box-shadow:0 2px 12px rgba(43,38,31,.16)}
  .cover__slide::after{content:"";position:absolute;inset:0;
    background:linear-gradient(180deg,rgba(0,112,192,0) 42%,rgba(0,112,192,.94) 100%)}
  .cover__strip{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:14px 18px 18px}
  .cover__strip em{display:block;font-family:'Quicksand',sans-serif;font-style:normal;font-weight:700;
    font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.85)}
  .cover__strip strong{display:block;margin-top:4px;font-family:'Lora',serif;font-weight:600;
    font-size:25px;line-height:1.18;color:#fff}
  .cover__strip span{display:block;margin-top:4px;font-family:'Quicksand',sans-serif;font-size:14px;
    font-weight:600;color:rgba(255,255,255,.85)}
  .cover__dots{display:flex;justify-content:center;gap:7px;margin:10px 0 2px}
  .cover__dot{width:7px;height:7px;border-radius:50%;background:#cfc8bc;transition:background .2s}
  .cover__dot.is-on{background:#0070c0}
  .hero-sec{display:none}   /* the cover IS the story on mobile; desktop keeps its hero */
  body{padding-bottom:74px}
}
/* ---- Contact page: blue canvas + de-linked footer on mobile (owner, Jul 2026) ---- */
@media(max-width:620px){
  /* Homepage + Contact page: drop the About/Contact/Press/Privacy footer row on mobile.
     Homepage — About/Press/Privacy are removed and Contact moves to the pill; Contact page —
     all footer links removed per request. OTHER mobile pages KEEP their footer links so
     About/Privacy stay reachable (the pill carries no About/Privacy). Desktop is untouched. */
  body.home .footlinks, body.contact .footlinks{display:none}
  /* Contact reads on the same blue canvas as the homepage. Text sitting directly on the blue
     goes white; the newsletter/address cards and the white form inputs stay light for legibility. */
  body.contact{background:#0f6cb5}
  body.contact .logo img{box-shadow:0 6px 16px rgba(0,0,0,.28),0 0 0 1px rgba(255,255,255,.22)}
  body.contact .page-hero h1{color:#fff}
  body.contact .page-hero p{color:rgba(255,255,255,.92)}
  body.contact .contact-info p{color:rgba(255,255,255,.94)}
  body.contact .contact-info strong{color:#fff}
  body.contact .contact-info a{color:#fff;text-decoration:underline}
  /* The white .contact-info p override also matches <p class="addr">, but that card keeps its
     light panel background -- force its text back to ink so the address card stays legible. */
  body.contact .contact-info .addr{color:var(--ink)}
  body.contact .form h3{color:#fff}
  body.contact .field label{color:rgba(255,255,255,.95)}
  body.contact .field .opt{color:rgba(255,255,255,.72)}
  /* Let the form column shrink to the phone width. Grid/flex items default to min-width:auto,
     so the long <select> option ("A missing space (gallery, museum, studio…)") was forcing the
     form wider than the viewport and creating a horizontal scroll. */
  body.contact .contact-grid > *{min-width:0}
  body.contact .field{min-width:0}
  body.contact .field select,
  body.contact .field input,
  body.contact .field textarea{max-width:100%}
}
/* ---- native bottom navigation ---- */
.bottomnav{display:none}
@media(max-width:620px){
  /* floating translucent pill: centered, two-thirds of the screen, lifted off the bottom edge */
  .bottomnav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;
    left:50%;transform:translateX(-50%);width:66.6667%;
    bottom:calc(16px + env(safe-area-inset-bottom));
    z-index:1200;background:rgba(0,112,192,.94);
    border:1px solid rgba(255,255,255,.5);border-radius:24px;
    backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    box-shadow:0 10px 30px rgba(43,38,31,.34);
    padding:8px 6px}
  .bn-item{display:flex;flex-direction:column;align-items:center;gap:1px;border:none;background:none;
    text-decoration:none;color:rgba(255,255,255,.92);cursor:pointer;padding:2px 0;font-family:'Quicksand',sans-serif}
  .bn-i{height:22px;display:flex;align-items:center;justify-content:center;font-size:19px;line-height:1}
  .bn-i svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;
    stroke-linecap:round;stroke-linejoin:round}
  .bn-cal{display:inline-flex;flex-direction:column;width:21px;height:21px;border-radius:4px;
    border:1.5px solid currentColor;overflow:hidden}
  .bn-cal i{display:block;height:5px;background:currentColor}
  .bn-cal b{flex:1;display:flex;align-items:center;justify-content:center;
    font-family:'Quicksand',sans-serif;font-weight:700;font-size:10px;line-height:1}
  .bn-item.is-here .bn-cal i{background:#fff}
  .bn-l{font-size:10.5px;font-weight:700;letter-spacing:.04em;white-space:nowrap}
  .bn-item.is-here{color:#fff}

  /* ---- sticky filter chips (calendar page) ---- */
  .fbar{position:sticky;top:0;z-index:900;display:flex;gap:8px;overflow-x:auto;
    padding:10px 22px;margin:0 -22px 8px;background:rgba(247,245,240,.94);
    backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
    border-bottom:1px solid var(--rule-soft);scrollbar-width:none}
  .fbar::-webkit-scrollbar{display:none}
  .fchip{flex:0 0 auto;font-family:'Quicksand',sans-serif;font-size:13px;font-weight:700;
    padding:7px 14px;border-radius:999px;border:1px solid var(--rule-soft);
    background:#fff;color:var(--ink);cursor:pointer;white-space:nowrap}
  .fchip.is-on{background:#0070c0;border-color:#0070c0;color:#fff}
  .fchip--near.is-on, .fchip--r.is-on{background:#ec4899;border-color:#ec4899;color:#fff}
  .fradii{display:inline-flex;gap:8px}
  /* ---- save hearts ---- */
  .hbtn{position:absolute;top:8px;right:8px;z-index:5;width:34px;height:34px;border-radius:50%;
    border:none;background:rgba(247,245,240,.92);color:#ec4899;font-size:17px;line-height:34px;
    text-align:center;cursor:pointer;box-shadow:0 1px 6px rgba(43,38,31,.2);padding:0}
  .row .hbtn, .mcard .hbtn{position:static;width:30px;height:30px;line-height:30px;flex:0 0 auto;
    margin-left:6px;box-shadow:none;background:transparent;font-size:16px}
  .hbtn.is-saved{color:#ec4899}
  .card{position:relative}
  /* The map + heart action buttons are pinned to the card's top-right on mobile, so move the
     kicker badge to the top-LEFT -- otherwise "OPENING"/"ON VIEW" collides with the two circles
     (verified 375px overlap). Badge top-left, actions top-right is the conventional card layout. */
  .card .card__panel > .card__kick{grid-column:1;grid-row:1;justify-self:start}
  .cover__slide .hbtn{z-index:3}
  /* ---- itinerary / search sheet ---- */
  .savedpanel{position:fixed;left:0;right:0;bottom:0;z-index:1300;max-height:72vh;overflow-y:auto;
    background:var(--bg);border-radius:18px 18px 0 0;border-top:1px solid var(--rule-soft);
    box-shadow:0 -8px 30px rgba(43,38,31,.25);padding:18px 22px 90px;display:none}
  .savedpanel.is-open{display:block}
  .savedpanel h3{font-family:'Lora',serif;font-weight:600;font-size:20px;margin:0 0 4px}
  .savedpanel .sp-sub{font-size:13.5px;color:#8a8378;margin:0 0 12px}
  .sp-item{display:flex;align-items:baseline;gap:10px;padding:10px 0;border-bottom:1px dashed var(--rule-soft)}
  .sp-item b{font-family:'Lora',serif;font-weight:600;font-size:15.5px}
  .sp-item .sp-meta{font-size:13px;color:#6b6258;font-family:'Quicksand',sans-serif}
  .sp-item a{color:inherit;text-decoration:none;flex:1 1 auto;min-width:0}
  .sp-x{border:none;background:none;color:#ec4899;font-size:16px;cursor:pointer;padding:2px 6px}
  .sp-empty{font-style:italic;color:#8a8378}
  /* ---- quick map preview ---- */
  .mapbtn{display:inline-flex;align-items:center;justify-content:center;border:none;
    background:transparent;color:#0070c0;cursor:pointer;padding:2px 6px;flex:0 0 auto}
  .mapbtn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;
    stroke-linecap:round;stroke-linejoin:round}
  .card .mapbtn{position:absolute;top:8px;right:46px;z-index:5;width:34px;height:34px;
    border-radius:50%;background:rgba(247,245,240,.92);box-shadow:0 1px 6px rgba(43,38,31,.2);
    line-height:34px;text-align:center;padding:0}
  .cover__slide .mapbtn{position:absolute;top:10px;right:52px;z-index:3;width:34px;height:34px;
    border-radius:50%;background:rgba(247,245,240,.92);box-shadow:0 1px 6px rgba(43,38,31,.2);
    line-height:34px;text-align:center;padding:0}
  .mapsheet{position:fixed;left:0;right:0;bottom:0;z-index:1300;background:var(--bg);
    border-radius:18px 18px 0 0;border-top:1px solid var(--rule-soft);
    box-shadow:0 -8px 30px rgba(43,38,31,.25);padding:14px 20px 26px;display:none}
  .mapsheet.is-open{display:block}
  .mapsheet__map{height:190px;border-radius:12px;overflow:hidden;margin:8px 0 12px;background:#e7e2d9}
  .mapsheet__map .leaflet-tile-pane{filter:grayscale(1)}
  .mapsheet h3{font-family:'Lora',serif;font-weight:600;font-size:19px;margin:0}
  .mapsheet .ms-sub{font-family:'Quicksand',sans-serif;font-size:13px;color:#6b6258;margin:2px 0 0}
  .ms-near{margin:0 0 12px;padding:0;list-style:none}
  .ms-near li{display:flex;justify-content:space-between;gap:10px;font-size:14px;
    padding:7px 0;border-bottom:1px dashed var(--rule-soft)}
  .ms-near .ms-walk{font-family:'Quicksand',sans-serif;font-weight:600;color:#0070c0;white-space:nowrap}
  .ms-near a{color:inherit;text-decoration:none}
  .ms-actions{display:flex;gap:10px;flex-wrap:wrap}
  .ms-head{font-family:'Quicksand',sans-serif;font-size:11.5px;font-weight:700;letter-spacing:.12em;
    text-transform:uppercase;color:#8a8378;margin:0 0 4px}
  .ss-input{width:100%;font-family:'Lora',serif;font-size:17px;padding:10px 14px;margin:8px 0 12px;
    border:1px solid var(--rule-soft);border-radius:10px;background:#fff;color:var(--ink)}
}

/* ---- mobile tile treatment: footer blue behind text, white type ---- */
@media(max-width:620px){
  .fcard__strip{background:rgba(0,112,192,.92)}
  .fcard__strip strong{color:#fff}
  .fcard__strip span{color:rgba(255,255,255,.85)}
  .card__body{background:#0070c0}
  .card__body .card__kick{color:#fff;box-shadow:0 0 0 1.5px rgba(255,255,255,.55)}
  .card__body .card__title, .card__body .card__title a{color:#fff}
  .card__body .card__venue, .card__body .card__date, .card__body .card__hook,
  .card__body .card__why, .card__body .card__who{color:rgba(255,255,255,.88)}
  .card__body .card__rate{color:#ffd166}
  .card__body .card__more, .card__body a{color:#fff;text-decoration-color:rgba(255,255,255,.5)}
  .vcard__body{background:#0070c0}
  .vcard__body .vcard__name a{color:#fff}
  .vcard__body .vcard__addr{color:rgba(255,255,255,.85)}
  .vcard__body .vcard__detail, .vcard__body .vcard__link{color:#fff;text-decoration-color:rgba(255,255,255,.5)}
  .vcard__body .vcard__map{color:#fff;border-color:rgba(255,255,255,.55);background:transparent}
  /* hero + Artist of the Day join the same blue tile format */
  .hero__scrim{background:linear-gradient(180deg,rgba(0,112,192,0) 25%,rgba(0,112,192,.92) 100%)}
  .bday-card{background:#0070c0;border-color:#0070c0}
  .bday-card .bday-name, .bday-card .bday-name a, .bday-card .bday-kicker,
  .bday-card .bday-initials{color:#fff}
  .bday-card .bday-bio, .bday-card .bday-when, .bday-card .bday-sub,
  .bday-card .bday-credit{color:rgba(255,255,255,.88)}
  .bday-card .bday-links a{color:#fff;text-decoration-color:rgba(255,255,255,.5)}
  /* ---- BLUE CANVAS: the page background becomes the bottom-menu blue; loose type goes light ---- */
  body.home{background:#0f6cb5}
  body.home .logo img{box-shadow:0 6px 16px rgba(0,0,0,.28),0 0 0 1px rgba(255,255,255,.22)}
  body.home .page-hero .h1-home{color:#fff}
  body.home .homestats{color:rgba(255,255,255,.85)}
  body.home .homestats strong{color:#fff}
  body.home .page-hero .page-hero__dates{color:#fff}
  body.home .week-col__head h2, body.home .openings-sec h2, body.home .shead h2,
  body.home .week-col h2{color:#fff}
  body.home .shead p{color:rgba(255,255,255,.82)}
  body.home .week-col__empty{color:rgba(255,255,255,.8)}
  body.home .tag-blue{background:rgba(255,255,255,.18);color:#fff;border:1px solid rgba(255,255,255,.45)}
}
.concierge__hello{margin:0;font-family:'Lora',serif;font-style:italic;font-size:21px;color:var(--ink-strong)}
.concierge__meta{margin:6px 0 12px;font-size:15.5px;line-height:1.55}
.cg-list{margin:0 0 14px;padding-left:22px;font-size:15px;line-height:1.7}
.cg-stars{color:#b8860b;letter-spacing:.06em;font-size:13px}
.cg-venue{color:#6b6258;font-size:13.5px}
.cg-list a{font-size:13.5px}
.concierge__actions{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0 6px}
.cg-total{font-size:14px;margin:10px 0 0}
.concierge__tonight{margin:12px 0 0;font-size:14px;border-top:1px dashed var(--rule-soft);padding-top:12px}
.cg-newhead{margin:10px 0 2px;font-family:'Quicksand',sans-serif;font-size:11.5px;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;color:#ec4899}
.cg-newline{margin:2px 0;font-size:14.5px}
.concierge__ambient{margin:6px 0 0;font-size:13px;color:#8a8378;font-family:'Quicksand',sans-serif;
  letter-spacing:.06em;text-transform:uppercase}
@media(max-width:620px){ .concierge{padding:16px 16px} }
.leaflet-popup-content .walk-add{font-family:'Quicksand',sans-serif;font-size:12px;font-weight:700;margin-top:4px;
  padding:4px 10px;border-radius:999px;border:1px solid #ec4899;background:#fff;color:#ec4899;cursor:pointer}
#homemap{height:460px;border:1px solid var(--rule-soft);border-radius:12px;overflow:hidden;margin-top:6px}
.maplegend{display:flex;align-items:center;gap:8px 10px;margin:0 0 12px;font-family:'Quicksand',sans-serif;font-weight:600;font-size:13.5px;color:var(--ink)}
.maplegend__dot{display:inline-block;width:13px;height:13px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.12)}
.maplegend__dot--today{background:#ec4899}
.maplegend__dot--onview{background:#0070c0;margin-left:14px;width:11px;height:11px}
@media(max-width:620px){ #homemap{height:360px} }

/* Atlas venue pages: hours line injected by main.js from data/hours.json (v110) */
.vp-hours{font-family:'Quicksand',sans-serif;font-weight:600;font-size:13.5px;letter-spacing:.02em;color:#6b6258;margin:8px 0 0}

/* Cover slides paint via a real <img> (v111): CSS background-image inside an iOS
   touch-scroll carousel is unreliably rasterized (silent blank); a real element
   also gains the site-standard onerror fallback and first-slide load priority. */
@media(max-width:620px){
  .cover__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:20px}
}

/* Hero stats line (v112): on-view-now / opened past week / closing this week */
.homestats{font-family:'Quicksand',sans-serif;font-weight:600;font-size:14.5px;
  letter-spacing:.02em;color:#6b6258;margin:6px 0 2px}
.homestats strong{color:#0070c0;font-weight:700}
@media(max-width:620px){ .homestats{font-size:13.5px} }

/* Mobile hero order (v113, owner ask): title -> stats -> dates. Desktop keeps
   title -> dates -> stats. Scoped to the homepage hero only. */
@media(max-width:620px){
  /* Masthead: no title, no count. Date line over an "Updated <day, year>" line, both CENTERED in
     the space between the floating logo and the right edge. */
  body.home .site-header{margin-bottom:6px}
  body.home .page-hero{display:flex;flex-direction:column;align-items:center;justify-content:center;
    text-align:center;padding:0 14px 0 92px;margin-top:-42px;min-height:74px}
  body.home .page-hero .h1-home{display:none}
  body.home .page-hero .page-hero__dates{display:none}   /* replaced by the "Updated ... for San Diego, CA" line */
  body.home .page-hero .home-updated{order:1;display:block;margin:0;
    font-family:'Quicksand',sans-serif;font-weight:700;font-size:13.5px;letter-spacing:.01em;color:#fff}
  body.home .page-hero .homestats{display:block;order:2;margin:3px 0 0;font-size:12.5px;line-height:1.25;
    color:rgba(255,255,255,.86)}
  body.home .homestats .hs-more{display:none}          /* keep only "N exhibitions & events on view" */
  body.home .tag-blue{display:none}                    /* remove the section banners (Opening/Receptions/...) */
  body.home .week-col__head h2{display:none}           /* and their subtitles */
  body.home #home-featured .grid{grid-template-columns:1fr}   /* Featured: one tile per row */
  /* Featured moves to the TOP (right under the masthead), above the weekly columns. The content
     wrap becomes a flex column so order works; only these three get a negative order, everything
     else keeps DOM order after them. */
  body.home > .wrap{display:flex;flex-direction:column}
  body.home > .wrap > .page-hero{order:-3}
  body.home > .wrap > #concierge{order:-2}
  body.home > .wrap > #home-featured{order:-1}
}
/* "Updated" line is a mobile-only masthead element; desktop keeps the full stats count. */
.home-updated{display:none}

/* Map mode picker (v114): Saved shows / All shows / Receptions today */
.mapmodes{display:flex;justify-content:center;gap:8px;margin:14px 0 10px;flex-wrap:wrap}
.mapmode{font-family:'Quicksand',sans-serif;font-weight:700;font-size:13px;letter-spacing:.03em;
  padding:7px 14px;border-radius:999px;border:1.5px solid #0070c0;background:#fff;color:#0070c0;cursor:pointer}
.mapmode.is-on{background:#0070c0;color:#fff}
.mapmodes__note{font-family:'Quicksand',sans-serif;font-weight:600;font-size:13.5px;color:#6b6258;
  text-align:center;margin:0 0 8px}
@media(max-width:620px){ .mapmode{font-size:12.5px;padding:6px 12px} }

/* Collapsible map filter (v139): a floating upper-right menu on MOBILE (chip shows the current
   mode, tap to pick Saved/All/Receptions); on DESKTOP the trigger is hidden and the three pills
   stay inline, exactly like before. */
.mapfilter{display:flex;justify-content:center;margin:14px 0 10px}
.mapfilter__btn{display:none}
.mapfilter__menu{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}
.mapfilter__menu[hidden]{display:flex}          /* desktop: ignore the hidden attr, show inline */
@media(max-width:620px){
  body.mappage .mapfilter{position:fixed;top:calc(12px + env(safe-area-inset-top));right:12px;left:auto;
    margin:0;z-index:1140;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
  body.mappage .mapfilter__btn{display:inline-flex;align-items:center;gap:8px;
    font-family:'Quicksand',sans-serif;font-weight:700;font-size:13.5px;letter-spacing:.02em;color:#fff;
    background:rgba(0,112,192,.94);border:1px solid rgba(255,255,255,.5);border-radius:999px;
    padding:9px 16px;box-shadow:0 4px 14px rgba(43,38,31,.34);cursor:pointer;
    backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
  body.mappage .mapfilter__ic{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;
    stroke-linejoin:round;stroke-linecap:round}
  body.mappage .mapfilter__caret{width:0;height:0;border-left:4px solid transparent;
    border-right:4px solid transparent;border-top:5px solid currentColor;transition:transform .15s}
  body.mappage .mapfilter.is-open .mapfilter__caret{transform:rotate(180deg)}
  body.mappage .mapfilter__menu{display:flex;flex-direction:column;align-items:stretch;gap:6px;
    background:rgba(250,248,243,.98);border:1px solid var(--rule-soft);border-radius:14px;padding:8px;
    box-shadow:0 10px 26px rgba(43,38,31,.30);min-width:160px}
  body.mappage .mapfilter__menu[hidden]{display:none}
  body.mappage .mapfilter .mapmode{width:100%;text-align:center;border:1px solid transparent;
    border-radius:9px;background:transparent;color:#3f3931;padding:10px 12px;font-size:14px;letter-spacing:0}
  body.mappage .mapfilter .mapmode.is-on{background:#0070c0;color:#fff;border-color:#0070c0}
}

/* Map tab jump target (v115): heading clears the top when arriving via #map-h */
#map-h{scroll-margin-top:14px}

/* Dedicated map page (v116): the bottom-nav Map tab's destination. On mobile the
   homepage's plotted section hides -- the map lives at /map. */
@media(max-width:620px){
  body.home section[aria-labelledby="map-h"]{display:none}
  body.mappage #homemap{height:calc(100vh - 300px);min-height:420px}
}
body.mappage #homemap{height:560px}
body.mappage main{padding-bottom:8px}

/* Full-screen mobile map (v117, owner ask): edge-to-edge map, only overlaying
   menus -- floating mode pills on top, bottom nav over the map, walkbar floats
   when in use. Desktop map.html keeps the full page chrome. */
@media(max-width:620px){
  body.mappage .site-header, body.mappage .site-footer, body.mappage .shead,
  body.mappage .maplegend, body.mappage .walkhint, body.mappage .totop{display:none}
  body.mappage{padding-bottom:0}
  body.mappage main{padding:0;margin:0;max-width:none}
  body.mappage #homemap{position:fixed;inset:0;height:100dvh;min-height:0;z-index:1;border-radius:0;
    margin:0;border:none}   /* margin:0 kills the 6px white gap the base rule's margin-top left on top */
  body.mappage .mapmodes{position:fixed;top:calc(10px + env(safe-area-inset-top));left:0;right:0;z-index:1100;margin:0;pointer-events:none}
  body.mappage .mapmode{pointer-events:auto;box-shadow:0 3px 12px rgba(43,38,31,.28)}
  body.mappage .mapmodes__note{position:fixed;top:calc(58px + env(safe-area-inset-top));left:16px;right:16px;z-index:1100;
    background:rgba(250,248,243,.95);border-radius:10px;padding:8px 10px;box-shadow:0 3px 12px rgba(43,38,31,.18)}
  body.mappage #walkbar{position:fixed;left:12px;right:12px;bottom:calc(86px + env(safe-area-inset-bottom));z-index:1100;
    background:rgba(250,248,243,.96);border-radius:12px;padding:10px 12px;box-shadow:0 4px 16px rgba(43,38,31,.25)}
  body.mappage .leaflet-top{top:calc(52px + env(safe-area-inset-top))}
  /* OSM credit tucked to the very bottom, UNDER the floating menu (Leaflet flag/prefix removed
     in main.js). z-index below the nav (1200) so the menu always sits on top of it. */
  body.mappage .leaflet-bottom{bottom:calc(1px + env(safe-area-inset-bottom));z-index:1000}
  body.mappage .leaflet-control-attribution{font-size:9px;line-height:1.5;color:#6b6258;
    background:rgba(250,248,243,.55);padding:0 6px;border-radius:6px 6px 0 0;box-shadow:none}
}

/* Lifecycle pin legend (v121, owner palette) */
.mlg{display:flex;flex-wrap:wrap;justify-content:center;gap:5px 14px;margin:8px 0 10px}
.mlg__i{font-family:'Quicksand',sans-serif;font-weight:600;font-size:12.5px;color:#6b6258;
  display:inline-flex;align-items:center;gap:6px}
.mlg__i i{width:10px;height:10px;border-radius:50%;border:1.5px solid #fff;
  box-shadow:0 0 0 1px rgba(43,38,31,.12);display:inline-block}
/* Collapsible "Pin key" (v134): the toggle chip appears ONLY on the mobile map overlay so the
   legend no longer blankets the top of the map. On desktop the toggle is hidden and the legend
   stays inline (the hidden attr the markup carries is ignored). */
.mlg-toggle{display:none}
.mlg[hidden]{display:flex}
.mlg-toggle__dots{display:inline-flex;gap:3px}
.mlg-toggle__dots i{width:9px;height:9px;border-radius:50%;border:1.5px solid #fff;
  box-shadow:0 0 0 1px rgba(43,38,31,.12);display:inline-block}

/* Map reconciliation line (v123): shows-vs-venues, per mode */
.mapcount{font-family:'Quicksand',sans-serif;font-weight:700;font-size:13.5px;color:#0070c0;
  text-align:center;margin:2px 0 6px}
@media(max-width:620px){
  body.mappage .mapcount{display:none}   /* owner: no stats line at the top of the mobile map */
  /* Pin key -> a compact tap-to-open chip pinned top-right (below the filters + count row). */
  body.mappage .mlg-wrap{position:fixed;top:calc(12px + env(safe-area-inset-top));left:10px;right:auto;
    z-index:1120;display:flex;flex-direction:column;align-items:flex-start;gap:7px}
  body.mappage .mlg-toggle{display:inline-flex;align-items:center;gap:7px;
    font-family:'Quicksand',sans-serif;font-weight:700;font-size:12px;letter-spacing:.02em;color:#3f3931;
    background:rgba(250,248,243,.95);border:1px solid var(--rule-soft);border-radius:999px;
    padding:6px 12px;box-shadow:0 3px 12px rgba(43,38,31,.22);cursor:pointer}
  body.mappage .mlg-toggle.is-open{background:#0070c0;color:#fff;border-color:#0070c0}
  body.mappage .mlg-toggle.is-open .mlg-toggle__dots{display:none}
  body.mappage .mlg{position:static;flex-direction:column;align-items:flex-start;width:auto;
    max-width:230px;gap:9px;background:rgba(250,248,243,.98);border:1px solid var(--rule-soft);
    border-radius:12px;padding:12px 14px;box-shadow:0 6px 22px rgba(43,38,31,.26);margin:0}
  body.mappage .mlg[hidden]{display:none}
  body.mappage .mlg__i{font-size:12.5px}
  /* Empty-state note ("No saved shows yet ...") shows only when NO pins match, so the map behind
     it is blank -- center it like an empty state instead of a top banner, which also stops it
     colliding with the Pin key chip that lives top-right. */
  body.mappage .mapmodes__note{top:50%;left:50%;right:auto;transform:translate(-50%,-50%);
    max-width:min(280px,84vw);text-align:center;z-index:1130}
  body.mappage .leaflet-top{top:calc(90px + env(safe-area-inset-top))}
}

/* ── Homepage three-column week + on-view (owner redesign, Jul 8) ─────────── */
.week-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin:64px 0 8px;align-items:start}
.week-col__head{text-align:center;margin-bottom:20px}
.week-col__head .tag-blue{margin-bottom:12px}
.week-col__head h2{font-weight:600;font-size:clamp(20px,2.2vw,26px);line-height:1.12;color:var(--ink-strong)}
.week-col__cards{display:flex;flex-direction:column;gap:22px}
.week-col__empty{opacity:.5;font-style:italic;text-align:center;padding:22px 12px;font-family:'Lora',serif;font-size:15px;border:1px dashed var(--rule-soft)}
@media(max-width:900px){.week-cols{grid-template-columns:1fr;gap:40px;margin-top:44px}}

/* ── Badge (kick) colours by category (owner, Jul 8) ─────────────────────────
   reception + talks -> red, opening -> green, featured -> footer blue.
   On View (.kick--exhibition) is deliberately left unchanged. Later source order
   overrides the earlier var-based rules at equal specificity. */
.kick--opening{background:#16a34a}
.kick--reception{background:#dc2626}
.kick--talk{background:#dc2626}
.kick--featured{background:var(--blue)}
