@import url("/_releases/05bbbc56b6d00a12cf07/vifi-map-fullscreen.css?v=05bbbc56b6d00a12cf07");
@import url("/_releases/05bbbc56b6d00a12cf07/vifi-map-density.css?v=05bbbc56b6d00a12cf07");
:root {
  font-family: var(--vifi-font-family);
  color: var(--vifi-text);
  background: var(--vifi-canvas);
}
* {
  box-sizing: border-box;
}
body {
  margin: 0;
}
button,
input,
select {
  font: inherit;
  color: inherit;
}
button,
a,
input,
select {
  touch-action: manipulation;
}
button {
  cursor: pointer;
  background: transparent;
  border: 1px solid var(--vifi-tint-control-line);
  border-radius: var(--vifi-radius-md);
  padding: var(--vifi-space-sm) var(--vifi-space-md);
  min-height: 44px;
}
button:disabled {
  opacity: 0.5;
  cursor: default;
}
a {
  color: inherit;
  text-underline-offset: 4px;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--vifi-focus);
  outline-offset: 4px;
}
.skip {
  position: fixed;
  top: -100px;
  background: var(--vifi-tint-skip-link);
  padding: var(--vifi-space-md);
  z-index: var(--vifi-z-skip-link);
}
.skip:focus {
  top: 8px;
}
.header {
  display: flex;
  align-items: center;
  gap: var(--vifi-space-xxl);
  padding: var(--vifi-space-sm) var(--vifi-space-xl);
  border-bottom: 1px solid var(--vifi-divider);
  min-height: 76px;
}
.brand {
  display: flex;
  align-items: center;
  flex: none;
}
.brand img {
  display: block;
  width: 94px;
  height: 36px;
}
.primary-nav {
  display: flex;
  gap: var(--vifi-space-xl);
  flex: 1;
}
.primary-nav button {
  display: flex;
  align-items: center;
  gap: var(--vifi-space-xs);
  border: 0;
  border-radius: 0;
  border-bottom: 2px solid transparent;
  color: var(--vifi-text-muted);
  padding: var(--vifi-space-xs) 0;
}
.primary-nav button[aria-current="page"] {
  border-bottom-color: var(--vifi-text);
  color: var(--vifi-text);
}
.primary-nav svg {
  display: none;
}
.icon-button {
  border: 0;
  display: flex;
  align-items: center;
  gap: var(--vifi-space-xs);
  padding: var(--vifi-space-xs);
}
.icon-button svg {
  width: 22px;
  height: 22px;
}
.account svg {
  display: none;
}
main {
  max-width: 1080px;
  margin: auto;
  padding: var(--vifi-space-lg) var(--vifi-space-xxxl) calc(var(--vifi-space-xxxl) + var(--vifi-space-xxl));
  min-height: 75vh;
}
main.has-selection {
  max-width: 1480px;
}
h1 {
  font-size: var(--vifi-font-size-display);
  letter-spacing: -1px;
  line-height: 1.2;
  margin: 0 0 var(--vifi-space-md);
}
h2 {
  line-height: 1.2;
}
.polish-search {
  position: relative;
  margin-bottom: var(--vifi-space-sm);
}
.polish-search input {
  width: 100%;
  height: 46px;
  padding: var(--vifi-space-sm) var(--vifi-space-md) var(--vifi-space-sm) var(--vifi-space-xxxl);
  border: 1px solid var(--vifi-tint-control-line);
  border-radius: var(--vifi-radius-md);
  background: var(--vifi-surface-raised);
  font-size: var(--vifi-font-size-label);
}
.polish-search svg {
  position: absolute;
  left: 14px;
  top: 14px;
  width: 18px;
  height: 18px;
  color: var(--vifi-text-muted);
}
.near-entry {
  display: flex;
  gap: var(--vifi-space-md);
  border-bottom: 1px solid var(--vifi-divider);
  margin-bottom: var(--vifi-space-xs);
}
.near-entry button {
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  padding: var(--vifi-space-xs) 0;
  color: var(--vifi-text-muted);
  font-size: var(--vifi-font-size-label);
}
.near-entry .view-control {
  color: var(--vifi-text-muted);
}
.near-entry .view-control:first-of-type {
  margin-left: auto;
}
.near-entry [data-view="map"] {
  margin-left: 0;
}
.polish-filters {
  margin-bottom: var(--vifi-space-sm);
}
.polish-filters > summary {
  display: flex;
  gap: var(--vifi-space-xs);
  align-items: center;
  min-height: 44px;
  padding: var(--vifi-space-xxs) 0;
  cursor: pointer;
  list-style: none;
}
.polish-filters > summary::-webkit-details-marker {
  display: none;
}
.polish-filters > summary span {
  font-size: var(--vifi-font-size-caption);
  border: 1px solid var(--vifi-tint-control-line);
  border-radius: var(--vifi-radius-pill);
  padding: var(--vifi-space-xxs) var(--vifi-space-xs);
  color: var(--vifi-text-secondary);
}
.polish-filters[open] {
  border-bottom: 1px solid var(--vifi-divider);
  padding-bottom: var(--vifi-space-sm);
}
.real-filter-inputs {
  display: flex;
  align-items: end;
  gap: var(--vifi-space-sm);
  flex-wrap: wrap;
  padding: var(--vifi-space-sm) 0;
}
.real-filter-inputs label {
  display: grid;
  gap: var(--vifi-space-xs);
  font-size: var(--vifi-font-size-caption);
}
.real-filter-inputs select,
.real-filter-inputs input {
  min-height: 44px;
  min-width: 130px;
  background: var(--vifi-surface-raised);
  border: 1px solid var(--vifi-tint-control-line);
  border-radius: var(--vifi-radius-md);
  padding: var(--vifi-space-xs);
}
.catalog-note span {
  display: block;
}
.catalog-note,
.hint {
  color: var(--vifi-text-muted);
  font-size: var(--vifi-font-size-caption);
  line-height: 1.6;
  margin: var(--vifi-space-sm) 0;
}
.catalog-grid {
  display: block;
}
.catalog-grid.has-detail {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 420px;
  gap: var(--vifi-space-xxl);
}
.results {
  min-width: 0;
  border-top: 1px solid var(--vifi-divider);
}
.time-band {
  position: sticky;
  top: 0;
  z-index: var(--vifi-z-raised);
  display: flex;
  align-items: baseline;
  gap: var(--vifi-space-sm);
  background: var(--vifi-canvas);
  border-bottom: 1px solid var(--vifi-divider);
  margin: 0;
  padding: var(--vifi-space-md) 0 var(--vifi-space-sm);
  font-size: var(--vifi-font-size-heading);
  font-weight: var(--vifi-font-weight-bold);
  letter-spacing: -0.5px;
}
.time-band span {
  font-size: var(--vifi-font-size-caption);
  font-weight: var(--vifi-font-weight-regular);
  letter-spacing: 0;
  color: var(--vifi-text-muted);
}
.timeline-row {
  display: grid;
  grid-template-columns: 1fr auto;
  column-gap: var(--vifi-space-lg);
  row-gap: var(--vifi-space-xs);
  padding: var(--vifi-space-md) 0;
  border-bottom: 1px solid var(--vifi-divider);
}
.timeline-open {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: var(--vifi-space-lg);
  text-align: left;
  width: 100%;
  padding: 0;
  border: 0;
  align-items: center;
}
.thumb {
  width: 96px;
  height: 128px;
  object-fit: cover;
  border-radius: var(--vifi-radius-sm);
}
.media-fallback {
  display: grid;
  place-items: center;
  background: var(--vifi-tint-media-fallback);
  color: var(--vifi-tint-media-fallback-text);
  font-size: var(--vifi-font-size-display);
  overflow-wrap: anywhere;
}
.timeline-text {
  min-width: 0;
}
.timeline-text h2 {
  font-size: var(--vifi-font-size-heading);
  letter-spacing: -0.6px;
  line-height: 1.14;
  margin: var(--vifi-space-xxs) 0 var(--vifi-space-sm);
  overflow-wrap: anywhere;
}
.timeline-time {
  font-size: var(--vifi-font-size-label);
  font-weight: var(--vifi-font-weight-semibold);
  color: var(--vifi-text-secondary);
}
.event-state {
  display: inline-block;
  font-size: var(--vifi-font-size-caption);
  padding: var(--vifi-space-xxs) var(--vifi-space-xs);
  border: 1px solid var(--vifi-tint-control-line);
  border-radius: var(--vifi-radius-sm);
  color: var(--vifi-text-secondary);
}
.timeline-context {
  grid-column: 1;
  margin-left: calc(var(--vifi-space-xxxl) * 2 + var(--vifi-space-lg));
  display: flex;
  gap: var(--vifi-space-xs);
  flex-wrap: wrap;
  align-items: center;
}
.timeline-context button {
  text-decoration: underline;
  text-underline-offset: 4px;
  border: 0;
  border-radius: 0;
  padding: var(--vifi-space-xxs) 0;
  min-height: 34px;
  color: var(--vifi-text-secondary);
  font-size: var(--vifi-font-size-caption);
  text-align: left;
}
.timeline-context span {
  font-size: var(--vifi-font-size-caption);
  color: var(--vifi-text-muted);
}
.timeline-follow-holder {
  grid-column: 2;
  grid-row: 1 / 3;
  align-self: center;
}
.timeline-follow {
  border: 1px solid var(--vifi-tint-pink-line);
  color: var(--vifi-focus);
  border-radius: var(--vifi-radius-pill);
  font-size: var(--vifi-font-size-caption);
  min-height: 40px;
  padding: var(--vifi-space-xs) var(--vifi-space-sm);
}
.detail {
  border-left: 1px solid var(--vifi-divider);
  padding-left: var(--vifi-space-xl);
  align-self: start;
  position: sticky;
  top: 16px;
}
.detail > .back {
  border: 0;
  color: var(--vifi-text-muted);
  padding: var(--vifi-space-xxs) 0;
  font-size: var(--vifi-font-size-caption);
}
.detail-body {
  display: contents;
}
.detail-body h2 {
  font-size: var(--vifi-font-size-hero);
  letter-spacing: -1.2px;
  line-height: 1.03;
  margin: var(--vifi-space-xs) 0 var(--vifi-space-md);
  overflow-wrap: anywhere;
}
.detail .hero {
  display: block;
  width: 100%;
  object-fit: contain;
  max-height: 600px;
  background: var(--vifi-surface);
}
.detail .media-fallback.hero {
  min-height: 220px;
}
.detail .eyebrow {
  font-size: var(--vifi-font-size-caption);
  color: var(--vifi-text-muted);
  margin-top: var(--vifi-space-md);
}
.detail p {
  font-size: var(--vifi-font-size-label);
  line-height: 1.7;
}
.event-time {
  font-size: var(--vifi-font-size-body);
  font-weight: var(--vifi-font-weight-semibold);
}
.text-link,
.performer {
  display: block;
  border: 0;
  border-bottom: 1px solid var(--vifi-divider);
  border-radius: 0;
  padding: var(--vifi-space-sm) 0;
  text-align: left;
  width: 100%;
}
.detail-body > a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  color: var(--vifi-focus);
  margin-right: var(--vifi-space-sm);
}
.detail-body > .timeline-follow {
  width: 100%;
  margin: var(--vifi-space-md) 0;
  border-radius: var(--vifi-radius-md);
  background: var(--vifi-pink);
  border-color: var(--vifi-pink);
  color: var(--vifi-action-label);
  font-size: var(--vifi-font-size-body);
  min-height: 46px;
}
.provenance {
  font-size: var(--vifi-font-size-caption) !important;
  line-height: 1.7;
  color: var(--vifi-text-muted);
}
.empty {
  padding: var(--vifi-space-xxl) 0;
  text-align: center;
  color: var(--vifi-text-muted);
}
.empty h2 {
  font-size: var(--vifi-font-size-title);
}
.empty p {
  font-size: var(--vifi-font-size-label);
}
.load-more {
  width: 100%;
  margin: var(--vifi-space-md) 0;
}
.pink {
  background: var(--vifi-pink);
  border-color: var(--vifi-pink);
  color: var(--vifi-action-label);
}
.unavailable {
  max-width: 580px;
  margin: calc(var(--vifi-space-xxxl) + var(--vifi-space-xl)) auto;
  text-align: center;
}
.unavailable p {
  line-height: 1.8;
  color: var(--vifi-text-muted);
}
footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--vifi-space-xl);
  border-top: 1px solid var(--vifi-divider);
  padding: var(--vifi-space-lg);
  font-size: var(--vifi-font-size-caption);
}
footer a {
  min-height: 44px;
  display: flex;
  align-items: center;
}
.info-dialog {
  max-width: min(440px, calc(100vw - 32px));
  border: 1px solid var(--vifi-tint-control-line);
  border-radius: var(--vifi-radius-xl);
  padding: var(--vifi-space-xl);
  background: var(--vifi-surface);
  color: var(--vifi-text);
}
.info-dialog::backdrop {
  background: color-mix(in srgb,var(--vifi-tint-backdrop) 74.12%,transparent);
}
.info-dialog p {
  color: var(--vifi-text-secondary);
  line-height: 1.7;
}
.real-map-canvas {
  height: 280px;
  position: relative;
  background: repeating-linear-gradient(
    90deg,
    var(--vifi-tint-map-grid) 0,
    var(--vifi-tint-map-grid) 49px,
    var(--vifi-tint-map-grid-line) 50px
  );
  border: 1px solid var(--vifi-divider);
}
.real-map-pin {
  position: absolute;
  transform: translate(-50%, -50%);
  padding: var(--vifi-space-xs);
  max-width: 110px;
  font-size: var(--vifi-font-size-caption);
  overflow-wrap: anywhere;
  background: var(--vifi-tint-map-pin);
  border-color: var(--vifi-pink);
}
@media (max-width:767px) {
  .header {
    padding: var(--vifi-space-sm) var(--vifi-space-md);
    min-height: 58px;
    gap: var(--vifi-space-sm);
  }
  .brand img {
    width: 82px;
    height: 30px;
  }
  .header > [data-messages] {
    margin-left: auto;
  }
  .account svg {
    display: block;
  }
  .account span {
    display: none;
  }
  .primary-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: var(--vifi-z-sticky);
    display: flex;
    justify-content: space-around;
    gap: 0;
    background: var(--vifi-canvas);
    border-top: 1px solid var(--vifi-divider);
    padding: var(--vifi-space-xs) var(--vifi-space-xs) max(var(--vifi-space-xs), env(safe-area-inset-bottom));
  }
  .primary-nav button {
    flex: 1;
    flex-direction: column;
    gap: var(--vifi-space-xxs);
    font-size: var(--vifi-font-size-caption);
    min-height: 48px;
    border-bottom: 0;
  }
  .primary-nav svg {
    display: block;
    width: 23px;
    height: 23px;
  }
  main,
  main.has-selection {
    padding: var(--vifi-space-lg) var(--vifi-space-md) var(--vifi-space-xxl);
  }
  h1 {
    font-size: var(--vifi-font-size-heading);
    margin-bottom: var(--vifi-space-md);
  }
  .catalog-grid.has-detail {
    display: block;
  }
  .has-detail .results {
    display: none;
  }
  .detail {
    position: static;
    border: 0;
    padding: 0;
  }
  .has-selection .browse > h1,
  .has-selection .polish-search,
  .has-selection .near-entry,
  .has-selection .polish-filters,
  .has-selection .catalog-note {
    display: none;
  }
  .near-entry {
    justify-content: space-between;
  }
  .timeline-row {
    grid-template-columns: 1fr;
    gap: var(--vifi-space-xs);
    padding: var(--vifi-space-md) 0;
  }
  .timeline-open {
    gap: var(--vifi-space-md);
  }
  .timeline-text h2 {
    font-size: var(--vifi-font-size-heading);
  }
  .timeline-context {
    margin-left: calc(var(--vifi-space-xxxl) * 2 + var(--vifi-space-md));
    padding-right: calc(var(--vifi-space-xxxl) + var(--vifi-space-xl) + var(--vifi-space-xxs));
  }
  .timeline-context button {
    font-size: var(--vifi-font-size-caption);
  }
  .timeline-follow-holder {
    grid-column: 1;
    grid-row: auto;
    justify-self: end;
    margin-top: calc(-1 * var(--vifi-space-xxl));
    position: relative;
  }
  .timeline-follow {
    padding: var(--vifi-space-xs) var(--vifi-space-sm);
    min-height: 36px;
  }
  .time-band {
    font-size: var(--vifi-font-size-heading);
    padding: var(--vifi-space-sm) 0 var(--vifi-space-xs);
  }
  .time-band span {
    font-size: var(--vifi-font-size-caption);
  }
  .real-filter-inputs {
    gap: var(--vifi-space-xs);
  }
  .real-filter-inputs label {
    flex: 1;
    min-width: 110px;
  }
  .real-filter-inputs select,
  .real-filter-inputs input {
    min-width: 0;
    width: 100%;
  }
  .polish-filters {
    margin-bottom: var(--vifi-space-xs);
  }
  .detail-body h2 {
    font-size: var(--vifi-font-size-hero);
  }
  footer {
    padding-bottom: calc(var(--vifi-space-xxxl) + var(--vifi-space-xxl) + var(--vifi-space-sm));
  }
}
@media (prefers-reduced-motion: reduce) {
  * {
    scroll-behavior: auto !important;
    animation: none !important;
    transition: none !important;
  }
}

