/* ===========================================================
   EBW — Tour Filters (desktop two-row layout, mobile stacked)
   =========================================================== */

/* Calendar header */
.calendar-header{ margin:clamp(10px,1.5vw,18px) 0 8px; }
.calendar-header .calendar-heading{
  font:800 clamp(20px,3.2vw,30px)/1.2 'Montserrat',sans-serif;
  color:#000; letter-spacing:.2px; transition:opacity .3s ease;
}
/* Shared EBW heading-link tokens also used by the Releases catalogue.
   Orange denotes verified Artist/Genre links; locations stay neutral. */
.calendar-header .calendar-heading .dyn{ color:var(--ebw-ui-link,#ff4500); }
.calendar-header .calendar-heading .dyn-place{ color:#000; }
.calendar-header .calendar-heading a.dyn-link,
.calendar-header .calendar-heading a.dyn-link:link,
.calendar-header .calendar-heading a.dyn-link:visited{
  color:var(--ebw-ui-link,#ff4500); text-decoration:none;
}
.calendar-header .calendar-heading a.dyn-link:hover,
.calendar-header .calendar-heading a.dyn-link:focus-visible{
  color:var(--ebw-ui-accent-hover,#ff6600); text-decoration:underline; text-underline-offset:.12em;
}
.calendar-header .calendar-heading a.dyn-link:focus-visible{
  outline:3px solid var(--ebw-ui-accent,#ff4500); outline-offset:3px;
}
.calendar-header{
  width:100%; max-width:var(--content-max,1200px);
  margin-inline:auto; padding-inline:28.38px; box-sizing:border-box; padding-bottom:10px;
}

/* Tokens */
.tour-calendar-page,
.tour-calendar-page #ebw-filters,
.tour-calendar-page #tour-filters,
.tour-calendar-page .filters-inner{
  --button-bg-color:#ff4500;
  --button-active-bg:#ff6600;
  --button-font-color:#fff;
  --chip-bg:#fff;
  --chip-border:#ddd;
  --chip-text:#111;
  --radius:10px;
  --pill-h:44px;
  --shadow:0 12px 28px rgba(0,0,0,.12);
}

/* Wrapper */
.filters-inner{
  width:100%; max-width:var(--content-max,1200px);
  margin-inline:auto; padding-inline:clamp(12px,3vw,24px);
  box-sizing:border-box; position:relative; z-index:5;
}
.cb-nav-bar, .cb-nav-bar .cb-dropdown, .cb-nav-bar .sub-menu{ position:relative; z-index:200; }
#tour-filters{ position:relative; z-index:10; }

/* Visually hide labels (keep for a11y) */
#ebw-filters label:not(.switch),
#ebw-filters .sr-only{
  position:absolute !important; width:1px !important; height:1px !important;
  padding:0 !important; margin:-1px !important; overflow:hidden !important;
  clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important;
}

/* ---------- Base (mobile-first) ---------- */
#ebw-filters{ display:block; }
#ebw-filters .row{ display:block; margin-bottom:.5rem; }
#ebw-filters .field-inline{ display:flex; flex-wrap:wrap; gap:.5rem; }

#ebw-filters select,
#ebw-filters input[type="text"],
#ebw-filters input[type="search"]{
  width:100%; height:var(--pill-h); min-height:var(--pill-h);
  padding:10px 12px; border:1px solid var(--chip-border); border-radius:var(--radius);
  background:var(--chip-bg); color:var(--chip-text);
  font:600 13px 'Montserrat',sans-serif; text-transform:uppercase; box-sizing:border-box;
}
#ebw-filters select:focus, #ebw-filters input:focus{
  outline:2px solid #ff7e00; outline-offset:2px;
}

/* Disabled selects */
#ebw-filters select:disabled{ opacity:.6; cursor:not-allowed; }

/* Visibility helpers */
.desktop-only{ display:block; }
.mobile-only{ display:none; }
@media (max-width:768px){
  .desktop-only{ display:none !important; }
  .mobile-only{ display:block !important; }
}

/* ---------- Past Tours switch ---------- */
#ebw-filters .field-past .switch{
  display:inline-flex; align-items:center; gap:.6rem; cursor:pointer; user-select:none;
  font:700 13px 'Montserrat',sans-serif; text-transform:uppercase;
}
#ebw-filters .field-past .switch input{ position:absolute; left:-9999px; }
#ebw-filters .field-past .switch .switch-track{
  position:relative; width:46px; height:28px; border-radius:999px; background:#e7e7e7;
  box-shadow:inset 0 1px 3px rgba(0,0,0,.08); transition:background .2s ease;
}
#ebw-filters .field-past .switch .switch-track::after{
  content:""; position:absolute; top:3px; left:3px; width:22px; height:22px; border-radius:50%;
  background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.15); transition:transform .2s ease;
}
#ebw-filters .field-past .switch input:checked + .switch-track{ background:var(--button-bg-color); }
#ebw-filters .field-past .switch input:checked + .switch-track::after{ transform:translateX(18px); }
#ebw-filters .field-past .switch input:disabled + .switch-track{ opacity:.6; cursor:not-allowed; }

