.page-id-21987 #supersearchoverlay { display: none !important; }
/* Grey canvas (the artifact's --page). This page is a stack of bands and cards
   rather than a document, so the white needs something to sit ON: the summary
   strip and the result cards (.evlist .ev is already #fff) read as surfaces
   instead of dissolving into the page. Scoped to this page id only.

   Setting it on <body> alone does NOTHING: four containers paint white over it,
   and every one of them has to be named. .site and .content-area and .hentry in
   style.css, .site-main in css/mystyle2.css. body.page-id-N .x is (0,2,1) and
   beats all of them. .site-header and .site-footer are deliberately absent: the
   nav stays white and the footer stays navy. */
body.page-id-21987,
body.page-id-21987 .site,
body.page-id-21987 .site-main,
body.page-id-21987 .content-area,
body.page-id-21987 .hentry { background: #eef1f5; }

/* Trust chips, moved out of the hero (2026-08-11). Emitted twice in
   content-xx.php and mutually exclusive with no JS: #sr-invite is hidden by
   showResultsArea(), .entry-content-results is display:none until then. So the
   empty state shows them under the "enter your criteria" line, and the results
   state shows them under the list OR the map, whichever view is on.

   Why not the hero: two chip rows cost 57px of a 375px fold directly above the
   search card, and in the empty state there are no prices on screen for the
   promise to attach to. A visitor who arrives with ?params and so never sees the
   invite copy still meets the promise before any click-out, because result cards
   link to event pages on this site, and those carry the chips in their hero. */
.sr-trust .trust-strip { margin: 0; }
/* .sr-trust-invite and .sr-trust-results are gone: the chips no longer sit under
   the invite line or under the results. They live once, inside .sr-howto-legal at
   the top of the how-to block, so the short form (chips) and the long form (the
   legal note) are read together and sit in the same place on every visit. */
.sr-trust-howto { margin: 0 0 12px; }
.sr-trust-howto .trust-strip { justify-content: flex-start; }

/* Search results page */
#date_select { width: 100%; font-size: 16px; padding: 7px 5px 6px; border: 1px solid #ccc; margin-bottom: 5px; border-radius: 6px; height: 38px; color: #333; outline: none; border: none; }
#response-container .response { transition: opacity 0.15s ease; }
#response-container .response {
    display: block;
    float: none;
    clear: both;
}
.sr-empty-prompt {
    text-align: center;
    color: #666;
    font-size: 16px;
    padding: 40px 20px 20px;
}
.sr-empty-menus {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    max-width: 900px;
    margin: 0 auto;
    padding: 0 10px 40px;
}
.sr-empty-menu h3 {
    font-size: 15px;
    font-weight: 700;
    color: #295584;
    margin: 0 0 10px;
    padding-bottom: 6px;
    border-bottom: 2px solid #295584;
}
.sr-empty-menu-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.sr-empty-menu-list li a {
    display: block;
    padding: 6px 0;
    font-size: 14px;
    color: #333;
    text-decoration: none;
    border-bottom: 1px solid #f0f0f0;
}
.sr-empty-menu-list li a:hover {
    color: #295584;
}
.sr-empty-menu-list li:last-child a {
    border-bottom: none;
}
@media screen and (max-width: 640px) {
    .sr-empty-menus {
        grid-template-columns: 1fr;
        gap: 24px;
    }
}
.sr-container {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 10px;
}
.sr-section {
    margin-bottom: 30px;
}
.sr-section-title {
    font-size: 18px;
    font-weight: 700;
    color: #333;
    border-bottom: 2px solid #295584;
    padding-bottom: 8px;
    margin-bottom: 16px;
}
.sr-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

/* WP page result card */
.sr-card {
    display: flex;
    gap: 12px;
    padding: 12px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    background: #fff;
    transition: box-shadow .15s;
}
.sr-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,.08);
}
.sr-card .entry-thumbnail {
    flex-shrink: 0;
    width: 80px;
    height: 56px;
    overflow: hidden;
    border-radius: 4px;
}
.sr-card .entry-thumbnail img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.sr-card .sr-card-body {
    flex: 1;
    min-width: 0;
}
.sr-card .sr-card-body h2 {
    font-size: 15px;
    font-weight: 600;
    margin: 0 0 4px;
    line-height: 1.3;
}
.sr-card .sr-card-body h2 a {
    color: #295584;
    text-decoration: none;
}
.sr-card .sr-card-body h2 a:hover {
    text-decoration: underline;
}
.sr-card .sr-card-meta {
    font-size: 12px;
    color: #888;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Match card: MOVED OUT (2026-08-14). The event row is no longer .sr-match-card
   here and .ev on the listing pages: both draw <li class="ev"> from
   css/ft-eventcard.css, which is enqueued alongside this file on both search
   surfaces. The whole .sr-match-* vocabulary (card, date, day, daynum, month,
   year, info, title, comp, venue, clasico, price, .sr-price-badge) is retired,
   as are its @media 640px overrides and .sr-match-card.sr-match-past.
   .sr-match-types is NOT retired: the ticket-type pills keep their own name and
   stay in css/ft-components.css, because the event page's price rows use them.
   Do not re-add card rules here. */

/* Team/comp link card (in grid) */
a.sr-link-card,
.sr-link-card {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    background: #fff;
    transition: box-shadow .15s;
    text-decoration: none;
    color: inherit;
}
a.sr-link-card:hover,
.sr-link-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,.08);
}
.sr-link-card .sr-link-thumb {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    overflow: hidden;
    border-radius: 6px;
    border: 1px solid #ddd;
}
.sr-link-card .sr-link-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.sr-link-card .sr-link-thumb img.img_svg_icon {
    width: 50%;
    height: 50%;
    object-fit: contain;
}
.sr-link-card .sr-link-thumb.sr-placeholder-team img.img_svg_icon {
    width: 70%;
    height: 70%;
    object-fit: contain;
}