/* Approved assets and header labels retained from the frozen prototype. */
:root{font-family:var(--vifi-font-family)}
.ui-icon{width:22px;height:22px;flex:none;filter:invert(1)}
.primary-nav .ui-icon{display:none}
.primary-nav button{font-size:var(--vifi-font-size-caption)}
.polish-search .ui-icon{width:18px;height:18px;opacity:.65}
.icon-button{font-size:var(--vifi-font-size-caption)}
.account{border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-pill);background:var(--vifi-surface-raised);padding:var(--vifi-space-sm) var(--vifi-space-md)}
.mobile-account-label{display:none}
@media(max-width:767px){.primary-nav .ui-icon{display:block;width:20px;height:20px}.primary-nav button{font-size: var(--vifi-font-size-caption)}.header .account{order:2;margin-left:auto;border:0;background:transparent;padding:var(--vifi-space-xs);font-size:var(--vifi-font-size-caption)}.header>[data-messages]{order:3;margin-left:0}.header>[data-messages] span,.desktop-account-label{display:none}.account .mobile-account-label{display:inline}}

.polish-search .ui-icon{position:absolute;left:14px;top:14px}
.browse{max-width:1000px}
main.has-selection .browse{max-width:none}
@media(min-width:768px){main{padding-left:var(--vifi-space-xxl);padding-right:var(--vifi-space-xxl)}h1{font-size:var(--vifi-font-size-heading)}}

h1{font-weight:var(--vifi-font-weight-bold)}
@media(min-width:768px){h1{font-size:var(--vifi-font-size-display)}}
@media(max-width:767px){h1{line-height:1.25}}

.real-map-group{background:var(--vifi-tint-map-group);min-width:68px;padding:var(--vifi-space-sm)}.real-map-cluster{border:1px solid var(--vifi-tint-map-cluster-line);padding:var(--vifi-space-sm);margin:var(--vifi-space-sm) 0}.real-map-cluster h2{font-size:var(--vifi-font-size-body);margin:0 0 var(--vifi-space-xs)}.real-map-cluster button{margin:var(--vifi-space-xxs)}

/* Entity selection and display selection have separate visual hierarchies. */
.near-entry{align-items:center;justify-content:space-between;gap:var(--vifi-space-sm)}
.entity-controls,.view-controls{display:flex;align-items:center;gap:var(--vifi-space-md)}
.view-controls{gap:var(--vifi-space-xxs);padding:var(--vifi-space-xxs);border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-md);background:var(--vifi-surface-raised)}
.near-entry .view-control{padding:var(--vifi-space-xs) var(--vifi-space-sm);min-height:36px;border:0;border-radius:var(--vifi-radius-sm);color:var(--vifi-text-muted);font-size:var(--vifi-font-size-caption)}
/* VIF-325: mode tabs are chips everywhere (vifi-chip.css owns the selected colour); the mobile map head keeps its own sizes. */
.near-entry .entity-controls{gap:var(--vifi-space-xxs)}
.near-entry .entity-controls button{padding:var(--vifi-space-xs) var(--vifi-space-md);border:0;border-radius:var(--vifi-radius-pill)}
.entity-logo{height:96px;object-fit:contain;background:var(--vifi-surface-raised);border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-md)}
@media(max-width:767px){.near-entry{gap:var(--vifi-space-xs)}.entity-controls{gap:var(--vifi-space-lg)}.view-controls{gap:0}.near-entry .view-control{padding:var(--vifi-space-xs) var(--vifi-space-xs)}}

.pagination{display:flex;align-items:center;justify-content:center;gap:var(--vifi-space-md);margin:var(--vifi-space-xl) 0;padding:var(--vifi-space-sm);border-top:1px solid var(--vifi-divider)}
.pagination button{min-height:44px;padding:var(--vifi-space-xs) var(--vifi-space-md);border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-md)}
.pagination button:disabled{opacity:.4;cursor:default}
.language-selector{max-width:100px;min-height:36px;margin-left:auto;background:var(--vifi-surface-raised);color:var(--vifi-text);border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-md);padding:var(--vifi-space-xxs)}
@media(max-width:767px){.language-selector{max-width:80px;font-size: var(--vifi-font-size-caption);margin-left:0}.header{gap:var(--vifi-space-xs)}.pagination{gap:var(--vifi-space-sm)}.timeline-time{white-space:normal}.event-state{white-space:normal}}

.detail .hero.entity-logo { height: auto; aspect-ratio: 1; object-fit: contain; }
.password-auth dialog { color: var(--vifi-text); background: var(--vifi-surface); border: 1px solid var(--vifi-tint-auth-dialog-line); border-radius: var(--vifi-radius-xl); max-width: min(420px, calc(100vw - 32px)); padding: var(--vifi-space-xl); }
.password-auth dialog::backdrop { background: color-mix(in srgb,var(--vifi-black) 66.67%,transparent); }
.password-auth form, .password-auth dialog > section { display: grid; gap: var(--vifi-space-md); }
.password-auth dialog > section[hidden], .password-auth form[hidden] { display: none; }
.password-auth dialog > section h2 { margin: 0; }
.password-auth dialog > section p { margin: 0; color: var(--vifi-text-muted); line-height: 1.6; }
.password-auth dialog button { min-height: 44px; }
.password-auth label { display: grid; gap: var(--vifi-space-xs); }
.password-auth input { width: 100%; min-height: 44px; color: var(--vifi-white); background: var(--vifi-tint-auth-input); border: 1px solid var(--vifi-tint-auth-input-line); padding: var(--vifi-space-sm); }
.header > button:last-child { min-height: 44px; }
.real-map-canvas { height: 430px; overflow: hidden; }
.vifi-map-status { padding: var(--vifi-space-sm); }