/* Bare-checkbox fallback */
#f-past{
  appearance:none; -webkit-appearance:none; width:52px; height:28px; border-radius:28px;
  border:1px solid #ddd; background:#eee; position:relative; vertical-align:middle;
  cursor:pointer; outline:none; transition:background .2s ease,border-color .2s ease;
}
#f-past::after{
  content:""; position:absolute; top:2px; left:2px; width:24px; height:24px; border-radius:50%;
  background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.15); transition:transform .2s ease;
}
#f-past:checked{ background:var(--button-bg-color); border-color:var(--button-bg-color); }
#f-past:checked::after{ transform:translateX(24px); }

/* ---------- Artist combobox ---------- */
.artist-input-wrap{ position:relative; }
#artist-listbox[hidden]{ display:none !important; }
#artist-listbox{
  position:absolute; left:0; right:0; top:calc(100% + 6px);
  background:#fff; border:1px solid #ddd; border-radius:8px; box-shadow:var(--shadow);
  max-height:320px; overflow:auto; padding:.25rem 0; z-index:100;
}
#artist-listbox li{
  list-style:none; padding:10px 12px; font:600 14px 'Montserrat',sans-serif; color:#333; cursor:pointer;
}
#artist-listbox li[aria-selected="true"], #artist-listbox li:hover{ background:#f5f5f5; }

/* Reserve room for the clear button inside the input */
#f-artist{ padding-right:42px; }

/* Clear “×” button */
#f-artist-clear.artist-clear{
  position:absolute; right:10px; top:0; bottom:0; margin:auto 0; height:28px; width:28px;
  display:grid; place-items:center; line-height:1; font-size:18px;
  border:0; border-radius:50%; background:transparent; color:#666;
  cursor:pointer; z-index:2;
}
#f-artist-clear.artist-clear:hover{ background:#eee; }
#f-artist-clear.artist-clear:focus-visible{ outline:2px solid #ff7e00; outline-offset:2px; }
#f-artist-clear[hidden]{ display:none !important; }

