/* The ticket site and the seat maps (also used on the admin site). */
.tickets-bar { background: #3b2a6b; }
.tickets-site { background: #f7f6fb; }
.show-card img { aspect-ratio: 3 / 2; object-fit: cover; }
.show-poster { max-height: 26rem; object-fit: contain; }

/* Seat map: an SVG in a scrollable box, zoomed with the buttons. */
.seat-map-box { overflow: auto; border: 1px solid var(--bs-border-color); border-radius: .5rem; background: #fff; touch-action: pan-x pan-y; max-height: 70vh; }
.seat-map-box svg { display: block; margin: 0 auto; user-select: none; -webkit-user-select: none; }
.seat-map-box .seat { cursor: pointer; stroke: rgba(0, 0, 0, .25); stroke-width: .08; }
.seat-map-box .seat[data-state="Unavailable"] { stroke: #adb5bd; stroke-width: .1; stroke-dasharray: .25 .15; }
.seat-map-box .seat[data-state="Unavailable"],
.seat-map-box .seat[data-state="Sold"],
.seat-map-box .seat[data-state="Held"] { cursor: not-allowed; }
.seat-map-box .seat.selected { stroke: #111; stroke-width: .35; }
.seat-map-box .seat-mark { pointer-events: none; font-size: .9px; font-weight: 700; }
.seat-map-box .row-label { font-size: .9px; fill: #6c757d; cursor: pointer; }
.seat-map-box .stage { fill: #e9ecef; }
.seat-map-box .stage-label { font-size: 1px; fill: #495057; letter-spacing: .15px; }
.seat-map-box .drag-box { fill: rgba(13, 110, 253, .12); stroke: #0d6efd; stroke-width: .08; }
.tier-swatch { display: inline-block; width: 1rem; height: 1rem; border-radius: .25rem; vertical-align: -.15rem; border: 1px solid rgba(0, 0, 0, .2); }
.hold-timer { font-variant-numeric: tabular-nums; }

/* Tickets: one per seat, printable one per page. */
.ticket-card { border: 2px dashed #3b2a6b; border-radius: .75rem; background: #fff; }
.ticket-card .qr svg { width: 100%; max-width: 14rem; height: auto; }
@media print {
    .tickets-bar, footer, .no-print { display: none !important; }
    .tickets-site { background: #fff; }
    .ticket-card { break-inside: avoid; page-break-after: always; }
}

/* Door scanning result. */
.scan-result { border-radius: 1rem; color: #fff; }
.scan-ok { background: #198754; }
.scan-bad { background: #dc3545; }