/* Public details keep the mounted discovery surface and map underneath. */
.detail-open { overflow: hidden; }
.detail-dialog {
  box-sizing: border-box;
  width: min(720px, calc(100vw - 48px));
  max-width: none;
  max-height: calc(100dvh - 64px);
  margin: auto;
  padding: var(--vifi-space-xl);
  border: 1px solid var(--vifi-divider);
  border-radius: var(--vifi-radius-xl);
  background: var(--vifi-tint-detail-sheet);
  color: inherit;
  overscroll-behavior: contain;
}
.detail-dialog::backdrop { background: color-mix(in srgb,var(--vifi-black) 65%,transparent); }
.detail-dialog .detail { position: static; border: 0; padding: 0; }
.detail-language-selector { min-height: 44px; margin-left: var(--vifi-space-sm); background: var(--vifi-surface-raised); color: var(--vifi-white); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-md); padding: var(--vifi-space-xxs); }
.detail-dialog .back { min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-sm); }
@media (max-width:767px) {
  .detail-dialog {
    width: 100%; height: 100dvh; max-height: 100dvh;
    margin: 0; border: 0; border-radius: 0;
    padding: var(--vifi-space-lg) var(--vifi-space-md) max(var(--vifi-space-xl), env(safe-area-inset-bottom));
  }
}

.detail-dialog .detail-venue .media-fallback.hero.entity-logo {
  width: 112px; max-width: 100%; height: 112px; min-height: 0; aspect-ratio: 1;
  display: flex; align-items: center; justify-content: center;
  font-size: var(--vifi-font-size-display); margin: var(--vifi-space-sm) 0 var(--vifi-space-lg);
}
/* Poster-first discovery. All art stays intact, with facts below. */
main{max-width:1320px;padding:var(--vifi-space-xxl) var(--vifi-space-xxxl) calc(var(--vifi-space-xxxl) + var(--vifi-space-xxl))}.browse>.eyebrow{color:var(--vifi-pink);letter-spacing:0;font-size: var(--vifi-font-size-caption);margin:0 0 var(--vifi-space-sm)}:lang(en) .browse>.eyebrow{letter-spacing:.08em}.browse>h1{font-size:var(--vifi-font-size-display);max-width:760px;letter-spacing:-.035em}@media (min-width:1024px){.browse>h1{font-size:var(--vifi-font-size-hero)}}.discovery-intro{color:var(--vifi-text-muted);margin:calc(-1 * var(--vifi-space-xxs)) 0 var(--vifi-space-xxl);line-height:1.65;max-width:700px}.polish-search input{height:52px;border-radius:var(--vifi-radius-lg)}
.discovery-shortcuts{display:flex;align-items:center;flex-wrap:wrap;gap:var(--vifi-space-xs);margin:var(--vifi-space-sm) 0 var(--vifi-space-xl)}.discovery-shortcuts select,.sound-controls select{min-height:44px;max-width:210px;background:var(--vifi-surface-raised);border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-md);padding:var(--vifi-space-xs) var(--vifi-space-sm)}.discovery-shortcuts button{border-radius:var(--vifi-radius-xl);padding:var(--vifi-space-xs) var(--vifi-space-md);font-size:var(--vifi-font-size-label);border-color:var(--vifi-divider)}.discovery-shortcuts .directory-toggle{margin-left:auto}.catalog-note{display:flex;justify-content:space-between;gap:var(--vifi-space-sm);flex-wrap:wrap;font-size:var(--vifi-font-size-caption);color:var(--vifi-text-muted);margin:var(--vifi-space-md) 0}
.poster-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--vifi-space-xxl) var(--vifi-space-lg)}.poster-grid .time-band{grid-column:1/-1;margin:var(--vifi-space-xs) 0 calc(-1 * var(--vifi-space-xs));padding:var(--vifi-space-md) 0 0;font-size:var(--vifi-font-size-title);border-bottom:0}.poster-grid .time-band span{color:var(--vifi-text-muted);font-size: var(--vifi-font-size-caption)}.poster-grid .timeline-row{padding:0;border:0;display:block;min-width:0;background:transparent}.poster-grid .timeline-open{display:block;width:100%;padding:0;border:0;border-radius:0;text-decoration:none;background:transparent;text-align:left}.poster-grid .event-poster{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:contain;border-radius:var(--vifi-radius-lg);background:var(--vifi-tint-poster-backdrop);border:1px solid color-mix(in srgb,var(--vifi-white) 8.24%,transparent)}.poster-grid .media-fallback{display:grid;place-items:center;font-size:var(--vifi-font-size-display)}.poster-grid .timeline-text{padding:var(--vifi-space-sm) 0 0;min-width:0}.poster-grid h2{font-size:var(--vifi-font-size-body);line-height:1.4;margin:var(--vifi-space-xxs) 0;font-weight:var(--vifi-font-weight-semibold);overflow-wrap:anywhere}.poster-grid .timeline-time{color:var(--vifi-focus);font-size:var(--vifi-font-size-caption);font-weight:var(--vifi-font-weight-semibold);white-space:normal}.poster-grid .event-state{border:0;padding:0;font-size: var(--vifi-font-size-caption);line-height:1.5;color:var(--vifi-text-muted)}.poster-grid .timeline-context{margin:var(--vifi-space-xs) 0 0;padding:0;display:flex;gap:var(--vifi-space-xxs) var(--vifi-space-sm);flex-wrap:wrap}.poster-grid .timeline-context button{padding:var(--vifi-space-xxs) 0;min-height:32px;color:var(--vifi-text-muted);font-size:var(--vifi-font-size-caption)}.poster-grid .timeline-context span{color:var(--vifi-text-muted);font-size:var(--vifi-font-size-caption)}.poster-grid .timeline-open:hover .event-poster{border-color:var(--vifi-pink)}
.sound-controls{display:flex;gap:var(--vifi-space-sm);align-items:center;margin:var(--vifi-space-md) 0 var(--vifi-space-xxl);font-size:var(--vifi-font-size-label)}.discovery-module{margin:0 0 var(--vifi-space-xxxl)}.discovery-module h2{margin-bottom:var(--vifi-space-xs);font-size:var(--vifi-font-size-heading);letter-spacing:-.025em}.discovery-module>.hint{margin:0 0 var(--vifi-space-lg);max-width:750px;line-height:1.65}.artist-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--vifi-space-md)}.discovery-artist{min-width:0;padding:var(--vifi-space-md);border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-lg);background:var(--vifi-surface)}.artist-profile{display:flex;flex-direction:column;gap:var(--vifi-space-sm);text-decoration:none;font-size:var(--vifi-font-size-title);font-weight:var(--vifi-font-weight-bold);overflow-wrap:anywhere}.artist-image{width:72px;height:72px;object-fit:contain;border:1px solid var(--vifi-tint-control-line);border-radius:var(--vifi-radius-pill);background:var(--vifi-tint-media-fallback)}.media-fallback.artist-image{display:grid;place-items:center;color:var(--vifi-tint-media-fallback-artist-text);font-size:var(--vifi-font-size-heading)}.appearance-reason{font-size:var(--vifi-font-size-caption);line-height:1.65;margin-bottom:var(--vifi-space-xs)}.tag-context{color:var(--vifi-text-muted);font-size: var(--vifi-font-size-caption);line-height:1.65}.artist-actions{display:flex;gap:var(--vifi-space-sm);flex-wrap:wrap}.artist-actions a{min-height:44px;display:inline-flex;align-items:center;color:var(--vifi-focus);font-size:var(--vifi-font-size-caption)}.coverage-note{color:var(--vifi-text-muted);border-top:1px solid var(--vifi-divider);padding-top:var(--vifi-space-lg);font-size:var(--vifi-font-size-caption);line-height:1.65}.discovery-actions{display:flex;gap:var(--vifi-space-sm);flex-wrap:wrap}
.detail-dialog{width:min(1080px,calc(100vw - 48px));padding:var(--vifi-space-xxl)}.detail-body>h2{margin:var(--vifi-space-sm) 0 var(--vifi-space-xl);font-size:var(--vifi-font-size-heading);line-height:1.25;letter-spacing:-.025em}@media (min-width:1024px){.detail-body>h2{font-size:var(--vifi-font-size-hero)}}.event-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:var(--vifi-space-xxl);align-items:start}.poster-figure{margin:0;min-width:0}.poster-zoom{padding:0;width:100%;border:0;display:block;background:var(--vifi-tint-poster-backdrop);cursor:zoom-in}.detail .full-poster{width:100%;height:auto;max-height:none;object-fit:contain;border-radius:var(--vifi-radius-md);display:block}.zoom-label{width:100%;margin-top:var(--vifi-space-xs);color:var(--vifi-text-muted);border-color:var(--vifi-divider);font-size:var(--vifi-font-size-caption)}.event-information{min-width:0;line-height:1.65}.event-information .event-time{font-size:var(--vifi-font-size-title);margin:var(--vifi-space-xs) 0;line-height:1.45}.event-information h3{border-top:1px solid var(--vifi-divider);padding-top:var(--vifi-space-lg);margin-top:var(--vifi-space-xl)}.event-information .text-link{display:inline-block;min-height:44px;padding:var(--vifi-space-xs) 0;color:var(--vifi-focus)}.lineup-links{display:flex;gap:var(--vifi-space-xs) var(--vifi-space-sm);flex-wrap:wrap;align-items:baseline}.lineup-links .text-link{color:var(--vifi-text-secondary);font-size:var(--vifi-font-size-label);min-height:32px;display:inline-flex;align-items:center}.published-info{margin:var(--vifi-space-xl) 0;border-top:1px solid var(--vifi-divider);padding-top:var(--vifi-space-md)}.published-info summary{cursor:pointer;min-height:44px}.published-info p{white-space:pre-line;font-size:var(--vifi-font-size-label)}.event-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--vifi-space-md);margin:var(--vifi-space-lg) 0}.event-actions a{min-height:44px;display:inline-flex;align-items:center}.poster-missing{padding:var(--vifi-space-xxxl) var(--vifi-space-xl);min-height:240px;display:grid;place-items:center;background:var(--vifi-surface-raised);color:var(--vifi-text-muted)}
.poster-lightbox{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--vifi-tint-poster-backdrop);color:var(--vifi-white)}.poster-lightbox::backdrop{background:color-mix(in srgb,var(--vifi-black) 86.67%,transparent)}.poster-toolbar{padding:var(--vifi-space-sm) var(--vifi-space-lg);display:flex;align-items:center;gap:var(--vifi-space-sm);border-bottom:1px solid var(--vifi-divider)}.poster-toolbar h2{flex:1;font-size:var(--vifi-font-size-label);margin:0}.poster-toolbar button{font-size:var(--vifi-font-size-caption)}.poster-stage{height:calc(100dvh - 74px);overflow:auto;padding:var(--vifi-space-lg);text-align:center}.poster-stage .full-poster{display:block;width:auto;max-width:100%;height:auto;max-height:100%;margin:auto;object-fit:contain}.poster-stage.enlarged .full-poster{width:max(100%,1200px);max-width:none;max-height:none;margin:0}
.detail-venue .hero.entity-logo,.detail-dj .hero.entity-logo{width:112px;max-height:112px;height:auto;object-fit:contain;border-radius:var(--vifi-radius-lg)}.venue-atmosphere{padding:var(--vifi-space-md) var(--vifi-space-lg);background:var(--vifi-surface-raised);border-radius:var(--vifi-radius-lg);margin:var(--vifi-space-xxl) 0}.venue-atmosphere h3{margin-top:0}.venue-program-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--vifi-space-xl) var(--vifi-space-md);margin:var(--vifi-space-lg) 0 var(--vifi-space-xxl)}.program-poster-card{min-width:0}.program-poster-link{display:block;text-decoration:none}.program-poster-link h4{margin:var(--vifi-space-sm) 0 var(--vifi-space-xs);font-size:var(--vifi-font-size-label);line-height:1.5;overflow-wrap:anywhere}.gallery-poster{display:block;aspect-ratio:3/4;width:100%;height:auto;object-fit:contain;border-radius:var(--vifi-radius-md);background:var(--vifi-tint-poster-backdrop);border:1px solid var(--vifi-divider)}.media-fallback.gallery-poster{display:grid;place-items:center;font-size:var(--vifi-font-size-display)}.program-poster-card .provenance{font-size: var(--vifi-font-size-caption);line-height:1.6}.program-poster-card .lineup-links{gap:var(--vifi-space-xxs) var(--vifi-space-xs)}
@media(max-width:1023px){.poster-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.artist-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:767px){main{padding:var(--vifi-space-xl) var(--vifi-space-md) calc(var(--vifi-space-xxxl) * 2)}.browse>h1{font-size:var(--vifi-font-size-display)}.discovery-intro{font-size:var(--vifi-font-size-label);margin-bottom:var(--vifi-space-lg)}.poster-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--vifi-space-xl) var(--vifi-space-sm)}.poster-grid h2{font-size:var(--vifi-font-size-label)}.poster-grid .timeline-time,.poster-grid .event-state{font-size: var(--vifi-font-size-caption)}.poster-grid .timeline-context button{font-size: var(--vifi-font-size-caption);min-height:36px}.poster-grid .time-band{font-size:var(--vifi-font-size-body);padding-top:var(--vifi-space-xs)}.catalog-note{font-size: var(--vifi-font-size-caption)}.catalog-note span:last-child{max-width:220px}.discovery-shortcuts{gap:var(--vifi-space-xs)}.discovery-shortcuts button{padding:var(--vifi-space-xs) var(--vifi-space-sm);font-size:var(--vifi-font-size-caption)}.discovery-shortcuts .directory-toggle{margin-left:0}.artist-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--vifi-space-sm)}.discovery-artist{padding:var(--vifi-space-sm)}.artist-profile{font-size:var(--vifi-font-size-body)}.discovery-module h2{font-size:var(--vifi-font-size-heading)}.event-layout{grid-template-columns:minmax(0,1fr);gap:var(--vifi-space-xl)}.detail-dialog{width:100%;padding:var(--vifi-space-md) var(--vifi-space-md) max(var(--vifi-space-xl),env(safe-area-inset-bottom))}.detail-body>h2{font-size:var(--vifi-font-size-display)}.venue-program-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--vifi-space-lg) var(--vifi-space-sm)}.poster-toolbar{padding:var(--vifi-space-sm);gap:var(--vifi-space-xs)}.poster-toolbar h2{font-size:var(--vifi-font-size-caption)}.poster-toolbar button{padding:var(--vifi-space-xs)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

.browse{max-width:none}
.dj-discovery .catalog-note{display:none}.dj-discovery .sound-controls{margin:var(--vifi-space-xs) 0 var(--vifi-space-lg)}
.detail-toolbar{position:sticky;top:0;z-index:calc(var(--vifi-z-raised) + 1);display:flex;align-items:center;background:var(--vifi-tint-detail-sheet);padding:0 0 var(--vifi-space-sm);border-bottom:1px solid var(--vifi-divider);margin-bottom:var(--vifi-space-md)}
.detail-toolbar::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:30px;background:var(--vifi-tint-detail-sheet);pointer-events:none}