/* ---------- Mobile (≤1023.98px) ---------- */
@media (max-width:1023.98px){
  /* Hide desktop genre dropdown on mobile */
  #f-genre{ display:none !important; }

  /* Scroller chips */
  #genre-slider, .genre-slider{
    display:flex !important; width:100%; max-width:100%; gap:12px;
    overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; scrollbar-width:none;
    touch-action:pan-x pinch-zoom; background:#545454; border-radius:15px;
    padding:6px 7px; margin-top:8px; position:relative; scroll-snap-type:x proximity;
    scroll-padding-left:7px; scroll-padding-right:7px;
  }
  #genre-slider::-webkit-scrollbar, .genre-slider::-webkit-scrollbar{ display:none; }
  #genre-slider button, .genre-slider button{
    flex:0 0 auto; background:var(--button-bg-color); color:#fff; border:0;
    font:700 14px 'Montserrat',sans-serif; text-transform:uppercase;
    padding:12px 16px; border-radius:var(--radius); transition:background .18s ease, transform .18s ease;
    scroll-snap-align:start; will-change:transform;
  }

  /* Hover only when device truly supports hover */
  @media (hover:hover) and (pointer:fine){
    #genre-slider button:hover, .genre-slider button:hover{ background:var(--button-active-bg); }
  }
  /* Touch devices: never “stick” hover */
  @media (hover:none){
    #genre-slider button:hover, .genre-slider button:hover{ background:var(--button-bg-color); }
  }

  #genre-slider button.active, .genre-slider button.active{ background:var(--button-active-bg); transform:scale(1.05); }
  #genre-slider button.active::after, .genre-slider button.active::after{ content:" ×"; font-weight:900; font-size:16px; line-height:1; opacity:.95; margin-left:6px; }

  /* Fades on wrapper only */
  .genre-mobile{ position:relative; }
  .genre-mobile::before, .genre-mobile::after{
    content:""; position:absolute; top:0; bottom:0; width:42px; opacity:0; transition:opacity .2s ease;
    pointer-events:none; z-index:2; border-radius:15px;
  }
  .genre-mobile.can-scroll-left::before{
    left:0; opacity:1; background:linear-gradient(to right, rgba(255,255,255,.72), rgba(0,0,0,0));
  }
  .genre-mobile.can-scroll-right::after{
    right:0; opacity:1; background:linear-gradient(to left, rgba(255,255,255,.72), rgba(0,0,0,0));
  }
  .genre-mobile:not(.fades-ready)::before,
  .genre-mobile:not(.fades-ready)::after{ content:none !important; }
  .genre-slider.no-snap{ scroll-snap-type:none !important; }

  /* Filters layout */
  #ebw-filters{ display:block !important; }
  #ebw-filters .row-1{ display:grid; grid-template-columns:1fr 1fr; gap:.5rem; align-items:end; }
  #ebw-filters .row-1 .field-location{ grid-column:1 / -1; }

  /* Year | Past on same row; center the toggle cell */
  #ebw-filters .row-1 .field-year{ grid-column:1; }
  #ebw-filters .row-1 .field-past{
    grid-column:2; display:flex; justify-content:center; align-items:center;
    min-height:var(--pill-h); text-align:center;
  }
  #ebw-filters .row-1 .field-past .switch{ margin:0; }

  /* Location’s internal 3-up layout across mobile */
  #ebw-filters .field-location .field-inline{
    display:grid !important; grid-template-columns:repeat(3, minmax(0,1fr)); gap:8px;
  }

  /* Artist row */
  #ebw-filters .row-2{ display:block; position:relative; }

  /* Mobile Reset button */
  #ebw-clear-filters-mobile{ width:100%; margin-top:.35rem; border:1px solid #ddd; }
}

/* ≤420px: Region full width, then Country|City, then Year|Past */
@media (max-width:420px){
  #ebw-filters .field-location .field-inline{
    display:grid !important;
    grid-template-columns:1fr 1fr;
    grid-template-areas:
      "region  region"
      "country city";
    gap:8px;
  }
  #f-region{ grid-area:region; }
  #f-country{ grid-area:country; }
  #f-city{ grid-area:city; }

  /* Keep Year | Past side-by-side */
  #ebw-filters .row-1{ grid-template-columns:1fr 1fr; }

  /* Small spacing tweak for text */
  #ebw-filters .field-past .switch-text{ margin-left:.4rem; }
}

/* Above cards */
#tour-filters .custom-dropdown .dropdown-list{ z-index:50; }

/* Spacing under filters */
.filters-inner{ margin-bottom:clamp(16px,2.2vw,22px); }

/* ===========================================================
   Desktop — two-row grid + right-side CTA
   =========================================================== */