.sr-link-card .sr-link-body h3 {
    font-size: 14px;
    font-weight: 600;
    margin: 0 0 2px;
}
.sr-link-card .sr-link-body h3 {
    color: #295584;
}
a.sr-link-card:hover .sr-link-body h3 {
    text-decoration: underline;
}
.sr-link-card .sr-link-url {
    font-size: 11px;
    color: #888;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sr-link-card .sr-link-meta {
    font-size: 12px;
    color: #888;
    font-weight: 500;
}

/* Placeholder thumbnails */
.sr-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f3f4f6;
    border-radius: 6px;
}

/* Ticket type pills moved to ft-components.css: they are now used by the event
   page price rows as well as the search cards, and this file only loads under
   is_search(). Do not re-add them here. */

/* Pagination: MOVED OUT (2026-08-14). .sr-pagination / .sr-page-link and the
   listing's #pagination-bottom now share one look, defined once in
   css/ft-eventcard.css. The class names were NOT unified: each is a JS contract
   (ft_search_pagination.js emits <a class="sr-page-link">, sr_search.js emits
   <span class="sr-page-link">, fixtures-ajax.js delegates on
   "#pagination-bottom a.pagination-link"), so only the styling is shared. */

/* Matches toolbar: filter chips + sort */
.sr-matches-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 14px;
}
.sr-filter-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.sr-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    border: 1px solid #d1d5db;
    border-radius: 20px;
    background: #fff;
    color: #374151;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: background .15s, border-color .15s, color .15s;
    line-height: 1.3;
}
button.sr-filter-chip:hover {
    border-color: #295584;
    background-color: #e5e7eb;
}
.sr-filter-chip.active:hover {
    background-color: #295584;
    border-color: #295584;
    color: #fff;
}
.sr-filter-chip-official.active:hover {
    background: #099f7d;
    border-color: #099f7d;
    color: #fff;
}
.sr-filter-chip.active {
    background-color: #295584;
    border-color: #295584;
    color: #fff;
}
.sr-filter-chip[data-filter="vip"].active,
.sr-filter-chip[data-tt="ticket_hospitality"].active,
.sr-filter-chip[data-tt="ticket_hotel_hospitality"].active {
    background: #d9a300;
    border-color: #b88600;
    color: #fff;
}
#sr-official-chip {
    margin-bottom: 15px;
}
.sr-filter-chip-official {
    margin-right: 5px;
}
.sr-filter-chip-official.active {
    background: #099f7d;
    border-color: #099f7d;
    color: #fff;
}
/* Kill browser focus/active outline + WP button:active inflate */
button.sr-filter-chip:focus,
button.sr-filter-chip:active {
    outline: none;
}
button.sr-filter-chip:active {
    background-color: #fff;
    border: 1px solid #d1d5db;
    padding: 5px 12px;
}
button.sr-filter-chip.sr-chip-clasico:active {
    background-color: #fff;
    border: 1px solid #d1d5db;
    padding: 5px 12px 5px 24px;
}
button.sr-filter-chip.active:active {
    background-color: #295584;
    border: 1px solid #295584;
    padding: 5px 12px;
}
.sr-filter-chip.disabled {
    opacity: .4;
    cursor: default;
    pointer-events: none;
}
.sr-chip-clasico {
    padding-left: 24px;
    background-image: url("images/flame.svg");
    background-position: 8px center;
    background-size: 12px 12px;
    background-repeat: no-repeat;
}
.sr-filter-count {
    font-size: 11px;
    font-weight: 600;
    background: rgba(0,0,0,.08);
    padding: 1px 5px;
    border-radius: 10px;
    min-width: 14px;
    text-align: center;
}
.sr-filter-chip.active .sr-filter-count {
    background: rgba(255,255,255,.25);
}
.sr-comp-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    width: 100%;
    padding-top: 4px;
}
.sr-view-toggles {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin: 10px 0;
}
/* List / map: one segmented control. Both options stay on screen and the active
   one is lifted onto a white pill, instead of the old show-one-hide-the-other
   pair where the only visible button named the view you were NOT in. */
.vt {
    display: inline-flex;
    background: #e7ebf1;
    border-radius: 10px;
    padding: 3px;
    gap: 2px;
}
.vt-b {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    line-height: 1.2;
    text-transform: none;
    white-space: nowrap;
    color: #5f6f82;
    background: none;
    border: 0;
    border-radius: 8px;
    box-shadow: none;
    padding: 7px 12px;
    cursor: pointer;
}
.vt-b.is-on {
    background: #fff;
    color: #13274d;
    box-shadow: 0 1px 2px rgba(19, 39, 77, .14);
}
/* The theme paints every bare <button> blue, gives it a 2px border and a
   11px 24px padding, and INFLATES it on :active (style.css). Those rules are
   (0,1,1) on :hover/:active, so the base class alone does not beat them: pin
   each state at (0,2,1)+, same pattern as button.sr-filter-chip below. */
button.vt-b:hover {
    background: rgba(255, 255, 255, .55);
    color: #13274d;
}
button.vt-b.is-on:hover {
    background: #fff;
}
button.vt-b:focus {
    outline: none;
}
button.vt-b:active {
    background: none;
    border: 0;
    padding: 7px 12px;
    color: #13274d;
}
button.vt-b.is-on:active {
    background: #fff;
}
/* Results head: [Ordenar] then [Lista | Mapa], pushed right above the list.
   Sort is first in the DOM, so no order property is needed. Under 768px the
   segmented control is moved out of here by sr_search.js and the head is left
   holding the sort alone. */