@media(max-width:767px){main{padding-top:var(--vifi-space-lg)}.browse>.eyebrow{display:none}.browse>h1{font-size:var(--vifi-font-size-heading);margin-bottom:var(--vifi-space-sm)}.discovery-intro{font-size:var(--vifi-font-size-caption);line-height:1.5;margin:0 0 var(--vifi-space-lg)}.discovery-shortcuts select{max-width:94px;font-size:var(--vifi-font-size-caption);padding:var(--vifi-space-xs) var(--vifi-space-xs)}.discovery-shortcuts button{padding:var(--vifi-space-xs) var(--vifi-space-sm)}.discovery-shortcuts{margin:var(--vifi-space-xs) 0 var(--vifi-space-md)}.catalog-note{margin:var(--vifi-space-sm) 0}.polish-search input{height:48px}}

/* 2026-10-23 web audit fixes (W-10, W-13, W-16, W-17, W-18, W-19, W-23, W-25, W-04, W-03). */
/* Monospace is reserved for numerals; status text keeps the body face. */
.num { font-family: var(--vifi-font-family); font-variant-numeric: tabular-nums; letter-spacing: 0; }
.event-summary { margin: calc(-1 * var(--vifi-space-xs)) 0 var(--vifi-space-lg); line-height: 1.6; }
.event-summary p { margin: 0 0 var(--vifi-space-xs); overflow-wrap: anywhere; }
.event-summary > a { display: inline-flex; align-items: center; min-height: 44px; color: var(--vifi-focus); }
.time-band .num { letter-spacing: -0.04em; }
/* Headings and main receive focus only programmatically (dialog open/close); they are not controls, so no ring. Controls keep the pink :focus-visible ring. */
[tabindex="-1"]:focus:not(:focus-visible), h2[tabindex="-1"]:focus, main[tabindex="-1"]:focus { outline: none; }
/* Header content aligns with the main container at every width. */
.header { padding-inline: max(var(--vifi-space-xxxl), calc((100% - 1320px) / 2 + var(--vifi-space-xxxl))); }
.brand { min-height: 44px; }
.timeline-open, .timeline-open:hover { text-decoration: none; }
.timeline-open h2 { text-decoration: none; }
.timeline-open:hover h2 { text-decoration: underline; text-underline-offset: 4px; }
.media-fallback { text-decoration: none; }
/* Weekly hours: compact two-column day/time table. */
.weekly-hours { display: grid; grid-template-columns: max-content 1fr; gap: var(--vifi-space-xs) var(--vifi-space-lg); margin: var(--vifi-space-xs) 0 var(--vifi-space-lg); font-size: var(--vifi-font-size-label); line-height: 1.5; }
.weekly-hours dt { color: var(--vifi-text-muted); }
.weekly-hours dd { margin: 0; }
.weekly-hours .weekly-hours-note { grid-column: 1 / -1; color: var(--vifi-text-muted); }
/* Square, centred placeholder for venues and DJs without an image. */
.detail-dialog .detail-venue .media-fallback.hero.entity-logo,
.detail-dialog .detail-dj .media-fallback.hero.entity-logo {
  width: 112px; max-width: 100%; height: 112px; min-height: 0; aspect-ratio: 1;
  display: flex; align-items: center; justify-content: center; text-align: center;
  font-size: var(--vifi-font-size-display); margin: var(--vifi-space-sm) 0 var(--vifi-space-lg); border-radius: var(--vifi-radius-lg);
}
/* Follow is secondary: an outline control that opens the app hand-off. */
.detail-follow { margin: var(--vifi-space-xxl) 0 var(--vifi-space-xs); padding-top: var(--vifi-space-lg); border-top: 1px solid var(--vifi-divider); display: flex; flex-wrap: wrap; align-items: center; gap: var(--vifi-space-xs) var(--vifi-space-md); }
.detail-follow .provenance { margin: 0; }
.timeline-follow { background: transparent; border: 1px solid var(--vifi-divider); color: var(--vifi-text-secondary); border-radius: var(--vifi-radius-pill); min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-md); font-size: var(--vifi-font-size-label); }
.timeline-follow:hover { border-color: var(--vifi-tint-pink-line); color: var(--vifi-focus); }
/* App hand-off screens and dialogs. */
.handoff { max-width: 560px; margin: calc(var(--vifi-space-xxxl) + var(--vifi-space-xs)) auto calc(var(--vifi-space-xxxl) + var(--vifi-space-xl)); }
/* Hangul and mixed-case labels are not tracked; only Latin uppercase labels get modest tracking.
   Korean text wraps between words, not inside them. */
:lang(ko) body { word-break: keep-all; overflow-wrap: break-word; }
.handoff .eyebrow { color: var(--vifi-pink); font-size: var(--vifi-font-size-caption); letter-spacing: 0; margin: 0 0 var(--vifi-space-sm); }
.handoff h1 { margin-bottom: var(--vifi-space-md); }
.handoff > p { color: var(--vifi-text-muted); line-height: 1.75; font-size: var(--vifi-font-size-body); }
.handoff ul { margin: var(--vifi-space-lg) 0 var(--vifi-space-xxl); padding: 0; list-style: none; display: grid; gap: var(--vifi-space-sm); }
.handoff li { padding: var(--vifi-space-sm) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); background: var(--vifi-surface); font-size: var(--vifi-font-size-label); }
.handoff-actions, .info-actions, .detail-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--vifi-space-sm); margin-top: var(--vifi-space-md); }
.app-store-link { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: var(--vifi-space-sm) var(--vifi-space-lg); border-radius: var(--vifi-radius-lg); background: var(--vifi-pink); color: var(--vifi-action-label); font-weight: var(--vifi-font-weight-bold); text-decoration: none; }
.app-store-link:hover { filter: brightness(1.06); }
button.secondary { border-color: var(--vifi-divider); color: var(--vifi-text); min-height: 48px; border-radius: var(--vifi-radius-lg); }
.detail-actions .pink { min-height: 48px; border-radius: var(--vifi-radius-lg); font-weight: var(--vifi-font-weight-bold); }
.pink { color: var(--vifi-action-label); }
/* Event search scope and server-side club/DJ matches. */
.search-scope { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--vifi-space-xs) var(--vifi-space-md); padding: var(--vifi-space-sm) 0; color: var(--vifi-text-muted); font-size: var(--vifi-font-size-label); }
.search-scope p { margin: 0; }
.search-matches { padding: var(--vifi-space-xxs) 0 var(--vifi-space-lg); border-bottom: 1px solid var(--vifi-divider); margin-bottom: var(--vifi-space-xs); }
.search-matches h2 { font-size: var(--vifi-font-size-body); margin: var(--vifi-space-xs) 0 var(--vifi-space-sm); }
.match-links { display: flex; flex-wrap: wrap; align-items: center; gap: var(--vifi-space-xs); margin-bottom: var(--vifi-space-xs); }
.match-label { min-width: 40px; color: var(--vifi-text-muted); font-size: var(--vifi-font-size-caption); }
.match-links .text-link { display: inline-flex; align-items: center; width: auto; min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-pill); text-decoration: none; font-size: var(--vifi-font-size-label); }
/* Tap targets: interactive controls are at least 44px on touch layouts. */
@media (max-width:767px) {
  .poster-grid .timeline-context button, .timeline-context button { min-height: 44px; min-width: 44px; display: inline-flex; align-items: center; }
  .lineup-links .text-link { min-height: 44px; }
  .near-entry .view-control { min-height: 44px; min-width: 44px; }
  .near-entry .entity-controls button { min-width: 44px; }
  .language-selector { min-height: 44px; }
  footer a { min-width: 44px; justify-content: center; }
  .primary-nav button { font-size: var(--vifi-font-size-caption); }
  .detail-body > a, .event-information a { min-height: 44px; display: inline-flex; align-items: center; }
}
@media (max-width:767px) {
  .header { padding-inline: var(--vifi-space-md); }
}