@media (min-width:1024px){
  #ebw-filters{
    display:grid !important;
    grid-template-columns:repeat(5, minmax(140px,1fr)) auto;
    gap:12px !important; align-items:end !important;
  }
  #ebw-filters .row{ display:contents !important; margin:0 !important; }

  .field.field-location{ grid-column:1 / span 3; }
  .field.field-year{ grid-column:4; }
  .field.field-past{ grid-column:5; }

  .field-location .field-inline{
    display:grid !important; grid-template-columns:repeat(3, minmax(0,1fr));
    gap:8px; align-items:end;
  }

  /* Row 2 */
  .artist-input-wrap{ grid-column:1 / span 2; grid-row:2; }
  .genre-desktop{ grid-column:3 / span 2; grid-row:2; justify-self:stretch; width:100%; }
  #f-genre{ max-width:none; width:100%; }

  /* CTA */
  .ebw-filters-right{
    grid-column:6; grid-row:1; justify-self:end; align-self:end;
    display:flex; align-items:center; gap:.5rem;
  }

  /* Desktop select look */
  #ebw-filters select{
    background:var(--chip-bg); color:var(--chip-text);
    border:1px solid var(--chip-border); padding-inline:16px;
  }
  #ebw-filters select:not(:disabled):hover,
  #ebw-filters select:not(:disabled):focus,
  #ebw-filters select:not(:disabled):focus-visible{
    outline:2px solid #ff7e00; outline-offset:2px; box-shadow:none;
    background:var(--chip-bg) !important;
  }

  /* Sizing */
  #f-year{ min-width:140px; }
  #f-artist{ min-width:240px; width:100%; }
  #f-genre{ min-width:160px; }
}

/* ===========================================================
   Buttons
   =========================================================== */
.tour-calendar-page .ebw-filters-right .ebw-btn.ebw-btn--pill,
.tour-calendar-page .ebw-empty-state .ebw-btn.ebw-btn--pill{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  height:var(--pill-h); padding:0 20px; border-radius:999px;
  font:700 13px 'Montserrat',sans-serif; text-transform:uppercase; letter-spacing:.02em;
  background:var(--button-bg-color) !important; color:var(--button-font-color) !important;
  border:0 !important; cursor:pointer; text-decoration:none; line-height:1;
}
.tour-calendar-page .ebw-filters-right .ebw-btn.ebw-btn--pill:hover,
.tour-calendar-page .ebw-empty-state .ebw-btn.ebw-btn--pill:hover{
  background:var(--button-active-bg) !important;
}
.tour-calendar-page .ebw-filters-right .ebw-btn.ebw-btn--pill:active,
.tour-calendar-page .ebw-empty-state .ebw-btn.ebw-btn--pill:active{
  transform:translateY(0);
}
.tour-calendar-page .ebw-filters-right .ebw-btn.ebw-btn--pill:focus-visible,
.tour-calendar-page .ebw-empty-state .ebw-btn.ebw-btn--pill:focus-visible{
  outline:3px solid rgba(255,126,0,.55); outline-offset:2px;
}

/* Ghost (Reset) button — disabled state */
.ebw-btn.ebw-btn--ghost[disabled]{ opacity:.5; cursor:not-allowed; pointer-events:none; }

/* Disabled ghost button — no outline */
#ebw-clear-filters-mobile[disabled],
#ebw-clear-filters-mobile[disabled]:hover,
#ebw-clear-filters-mobile[disabled]:focus,
#ebw-clear-filters-mobile[disabled]:focus-visible{
  outline-color:transparent !important; box-shadow:none !important;
}

/* Ghost (Reset) button */
.ebw-btn.ebw-btn--ghost{
  display:inline-flex; align-items:center; justify-content:center;
  height:var(--pill-h); padding:0 14px; border-radius:999px;
  background:#fff; color:#333; border:1px solid #ddd; cursor:pointer;
  font:700 13px 'Montserrat',sans-serif; text-transform:uppercase; letter-spacing:.02em;
}
.ebw-btn.ebw-btn--ghost:hover{ background:#f7f7f7; }

/* Reset button: persistent transparent outline to avoid flash */
#ebw-clear-filters,
#ebw-clear-filters-mobile{
  outline:2px solid transparent; outline-offset:2px;
  transition:outline-color .12s ease; -webkit-tap-highlight-color:transparent;
}