.sr-results-head {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 10px;
}
.sr-results-head .sr-sort-wrap,
.sr-results-head .sr-view-toggles {
    margin: 0;
}
/* A map has no reading order, so the sort goes with it. This used to happen for
   free: the sort lived inside #response-container, which showMap() hides. */
#response_part.sr-map-view .sr-sort-wrap {
    display: none;
}
.sr-sort-wrap {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-shrink: 0;
    gap: 6px;
    font-size: 13px;
    color: #666;
    margin-bottom: 10px;
}
.sr-chips-toggle {
    display: inline-block;
    font-size: 12px;
    color: #295584;
    cursor: pointer;
    padding: 2px 0;
    margin-top: 4px;
}
.sr-chips-toggle:hover {
    text-decoration: underline;
}
#filterBy {
    width: auto;
}
#sr-country-filter {
    margin-top: 15px;
}
#sr-comp-filter {
    margin-top: 15px;
}
#sr-clasico-filter {
    margin-top: 15px;
}
.sr-icon-fire {
    display: inline-block;
    vertical-align: middle;
}
.sr-past-clasicos {
    margin-top: 25px;
    padding-top: 20px;
    border-top: 1px solid #e5e7eb;
}
.sr-past-clasicos-title {
    font-size: 16px;
    font-weight: 600;
    color: #333;
    margin: 0 0 12px;
}
.sub_label {
    font-size: 1em;
    line-height: 1.6;
    color: #777;
    display: block;
    font-weight: 700;
}
.sr-sort-select {
    padding: 5px 10px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font-size: 13px;
    background: #fff;
    color: #333;
    cursor: pointer;
    max-width: 100%;
}

/* Autocomplete dropdown */
.sr-ac-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 1000;
    background: #fff;
    border: 1px solid #d1d5db;
    border-top: none;
    border-radius: 0 0 8px 8px;
    box-shadow: 0 4px 12px rgba(0,0,0,.12);
    max-height: 360px;
    overflow-y: auto;
}
.sr-ac-header {
    font-size: 11px;
    font-weight: 700;
    color: #295584;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 8px 12px 4px;
    border-top: 1px solid #f0f0f0;
}
.sr-ac-header:first-child {
    border-top: none;
}
.sr-ac-item {
    padding: 7px 12px 7px 34px;
    cursor: pointer;
    font-size: 14px;
    color: #333;
    transition: background .1s;
    position: relative;
}
.sr-ac-item:before {
    content: " ";
    position: absolute;
    left: 10px;
    top: 50%;
    margin-top: -9px;
    width: 18px;
    height: 18px;
    background-size: 18px 18px;
    background-repeat: no-repeat;
}
.sr-ac-item.tid:before  { background-image: url("images/team.svg"); opacity: 1; }
.sr-ac-item.cid:before  { background-image: url("images/trophy.svg"); opacity: 1; }
.sr-ac-item.ciid:before { background-image: url("images/city.svg"); opacity: 1; }
.sr-ac-item.coid:before { background-image: url("images/country.svg"); opacity: 1; }
.sr-ac-item.vid:before  { background-image: url("images/venue.svg"); opacity: 1; }
#log div.all:before  { background-image: url("images/football.svg"); }
#log div.clid:before { background-image: url("images/flame.svg"); }
.sr-ac-item:hover,
.sr-ac-item.active {
    background: #f0f4ff;
}
.sr-ac-label b {
    font-weight: 700;
    color: #295584;
}
/* Pinned "pick one to search" hint: stays visible while the list scrolls,
   pulses when the user presses Enter on free text without picking. */
.sr-ac-hint {
    position: sticky;
    top: 0;
    background: #fff;
    z-index: 1;
}
.sr-ac-hint.sr-ac-pulse {
    animation: srAcHintPulse .9s ease;
}
@keyframes srAcHintPulse {
    0%   { background: #fff;    color: #295584; }
    25%  { background: #fff3cd; color: #8a6d1f; }
    100% { background: #fff;    color: #295584; }
}
/* Provider (merchant) chips reuse .sr-filter-chip; only the sub_label count
   needs styling. The group (#sr-provider-group) matches the other chip groups
   (label.sub_label + .sr-filter-chips), shown once sr_feeds is loaded. It sits
   LAST, after the derbies, and its chip list is collapsed until asked for: it
   refines a result set rather than defines one, and the merchant names should
   not be on screen by default. Collapse state lives on #sr-provider-disclose's
   aria-expanded, so the markup alone carries the initial closed state. */
#sr-provider-group {
    margin-top: 15px;
}
/* Both the select/deselect-all link and the show/hide link can sit in the
   Providers label at once, so keep them apart. */
.sr-provider-disclose {
    margin-left: 8px;
}
.sr-provider-count {
    font-weight: 400;
    color: #8a8a8a;
}
/* Softer active state: all providers are selected by default, so a wall of
   solid dark-blue chips is an eyesore. Light fill, dark text/border instead. */
#sr-provider-group .sr-filter-chip.active {
    background-color: #c8e1fb;
    border-color: #295584;
    color: #295584;
}
/* The two links in the Providers sub_label: show/hide, then select/deselect-all.
   margin-left sits on the shared class so both are spaced the same whichever is
   showing, rather than the gap depending on which one is currently rendered. */
.sr-toggle-all {
    font-weight: 400;
    font-size: 12px;
    color: #295584;
    cursor: pointer;
    text-decoration: underline;
    margin-left: 8px;
}

/* Availability switch. This IS a real <input type="checkbox">, only painted
   differently, which is the whole trick: the input is taken out of the layout
   with position/opacity (NOT display:none, which would drop it out of the tab
   order and out of form serialisation), and the sibling .sr-switch-track paints
   the track while its ::after paints the knob. The state change is pure CSS via
   input:checked + .sr-switch-track, so every existing read of
   #withavailonly.checked / .disabled keeps working with no JS change at all. */
.sr-switch {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-top: 15px;
    padding-top: 13px;
    border-top: 1px solid #e4e8ef;
    font-size: 13px;
    font-weight: 700;
    color: #13274d;
    cursor: pointer;
}
.sr-switch input {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: 0;
    padding: 0;
    border: 0;
    opacity: 0;
    pointer-events: none;
}
.sr-switch-track {
    position: relative;
    flex: none;
    width: 34px;
    height: 20px;
    border-radius: 20px;
    background: #d9e0ea;
    transition: background .15s;
}
.sr-switch-track::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
    transition: transform .15s;
}
.sr-switch input:checked + .sr-switch-track {
    background: #099f7d;
}
.sr-switch input:checked + .sr-switch-track::after {
    transform: translateX(14px);
}
/* The input itself is invisible, so its focus ring has to move to the track or
   keyboard users get no focus indication at all. */