/* 2026-10-24 view-only web with map-first discovery. */
:root { --header-h: 76px; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
/* Header: logo · search · language · one app button. */
.header { gap: var(--vifi-space-lg); background: var(--vifi-canvas); }
.header-search { flex: 1; max-width: 560px; margin: 0; }
.header-search input { height: 44px; border-radius: var(--vifi-radius-pill); font-size: var(--vifi-font-size-label); }
.header-search .ui-icon { top: 13px; }
.header-search input { padding-right: calc(var(--vifi-space-xxxl) + var(--vifi-space-xxl) + var(--vifi-space-sm)); }
.header-search .search-submit { position: absolute; right: 0; top: 0; min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-md); border-radius: var(--vifi-radius-pill); font-size: var(--vifi-font-size-label); }
.search-toggle { display: none; }
.search-toggle .ui-icon { width: 20px; height: 20px; }
.app-cta { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: var(--vifi-space-sm) var(--vifi-space-lg); border-radius: var(--vifi-radius-pill); background: var(--vifi-pink); color: var(--vifi-action-label); font-size: var(--vifi-font-size-label); font-weight: var(--vifi-font-weight-bold); text-decoration: none; white-space: nowrap; flex: none; }
.app-cta:hover { filter: brightness(1.06); }
@media (min-width:768px) {
  .header { position: sticky; top: 0; z-index: var(--vifi-z-sticky); }
  .time-band { top: var(--header-h); }
  html.map-discovery .header { padding-inline: var(--vifi-space-xxxl); }
}
@media (max-width:767px) {
  :root { --header-h: 58px; }
  .header { flex-wrap: wrap; row-gap: var(--vifi-space-xs); min-height: 58px; padding: var(--vifi-space-xs) var(--vifi-space-md); gap: var(--vifi-space-xs); }
  .header-search { order: 5; flex: 1 0 100%; max-width: none; display: none; }
  .header.search-open .header-search { display: block; }
  .search-toggle { display: inline-flex; align-items: center; justify-content: center; margin-left: auto; min-width: 44px; min-height: 44px; padding: 0; border: 0; }
  .header .language-selector { margin-left: 0; }
  .app-cta { max-width: 110px; padding: var(--vifi-space-xs) var(--vifi-space-sm); font-size: var(--vifi-font-size-caption); white-space: normal; text-align: center; line-height: 1.2; }
}
/* App hand-off: one outline action, never a fake follow/save. */
.app-open { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-md); border: 1px solid var(--vifi-tint-pink-line); border-radius: var(--vifi-radius-pill); color: var(--vifi-focus); font-size: var(--vifi-font-size-label); text-decoration: none; white-space: nowrap; }
.app-open:hover { background: color-mix(in srgb,var(--vifi-pink) 8%,transparent); }
.detail-follow button { min-height: 44px; border-radius: var(--vifi-radius-pill); border-color: var(--vifi-divider); font-size: var(--vifi-font-size-label); }
/* Date chips (tonight · tomorrow · this weekend · pick a date). */
.date-chip { position: relative; display: inline-flex; align-items: center; min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-xl); font-size: var(--vifi-font-size-label); white-space: nowrap; cursor: pointer; }
.date-chip input { position: absolute; inset: -1px; width: calc(100% + 2px); height: calc(100% + 2px); min-height: 0; opacity: 0; cursor: pointer; }
.date-chips .chip { min-width: 44px; }
.date-chips > * { flex: none; }
.date-chip:focus-within { outline: 3px solid var(--vifi-focus); outline-offset: 2px; }
.date-chips button { white-space: nowrap; }
.polish-filters > summary span:first-child { color: var(--vifi-text); border-color: var(--vifi-divider); }
/* Counts, coverage and truth lines. */
.map-count { margin: var(--vifi-space-xs) 0 var(--vifi-space-xxs); }
.map-count p { margin: var(--vifi-space-xxs) 0; }
.map-count-main { font-size: var(--vifi-font-size-body); }
.map-coverage, .map-truth { font-size: var(--vifi-font-size-caption); line-height: 1.6; color: var(--vifi-text-muted); }
.map-coverage { display: flex; flex-wrap: wrap; align-items: center; gap: var(--vifi-space-xxs) var(--vifi-space-sm); }
.inline-action { min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-md); border-radius: var(--vifi-radius-pill); border-color: var(--vifi-divider); font-size: var(--vifi-font-size-label); color: var(--vifi-text); }
.bounds-toggle { display: inline-flex; align-items: center; gap: var(--vifi-space-xs); min-height: 44px; font-size: var(--vifi-font-size-label); color: var(--vifi-text-secondary); cursor: pointer; }
.bounds-toggle input { width: 18px; height: 18px; accent-color: var(--vifi-pink); }
.dj-map-hint { padding: var(--vifi-space-sm) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); background: var(--vifi-surface); color: var(--vifi-text-secondary); font-size: var(--vifi-font-size-label); line-height: 1.6; }
.dj-map-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--vifi-space-xs); padding: var(--vifi-space-sm) 0; }
.dj-map-head .text-link { width: auto; border: 0; font-size: var(--vifi-font-size-body); font-weight: var(--vifi-font-weight-bold); color: var(--vifi-focus); }
.artist-actions .artist-map { min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-sm); border-radius: var(--vifi-radius-pill); border-color: var(--vifi-divider); font-size: var(--vifi-font-size-caption); }
.empty-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--vifi-space-xs); margin: var(--vifi-space-sm) 0; }
.empty-actions button { border-radius: var(--vifi-radius-pill); border-color: var(--vifi-tint-pink-line); color: var(--vifi-focus); }
.timeline-row.is-past { opacity: .55; }
/* Location-first discovery: the nearby scope ("싱가포르 · 전체 구역"), the list-view locate chip, and the
   "no clubs nearby" notice with the nearest city. */
.nearby-scope { display: inline-flex; align-items: center; gap: var(--vifi-space-xs); min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-md); border: 1px solid var(--vifi-tint-pink-line); border-radius: var(--vifi-radius-xl); background: color-mix(in srgb,var(--vifi-pink) 11%,transparent); color: var(--vifi-focus); font-size: var(--vifi-font-size-label); white-space: nowrap; }
.nearby-scope .ui-icon, .locate-chip .ui-icon { width: 16px; height: 16px; }
.discovery-shortcuts .locate-chip { display: inline-flex; align-items: center; gap: var(--vifi-space-xs); min-height: 44px; }
.nearby-notice { display: flex; flex-wrap: wrap; align-items: center; gap: var(--vifi-space-xs) var(--vifi-space-sm); margin: var(--vifi-space-xxs) 0 var(--vifi-space-xs); padding: var(--vifi-space-sm) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); background: var(--vifi-surface); font-size: var(--vifi-font-size-label); line-height: 1.5; }
.nearby-notice p { flex: 1 1 200px; min-width: 0; margin: 0; overflow-wrap: anywhere; }
.empty-actions button.pink { border-color: var(--vifi-pink); color: var(--vifi-action-label); }
.timeline-row.is-highlighted, .timeline-row.is-selected { background: linear-gradient(var(--vifi-pink), var(--vifi-pink)) left / 3px 100% no-repeat, color-mix(in srgb,var(--vifi-pink) 8%,transparent); }
/* Map fallback: a short message, then the same results as a list. */
.map-fallback { margin: var(--vifi-space-sm) 0 var(--vifi-space-md); padding: var(--vifi-space-sm) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); background: var(--vifi-surface); }
.map-fallback > p { margin: 0 0 var(--vifi-space-xxs); font-size: var(--vifi-font-size-label); font-weight: var(--vifi-font-weight-semibold); }
.map-fallback .real-map-canvas { position: static; height: auto; overflow: visible; border: 0; background: none; }
.map-fallback .vifi-map-status { position: static; transform: none; margin: 0; padding: 0; border: 0; background: none; color: var(--vifi-text-muted); font-size: var(--vifi-font-size-caption); white-space: normal; }
.map-fallback .vifi-geographic-map { display: none; }