/* Hover + keyboard focus */
#ebw-clear-filters:not([disabled]):hover,
#ebw-clear-filters:not([disabled]):focus-visible,
#ebw-clear-filters-mobile:not([disabled]):hover,
#ebw-clear-filters-mobile:not([disabled]):focus-visible{
  outline-color:#ff7e00; background:var(--chip-bg) !important; box-shadow:none;
}

/* Disabled ghost button — tablet (desktop CTA reset) */
#ebw-clear-filters[disabled],
#ebw-clear-filters[disabled]:hover,
#ebw-clear-filters[disabled]:focus,
#ebw-clear-filters[disabled]:focus-visible{
  outline-color:transparent !important; box-shadow:none !important;
  opacity:.6; cursor:not-allowed;
}

/* Keep the desktop CTA aligned in the grid */
#ebw-filters .ebw-filters-right{ display:flex; align-items:center; justify-content:flex-end; }

/* ===========================================================
   Submit Tour Dialog (modal)
   =========================================================== */
body.no-scroll{ overflow:hidden; }
.ebw-dialog.hidden{ display:none; }
.ebw-dialog{ position:fixed; inset:0; z-index:1100; display:flex; align-items:center; justify-content:center; }
.ebw-dialog__backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.6); }

.ebw-dialog__panel{
  position:relative; z-index:1; background:#fff; width:min(92vw,720px); max-height:90vh;
  overflow:auto; border-radius:12px; padding:18px 18px 8px; box-shadow:0 20px 60px rgba(0,0,0,.35);
}
.ebw-dialog__close{
  position:absolute; top:10px; right:12px; background:#fff; border:1px solid #ddd;
  width:32px; height:32px; border-radius:50%; color:#111; font-size:28px; line-height:1; cursor:pointer;
}
.ebw-dialog__close:hover{ background:#f7f7f7; }

/* CF7 form: compact, consistent spacing inside the modal */
#ebw-submit-tour-dialog .wpcf7-form p{ margin:14px 0; }
#ebw-submit-tour-dialog .wpcf7-form label{
  display:block; margin:0 0 8px; font-weight:600; color:#111;
}
/* Hide CF7 <br> injections */
#ebw-submit-tour-dialog .wpcf7-form label br,
#ebw-submit-tour-dialog .wpcf7-form .wpcf7-form-control-wrap + br{ display:none; }
#ebw-submit-tour-dialog .wpcf7-form .wpcf7-form-control-wrap{ display:block; margin:0; }
#ebw-submit-tour-dialog .wpcf7-not-valid-tip{ margin-top:6px; font-size:12px; line-height:1.35; }

#ebw-submit-tour-dialog .wpcf7-form input[type="text"],
#ebw-submit-tour-dialog .wpcf7-form input[type="email"],
#ebw-submit-tour-dialog .wpcf7-form input[type="url"],
#ebw-submit-tour-dialog .wpcf7-form input[type="file"],
#ebw-submit-tour-dialog .wpcf7-form textarea{
  width:100%; background:#f7f7f7; border:1px solid #ddd; color:#111; border-radius:10px; padding:12px 14px;
}

/* Submit button */
#ebw-submit-tour-dialog .wpcf7-form input.wpcf7-submit{
  display:block; margin:14px auto 0; padding:12px 26px;
  background:#ff6600; color:#fff; border:0; border-radius:9999px;
  font-weight:700; text-transform:uppercase; letter-spacing:.3px; line-height:1;
  cursor:pointer; box-shadow:none;
  transition:background .15s ease, box-shadow .15s ease;
  transform:none !important;
}
#ebw-submit-tour-dialog .wpcf7-form input.wpcf7-submit:hover{ background:#ff7e00; }
#ebw-submit-tour-dialog .wpcf7-form input.wpcf7-submit:active{ background:#ff5a00; }
#ebw-submit-tour-dialog .wpcf7-form input.wpcf7-submit[disabled]{ opacity:.55; cursor:not-allowed; pointer-events:none; }