.sr-switch input:focus-visible + .sr-switch-track {
    outline: 2px solid #295584;
    outline-offset: 2px;
}
/* doSearch() disables the box when it auto-unticks availability on a zero-result
   search. Show that, rather than leaving a dead control looking live. */
.sr-switch input:disabled + .sr-switch-track {
    opacity: .45;
}
@media (prefers-reduced-motion: reduce) {
    .sr-switch-track,
    .sr-switch-track::after {
        transition: none;
    }
}
/* Filters header: "Filters" label + the partial "Clear filters" link on one line. */
/* The rule under the header belongs to the ROW, not to the label. It used to be
   #additional_filters .big_label's own border-bottom, so it stopped wherever the
   label's text stopped and the clear link sat beside a bare stretch of nothing.
   The label also carried the 5px bottom padding while the link did not, so
   centre-alignment floated the link off the underline. Now the row owns the
   border and the padding, both items share a baseline, and the link is pushed
   right by margin-left:auto instead of the label stretching to shove it there.
   The link keeps visibility (not display) so showing it never reflows the row. */
.sr-filters-head {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin: 15px 0;
    padding-bottom: 5px;
    border-bottom: 1px solid #bbb;
}
#additional_filters #sr-filters-toggle {
    flex: 0 1 auto;
    margin: 0;
    padding: 0;
    border-bottom: 0;
}
.sr-clear-filters {
    margin-left: auto;
    font-size: 13px;
    font-weight: 600;
    color: #ca2427;
    cursor: pointer;
    white-space: nowrap;
}
.sr-clear-filters:hover { text-decoration: underline; }
/* Team type tag (W = women's) */
.tag {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1.4;
    letter-spacing: 0.04em;
    vertical-align: middle;
}
.tag-w {
    background: rgba(139, 108, 196, 0.18);
    color: #8b6cc4;
}

.sr-chip-x {
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
    margin-left: 2px;
    opacity: .7;
}
.sr-chip-x:hover {
    opacity: 1;
}

/* French datepicker */
.sr-dp-input {
    cursor: pointer;
    background: #fff;
}
.sr-dp {
    position: absolute;
    z-index: 100;
    background: #fff;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0,0,0,.12);
    padding: 10px;
    width: 260px;
    font-size: 13px;
    user-select: none;
}
.sr-dp-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}
.sr-dp-header span {
    font-weight: 700;
    font-size: 14px;
    color: #333;
}
.sr-dp-nav {
    background: none;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    cursor: pointer;
    padding: 2px 8px;
    font-size: 14px;
    color: #295584;
    line-height: 1;
}
.sr-dp-nav:hover {
    background: #f0f4ff;
}
.sr-dp-nav:focus,
.sr-dp-nav:active {
    outline: none;
    background: #f0f4ff;
    border: 1px solid #d1d5db;
    padding: 2px 8px;
    font-size: 14px;
}
.sr-dp-nav.disabled,
.sr-dp-nav.disabled:hover,
.sr-dp-nav.disabled:focus,
.sr-dp-nav.disabled:active {
    color: #ddd;
    border-color: #eee;
    cursor: default;
    background: none;
    padding: 2px 8px;
    font-size: 14px;
}
.sr-dp-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    text-align: center;
}
.sr-dp-dow {
    font-size: 11px;
    font-weight: 700;
    color: #888;
    padding: 4px 0;
    text-transform: capitalize;
}
.sr-dp-day {
    padding: 6px 0;
    border-radius: 4px;
    cursor: pointer;
    color: #333;
}
.sr-dp-day:hover {
    background: #e8eef6;
}
.sr-dp-day.today {
    font-weight: 700;
    color: #295584;
}
.sr-dp-day.selected {
    background: #295584;
    color: #fff;
}
.sr-dp-day.other-month {
    color: #ccc;
}
.sr-dp-day.other-month:hover {
    background: #f5f5f5;
}
.sr-dp-day.disabled {
    color: #ddd;
    cursor: default;
    pointer-events: none;
}