/* Split view (≥ 768): list left, sticky map right. Phones (< 768): full-height map with a bottom sheet. */
main.map-main { max-width: none; min-height: 0; padding: 0; }
.map-layout { display: grid; grid-template-columns: minmax(380px, 40%) minmax(0, 1fr); grid-template-rows: auto 1fr; }
.map-head { grid-column: 1; grid-row: 1; min-width: 0; padding: var(--vifi-space-xl) var(--vifi-space-xxl) 0 var(--vifi-space-xxxl); }
.map-head > .eyebrow { margin: 0 0 var(--vifi-space-xs); }
.map-head > h1 { font-size: var(--vifi-font-size-display); margin: 0 0 var(--vifi-space-md); }
@media (min-width:1024px){.map-head > h1{font-size:var(--vifi-font-size-hero)}}
.map-sheet { grid-column: 1; grid-row: 2; min-width: 0; padding: 0 var(--vifi-space-xxl) var(--vifi-space-xxxl) var(--vifi-space-xxxl); }
.map-pane { grid-column: 2; grid-row: 1 / span 2; position: sticky; top: var(--header-h); height: calc(100dvh - var(--header-h)); min-height: 460px; border-left: 1px solid var(--vifi-divider); }
.map-pane .real-map-canvas { position: absolute; inset: 0; height: auto; border: 0; background: var(--vifi-tint-map-canvas); overflow: hidden; }
/* Mapbox marks the container `.mapboxgl-map { position: relative }`; keep it filling the pane so it never has zero height. */
.real-map-canvas > .vifi-geographic-map { position: absolute; inset: 0; width: 100%; height: 100%; }
.vifi-map-status { position: absolute; z-index: calc(var(--vifi-z-raised) + 1); top: 16px; left: 50%; transform: translateX(-50%); margin: 0; padding: var(--vifi-space-xs) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-pill); background: var(--vifi-surface); font-size: var(--vifi-font-size-caption); white-space: nowrap; }
.vifi-map-status[hidden] { display: none; }
.sheet-handle, .sheet-carousel, .sheet-legal { display: none; }
.sheet-head .date-chips { margin: var(--vifi-space-xxs) 0 var(--vifi-space-xs); }
.sheet-head .polish-filters { margin-bottom: var(--vifi-space-xxs); }
.map-tools { position: absolute; z-index: calc(var(--vifi-z-raised) + 1); top: 84px; right: 10px; }
.map-locate { display: inline-flex; align-items: center; gap: var(--vifi-space-xs); min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-pill); background: var(--vifi-surface); font-size: var(--vifi-font-size-label); box-shadow: var(--vifi-shadow-overlay); }
.map-locate .ui-icon { width: 18px; height: 18px; }
.map-message { position: absolute; z-index: calc(var(--vifi-z-raised) + 1); left: 50%; bottom: 44px; transform: translateX(-50%); max-width: min(420px, calc(100% - 32px)); margin: 0; padding: var(--vifi-space-xs) var(--vifi-space-sm); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); background: var(--vifi-surface); font-size: var(--vifi-font-size-caption); line-height: 1.5; }
.map-message[hidden] { display: none; }
/* Compact list rows beside the map. */
.map-sheet .poster-grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
.map-sheet .poster-grid .time-band { position: static; margin: 0; padding: var(--vifi-space-lg) 0 var(--vifi-space-xs); font-size: var(--vifi-font-size-body); }
.map-sheet .poster-grid .timeline-row { display: block; padding: var(--vifi-space-sm) var(--vifi-space-sm); border-bottom: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); }
.map-sheet .poster-grid .timeline-open { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: var(--vifi-space-md); align-items: start; }
.map-sheet .poster-grid .event-poster { width: 76px; border-radius: var(--vifi-radius-md); }
.map-sheet .poster-grid .timeline-text { padding: 0; }
.map-sheet .poster-grid h2 { font-size: var(--vifi-font-size-body); }
.map-sheet .poster-grid .timeline-context { margin: var(--vifi-space-xs) 0 0 calc(var(--vifi-space-xxxl) + var(--vifi-space-xxl) + var(--vifi-space-sm)); }
/* Event text is first in DOM and in the poster list; the compact map sheet keeps its thumbnail column. */
.poster-grid .entity-event .timeline-text { padding: 0 0 var(--vifi-space-sm); }
.timeline-venue { margin: var(--vifi-space-xs) 0; color: var(--vifi-text-secondary); font-size: var(--vifi-font-size-label); line-height: 1.5; overflow-wrap: anywhere; }
.map-sheet .poster-grid .entity-event .timeline-text { grid-column: 2; grid-row: 1; padding: 0; }
.map-sheet .poster-grid .entity-event .event-poster { grid-column: 1; grid-row: 1; }
.map-sheet .entity-venue .timeline-open { grid-template-columns: 64px minmax(0, 1fr); gap: var(--vifi-space-md); }
.map-sheet .entity-venue .thumb { width: 64px; height: 64px; }
.map-sheet .entity-venue .timeline-text h2 { font-size: var(--vifi-font-size-title); margin: var(--vifi-space-xxs) 0 var(--vifi-space-xs); }
.map-sheet .entity-venue .timeline-context { display: none; }
.map-sheet .timeline-row.entity-venue { padding: var(--vifi-space-sm) var(--vifi-space-sm); border-radius: var(--vifi-radius-lg); }
@media (min-width:768px) and (max-width:1023px) {
  .map-layout { grid-template-columns: minmax(340px, 46%) minmax(0, 1fr); }
  .map-head { padding: var(--vifi-space-lg) var(--vifi-space-lg) 0 var(--vifi-space-xl); }
  .map-sheet { padding: 0 var(--vifi-space-lg) var(--vifi-space-xxl) var(--vifi-space-xl); }
  html.map-discovery .header { padding-inline: var(--vifi-space-xl); }
}
/* Club pins: logo, event count badge, tonight's start time; selected = larger with a pink outline. */
.vifi-pin { position: relative; width: 48px; height: 48px; min-height: 0; padding: 0; border: 0; border-radius: var(--vifi-radius-lg); background: none; cursor: pointer; }
.vifi-pin-body { display: grid; place-items: center; width: 48px; height: 48px; overflow: hidden; border: 2px solid var(--vifi-text); border-radius: var(--vifi-radius-lg); background: var(--vifi-surface); color: var(--vifi-text); font-size: var(--vifi-font-size-label); font-weight: var(--vifi-font-weight-bold); box-shadow: var(--vifi-shadow-overlay); transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.vifi-pin-body img { width: 100%; height: 100%; object-fit: contain; }
.vifi-pin-badge { position: absolute; top: -9px; right: -9px; min-width: 22px; height: 22px; padding: 0 var(--vifi-space-xs); border: 2px solid var(--vifi-canvas); border-radius: var(--vifi-radius-lg); background: var(--vifi-pink); color: var(--vifi-action-label); font-size: var(--vifi-font-size-caption); font-weight: var(--vifi-font-weight-bold); line-height: 18px; text-align: center; font-variant-numeric: tabular-nums; }
.vifi-pin-time { position: absolute; top: calc(100% + 4px); left: 50%; transform: translateX(-50%); padding: 0 var(--vifi-space-xs); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-md); background: color-mix(in srgb,var(--vifi-canvas) 92%,transparent); color: var(--vifi-text); font: var(--vifi-font-weight-semibold) var(--vifi-font-size-caption)/1.5 var(--vifi-font-family); font-variant-numeric: tabular-nums; white-space: nowrap; }
.vifi-pin.is-highlighted .vifi-pin-body { transform: scale(1.12); border-color: var(--vifi-focus); }
.vifi-pin.is-selected .vifi-pin-body { transform: scale(1.25); border-color: var(--vifi-pink); outline: 3px solid var(--vifi-pink); box-shadow: var(--vifi-shadow-overlay); }
.vifi-pin.is-selected .vifi-pin-badge { top: -14px; right: -14px; }
.vifi-pin.is-selected .vifi-pin-time { top: calc(100% + 10px); border-color: var(--vifi-tint-pink-line); }
.vifi-pin.is-past .vifi-pin-body, .vifi-pin.is-past .vifi-pin-badge { opacity: .5; }
.mapboxgl-marker.is-highlighted { z-index: calc(var(--vifi-z-raised) + 1); }
.mapboxgl-marker.is-selected { z-index: calc(var(--vifi-z-raised) + 2); }
.vifi-cluster { width: 52px; height: 52px; min-height: 0; padding: 0; border: 2px solid var(--vifi-text); border-radius: var(--vifi-radius-pill); background: color-mix(in srgb,var(--vifi-pink) 92%,transparent); color: var(--vifi-action-label); font-size: var(--vifi-font-size-body); font-weight: var(--vifi-font-weight-bold); font-variant-numeric: tabular-nums; box-shadow: var(--vifi-shadow-overlay); }
.vifi-me { display: block; width: 18px; height: 18px; border: 3px solid var(--vifi-white); border-radius: var(--vifi-radius-pill); background: var(--vifi-tint-location); outline: 6px solid color-mix(in srgb,var(--vifi-tint-location) 30%,transparent); }
/* Mapbox controls in ViFi colours; app button defaults must not leak into them. */
.mapboxgl-ctrl button { min-height: 0; padding: 0; border-radius: 0; }
.mapboxgl-ctrl-group { background: var(--vifi-surface); border: 1px solid var(--vifi-divider); box-shadow: var(--vifi-shadow-overlay); }
.mapboxgl-ctrl-group button + button { border-top: 1px solid var(--vifi-divider); }
.mapboxgl-ctrl-group .mapboxgl-ctrl-icon { filter: invert(1); }
/* Club cards: desktop popup and mobile carousel share one component. */
.venue-card { min-width: 0; padding: var(--vifi-space-sm); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); background: var(--vifi-surface); color: var(--vifi-text); }
.venue-card.is-selected { border-color: var(--vifi-pink); outline: 1px solid var(--vifi-pink); }
.venue-card-head { display: flex; align-items: center; gap: var(--vifi-space-sm); margin-bottom: var(--vifi-space-sm); min-width: 0; }
.venue-card-head > div { min-width: 0; }
.venue-card-logo { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-md); background: var(--vifi-surface-raised); object-fit: contain; font-size: var(--vifi-font-size-label); }
.venue-card h3 { margin: 0; font-size: var(--vifi-font-size-body); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.venue-card-meta { margin: var(--vifi-space-xxs) 0 0; color: var(--vifi-text-muted); font-size: var(--vifi-font-size-caption); }
.venue-card-events { display: grid; gap: var(--vifi-space-xs); }
.venue-card-event { display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; gap: var(--vifi-space-sm); min-height: 58px; padding: var(--vifi-space-xxs); border-radius: var(--vifi-radius-md); text-decoration: none; }
.venue-card-event:hover .venue-card-title { text-decoration: underline; text-underline-offset: 3px; }
.venue-card-event.is-past { opacity: .55; }
.venue-card-poster { display: grid; place-items: center; width: 44px; height: 58px; border-radius: var(--vifi-radius-sm); background: var(--vifi-tint-poster-backdrop); object-fit: cover; font-size: var(--vifi-font-size-caption); }
.venue-card-event-text { display: grid; gap: var(--vifi-space-xxs); min-width: 0; justify-items: start; }
.venue-card-when { color: var(--vifi-focus); font-size: var(--vifi-font-size-caption); font-weight: var(--vifi-font-weight-semibold); }
.venue-card-title { max-width: 100%; overflow: hidden; font-size: var(--vifi-font-size-label); font-weight: var(--vifi-font-weight-semibold); text-overflow: ellipsis; white-space: nowrap; }
.truth { display: inline-block; padding: 0 var(--vifi-space-xs); border: 1px solid var(--vifi-tint-pink-line); border-radius: var(--vifi-radius-pill); color: var(--vifi-focus); font-size: var(--vifi-font-size-caption); line-height: 1.6; }
.truth.is-past, .truth.is-started { border-color: var(--vifi-divider); color: var(--vifi-text-muted); }
.venue-card-more, .venue-card-note { margin: var(--vifi-space-xs) 0 0; color: var(--vifi-text-muted); font-size: var(--vifi-font-size-caption); line-height: 1.5; }
.venue-card-actions { display: flex; flex-wrap: wrap; gap: var(--vifi-space-xs); margin-top: var(--vifi-space-sm); }
.venue-card-actions > a, .venue-card-actions > button { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-sm); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-pill); font-size: var(--vifi-font-size-label); text-decoration: none; }
.venue-card-actions > .app-open { border-color: var(--vifi-tint-pink-line); }
.vifi-venue-popup { z-index: calc(var(--vifi-z-raised) + 3); }
.vifi-venue-popup .mapboxgl-popup-content { padding: 0; border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); background: var(--vifi-surface); color: var(--vifi-text); box-shadow: var(--vifi-shadow-overlay); }
.vifi-venue-popup .venue-card, .vifi-venue-popup .venue-card.is-selected { width: 316px; max-width: calc(100vw - 48px); border: 0; box-shadow: none; background: transparent; padding: var(--vifi-space-md) var(--vifi-space-md) var(--vifi-space-sm); }
.vifi-venue-popup .venue-card-head { padding-right: var(--vifi-space-xxl); }
.vifi-venue-popup .mapboxgl-popup-close-button { top: 4px; right: 4px; width: 44px; height: 44px; min-height: 0; padding: 0; border: 0; color: var(--vifi-text-muted); font-size: var(--vifi-font-size-heading); line-height: 1; }
.vifi-venue-popup.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip, .vifi-venue-popup.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip, .vifi-venue-popup.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip { border-top-color: var(--vifi-surface); }
.vifi-venue-popup.mapboxgl-popup-anchor-top .mapboxgl-popup-tip, .vifi-venue-popup.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip, .vifi-venue-popup.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip { border-bottom-color: var(--vifi-surface); }
.vifi-venue-popup.mapboxgl-popup-anchor-left .mapboxgl-popup-tip { border-right-color: var(--vifi-surface); }
.vifi-venue-popup.mapboxgl-popup-anchor-right .mapboxgl-popup-tip { border-left-color: var(--vifi-surface); }

