.epr-selector{background:#f7f7f8;min-height:70vh;padding:32px 16px;color:#191919}.epr-shell{max-width:920px;margin:0 auto;background:#fff;border:1px solid #e5e5e5;border-radius:18px;padding:24px;box-shadow:0 8px 28px rgba(0,0,0,.06)}.epr-eyebrow{color:#b21917;font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:.78rem}.epr-header h1{margin:.2rem 0}.epr-price{font-size:1.15rem;font-weight:700}.epr-summary{display:flex;gap:24px;flex-wrap:wrap;padding:14px 0;border-top:1px solid #eee;border-bottom:1px solid #eee;margin:20px 0}.epr-search-row,.epr-lucky,.epr-pagination{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}.epr-selector input{min-height:44px;border:1px solid #bbb;border-radius:8px;padding:8px 12px}.epr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:8px;margin:18px 0}.epr-number{min-height:44px;min-width:44px;border:1px solid #cfcfcf;background:#fff;border-radius:8px;font-weight:700;cursor:pointer}.epr-number:focus-visible,.epr-button:focus-visible,.epr-selector input:focus-visible{outline:3px solid #111;outline-offset:2px}.epr-number.is-selected{background:#b21917;color:#fff;border-color:#b21917}.epr-number:disabled{cursor:not-allowed;background:#eee;color:#666;text-decoration:line-through}.epr-button{min-height:44px;border-radius:9px;padding:10px 16px;font-weight:700;cursor:pointer}.epr-button-primary{width:100%;background:#b21917;color:#fff;border:1px solid #b21917;margin-top:18px}.epr-button-secondary{background:#fff;color:#191919;border:1px solid #aaa}.epr-live{min-height:24px;margin-top:12px;font-weight:600}.epr-notice{padding:12px;border:1px solid #b21917;border-radius:8px;margin-top:14px}@media(max-width:520px){.epr-shell{padding:18px 12px}.epr-grid{grid-template-columns:repeat(4,1fr)}}

/* Raffle products replace the quantity + add-to-cart cell in product loops and the
   Tickera event ticket table with a single link to the number selector. */
.epr-loop-select { display: flex; justify-content: flex-end; }
.epr-loop-select .epr-select-numbers {
    display: inline-block;
    background: #b21917 !important;
    color: #ffffff !important;
    border: 0 !important;
    border-radius: 3px;
    padding: 10px 18px;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none !important;
    transition: none !important;
}
.epr-loop-select .epr-select-numbers:hover,
.epr-loop-select .epr-select-numbers:focus {
    background: #8f1412 !important;
    color: #ffffff !important;
}
.epr-loop-select .epr-select-numbers:focus-visible {
    outline: 3px solid #ffffff;
    outline-offset: 2px;
    box-shadow: 0 0 0 5px #b21917;
}

/* Theme override guard.
   The active EventPro theme styles bare <button> elements with white text, which made
   every number invisible against the white tile: readable only on hover or once selected.
   Colour, background and border are therefore stated explicitly with !important on every
   state, and transition is disabled, matching the convention used elsewhere in EventPro
   for theme-resistant controls. State must not be conveyed by colour alone, so the
   disabled states also keep their strike-through and title text. */
.epr-selector .epr-number,
.epr-selector button.epr-number {
    color: #191919 !important;
    background: #ffffff !important;
    border: 1px solid #cfcfcf !important;
    text-shadow: none !important;
    transition: none !important;
    -webkit-text-fill-color: #191919;
}
.epr-selector .epr-number:hover,
.epr-selector .epr-number:focus {
    color: #191919 !important;
    background: #f2f2f2 !important;
    border-color: #b21917 !important;
    -webkit-text-fill-color: #191919;
}
.epr-selector .epr-number.is-selected,
.epr-selector button.epr-number.is-selected,
.epr-selector .epr-number.is-selected:hover,
.epr-selector .epr-number.is-selected:focus {
    color: #ffffff !important;
    background: #b21917 !important;
    border-color: #b21917 !important;
    -webkit-text-fill-color: #ffffff;
}
.epr-selector .epr-number:disabled,
.epr-selector button.epr-number:disabled,
.epr-selector .epr-number:disabled:hover {
    color: #666666 !important;
    background: #ebebeb !important;
    border-color: #d5d5d5 !important;
    -webkit-text-fill-color: #666666;
    text-decoration: line-through;
    cursor: not-allowed;
}
.epr-selector .epr-button,
.epr-selector button.epr-button {
    transition: none !important;
    -webkit-text-fill-color: currentColor;
}
.epr-selector .epr-button-primary,
.epr-selector button.epr-button-primary {
    color: #ffffff !important;
    background: #b21917 !important;
    border: 1px solid #b21917 !important;
    -webkit-text-fill-color: #ffffff;
}
.epr-selector .epr-button-secondary,
.epr-selector button.epr-button-secondary {
    color: #191919 !important;
    background: #ffffff !important;
    border: 1px solid #aaaaaa !important;
    -webkit-text-fill-color: #191919;
}

.epr-selector .epr-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 18px; }
.epr-selector .epr-actions .epr-button-primary { flex: 1 1 auto; margin-top: 0; }
.epr-selector .epr-actions .epr-button-secondary { flex: 0 0 auto; }

/* Busy state. The add request plus redirect is slow enough that an unchanged button reads
   as a dead click, so the controls are locked and visibly change while it runs. */
.epr-selector.is-busy { cursor: progress; }
.epr-selector.is-busy .epr-grid { opacity: .55; pointer-events: none; }
.epr-selector .epr-button[disabled],
.epr-selector button.epr-button[disabled] { opacity: .75; cursor: progress; }
.epr-selector .epr-button[aria-busy="true"]::after {
    content: "";
    display: inline-block;
    width: 13px;
    height: 13px;
    margin-left: 9px;
    vertical-align: -2px;
    border: 2px solid rgba(255, 255, 255, .45);
    border-top-color: #ffffff;
    border-radius: 50%;
    animation: epr-spin .7s linear infinite;
}
@keyframes epr-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
    .epr-selector .epr-button[aria-busy="true"]::after { animation: none; }
}
