/* The print, PDF and online artwork share the original 2000 × 647 ticket. */
.ticket-page {
    min-height: 100svh;
    grid-template-columns: minmax(0, 1fr);
    align-content: center;
    gap: 18px;
}
.ticket-art-scroll { overflow: hidden; }
.ticket-artwork { min-width: 0; }
.ticket-art-table { font-size: 2.55cqw; }
.ticket-art-code {
    flex-direction: row;
    font-size: 1.8cqw;
    letter-spacing: 0;
}
.ticket-art-qr {
    position: absolute;
    left: 84.75%;
    top: 60.12%;
    width: 11.7%;
    display: block;
}
.ticket-art-qr img {
    width: 100%;
    height: auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: white;
    image-rendering: auto;
}
.ticket-summary {
    width: min(1380px, 100%);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    padding: 14px 18px;
    color: var(--ivory);
    background: rgba(255, 255, 255, 0.035);
    border: 1px solid rgba(229, 201, 120, 0.18);
}
.ticket-summary h1 { margin: 8px 0 4px; font-size: clamp(20px, 2.8vw, 30px); color: var(--gold-100); }
.ticket-summary p { margin: 4px 0; font-size: 14px; }
.ticket-summary .button { flex: none; }
.ticket-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ticket-nowrap { white-space: nowrap; }
.ticket-mobile-entry { display: none; }
.door-art-ticket { width: min(1500px, 100%); }
.door-art-picture { display: block; width: 100%; height: auto; }
.door-art-ticket .door-presented-footer { flex-wrap: wrap; }
.door-art-ticket .door-presented-footer > span { flex: 1 1 280px; }
.door-art-ticket .door-presented-footer strong { font-family: ui-monospace, monospace; letter-spacing: 0.08em; }
@media (max-width: 640px) {
    .ticket-page { padding: 20px 12px; }
    .ticket-summary { flex-direction: column; align-items: flex-start; gap: 12px; }
    .ticket-mobile-entry {
        display: grid;
        justify-items: center;
        gap: 9px;
        width: min(340px, 100%);
        padding: 18px;
        color: var(--ivory);
        border: 1px solid rgba(229, 201, 120, 0.3);
        background: var(--green-850);
    }
    .ticket-mobile-entry > span { color: var(--gold-100); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; }
    .ticket-mobile-entry > strong { font: 700 26px ui-monospace, monospace; letter-spacing: 0.04em; }
    .ticket-mobile-entry img { width: 200px; max-width: 100%; height: auto; }
    .ticket-mobile-entry small { text-align: center; font-size: 12px; }
}
@media print {
    @page { size: A4 landscape; margin: 12mm; }
    /* Screen-height units can add a blank sheet in Firefox's paged layout. */
    .ticket-body, .ticket-page { min-height: 0; height: auto; padding: 0; }
    .ticket-page { display: block; }
    .ticket-art-card {
        width: 260mm;
        max-width: 100%;
        margin: 30mm auto 0;
        border: 0;
        break-inside: avoid;
        page-break-inside: avoid;
    }
    /* Physical print sizes don't depend on cqw/container support in print preview. */
    .ticket-artwork { container-type: normal; }
    .ticket-art-table { font-size: 16pt; letter-spacing: 0; white-space: nowrap; }
    .ticket-art-code { font-size: 12pt; }
    .ticket-summary, .ticket-mobile-entry, .ticket-seat-map { display: none; }
}