@media (max-width:767px) {
  html.map-discovery, html.map-discovery body { height: 100%; overflow: hidden; overscroll-behavior: none; }
  html.map-discovery #vifi-root { display: flex; flex-direction: column; height: 100dvh; }
  html.map-discovery .header { flex: none; }
  html.map-discovery main.map-main { position: relative; flex: 1; width: 100%; min-height: 0; margin: 0; padding: 0; overflow: hidden; }
  html.map-discovery #vifi-root > footer { display: none; }
  .map-layout { position: absolute; inset: 0; display: block; --sheet-peek: 136px; --sheet-half: min(420px, 62%); --sheet-visible: var(--sheet-half); }
  .map-layout[data-sheet="peek"] { --sheet-visible: var(--sheet-peek); }
  .map-layout[data-sheet="full"] { --sheet-visible: calc(100% - 64px); }
  .map-pane { position: absolute; inset: 0; height: auto; min-height: 0; border: 0; }
  .map-head { position: absolute; z-index: calc(var(--vifi-z-raised) + 3); top: 10px; left: 12px; right: 12px; padding: 0; pointer-events: none; }
  .map-head > .eyebrow, .map-head > h1 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .map-head .near-entry { display: inline-flex; margin: 0; padding: var(--vifi-space-xxs); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-pill); background: color-mix(in srgb,var(--vifi-canvas) 90%,transparent); pointer-events: auto; box-shadow: var(--vifi-shadow-overlay); }
  .map-head .entity-controls { gap: 0; }
  .map-head .near-entry .entity-controls button { min-height: 44px; min-width: 64px; padding: var(--vifi-space-xs) var(--vifi-space-md); border: 0; border-radius: var(--vifi-radius-pill); font-size: var(--vifi-font-size-label); }
  .map-head .entity-controls button[aria-pressed="false"] { color: var(--vifi-text-secondary); }
  .map-head .view-controls { display: none; }
  .map-sheet { position: absolute; z-index: calc(var(--vifi-z-raised) + 4); inset: 0; display: flex; flex-direction: column; padding: 0; border-top: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-xl) var(--vifi-radius-xl) 0 0; background: var(--vifi-canvas); box-shadow: var(--vifi-shadow-sheet); transform: translateY(calc(100% - var(--sheet-visible))); transition: transform .28s cubic-bezier(.2, .8, .2, 1); will-change: transform; }
  .map-sheet.is-dragging { transition: none; }
  .sheet-handle { display: flex; flex: none; align-items: flex-start; justify-content: center; width: 100%; height: 44px; min-height: 44px; padding: var(--vifi-space-sm) 0 0; border: 0; border-radius: var(--vifi-radius-xl) var(--vifi-radius-xl) 0 0; touch-action: none; cursor: grab; }
  .sheet-handle .grab { width: 40px; height: 5px; border-radius: var(--vifi-radius-sm); background: var(--vifi-tint-control-line); }
  .sheet-head { flex: none; padding: 0 var(--vifi-space-md) var(--vifi-space-xxs); }
  .sheet-head .date-chips { flex-wrap: nowrap; overflow-x: auto; margin: 0 calc(-1 * var(--vifi-space-md)) var(--vifi-space-xxs); padding: var(--vifi-space-xxs) var(--vifi-space-md) var(--vifi-space-xxs); scrollbar-width: none; }
  .sheet-head .date-chips::-webkit-scrollbar { display: none; }
  .sheet-head .date-chips select { max-width: 92px; flex: none; }
  .map-layout:not([data-sheet="full"]) .sheet-head .polish-filters,
  .map-layout:not([data-sheet="full"]) .sheet-head .map-truth { display: none; }
  .map-layout[data-sheet="peek"] .map-coverage { display: none; }
  .bounds-toggle { display: none; }
  .map-count { margin: 0; }
  .map-count-main { font-size: var(--vifi-font-size-label); }
  .sheet-carousel { display: flex; flex: none; align-items: flex-start; gap: var(--vifi-space-sm); overflow-x: auto; padding: var(--vifi-space-xs) var(--vifi-space-md) var(--vifi-space-md); scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
  .sheet-carousel::-webkit-scrollbar { display: none; }
  .map-layout:not([data-sheet="half"]) .sheet-carousel { display: none; }
  .venue-card-carousel { flex: 0 0 min(320px, 84vw); scroll-snap-align: center; }
  .carousel-empty { margin: var(--vifi-space-xs) 0; color: var(--vifi-text-muted); font-size: var(--vifi-font-size-label); line-height: 1.6; }
  .sheet-carousel .empty { flex: 1; padding: var(--vifi-space-xxs) 0 var(--vifi-space-xs); }
  .sheet-carousel .empty h2 { font-size: var(--vifi-font-size-body); margin: var(--vifi-space-xxs) 0; }
  .sheet-list { display: none; flex: 1; min-height: 0; overflow-y: auto; padding: 0 var(--vifi-space-md) var(--vifi-space-xl); overscroll-behavior: contain; }
  .map-layout[data-sheet="full"] .sheet-list { display: block; }
  .map-sheet .poster-grid .timeline-row { padding: var(--vifi-space-sm) var(--vifi-space-xxs); }
  .sheet-legal { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--vifi-space-lg); margin-top: var(--vifi-space-md); font-size: var(--vifi-font-size-caption); }
  .sheet-legal a { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; }
  .map-tools { top: 64px; right: 12px; }
  .map-message { bottom: calc(var(--sheet-visible) + 12px); }
  .vifi-map-status { top: 64px; max-width: calc(100% - 32px); white-space: normal; text-align: center; }
  .map-layout .mapboxgl-ctrl-top-right { display: none; }
  .map-layout .mapboxgl-ctrl-bottom-left, .map-layout .mapboxgl-ctrl-bottom-right { bottom: var(--sheet-visible); transition: bottom .28s cubic-bezier(.2, .8, .2, 1); }
}
@media (prefers-reduced-motion: reduce) {
  .map-sheet, .vifi-pin-body, .map-layout .mapboxgl-ctrl-bottom-left, .map-layout .mapboxgl-ctrl-bottom-right { transition: none; }
}

/* Fullscreen keeps the existing Discover filters, map, selection and sheet. */
.vifi-map-fullscreen .map-layout{height:100%;min-height:0;overflow:hidden}
.vifi-map-fullscreen .map-pane{position:relative;top:auto;height:100%;min-height:0}
.vifi-map-fullscreen .map-sheet{overflow:auto;overscroll-behavior:contain;padding-bottom:calc(var(--vifi-space-xl) + env(safe-area-inset-bottom))}
.vifi-map-fullscreen .map-head{padding-top:var(--vifi-space-sm)}
.map-pane>.map-fullscreen-toggle{top:10px;right:54px;width:44px;height:44px;padding:var(--vifi-space-xs)}
.map-pane>.map-location-toggle{top:10px;right:106px}
@media(max-width:767px){
 .map-pane>.map-fullscreen-toggle{top:10px;right:12px}
 .map-pane>.map-location-toggle{right:64px}
 .vifi-map-fullscreen .map-pane{position:absolute;inset:0;height:auto}
 .vifi-map-fullscreen .map-head{padding-top:0}
 .vifi-map-fullscreen .map-sheet{overflow:visible}
}
.vifi-map-fullscreen .map-party-sheet .venue-card{width:auto;max-width:620px;margin:var(--vifi-space-sm) auto}
@media(min-width:768px){
 .vifi-map-fullscreen .map-layout{display:block;position:relative}
 .vifi-map-fullscreen .map-pane{position:absolute;inset:0;border:0}
 .vifi-map-fullscreen .map-head{position:absolute;z-index:calc(var(--vifi-z-raised) + 3);top:12px;left:12px;width:min(520px,calc(100% - 100px));max-height:40%;overflow:auto;padding:var(--vifi-space-sm) var(--vifi-space-md);border-radius:var(--vifi-radius-lg);background:var(--vifi-canvas)}
 .vifi-map-fullscreen .map-head>.eyebrow,.vifi-map-fullscreen .map-head>h1{display:none}
 .vifi-map-fullscreen .map-sheet{position:absolute;z-index:calc(var(--vifi-z-raised) + 4);bottom:12px;left:12px;width:360px;max-height:38%;padding:var(--vifi-space-sm) var(--vifi-space-md);border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-lg);background:var(--vifi-canvas)}
}

/* Event-backed city choices: allow controls to wrap without widening the mobile sheet. */
.date-chips [data-city-search]{min-width:110px;max-width:150px;width:30vw;min-height:40px;color:var(--vifi-text);background:var(--vifi-surface);border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-pill);padding:var(--vifi-space-xs) var(--vifi-space-sm);font:inherit}
.city-reason{color:var(--vifi-text-secondary);font-size:var(--vifi-font-size-caption);line-height:1.5;overflow-wrap:anywhere}
/* Public cluster logo stacks; the badge counts clubs left beyond the pictured identities. */
.vifi-cluster.has-logos{width:auto;min-width:60px;height:48px;min-height:44px;display:flex;align-items:center;padding:0 var(--vifi-space-sm) var(--vifi-space-xs) 0;border:0;border-radius:0;background:transparent;box-shadow:none;cursor:pointer}
.vifi-cluster-logos{display:flex;align-items:center;pointer-events:none}
.vifi-cluster-logo{display:grid;place-items:center;flex:none;width:36px;height:36px;overflow:hidden;border:2px solid var(--vifi-text);border-radius:var(--vifi-radius-pill);background:var(--vifi-surface);color:var(--vifi-text);box-shadow:var(--vifi-shadow-card);font-size:var(--vifi-font-size-caption)}
.vifi-cluster-logo+.vifi-cluster-logo{margin-left:calc(-1 * var(--vifi-space-md))}.vifi-cluster-logo img{width:100%;height:100%;object-fit:contain}
.vifi-cluster.has-logos .vifi-cluster-count{position:absolute;right:0;bottom:0;min-width:23px;padding:var(--vifi-space-xxs) var(--vifi-space-xxs);border:2px solid var(--vifi-canvas);border-radius:var(--vifi-radius-lg);background:var(--vifi-pink);color:var(--vifi-action-label);font-size:var(--vifi-font-size-caption);line-height:16px}
.vifi-cluster:focus-visible{outline:3px solid var(--vifi-pink);outline-offset:3px}.vifi-cluster.has-logos:active .vifi-cluster-logos{opacity:.75}

/* RC8.7: desktop type inventory; mobile declarations above remain canonical. */
@media (min-width:1024px){
 .polish-search input,
 .near-entry button,
 .polish-filters > summary span,
 .real-filter-inputs label,
 .timeline-context button,
 .primary-nav button,
 .icon-button,
 .discovery-shortcuts button,
 .poster-grid .timeline-context button,
 .poster-toolbar button,
 .header-search input,
 .detail-follow button,
 .venue-card-actions > a,
 .venue-card-actions > button{font-size:var(--vifi-font-size-body);line-height:1.55}
 .catalog-note,
 .hint,
 .time-band span,
 .timeline-time,
 .timeline-context span,
 .timeline-follow,
 .detail > .back,
 .detail .eyebrow,
 .empty p,
 footer,
 .real-map-pin,
 .near-entry .view-control,
 .browse>.eyebrow,
 .poster-grid .time-band span,
 .poster-grid .timeline-time,
 .poster-grid .timeline-context span,
 .sound-controls,
 .appearance-reason,
 .artist-actions a,
 .coverage-note,
 .zoom-label,
 .lineup-links .text-link,
 .published-info p,
 .poster-toolbar h2,
 .program-poster-link h4,
 .program-poster-card .provenance,
 .weekly-hours,
 .handoff .eyebrow,
 .handoff li,
 .search-scope,
 .match-label,
 .match-links .text-link,
 .header-search .search-submit,
 .app-cta,
 .app-open,
 .map-coverage,
 .inline-action,
 .bounds-toggle,
 .dj-map-hint,
 .artist-actions .artist-map,
 .nearby-scope,
 .nearby-notice,
 .map-fallback > p,
 .map-fallback .vifi-map-status,
 .vifi-map-status,
 .map-locate,
 .map-message,
 .timeline-venue,
 .vifi-pin-time,
 .venue-card-logo,
 .venue-card-meta,
 .venue-card-poster,
 .venue-card-when,
 .venue-card-title,
 .venue-card-more,
 .venue-card-note,
 .city-reason{font-size:var(--vifi-font-size-body);line-height:1.55}
 .event-state,
 .poster-grid .event-state,
 .tag-context,
 .date-chip,
 .map-truth,
 .vifi-pin-body,
 .vifi-pin-badge,
 .truth,
 .vifi-cluster-logo,
 .vifi-cluster.has-logos .vifi-cluster-count{font-size:var(--vifi-font-size-label);line-height:1.55}
 .detail p{font-size:var(--vifi-font-size-body);line-height:1.55}
 .provenance{font-size:var(--vifi-font-size-body)!important;line-height:1.55}
}
@media (min-width:1024px){
 body{font-size:var(--vifi-font-size-body);line-height:1.55}
 main{max-width:1600px}.browse{max-width:none}
 .poster-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--vifi-space-xxl) var(--vifi-space-xl)}
 .poster-grid h2,.timeline-text h2{font-size:var(--vifi-font-size-heading);line-height:1.4}
 .poster-grid .timeline-row{display:flex;flex-direction:column}
 .poster-grid .timeline-context{margin-top:auto;padding-top:var(--vifi-space-xs)}
 .primary-nav button,.icon-button,.near-entry button,.near-entry .view-control,
 .date-chip,.inline-action,.timeline-follow,.poster-grid .timeline-context button,
 .detail button,.detail-body>.timeline-follow,.language-selector,.polish-search input{font-size:var(--vifi-font-size-body);min-height:44px}
 .detail p{font-size:var(--vifi-font-size-body);line-height:1.55;max-width:75ch}
 .detail-body h2{font-size:var(--vifi-font-size-display);line-height:1.3}
 .detail .eyebrow,.timeline-venue,.poster-grid .timeline-time{font-size:var(--vifi-font-size-body)}
 .detail .provenance{font-size:var(--vifi-font-size-body)!important}
 .discovery-intro,.unavailable p,.info-dialog p{font-size:var(--vifi-font-size-body);line-height:1.55;max-width:75ch}
 .map-sheet .poster-grid{grid-template-columns:minmax(0,1fr)}
 .map-sheet .poster-grid h2{font-size:var(--vifi-font-size-heading)}
 .map-sheet .entity-venue .timeline-text h2,.venue-card h3{font-size:var(--vifi-font-size-title);white-space:normal;overflow-wrap:anywhere}
 .venue-card-title{font-size:var(--vifi-font-size-heading);white-space:normal;overflow-wrap:anywhere}
 .map-sheet .poster-grid .timeline-open{min-width:0}
 .map-layout{grid-template-columns:minmax(420px,40%) minmax(0,1fr)}
 .header{gap:var(--vifi-space-md)}.header .primary-nav{gap:var(--vifi-space-md)}
 .venue-card,.programBody{min-width:0}
}
@media (min-width:1280px){.poster-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.map-sheet .poster-grid{grid-template-columns:minmax(0,1fr)}}
@media (min-width:1680px){.poster-grid{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}.map-sheet .poster-grid{grid-template-columns:minmax(0,1fr)}}
@media (min-width:1024px){
 .timeline-context button,.timeline-follow,.detail>.back,.detail-follow button,
 .header-search .search-submit,.app-cta,.app-open,.bounds-toggle,.nearby-scope,
 .map-locate,.map-preview-action,.artist-actions .artist-map,
 .venue-card-actions>a,.venue-card-actions>button{font-size:var(--vifi-font-size-body);min-height:44px}
}
@media (min-width:1024px){.timeline-venue{font-size:var(--vifi-font-size-title)}}