/* Invite message (before first search) */
.sr-invite {
    width: 100%;
    text-align: center;
    padding: 50px 20px 0;
    color: #777;
    font-size: 1em;
    line-height: 1.6;
}
.sr-invite i {
    display: block;
    font-size: 28px;
    color: #295584;
    margin-bottom: 12px;
}
/* Search summary strip (mig: supersearch redesign phase 2, 2026-08-11).
   Was one run-on sentence: "Tu busqueda: Milan, todas las fechas  editar".
   Now a flex strip, label + one pill per criterion + edit + the count pushed
   right, which is the artifact's .sum. The classes are unchanged on purpose:
   .sr-sum-item.tid / .cid / .ciid / .coid / .vid / .clid / .all and .sr-sum-date
   already carry a per-category icon as a background-image, so restyling them as
   pills keeps the icons for free rather than inlining SVG per chip. */
/* Full-bleed white band with a 1080px inner column, so it reads as a band across
   the page rather than a card floating on it, and its content still lines up with
   the hero H1 above and the results below. margin:0 lifts it tight under the
   form; the old border-left accent is gone, the band edge does that job now. */
.sr-search-summary {
    width: 100%;
    max-width: none;
    /* 0 on top so the band sits tight under the form; 8px below so the grey
       canvas shows as a seam between the band and the results. */
    margin: 0 auto 8px;
    padding: 0;
    color: #555;
    background: #fff;
    border-left: 0;
    border-radius: 0;
    /* Softener for the instant form -> strip swap. Opacity only, so it costs
       NOTHING in layout: nothing moves, nothing below shifts, which is the
       whole reason the collapse animation was dropped. renderTitle() adds
       .sr-sum-enter, forces a reflow, then removes it, but ONLY when the strip
       was hidden, so this fires on the search that reveals it and never on a
       sidebar filter re-render (renderTitle runs on every doSearch). */
    transition: opacity 0.15s ease;
}
.sr-search-summary.sr-sum-enter {
    opacity: 0;
}
/* 25px -> 20px at 999px is the step the theme applies to .entry-header and
   .entry-content in mystyle2.css. Repeating it here is what keeps this strip
   flush with the H1 rather than 5px out on tablets. */
.sr-search-summary .sum-inner {
    max-width: 1080px;
    margin: 0 auto;
    padding: 13px 25px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}
@media screen and (max-width: 999px) {
    .sr-search-summary .sum-inner { padding: 13px 20px; }
}
/* Uppercase mono label: it is a field name, not part of the sentence, so it
   stops competing with the criteria it introduces. */
.sr-search-summary .sum-l {
    font: 700 10px/1 ui-monospace, Menlo, monospace;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #5f6f82;
}
.sr-sum-item {
    display: inline-flex;
    align-items: center;
    /* left padding clears the icon, which stays a background-image */
    padding: 5px 11px 5px 28px;
    font-size: 12.5px;
    font-weight: 700;
    color: #13274d;
    background-color: #f2f5fa;
    border: 1px solid #e4e8ef;
    border-radius: 20px;
    background-repeat: no-repeat;
    background-size: 12px 12px;
    background-position: 11px center;
    margin-left: 0;
}
/* The count sits hard right, the one number the strip exists to report. */
.sr-search-summary .sum-count {
    margin-left: auto;
    font-size: 13px;
    color: #5f6f82;
    white-space: nowrap;
}
/* Bigger since the "Resultados: N partidos" bar was removed: this is now the
   only place the result count appears anywhere on the page, so it carries the
   weight that heading used to. line-height:1 keeps it from driving the strip
   taller than the pills beside it. */
.sr-search-summary .sum-count b {
    color: #13274d;
    font-size: 20px;
    font-weight: 800;
    line-height: 1;
}
@media only screen and (max-width: 568px) {
    /* margin-left:auto would strand the count on its own line at the far right;
       on one column it reads better back at the start. */
    .sr-search-summary .sum-count { margin-left: 0; }
    /* 20px is desktop emphasis; on one column it would dominate the criteria. */
    .sr-search-summary .sum-count b { font-size: 16px; }
}
.sr-sum-item.tid  { background-image: url("images/team.svg"); }
.sr-sum-item.cid  { background-image: url("images/trophy.svg"); }
.sr-sum-item.ciid { background-image: url("images/city.svg"); }
.sr-sum-item.coid { background-image: url("images/country.svg"); }
.sr-sum-item.vid  { background-image: url("images/venue.svg"); }
.sr-sum-item.clid { background-image: url("images/flame.svg"); }
.sr-sum-item.all  { background-image: url("images/football.svg"); }
.sr-sum-date      { background-image: url("images/calendar.svg"); }
/* margin-left is gone: the strip is a flex row with gap, so the old 10px would
   double up. Green rather than navy because this is the one action in a strip of
   statements. */
.sr-search-summary .sr-edit-link {
    color: #076f58;
    cursor: pointer;
    text-decoration: underline;
    font-size: 12.5px;
    font-weight: 700;
    white-space: nowrap;
}
.sr-search-summary .sr-edit-link:hover {
    color: #0a8368;
}
/* Header collapse/expand animation */
/* The form <-> one-line-summary swap is INSTANT on purpose. It used to be a
   0.5s max-height transition, which was the last slow thing left once the
   post-search scroll was removed: the form and the strip are two renderings of
   the same criteria, so this is a swap, not a journey. Nothing needs to move
   for it to be understood, and animating height moved every element below it.
   Restoring the animation = put the transition back on this rule; the class
   swap in expandHeader() (sr-header-hidden -> sr-header-collapsed + forced
   reflow) is kept for exactly that reason and is a harmless no-op meanwhile.
   Note max-height was 600px against a card nearer 310px, so half the easing
   traversed empty space: re-animate with a real height, not max-height. */