/* Spinner + response */
#ebw-submit-tour-dialog .wpcf7 .wpcf7-spinner{ display:block; margin:8px auto 0; }
#ebw-submit-tour-dialog .wpcf7-response-output{ margin:8px 0 0; padding:8px 10px; }

/* Fix: mobile header overlapping the Submit Tour modal */
#ebw-submit-tour-dialog.ebw-dialog{
  z-index:2147483647 !important;
  padding-top:env(safe-area-inset-top, 0px);
}
@media (max-width:782px){
  #ebw-submit-tour-dialog.ebw-dialog{
    align-items:flex-start;
    padding-top:max(env(safe-area-inset-top, 0px), var(--ebw-modal-offset, 56px));
  }
  #ebw-submit-tour-dialog .ebw-dialog__panel{ margin-top:8px; }
}
#ebw-submit-tour-dialog .ebw-dialog__close{
  top:calc(10px + env(safe-area-inset-top, 0px));
}

/* Past toggle — locked visuals */
#ebw-filters .field-past .switch.locked{ cursor:not-allowed; }
#ebw-filters .field-past .switch.locked .switch-text{ color:#9aa0a6; }
#ebw-filters .field-past .switch.locked input:disabled + .switch-track{
  opacity:1; box-shadow:inset 0 0 0 1px #d5d5d5;
}
#ebw-filters .field-past .switch.locked .switch-track::after{ background:#fafafa; box-shadow:none; }
#ebw-filters .field-past .switch.locked.locked--on input:checked + .switch-track{ background:#cc5a00; }
#ebw-filters .field-past .switch.locked.locked--off input + .switch-track{ background:#e0e0e0; }

/* Bare-checkbox fallback when custom switch isn’t used */
#f-past:disabled{ background:#e0e0e0; border-color:#d0d0d0; cursor:not-allowed; }
#f-past:disabled::after{ background:#f9f9f9; box-shadow:none; }
#f-past:disabled:checked{ background:#cc5a00; border-color:#cc5a00; }

/* ===========================================================
   Reset Filters placement — desktop/tablet/mobile rules
   =========================================================== */

/* DESKTOP (≥1024px): Genre fills cols 3–4, Reset sits in col 5 */
@media (min-width:1024px){
  #ebw-filters .ebw-filters-right{
    grid-column:6; grid-row:1; justify-self:end; align-self:end;
    display:flex; align-items:center; gap:12px;
  }
  /* Right-CTA reset hidden on desktop */
  #ebw-clear-filters{ display:none !important; }

  /* Let the mobile-only wrapper participate in the grid on desktop */
  #ebw-filters > .mobile-only{ display:contents !important; }

  /* Genre group spans 2 cols and expands */
  #ebw-filters .genre-desktop{ grid-column:3 / span 2; grid-row:2; justify-self:stretch; align-self:end; width:100%; }
  #ebw-filters .genre-desktop > #f-genre{ width:100%; max-width:none; }

  /* Reset button snug to the right of Genre (col 5, row 2) */
  #ebw-clear-filters-mobile{
    grid-column:5; grid-row:2; justify-self:start; align-self:end;
    margin:0; white-space:nowrap;
  }
  #ebw-clear-filters-mobile:not([hidden]){ display:inline-flex; }
}

/* Safari fallback when display:contents isn't supported */
@supports not (display: contents){
  @media (min-width:1024px){
    #ebw-filters > .mobile-only{
      display:block !important; grid-column:5; grid-row:2; justify-self:start; align-self:end;
    }
    #ebw-clear-filters-mobile:not([hidden]){ display:inline-flex; margin:0; }
  }
}

/* TABLET (769–1023.98px): reset under Artist (left), submit on the right */
@media (min-width:769px) and (max-width:1023.98px){
  #ebw-filters .ebw-filters-right{
    display:flex; justify-content:space-between; align-items:center; width:100%; gap:12px; margin-top:10px;
  }
  #ebw-clear-filters-mobile{ display:none !important; } /* avoid duplication */
}

/* MOBILE (≤768px): full-width reset under the slider */
@media (max-width:768px){
  #ebw-clear-filters-mobile{ display:block; width:100%; margin-top:10px; }
  #ebw-clear-filters-mobile[disabled]{ opacity:.5; cursor:not-allowed; pointer-events:none; }
}