.footer-contact { display: inline-flex; align-items: center; gap: var(--vifi-space-xxs); white-space: nowrap; }

@media(min-width:768px) {
  .detail-dj .dj-detail-header { display:flex; gap:var(--vifi-space-lg); align-items:flex-start; margin:var(--vifi-space-md) 0; }
  .detail-dj .dj-detail-header .entity-logo { flex:0 0 112px; width:112px; height:112px; min-height:0; }
  .dj-detail-identity { min-width:0; }
  .dj-detail-identity h2 { margin:0 0 var(--vifi-space-xs); font-size:var(--vifi-font-size-display); }
  .dj-detail-identity .dj-performance-summary { margin:var(--vifi-space-sm) 0; }
  .dj-detail-identity p { margin:var(--vifi-space-xxs) 0; }
}

#vifi-root .footer-language-pill { display:inline-flex; align-items:center; gap:var(--vifi-space-xxs); border:1px solid var(--vifi-divider); border-radius:var(--vifi-radius-pill); padding:0 var(--vifi-space-sm); background:var(--vifi-surface-raised); }
#vifi-root .footer-language-pill .language-selector { border:0; background:transparent; margin:0; min-height:44px; max-width:120px; padding:var(--vifi-space-xxs) 0; font-size:var(--vifi-font-size-label); }
#vifi-root .footer-language { margin-top:var(--vifi-space-md); }

/* Keep the default card sheet scrollable to its language control without moving the map. */
.sheet-content, .sheet-card-content { display:contents; }
.sheet-card-language { display:none; }
@media(max-width:767px) {
  .sheet-card-content { display:none; }
  .map-layout[data-sheet="half"] .sheet-content { display:block; max-height:calc(var(--sheet-visible) - 44px); overflow-y:auto; overscroll-behavior-y:contain; }
  .map-layout[data-sheet="half"] .sheet-card-content { display:block; }
  #vifi-root .sheet-card-language { display:flex; justify-content:center; margin:0; padding:0 var(--vifi-space-md) var(--vifi-space-xl); }
}
/* VIF-479 music chips: a row under the dates, same chip shape as the dates. Phones scroll it sideways; wider screens wrap. */
.music-chips { margin-top: calc(-1 * var(--vifi-space-sm)); }
.music-chips > * { flex: none; }
.music-chips .chip { min-width: 44px; min-height: 40px; white-space: nowrap; }
.sheet-head .music-chips { margin: calc(-1 * var(--vifi-space-xxs)) 0 var(--vifi-space-xs); }
@media (max-width:767px) {
  .music-chips { flex-wrap: nowrap; overflow-x: auto; padding-bottom: var(--vifi-space-xxs); scrollbar-width: none; margin-top: calc(-1 * var(--vifi-space-xs)); }
  .music-chips::-webkit-scrollbar { display: none; }
  .sheet-head .music-chips { margin: 0 calc(-1 * var(--vifi-space-md)) var(--vifi-space-xxs); padding: 0 var(--vifi-space-md) var(--vifi-space-xxs); }
  /* Pinned search has no toggle to push the app action right; keep it at the end of the first row. */
  .header.search-pinned > .vifi-download-menu { margin-left: auto; }
}
/* VIF-480: card directions picker (flag `allMapProviders`); options expand inline so no popover clips inside the grid. */
.timeline-context .card-directions{flex-basis:100%;min-width:0}
.timeline-context .card-directions>summary{display:inline-flex;align-items:center;gap:var(--vifi-space-xs);min-height:44px;padding:var(--vifi-space-xxs) 0;color:var(--vifi-focus);font-size:var(--vifi-font-size-caption);font-weight:var(--vifi-font-weight-semibold);cursor:pointer;list-style:none}
.timeline-context .card-directions>summary::-webkit-details-marker{display:none}
.timeline-context .card-directions .directions-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--vifi-space-xs);margin-top:var(--vifi-space-xxs)}
.timeline-context .card-directions .directions-options a{display:flex;align-items:center;gap:var(--vifi-space-xs);min-height:44px;padding:var(--vifi-space-xs) var(--vifi-space-sm);box-sizing:border-box;border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-lg);background:var(--vifi-surface);color:var(--vifi-text);font-size:var(--vifi-font-size-caption);line-height:1.3;text-decoration:none;overflow-wrap:anywhere}
.timeline-context .card-directions .directions-options a:hover{border-color:var(--vifi-pink)}
.timeline-context .card-directions .directions-options .vifi-icon{flex:none}
.venue-card-actions > .card-directions{display:contents}
.venue-card-actions > .card-directions>summary{display:inline-flex;align-items:center;justify-content:center;gap:var(--vifi-space-xs);min-height:44px;padding:var(--vifi-space-xs) var(--vifi-space-sm);border:1px solid var(--vifi-tint-pink-line);border-radius:var(--vifi-radius-pill);font-size:var(--vifi-font-size-label);cursor:pointer;list-style:none}
.venue-card-actions > .card-directions>summary::-webkit-details-marker{display:none}
.venue-card-actions > .card-directions .directions-options{flex-basis:100%;order:100;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--vifi-space-xs)}
.venue-card-actions > .card-directions .directions-options a{display:flex;align-items:center;gap:var(--vifi-space-xs);min-height:44px;padding:var(--vifi-space-xs) var(--vifi-space-sm);box-sizing:border-box;border:1px solid var(--vifi-divider);border-radius:var(--vifi-radius-lg);background:var(--vifi-surface-raised);color:var(--vifi-text);font-size:var(--vifi-font-size-label);line-height:1.3;text-decoration:none;overflow-wrap:anywhere}
.venue-card-actions > .card-directions .directions-options .vifi-icon{flex:none}

/* VIF-613 DJ share kit on the main DJ detail and lineup rows (flag features.djShare). Mirrors the /dj sheet
   in dj.css; the sheet sits inside the detail dialog so it closes with it. */
.detail .event-lineup .event-lineup-has-action { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; }
.detail .event-lineup .event-lineup-action { justify-self: end; padding: 0 0 var(--vifi-space-sm); }
.detail .event-lineup-share { min-height: 44px; padding: var(--vifi-space-xs) var(--vifi-space-sm); border-radius: var(--vifi-radius-lg); font-size: var(--vifi-font-size-label); }
.detail .djShareButton { border-color: var(--vifi-divider); color: var(--vifi-text); border-radius: var(--vifi-radius-lg); }
.djShareSheet { width: min(100% - 32px, 720px); max-height: calc(100dvh - 32px); padding: var(--vifi-space-lg); overflow-y: auto; background: var(--vifi-canvas); color: var(--vifi-text); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-xl); }
.djShareSheet::backdrop { background: color-mix(in srgb,var(--vifi-black) 70%,transparent); }
.djShareSheet .primaryAction, .djShareSheet .secondaryButton { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: var(--vifi-space-sm) var(--vifi-space-md); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-lg); font-weight: var(--vifi-font-weight-bold); text-decoration: none; color: var(--vifi-text); background: transparent; }
.djShareSheet .primaryAction { background: var(--vifi-pink); border-color: var(--vifi-pink); color: var(--vifi-action-label); }
.djShareHead { display: flex; align-items: center; justify-content: space-between; gap: var(--vifi-space-sm); margin-bottom: var(--vifi-space-md); }
.djShareHead h2 { margin: 0; }
.djShareClose { border-color: var(--vifi-divider); border-radius: var(--vifi-radius-lg); }
.djSharePreview { margin: 0 auto var(--vifi-space-md); width: min(100%, 270px); }
.djSharePreview img { display: block; width: 100%; height: auto; aspect-ratio: 9 / 16; border-radius: var(--vifi-radius-lg); background: var(--vifi-surface-raised); border: 1px solid var(--vifi-divider); }
.djShareSteps { margin: 0 0 var(--vifi-space-md); padding-left: var(--vifi-space-lg); color: var(--vifi-text-muted); }
.djShareButtons { display: flex; flex-wrap: wrap; gap: var(--vifi-space-xs); margin-bottom: var(--vifi-space-md); }
.djShareLinkLabel { display: grid; gap: var(--vifi-space-xxs); color: var(--vifi-text-muted); font-size: var(--vifi-font-size-label); }
.djShareLink { width: 100%; min-height: 44px; padding: var(--vifi-space-xs); background: var(--vifi-surface-raised); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-md); color: var(--vifi-text); font: inherit; font-size: var(--vifi-font-size-label); }
.djShareStatus { min-height: 1.65em; margin: var(--vifi-space-sm) 0 0; font-size: var(--vifi-font-size-label); }
@media (min-width:768px) {
  .djShareSheet[open] { display: grid; grid-template-columns: 270px minmax(0, 1fr); column-gap: var(--vifi-space-xl); }
  .djShareHead { grid-column: 1 / -1; }
  .djSharePreview { margin: 0; }
}

/* VIF-326: floating UI budget. List mode (the document scrolls) pins one filter line, <=56px, under the
   safe area; the chip row scrolls sideways instead of wrapping. Pinned + floating UI stays <=25% of the screen. */
@media (max-width:767px) {
  .browse > .date-chips {
    position: sticky; top: var(--vifi-safe-top); z-index: var(--vifi-z-sticky);
    flex-wrap: nowrap; overflow-x: auto; box-sizing: border-box; height: 56px;
    margin: 0 calc(-1 * var(--vifi-space-md)) var(--vifi-space-md); padding: var(--vifi-space-xs) var(--vifi-space-md); background: var(--vifi-bg); scrollbar-width: none;
  }
  .browse > .date-chips::-webkit-scrollbar { display: none; }
  .browse .time-band { top: calc(var(--vifi-safe-top) + 56px); }
}
.vifi-back-top {
  position: fixed; left: max(16px, env(safe-area-inset-left)); bottom: var(--vifi-fab-offset); z-index: var(--vifi-z-fab);
  display: grid; place-items: center; width: 44px; height: 44px; padding: 0; cursor: pointer;
  color: var(--vifi-text); background: var(--vifi-surface-raised); border: 1px solid var(--vifi-divider); border-radius: var(--vifi-radius-pill);
}
.vifi-back-top[hidden], body:has(.halloween-chat:not([hidden])) .vifi-back-top, body:has(dialog[open]) .vifi-back-top { display: none; }
.vifi-back-top:focus-visible { outline: 3px solid var(--vifi-pink); outline-offset: 2px; }