.page-id-21987 .sr-form-header {
    transition: none;
    max-height: 600px;
    opacity: 1;
}
.page-id-21987 .sr-form-header.sr-header-collapsed {
    max-height: 0;
    opacity: 0;
    margin: 0;
    padding: 0;
    overflow: hidden;
}
.page-id-21987 .sr-form-header.sr-header-hidden {
    max-height: 0;
    opacity: 0;
    margin: 0;
    padding: 0;
    overflow: hidden;
}

/* Results area layout */
.page-id-21987 .entry-content-results {
    max-width: 1100px;
    display: none;
    grid-template-columns: 25% minmax(0, 1fr);
    grid-template-rows: auto 1fr;
    gap: 0 1%;
    align-items: start;
}
#additional_filters {
    grid-column: 1;
    grid-row: 1 / 3;
    margin-top: 0;
}
#response_part {
    grid-column: 2;
    grid-row: 1;
    margin-left: 0;
    margin-top: 0;
    min-width: 0;
}
#response_part.sr-map-view {
    grid-row: 2;
}

/* Loading overlay (scoped to results area) */
#response_part {
    position: relative;
}
#response_part .listing-loading {
    display: none;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    min-height: 200px;
    z-index: 10;
    background: rgba(255,255,255,.9);
    border-radius: 8px;
}
#response_part .listing-loading .listing-loading-content {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 84px;
    height: 84px;
    margin: -42px 0 0 -42px;
    font-weight: bold;
}
#response_part .listing-loading .listing-loading-image {
    width: 84px;
    font-size: 48px;
    color: #295584;
    text-align: center;
}
#loader {
    font-size: 1em;
    width: 1em;
}
.listing-loading-text {
    font-size: 14px;
    color: #666;
    text-align: center;
    margin-top: 10px;
    white-space: nowrap;
}

/* How-to / instructions block */
.sr-howto {
    max-width: 1100px;
    margin: 30px auto 0;
    padding: 24px 20px;
    background: #f8f9fb;
    border-radius: 10px;
    border: 1px solid #e5e7eb;
}
.sr-howto-title {
    font-size: 17px;
    font-weight: 700;
    color: #295584;
    margin: 0 0 18px;
    padding-bottom: 10px;
    border-bottom: 2px solid #295584;
}
.sr-howto-title i {
    margin-right: 6px;
}
.sr-howto-row {
    display: flex;
    gap: 16px;
    margin-bottom: 16px;
}
.sr-howto-row:last-child {
    margin-bottom: 20px;
}
.sr-howto-row .sr-howto-item {
    flex: 1;
}
.sr-howto-row-single .sr-howto-item {
    flex: none;
    width: 100%;
}
.sr-howto-item {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 14px 16px;
}
.sr-howto-item h3 {
    font-size: 1.1em;
    font-weight: 700;
    color: #333;
    margin: 15px 0 5px;
}
.sr-howto-item h3 i {
    color: #295584;
    margin-right: 4px;
}
.sr-howto-item h3 .sr-howto-icon {
    width: 14px;
    height: 14px;
    vertical-align: middle;
    margin-right: 4px;
}
.sr-howto-item h3 .sr-howto-flag-icon {
    width: 16px;
    height: 12px;
    vertical-align: middle;
    margin-right: 2px;
    margin-top: -3px;
}
.sr-howto-item p {
    font-size: 1em;
    color: #555;
    line-height: 1.55;
    margin: 15px 0;
    max-width: 100%;
    text-align: left;
}
.sr-howto-item ul li {
    font-size: 13px;
}
.sr-howto-item h3.sr-howto-official {
    color: #099f7d;
}
b.sr-howto-official {
    color: #099f7d;
}
.sr-howto-dummy-everything {
    display: inline-block;
    background: #0075ff;
    color: #fff;
    padding: 3px 10px 8px;
    text-align: center;
    border: 2px solid #fff;
    margin-top: 8px;
    pointer-events: none;
}
.sr-howto-dummy-everything span {
    font-size: 0.8em;
    line-height: 1;
    display: block;
}
.sr-howto-dummy-chip,
.sr-howto-dummy-chips {
    margin-top: 0px;
    margin-bottom: 25px;
    pointer-events: none;
}
.sr-howto-dummy-chips .sr-filter-chip {
    margin-bottom: 4px;
}
.sr-howto-sep {
    font-size: 12px;
    color: #888;
    margin: 0 2px;
}
.sr-howto-pill {
    display: inline-block;
    padding: 0 10px 0 22px;
    background-position-x: 5px;
    border: 1px solid #d1d5db;
    border-radius: 20px;
    background-color: #fff;
    color: #374151;
    font-size: 12px;
    margin-right: 4px;
    margin-bottom: 4px;
}
.sr-howto-legal {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 14px 16px;
    margin-bottom: 16px;
}
.sr-howto-legal p {
    font-size: 1em;
    color: #888;
    line-height: 1.55;
    margin: 0;
    max-width: 100%;
}
.sr-howto-legal b {
    color: #666;
}

/* Price histogram */
.sr-histo {
    display: flex;
    align-items: flex-end;
    gap: 1px;
    height: 80px;
    margin-top: 8px;
    border-bottom: 1px solid #ddd;
}
.sr-histo-bar {
    flex: 1;
    min-width: 0;
    background: #ddd;
    border-radius: 2px 2px 0 0;
    transition: background .15s;
    position: relative;
    cursor: default;
}
.sr-histo-bar.sr-histo-active {
    background: #4198d8;
}
.sr-histo-bar:hover::after {
    content: attr(data-tip);
    position: absolute;
    bottom: calc(100% + 6px);
    left: 50%;
    transform: translateX(-50%);
    background: #333;
    color: #fff;
    font-size: 11px;
    padding: 3px 7px;
    border-radius: 4px;
    white-space: nowrap;
    z-index: 10;
    pointer-events: none;
}
.sr-histo-bar:nth-child(-n+5):hover::after {
    left: 0;
    transform: none;
}
.sr-histo-bar:nth-last-child(-n+5):hover::after {
    left: auto;
    right: 0;
    transform: none;
}