/* --- Boot/Hydration states (skeleton is supplied inline by PHP) --- */
#ebw-tour-calendar.is-booting #tour-filters,
#ebw-tour-calendar.is-booting .ebw-toolbar,
#ebw-tour-calendar.is-booting .ebw-grid {
  opacity: 0;
  visibility: hidden;
}

#ebw-tour-calendar .ebw-grid { transition: opacity .2s ease; }

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  #ebw-tour-calendar .ebw-grid { transition: none; }
}

/* --- Submit Tour dialog: make inner panel scrollable on small screens --- */
#ebw-submit-tour-dialog .ebw-dialog__panel {
  max-height: calc(100vh - var(--ebw-modal-offset, 0px) - 16px);
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

/* Keep a little breathing room so CF7 messages aren't clipped */
#ebw-submit-tour-dialog .wpcf7-form {
  padding-bottom: 16px;
}

/* --- Center Cloudflare Turnstile widget --- */
#ebw-submit-tour-dialog .cf-turnstile {
  display: flex;
  justify-content: center;
}
#ebw-submit-tour-dialog .cf-turnstile iframe {
  display: block;
  margin: 0 auto;
}

/* Secondary attendance controls: explicit layouts, native accessible disclosure. */
#ebw-filters .ebw-advanced-filters{grid-column:1/-1;grid-row:3;margin:6px 0 0;min-width:0}
#ebw-filters .ebw-advanced-filters summary{cursor:pointer;font:600 13px 'Montserrat',sans-serif;padding:10px 0;color:#333;width:fit-content}
#ebw-advanced-active{color:#ad3d00}
/* Keep the browser's native hiding of noscript when scripting is enabled.
   Forcing display:contents exposes its raw text and widens the final grid track. */
#ebw-filters noscript{grid-column:1/-1}
#ebw-filters .ebw-nojs-actions{grid-column:1/-1;display:flex;align-items:center;gap:12px;margin:10px 0}
#ebw-filters .ebw-attendance-filters{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);grid-template-areas:"venue from to";gap:12px;padding:10px 0;align-items:start}
#ebw-filters .field-venue{grid-area:venue}#ebw-filters .field-from{grid-area:from}#ebw-filters .field-to{grid-area:to}
#ebw-filters .ebw-attendance-field{min-width:0}
#ebw-filters .ebw-attendance-field > label{position:static!important;display:block!important;width:auto!important;height:auto!important;clip:auto!important;clip-path:none!important;overflow:visible!important;margin:0 0 6px!important;font:600 12px 'Montserrat',sans-serif;white-space:normal!important}
#ebw-filters input[type=date]{width:100%;height:var(--pill-h,44px);min-height:44px;min-width:0;max-width:100%;padding:10px 12px;border:1px solid var(--chip-border,#ddd);border-radius:var(--radius,10px);background:var(--chip-bg,#fff);color:var(--chip-text,#111);font:600 13px 'Montserrat',sans-serif;box-sizing:border-box}
#ebw-filters input[type=date]::-webkit-date-and-time-value{text-align:left}
#ebw-filters #f-venue-search{margin-bottom:10px}
#ebw-venue-hint{font-size:12px;margin:6px 0 0;line-height:1.4}
#ebw-filters summary:focus-visible,#ebw-filters .switch:focus-within{outline:2px solid #ff7e00;outline-offset:3px}
.ebw-calendar-progress{font:14px 'Montserrat',sans-serif;min-height:1.3em;margin:8px 0}
@media(min-width:640px) and (max-width:1023.98px){#ebw-filters .ebw-attendance-filters{grid-template-columns:1fr 1fr;grid-template-areas:"venue venue" "from to"}}
@media(max-width:639.98px){#ebw-filters .ebw-attendance-filters{grid-template-columns:1fr 1fr;grid-template-areas:"venue venue" "from to";gap:10px}}
@media(max-width:359.98px){#ebw-filters .ebw-attendance-filters{grid-template-columns:1fr;grid-template-areas:"venue" "from" "to"}}

#ebw-filters .ebw-advanced-filters summary{list-style:none}
#ebw-filters .ebw-advanced-filters summary::-webkit-details-marker{display:none}
#ebw-filters .ebw-advanced-filters summary::before{content:"+";display:inline-block;width:1.2em;color:#d45a00}
#ebw-filters .ebw-advanced-filters[open] summary::before{content:"−"}
@media(max-width:768px){#ebw-filters .ebw-filters-right{display:flex!important;justify-content:flex-end;margin:8px 0 0}#ebw-filters #ebw-clear-filters{display:none!important}}

/* The filter-row Submit tour CTA is desktop/tablet only; keep the empty-state CTA. */
@media (max-width:768px){
  .tour-calendar-page #ebw-filters #ebw-submit-tour-btn{display:none!important;}
}

/* Enhanced desktop genre control: a real anchored dropdown, not a native OS popup.
   JS adds is-genre-enhanced only once accessible buttons have been populated. */
#ebw-filters .ebw-genre-control{display:none}
@media (min-width:1024px){
  #ebw-filters .genre-desktop{position:relative;min-width:0}
  #ebw-filters .genre-desktop.is-genre-enhanced > #f-genre{
    position:absolute!important;width:1px!important;height:1px!important;
    padding:0!important;margin:0!important;opacity:0!important;pointer-events:none!important;
    overflow:hidden!important;clip-path:inset(50%)!important;
  }
  #ebw-filters .genre-desktop.is-genre-enhanced .ebw-genre-control{
    display:block;position:relative;width:100%;min-width:0;
  }
  #ebw-filters .ebw-genre-control > summary{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    height:var(--pill-h,44px);min-height:var(--pill-h,44px);
    padding:9px 16px;box-sizing:border-box;cursor:pointer;list-style:none;
    color:var(--chip-text,#111);background:var(--chip-bg,#fff);
    border:1px solid var(--chip-border,#ddd);border-radius:var(--radius,10px);
    font:600 13px/1.4 'Montserrat',sans-serif;text-transform:uppercase;
  }
  #ebw-filters .ebw-genre-control > summary::-webkit-details-marker{display:none}
  #ebw-filters .ebw-genre-control > summary::after{
    content:'';display:block;flex:0 0 8px;width:8px;height:8px;
    border-right:2px solid currentColor;border-bottom:2px solid currentColor;
    transform:rotate(45deg) translateY(-2px);transition:transform .15s ease;
  }
  #ebw-filters .ebw-genre-control[open] > summary::after{transform:rotate(225deg) translateY(-1px)}
  #ebw-filters .ebw-genre-control > summary:focus-visible{
    outline:2px solid var(--ebw-ui-accent,#ff4500);outline-offset:2px;
  }
  #ebw-filters .ebw-genre-options{
    position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:60;
    max-height:min(52vh,370px);overflow-y:auto;overscroll-behavior:contain;
    padding:4px 0;box-sizing:border-box;background:#fff;border:1px solid #ddd;
    box-shadow:0 12px 26px rgba(0,0,0,.13);border-radius:4px;
  }
  #ebw-filters .ebw-genre-options button{
    display:block;width:100%;min-height:36px;box-sizing:border-box;
    padding:8px 14px;border:0;border-radius:0;text-align:left;cursor:pointer;
    background:#fff;color:#111;font:500 13px/1.4 'Montserrat',sans-serif;text-transform:uppercase;
  }
  #ebw-filters .ebw-genre-options button:hover,
  #ebw-filters .ebw-genre-options button:focus-visible{background:#eee;outline:none}
  #ebw-filters .ebw-genre-options button[aria-pressed='true']{background:#777;color:#fff}
  #ebw-filters .ebw-genre-options button[aria-pressed='true']:hover,
  #ebw-filters .ebw-genre-options button[aria-pressed='true']:focus-visible{background:#555}
}
@media (prefers-reduced-motion:reduce){
  #ebw-filters .ebw-genre-control > summary::after{transition:none}
}