/* Price range slider (dual handle) */
.sr-range-wrap {
    position: relative;
    height: 28px;
    margin: 8px 0 4px;
}
.sr-range-track-bg {
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    height: 4px;
    margin-top: -2px;
    background: #ddd;
    border-radius: 2px;
    pointer-events: none;
}
.sr-range-track-fill {
    position: absolute;
    top: 50%;
    height: 4px;
    margin-top: -2px;
    background: #4198d8;
    border-radius: 2px;
    pointer-events: none;
    left: 0;
    width: 100%;
}
.sr-range-input {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    background: transparent;
    outline: none;
    position: absolute;
    top: 50%;
    margin-top: -9px;
    left: 0;
    pointer-events: none;
    height: 4px;
    border: none;
}
input.sr-range-input:focus { border: none; }
.sr-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #295584;
    cursor: pointer;
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,.2);
    position: relative;
    z-index: 2;
    pointer-events: auto;
}
.sr-range-input::-moz-range-thumb {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #295584;
    cursor: pointer;
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,.2);
    pointer-events: auto;
}
.sr-range-labels {
    display: flex;
    justify-content: center;
    font-size: 13px;
    font-weight: 600;
    color: #295584;
    margin-top: 2px;
    margin-bottom: 15px;
}

/* Map expanded view */
/* Map view keeps the results column exactly as wide as list view. It used to
   widen .entry-content-results to 1800px and the summary strip to 1780px, so
   switching views resized the whole page against the rest of the site. The two
   views are one result set rendered two ways, so the area they render into
   holds still. Only the map's own height still grows, now keyed off the
   existing .sr-map-view state class instead of a second class. */
#response_part.sr-map-view #mapcontainer {
    height: calc(90vh - 137px);
    min-height: 500px;
}


/* Page 21987 spacing overrides */
.page-id-21987 footer.entry-meta { margin-top: 0; }
.page-id-21987 .hentry { padding-bottom: 0; }
.page-id-21987 h2 { text-align: center; }

/* Mobile-only chrome. #sr-filters-sheet itself keeps no rule here: on desktop
   it is a plain wrapper div and the filters simply sit in the rail, exactly as
   before. Only its grab / head / foot and the scrim are mobile furniture. */
.sr-filters-arrow,
.sr-filters-count,
.sr-sheet-grab,
.sr-sheet-head,
.sr-sheet-foot,
.sr-sheet-scrim {
    display: none;
}
/* No display here on purpose: the rule above hides it, the media query below
   shows it. The desktop rail shows every filter and its state directly, so a
   count would only repeat what is already on screen. JS toggles it with
   style.display = '' / 'none', so the breakpoint stays the CSS's decision. */
.sr-filters-count {
    min-width: 18px;
    padding: 1px 6px;
    border-radius: 20px;
    background: #099f7d;
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.5;
    text-align: center;
}

/* Responsive */
@media screen and (max-width: 768px) {
    .page-id-21987 .entry-content-results {
        grid-template-columns: minmax(0, 1fr);
    }
    /* The rail stops being a card and becomes a toolbar row: the Filtros
       trigger on the left, the list/map segmented control on the right. The
       sheet and its scrim are position:fixed children, so they are out of flow
       and never become flex items here. */
    #additional_filters {
        grid-column: 1;
        grid-row: auto;
        order: -1;
        display: flex;
        align-items: center;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: 10px;
        background: none;
        border: 0;
        padding: 0;
    }
    #additional_filters .sr-view-toggles {
        margin: 0;
    }
    /* No rule under it here: the head is just the trigger button in the toolbar
       row, so the desktop border and padding come back off. */
    #additional_filters .sr-filters-head {
        order: -1;
        margin: 0;
        padding-bottom: 0;
        border-bottom: 0;
    }
    /* The sheet footer carries its own Borrar, so the rail link is redundant. */
    #additional_filters #sr-clear-filters {
        display: none;
    }
    /* The segmented control has moved into the toolbar row above, so the head is
       left with the sort alone, kept right where it is on desktop. The old
       .sr-sort-wrap{justify-content:flex-start} override went with the results
       title it used to sit under. */
    #response_part.sr-map-view .sr-results-head {
        margin-bottom: 0;
    }
    /* Row 2 with the results bar gone. It used to sit at row 3 to clear the
       bar, which shared row 2 and collided with the sort dropdown. */
    #response_part {
        grid-column: 1;
        margin-top: 10px;
        grid-row: 2;
    }
    #response_part.sr-map-view {
        grid-row: 2;
        margin-top: 0;
    }
    /* Sheet trigger. Beats #additional_filters .big_label (1,1,0), which would
       otherwise impose the rail heading's block display, underline and 15px
       margins. The chevron stays hidden: this opens a sheet, not a disclosure. */
    .sr-filters-count {
        display: inline-block;
    }
    #additional_filters #sr-filters-toggle {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        flex: none;
        margin: 0;
        padding: 8px 12px;
        border: 1px solid #e4e8ef;
        border-radius: 9px;
        background: #fff;
        font-size: 12.5px;
        font-weight: 700;
        line-height: 1.2;
        color: #13274d;
        white-space: nowrap;
        cursor: pointer;
    }

    /* --- Filters as a bottom sheet ---------------------------------------- */
    /* Above the site chrome on purpose. The scrolled sticky header is
       position:fixed z-index:11 and traps its own descendants (the mobile menu
       overlay) at that level, so 9990+ in the page root covers the lot, which
       is what a modal should do. See the #mapcontainer note above, which caps
       Leaflet the other way for the opposite reason. */
    .sr-sheet-scrim {
        display: block;
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 9990;
        background: rgba(11, 25, 48, .5);
        opacity: 0;
        visibility: hidden;
        transition: opacity .2s, visibility .2s;
    }
    .sr-filters-sheet {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 9991;
        display: flex;
        flex-direction: column;
        max-height: 86vh;
        max-height: 86dvh;
        background: #fff;
        border-radius: 16px 16px 0 0;
        box-shadow: 0 -8px 26px rgba(9, 20, 40, .24);
        transform: translateY(101%);
        visibility: hidden;
        transition: transform .26s cubic-bezier(.2, .7, .3, 1), visibility .26s;
    }
    body.sr-sheet-open .sr-filters-sheet {
        transform: none;
        visibility: visible;
    }
    body.sr-sheet-open .sr-sheet-scrim {
        opacity: 1;
        visibility: visible;
    }
    /* Scroll lock lives in the media query too, so the trigger is completely
       inert above this breakpoint rather than locking a page with no sheet. */
    body.sr-sheet-open {
        overflow: hidden;
    }
    .sr-sheet-grab {
        display: block;
        flex: none;
        width: 38px;
        height: 4px;
        margin: 9px auto 0;
        border-radius: 4px;
        background: #d3dae4;
    }
    .sr-sheet-head {
        display: flex;
        flex: none;
        align-items: center;
        justify-content: space-between;
        padding: 10px 14px;
    }
    .sr-sheet-title {
        font-size: 15px;
        font-weight: 800;
        color: #13274d;
    }
    .sr-sheet-x {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 30px;
        height: 30px;
        padding: 0;
        border: 0;
        border-radius: 8px;
        background: #f2f5fa;
        color: #13274d;
        font-size: 13px;
        line-height: 1;
        cursor: pointer;
    }
    /* Only the content scrolls: the head and foot stay put. */
    .sr-filters-content {
        display: block;
        flex: 1;
        min-height: 0;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        padding: 0 14px;
    }
    .sr-sheet-foot {
        display: flex;
        flex: none;
        gap: 9px;
        padding: 11px 14px 14px;
        padding-bottom: calc(14px + env(safe-area-inset-bottom));
        border-top: 1px solid #e4e8ef;
        background: #fafbfd;
    }
    .sr-sheet-clear,
    .sr-sheet-go {
        font-family: inherit;
        font-weight: 700;
        line-height: 1.2;
        text-transform: none;
        border-radius: 10px;
        cursor: pointer;
    }
    .sr-sheet-clear {
        flex: none;
        padding: 12px 15px;
        border: 1px solid #e4e8ef;
        background: #fff;
        color: #5f6f82;
        font-size: 13px;
    }
    .sr-sheet-go {
        flex: 1;
        padding: 12px;
        border: 0;
        background: #099f7d;
        color: #fff;
        font-size: 14px;
        font-weight: 800;
    }
    /* Same theme :hover / :active overrides the .vt-b and .sr-filter-chip
       buttons need: those rules are (0,1,1) and would otherwise repaint and
       inflate these on tap. */
    button.sr-sheet-x:hover { background: #e7ebf1; }
    button.sr-sheet-x:active { background: #e7ebf1; border: 0; padding: 0; }
    button.sr-sheet-clear:hover { background: #f7f9fc; color: #13274d; }
    button.sr-sheet-clear:active { background: #fff; border: 1px solid #e4e8ef; padding: 12px 15px; }
    button.sr-sheet-go:hover { background: #078568; }
    button.sr-sheet-go:active { background: #078568; border: 0; padding: 12px; }
    button.sr-sheet-x:focus,
    button.sr-sheet-clear:focus,
    button.sr-sheet-go:focus { outline: none; }

    .sr-howto-row {
        flex-direction: column;
    }
    .sr-howto {
        padding: 16px 14px;
    }
}
/* The sheet still opens and closes, it just arrives instead of sliding.
   visibility stays in the transition list so it flips at the right end. */
@media screen and (max-width: 768px) and (prefers-reduced-motion: reduce) {
    .sr-filters-sheet,
    .sr-sheet-scrim {
        transition: none;
    }
}
@media screen and (max-width: 640px) {
    .sr-grid {
        grid-template-columns: 1fr;
    }
}

/* Keep the Leaflet map beneath the site chrome. Leaflet's controls reach
   z-index:1000, which otherwise paints over the desktop nav dropdown (z-index:19)
   and the mobile menu overlay (which, once ft_scroll.js makes the header
   position:fixed z-index:11 on scroll, is trapped at that level). A low stacking
   context on the container caps every Leaflet layer below the chrome. */
#mapcontainer {
    position: relative;
    z-index: 0;
}

/* Map: always-on min-price label below each venue pin.
   Lives on the individual marker's divIcon, so clusters (which use their own
   cluster icon) never show it: the price appears on pins only. */
.sr-vpin {
    background: transparent;
    border: 0;
    pointer-events: none;
}
.sr-vpin-svg {
    display: block;
    pointer-events: auto;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.4));
}
.sr-vpin-price {
    pointer-events: auto;
    position: absolute;
    left: 50%;
    top: 100%;
    transform: translateX(-50%);
    margin-top: 1px;
    white-space: nowrap;
    background: #fff;
    color: #0e2a44;
    font-weight: 700;
    font-size: 11px;
    line-height: 1.35;
    padding: 1px 6px;
    border-radius: 9px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
}
