/* OBTV3 · Billetterie publique · Lot 4 */
.ticketing-public-page {
    --ticketing-ink: var(--obt-text-color, #202124);
    --ticketing-paper: var(--obt-background-color, #fff);
    --ticketing-accent: var(--obt-accent-color, #d6b569);
    --ticketing-border: rgba(33, 33, 33, .16);
    --ticketing-muted: #65676b;
    --ticketing-success: #176b45;
    --ticketing-danger: #a12d2d;
    --ticketing-warning: #8a5a00;
    color: var(--ticketing-ink);
}

.ticketing-public-page *,
.ticketing-public-page *::before,
.ticketing-public-page *::after { box-sizing: border-box; }

.ticketing-page-title > p,
.ticketing-section-heading > p { max-width: 760px; margin: 10px auto 0; color: var(--ticketing-muted); }

.ticketing-filter-panel {
    margin: 0 0 34px;
    padding: 24px;
    border: 1px solid var(--ticketing-border);
    border-top: 3px solid var(--ticketing-accent);
    background: var(--ticketing-paper);
}
.ticketing-filter-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.ticketing-filter-grid label,
.ticketing-form-grid label,
.ticketing-promo-field,
.ticketing-full-field { display: grid; gap: 7px; margin: 0; }
.ticketing-filter-grid label > span,
.ticketing-form-grid label > span,
.ticketing-promo-field > span,
.ticketing-full-field > span { font-size: 13px; font-weight: 700; letter-spacing: .02em; }
.ticketing-filter-panel input,
.ticketing-filter-panel select,
.ticketing-checkout-form input,
.ticketing-checkout-form textarea,
.ticketing-checkout-form select,
.ticketing-selection-form input,
.ticketing-selection-form select,
.ticketing-waitlist-panel input,
.ticketing-waitlist-panel select {
    width: 100%; min-height: 46px; padding: 10px 12px;
    border: 1px solid var(--ticketing-border); border-radius: 0;
    background: #fff; color: #202124; font: inherit;
}
.ticketing-checkout-form textarea { min-height: 100px; resize: vertical; }
.ticketing-filter-actions { display: flex; align-items: center; gap: 14px; margin-top: 20px; }
.ticketing-filter-actions button,
.ticketing-filter-actions a,
.ticketing-selection-form button,
.ticketing-checkout-form button,
.ticketing-offer-card button,
.ticketing-waitlist-panel button,
.reservation-payment-state button {
    display: inline-flex; align-items: center; justify-content: center; min-height: 46px;
    padding: 11px 20px; border: 1px solid var(--ticketing-accent); border-radius: 0;
    background: var(--ticketing-accent); color: #161616; font-weight: 700; text-decoration: none; cursor: pointer;
}
.ticketing-filter-actions a { background: transparent; border-color: var(--ticketing-border); }
.ticketing-filter-actions button:hover,
.ticketing-selection-form button:hover,
.ticketing-checkout-form button:hover,
.ticketing-offer-card button:hover,
.ticketing-waitlist-panel button:hover { filter: brightness(.94); }
.ticketing-selection-form button:disabled,
.ticketing-checkout-form button:disabled,
.ticketing-offer-card button:disabled { opacity: .45; cursor: not-allowed; }

.ticketing-card-statuses { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 10px; }
.ticketing-status { display: inline-flex; align-items: center; min-height: 26px; padding: 4px 9px; border: 1px solid currentColor; font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.ticketing-status-available { color: var(--ticketing-success); background: rgba(23, 107, 69, .06); }
.ticketing-status-soldout { color: var(--ticketing-danger); background: rgba(161, 45, 45, .06); }
.ticketing-status-neutral { color: #555; background: rgba(85, 85, 85, .05); }

.ticketing-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 16px; }
.ticketing-card-footer strong { white-space: nowrap; }
.ticketing-empty-state { padding: 36px; border: 1px solid var(--ticketing-border); background: var(--ticketing-paper); text-align: center; }
.ticketing-empty-state h2,
.ticketing-empty-state h3 { margin: 0 0 10px; }
.ticketing-empty-state a { display: inline-block; margin-top: 12px; font-weight: 700; }
.ticketing-pagination { display: flex; align-items: center; justify-content: center; gap: 20px; margin-top: 30px; }
.ticketing-pagination a { padding: 9px 14px; border: 1px solid var(--ticketing-border); background: #fff; text-decoration: none; }

.ticketing-occurrence-section,
.ticketing-booking-section { margin-top: 34px; padding: 30px; border: 1px solid var(--ticketing-border); background: var(--ticketing-paper); }
.ticketing-section-heading { margin-bottom: 22px; text-align: center; }
.ticketing-section-heading > span { color: var(--ticketing-accent); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.ticketing-section-heading h2 { margin: 5px 0 0; }
.ticketing-occurrence-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.ticketing-occurrence-card { display: grid; gap: 8px; padding: 17px; border: 1px solid var(--ticketing-border); color: inherit; text-decoration: none; background: #fff; }
.ticketing-occurrence-card:hover,
.ticketing-occurrence-card:focus-visible { border-color: var(--ticketing-accent); }
.ticketing-occurrence-card.is-selected { border: 2px solid var(--ticketing-accent); padding: 16px; box-shadow: inset 4px 0 0 var(--ticketing-accent); }
.ticketing-occurrence-card time { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.ticketing-occurrence-card time strong { font-size: 18px; }
.ticketing-occurrence-card small { font-weight: 800; }
.ticketing-occurrence-card small.is-available { color: var(--ticketing-success); }
.ticketing-occurrence-card small.is-soldout { color: var(--ticketing-danger); }

.ticketing-occurrence-summary h2,
.event-side-card h2 { margin: 0 0 16px; font-size: 22px; }
.ticketing-occurrence-summary dl,
.ticketing-occurrence-details,
.ticketing-offer-details { display: grid; grid-template-columns: minmax(100px, auto) 1fr; gap: 8px 16px; margin: 0; }
.ticketing-occurrence-summary dt,
.ticketing-occurrence-details dt,
.ticketing-offer-details dt { font-weight: 800; }
.ticketing-occurrence-summary dd,
.ticketing-occurrence-details dd,
.ticketing-offer-details dd { margin: 0; }
.ticketing-accessibility-details { margin-top: 16px; border-top: 1px solid var(--ticketing-border); padding-top: 12px; }
.ticketing-accessibility-details summary { cursor: pointer; font-weight: 700; }

.ticketing-selection-form { display: grid; gap: 24px; }
.ticketing-selection-form fieldset,
.ticketing-checkout-form fieldset { min-width: 0; margin: 0; padding: 22px; border: 1px solid var(--ticketing-border); }
.ticketing-selection-form legend,
.ticketing-checkout-form legend { padding: 0 9px; font-size: 21px; font-weight: 700; }
.ticketing-fieldset-help { margin: -2px 0 18px; color: var(--ticketing-muted); }
.booking-tier-list { display: grid; gap: 10px; }
.booking-tier-list > label { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 13px 0; border-bottom: 1px solid var(--ticketing-border); }
.booking-tier-list > label:last-child { border-bottom: 0; }
.booking-tier-list > label > span { display: grid; gap: 3px; }
.booking-tier-list select { width: 90px; flex: 0 0 90px; }

.ticketing-seat-visual-wrapper { max-width: 900px; margin: 0 auto 20px; padding: 18px; border: 1px solid var(--ticketing-border); background: #f7f7f7; }
.ticketing-stage-label { width: 60%; margin: 0 auto 20px; padding: 8px; border: 1px solid #555; text-align: center; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.ticketing-seat-visual { position: relative; width: 100%; aspect-ratio: var(--seat-map-ratio, 1.6); min-height: 260px; background: #fff; border: 1px solid var(--ticketing-border); overflow: hidden; }
.ticketing-seat-dot { position: absolute; width: 16px; height: 16px; min-height: 0; padding: 0; border: 1px solid #333; border-radius: 50%; transform: translate(-50%, -50%); background: #fff; }
.ticketing-seat-dot.status-available { background: var(--seat-tier-color, #e9f7ef); }
.ticketing-seat-dot.status-held { background: #f5c36b; }
.ticketing-seat-dot.status-committed { background: #bdc3c7; }
.ticketing-seat-dot.status-blocked { background: #bdc3c7; }
.ticketing-seat-dot.is-selected { outline: 3px solid var(--ticketing-accent); outline-offset: 2px; background: var(--ticketing-accent); }
.ticketing-seat-legend { display: flex; flex-wrap: wrap; gap: 14px; margin: 14px 0; font-size: 13px; }
.ticketing-seat-legend span { display: inline-flex; align-items: center; gap: 6px; }
.ticketing-seat-legend i { width: 13px; height: 13px; border: 1px solid #333; border-radius: 50%; }
.ticketing-seat-legend i.status-available { background: #e9f7ef; }
.ticketing-seat-legend i.status-held { background: #f5c36b; }
.ticketing-seat-legend i.status-committed { background: #bdc3c7; }
.ticketing-seat-legend i.status-blocked { background: #bdc3c7; }
.ticketing-seat-price-legend { display: flex; flex-wrap: wrap; gap: 10px 18px; margin: 12px 0 18px; padding: 12px; border: 1px solid var(--ticketing-border); background: #fff; font-size: 13px; }
.ticketing-seat-price-legend span { display: inline-flex; align-items: center; gap: 6px; }
.ticketing-seat-price-legend i { width: 14px; height: 14px; border: 1px solid #333; border-radius: 50%; background: var(--seat-tier-color, #e9f7ef); }
.ticketing-seat-table-wrapper { overflow-x: auto; border: 1px solid var(--ticketing-border); }
.ticketing-seat-table { width: 100%; border-collapse: collapse; min-width: 720px; }
.ticketing-seat-table caption { padding: 12px; text-align: left; color: var(--ticketing-muted); }
.ticketing-seat-table th,
.ticketing-seat-table td { padding: 10px 12px; border-top: 1px solid var(--ticketing-border); text-align: left; vertical-align: middle; }
.ticketing-seat-table thead th { background: #f2f2f2; }
.ticketing-seat-table input { width: 20px; min-height: 20px; }
.ticketing-seat-table tr.is-selected { background: rgba(214, 181, 105, .16); }
.ticketing-seat-table tr:not(.seat-status-available) { color: #777; background: #f7f7f7; }
.ticketing-inline-warning { margin-top: 12px; padding: 12px; border-left: 4px solid var(--ticketing-warning); background: rgba(138, 90, 0, .07); }

.ticketing-selection-footer { display: grid; grid-template-columns: minmax(220px, 1fr) auto auto; align-items: end; gap: 18px; padding-top: 4px; }
.ticketing-promo-field small { color: var(--ticketing-muted); }
.ticketing-live-summary { min-width: 145px; display: grid; gap: 2px; text-align: right; }
.ticketing-live-summary strong { font-size: 23px; }
.ticketing-waitlist-panel,
.ticketing-external-booking { margin-top: 24px; padding: 24px; border: 1px solid var(--ticketing-border); background: #fff; }
.ticketing-waitlist-panel h3,
.ticketing-external-booking h3 { margin-top: 0; }
.ticketing-waitlist-panel .booking-customer-fields { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.ticketing-waitlist-panel .booking-customer-fields label { display: grid; gap: 6px; }
.booking-waitlist-consent { display: flex; align-items: flex-start; gap: 10px; margin: 16px 0; }
.booking-waitlist-consent input { width: auto; min-height: 20px; margin-top: 2px; }

.ticketing-checkout-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 24px; padding: 24px; border: 1px solid var(--ticketing-border); border-top: 3px solid var(--ticketing-accent); background: #fff; }
.ticketing-checkout-header span { color: var(--ticketing-accent); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.ticketing-checkout-header h1 { margin: 3px 0 5px; }
.ticketing-checkout-header p { margin: 0; }
.ticketing-countdown,
.ticketing-offer-countdown { min-width: 190px; padding: 15px; border: 1px solid var(--ticketing-border); text-align: center; background: #111; color: #fff; }
.ticketing-countdown small,
.ticketing-offer-countdown small { display: block; }
.ticketing-countdown strong,
.ticketing-offer-countdown strong { display: block; margin-top: 4px; font-size: 30px; letter-spacing: .06em; }
.ticketing-countdown.is-expired,
.ticketing-offer-countdown.is-expired { background: var(--ticketing-danger); }
.ticketing-checkout-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, .75fr); gap: 24px; align-items: start; }
.ticketing-checkout-form-card,
.ticketing-order-summary { padding: 24px; border: 1px solid var(--ticketing-border); background: #fff; }
.ticketing-checkout-form { display: grid; gap: 22px; }
.ticketing-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.ticketing-full-field { margin-top: 14px; }
.ticketing-attendee-list { display: grid; gap: 14px; }
.ticketing-attendee-card { padding: 18px; border: 1px solid var(--ticketing-border); background: #fafafa; }
.ticketing-attendee-card h2 { margin: 0 0 13px; font-size: 18px; }
.ticketing-booking-terms { margin-bottom: 14px; padding: 14px; border-left: 4px solid var(--ticketing-accent); background: #faf7ef; }
.ticketing-check-line { display: flex; align-items: flex-start; gap: 10px; margin: 12px 0; }
.ticketing-check-line input { width: 20px; min-height: 20px; flex: 0 0 20px; margin-top: 2px; }
.ticketing-checkout-submit { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.ticketing-checkout-submit p { max-width: 600px; margin: 0; color: var(--ticketing-muted); }
.ticketing-order-summary { position: sticky; top: 120px; }
.ticketing-order-summary h2 { margin-top: 0; }
.ticketing-order-lines { margin-top: 20px; border-top: 1px solid var(--ticketing-border); }
.ticketing-order-line { display: grid; grid-template-columns: 1fr auto; gap: 8px 15px; padding: 14px 0; border-bottom: 1px solid var(--ticketing-border); }
.ticketing-order-line > span { display: grid; }
.ticketing-order-line small { color: var(--ticketing-muted); }
.ticketing-order-line ul { grid-column: 1 / -1; margin: 3px 0 0 18px; }
.ticketing-order-totals { display: grid; gap: 8px; padding: 18px 0; }
.ticketing-order-totals > div { display: flex; justify-content: space-between; gap: 15px; }
.ticketing-order-totals .is-discount { color: var(--ticketing-success); }
.ticketing-order-totals .is-total { padding-top: 10px; border-top: 2px solid #222; font-size: 20px; }
.ticketing-change-selection { display: block; padding-top: 12px; border-top: 1px solid var(--ticketing-border); text-align: center; font-weight: 700; }

/* OBTV3 · Billetterie publique · Lot D · Parcours client */
.ticketing-checkout-progress {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 0 0 18px;
    border: 1px solid var(--ticketing-border);
    background: #fff;
}
.ticketing-checkout-progress span {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 52px;
    padding: 9px 12px;
    border-right: 1px solid var(--ticketing-border);
    color: var(--ticketing-muted);
    font-size: 13px;
    font-weight: 700;
}
.ticketing-checkout-progress span:last-child { border-right: 0; }
.ticketing-checkout-progress b {
    display: inline-grid;
    place-items: center;
    width: 25px;
    height: 25px;
    border: 1px solid currentColor;
    font-size: 12px;
}
.ticketing-checkout-progress .is-done { color: var(--ticketing-success); }
.ticketing-checkout-progress .is-current {
    background: rgba(214, 181, 105, .14);
    color: #30250e;
}
.ticketing-checkout-progress .is-current::after {
    content: "";
    position: absolute;
    right: 0;
    bottom: -1px;
    left: 0;
    height: 3px;
    background: var(--ticketing-accent);
}
.ticketing-account-context {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: -4px 0 22px;
    padding: 14px;
    border-left: 4px solid var(--ticketing-success);
    background: rgba(23, 107, 69, .07);
}
.ticketing-account-context.is-guest {
    border-left-color: var(--ticketing-accent);
    background: rgba(214, 181, 105, .10);
}
.ticketing-account-context > span {
    display: grid;
    flex: 0 0 28px;
    place-items: center;
    width: 28px;
    height: 28px;
    border: 1px solid currentColor;
    font-weight: 900;
}
.ticketing-account-context > div { display: grid; gap: 2px; }
.ticketing-account-context small { color: var(--ticketing-muted); }
.ticketing-autosave-status {
    margin: -4px 0 0;
    padding: 9px 12px;
    border-left: 3px solid var(--ticketing-border);
    background: #f7f7f7;
    color: var(--ticketing-muted);
    font-size: 12px;
}
.ticketing-autosave-status[data-state="saving"] { border-left-color: var(--ticketing-warning); }
.ticketing-autosave-status[data-state="saved"] { border-left-color: var(--ticketing-success); color: var(--ticketing-success); }
.ticketing-autosave-status[data-state="error"] { border-left-color: var(--ticketing-danger); color: var(--ticketing-danger); }
.ticketing-checkout-form input[readonly] {
    border-color: rgba(23, 107, 69, .32);
    background: #f2f8f5;
}
.ticketing-attendee-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 13px;
}
.ticketing-attendee-heading h2 { margin: 0; }
.ticketing-attendee-heading small {
    color: var(--ticketing-success);
    font-weight: 700;
}
.ticketing-optional-details,
.ticketing-attendee-options {
    margin-top: 14px;
    border-top: 1px solid var(--ticketing-border);
    padding-top: 12px;
}
.ticketing-optional-details summary,
.ticketing-attendee-options summary {
    color: #393939;
    font-size: 13px;
    font-weight: 800;
    cursor: pointer;
}
.ticketing-optional-details[open] summary,
.ticketing-attendee-options[open] summary { margin-bottom: 12px; }
.ticketing-resume-box {
    margin-top: 20px;
    padding: 16px;
    border: 1px solid var(--ticketing-border);
    border-top: 3px solid var(--ticketing-accent);
    background: #fafafa;
}
.ticketing-resume-box h3 { margin: 0 0 6px; font-size: 17px; }
.ticketing-resume-box p { margin: 0 0 13px; color: var(--ticketing-muted); font-size: 13px; }
.ticketing-resume-box form,
.ticketing-resume-box label { display: grid; gap: 7px; }
.ticketing-resume-box input {
    width: 100%;
    min-height: 44px;
    padding: 9px 11px;
    border: 1px solid var(--ticketing-border);
    border-radius: 0;
    background: #fff;
    color: #202124;
    font: inherit;
}
.ticketing-resume-box button { min-height: 44px; }
.ticketing-resume-card {
    max-width: 720px;
    margin: 0 auto;
    padding: clamp(24px, 5vw, 44px);
    border: 1px solid var(--ticketing-border);
    border-top: 4px solid var(--ticketing-accent);
    background: #fff;
}
.ticketing-resume-card > span {
    color: var(--ticketing-accent);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.ticketing-resume-card h1 { margin: 6px 0 12px; }
.ticketing-resume-card .ticketing-occurrence-details {
    margin: 24px 0;
    padding: 20px;
    border: 1px solid var(--ticketing-border);
    background: #fafafa;
}
.ticketing-countdown.is-compact {
    display: inline-grid;
    min-width: 128px;
    padding: 8px 12px;
}
.ticketing-countdown.is-compact strong { margin: 0; font-size: 20px; }
.reservation-payment-state[data-payment-monitor] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}
.reservation-payment-state[data-payment-monitor] > div { display: grid; gap: 3px; }
.reservation-payment-state[data-payment-monitor] small { color: var(--ticketing-muted); }

.ticketing-offer-card { max-width: 780px; margin: 0 auto; padding: 40px; border: 1px solid var(--ticketing-border); border-top: 4px solid var(--ticketing-accent); background: #fff; text-align: center; }
.ticketing-offer-card > span { color: var(--ticketing-accent); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.ticketing-offer-card h1 { margin: 6px 0 12px; }
.ticketing-offer-countdown { margin: 22px auto; }
.ticketing-offer-details { max-width: 560px; margin: 24px auto; padding: 20px; border: 1px solid var(--ticketing-border); text-align: left; }
.ticketing-offer-note { margin-top: 15px; color: var(--ticketing-muted); }

.ticketing-confirmation-heading { text-align: center; margin-bottom: 28px; }
.ticketing-confirmation-heading > span { color: var(--ticketing-accent); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.reservation-lines > h2 { margin: 0 0 12px; }
.reservation-line-item { display: grid; grid-template-columns: 1fr auto; gap: 8px 20px; padding: 14px 0; border-bottom: 1px solid var(--ticketing-border); }
.reservation-line-item > span { display: grid; }
.reservation-line-item ul { grid-column: 1 / -1; margin: 0 0 0 18px; }
.reservation-total > div { display: grid; text-align: right; }
.reservation-payment-state { margin: 22px 0; padding: 20px; border: 1px solid var(--ticketing-border); border-left: 5px solid var(--ticketing-warning); background: #fff; }
.reservation-payment-state.status-paid,
.reservation-payment-state.status-not_required { border-left-color: var(--ticketing-success); }
.reservation-inventory-expiry span { display: block; margin-top: 6px; }
.ticketing-ticket-list { display: grid; gap: 10px; }
.reservation-ticket-item { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 15px; border: 1px solid var(--ticketing-border); background: #fff; }
.reservation-ticket-item > div:first-child { display: grid; gap: 4px; }
.reservation-ticket-item code { overflow-wrap: anywhere; }
.ticketing-ticket-actions { display: flex; gap: 8px; }
.ticketing-ticket-actions a,
.ticketing-document-link a { padding: 8px 12px; border: 1px solid var(--ticketing-border); font-weight: 700; text-decoration: none; }

.booking-flashes { margin: 0 0 20px; }
.booking-flash { padding: 13px 15px; border-left: 4px solid currentColor; background: #fff; }
.booking-flash-error { color: var(--ticketing-danger); }
.booking-flash-success { color: var(--ticketing-success); }
.press-hp { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

.ticketing-public-page :focus-visible { outline: 3px solid var(--ticketing-accent); outline-offset: 3px; }

@media (max-width: 1100px) {
    .ticketing-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ticketing-occurrence-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ticketing-waitlist-panel .booking-customer-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ticketing-checkout-grid { grid-template-columns: 1fr; }
    .ticketing-order-summary { position: static; order: -1; }
}

@media (max-width: 720px) {
    .ticketing-filter-panel,
    .ticketing-occurrence-section,
    .ticketing-booking-section,
    .ticketing-checkout-form-card,
    .ticketing-order-summary,
    .ticketing-offer-card { padding: 18px; }
    .ticketing-filter-grid,
    .ticketing-form-grid,
    .ticketing-occurrence-list,
    .ticketing-waitlist-panel .booking-customer-fields { grid-template-columns: 1fr; }
    .ticketing-filter-actions,
    .ticketing-checkout-header,
    .ticketing-checkout-submit,
    .reservation-ticket-item { align-items: stretch; flex-direction: column; }
    .ticketing-filter-actions > *,
    .ticketing-checkout-submit button,
    .ticketing-ticket-actions a { width: 100%; }
    .ticketing-countdown { width: 100%; }
    .ticketing-selection-footer { grid-template-columns: 1fr; }
    .ticketing-live-summary { text-align: left; }
    .booking-tier-list > label { align-items: stretch; flex-direction: column; }
    .booking-tier-list select { width: 100%; flex-basis: auto; }
    .ticketing-seat-visual-wrapper { display: none; }
    .ticketing-card-footer { align-items: flex-start; flex-direction: column; }
    .ticketing-ticket-actions { width: 100%; flex-direction: column; }
    .ticketing-occurrence-summary dl,
    .ticketing-occurrence-details,
    .ticketing-offer-details { grid-template-columns: 1fr; gap: 3px; }
    .ticketing-occurrence-summary dd,
    .ticketing-occurrence-details dd,
    .ticketing-offer-details dd { margin-bottom: 10px; }
    .ticketing-checkout-progress { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ticketing-checkout-progress span:nth-child(2) { border-right: 0; }
    .ticketing-checkout-progress span:nth-child(-n+2) { border-bottom: 1px solid var(--ticketing-border); }
    .reservation-payment-state[data-payment-monitor] { align-items: stretch; flex-direction: column; }
    .reservation-payment-state[data-payment-monitor] button { width: 100%; }
}

/* Plan de salle public : les sièges portent directement toute l'information utile. */
.ticketing-seat-visual-wrapper {
    max-width: 100%;
    padding: 22px;
    background: #f5f5f3;
}
.ticketing-stage-label {
    max-width: 520px;
    margin: 0 auto 24px;
    padding: 9px 18px;
    border: 1px solid #b9b9b4;
    background: linear-gradient(180deg, #fff, #e8e8e4);
    color: #262626;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .18em;
    text-align: center;
    text-transform: uppercase;
}
.ticketing-seat-visual {
    min-height: 430px;
    border: 0;
    background: transparent;
    overflow: visible;
}
.ticketing-seat-dot {
    width: 30px;
    height: 28px;
    display: grid;
    place-items: center;
    border: 1px solid color-mix(in srgb, var(--seat-tier-color, #d6b569) 55%, #111);
    border-radius: 7px 7px 4px 4px;
    background: var(--seat-tier-color, #d6b569);
    color: #171717;
    box-shadow: inset 0 -5px 0 rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.22);
    font: 700 10px/1 Arial, sans-serif;
    cursor: pointer;
    transition: transform .12s ease, box-shadow .12s ease, filter .12s ease;
}
.ticketing-seat-dot::after {
    content: '';
    position: absolute;
    left: 5px;
    right: 5px;
    bottom: -5px;
    height: 5px;
    border-radius: 0 0 4px 4px;
    background: color-mix(in srgb, var(--seat-tier-color, #d6b569) 72%, #111);
}
.ticketing-seat-dot:hover:not(:disabled),
.ticketing-seat-dot:focus-visible {
    z-index: 3;
    transform: translate(-50%, -50%) scale(1.18);
    box-shadow: inset 0 -5px 0 rgba(0,0,0,.12), 0 4px 12px rgba(0,0,0,.3);
    outline: 3px solid #111;
    outline-offset: 2px;
}
.ticketing-seat-dot.status-held,
.ticketing-seat-dot.status-committed,
.ticketing-seat-dot.status-blocked {
    color: #fff;
    filter: grayscale(.55);
    cursor: not-allowed;
    opacity: .55;
}
.ticketing-seat-dot.status-held { background: #b48b45; }
.ticketing-seat-dot.status-committed { background: #777; }
.ticketing-seat-dot.status-blocked { background: #777; }
.ticketing-seat-dot.is-selected {
    z-index: 4;
    background: #171717;
    color: #fff;
    outline: 3px solid var(--seat-tier-color, #d6b569);
    outline-offset: 3px;
    box-shadow: 0 0 0 6px rgba(255,255,255,.92), 0 5px 14px rgba(0,0,0,.32);
}
.ticketing-seat-inputs {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
}
.ticketing-seat-price-legend {
    justify-content: center;
    border: 0;
    background: transparent;
}
.ticketing-seat-price-legend i,
.ticketing-seat-legend i {
    border-radius: 4px;
}

@media (max-width: 720px) {
    .ticketing-seat-visual-wrapper {
        display: block;
        margin-right: -18px;
        margin-left: -18px;
        padding: 16px 10px 22px;
        overflow-x: auto;
    }
    .ticketing-seat-visual {
        width: 760px;
        min-height: 420px;
    }
    .ticketing-seat-dot {
        width: 28px;
        height: 27px;
    }
}

/* R9 — plan de salle 2D professionnel, entièrement contenu dans la largeur. */
.ticketing-seat-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 260px;
    gap: 20px;
    align-items: start;
}
.ticketing-seat-visual-wrapper {
    --seat-gap: clamp(3px, .42vw, 9px);
    --seat-width: clamp(24px, calc((100% - 112px - (var(--seat-columns) - 1) * var(--seat-gap)) / var(--seat-columns)), 54px);
    min-width: 0;
    margin: 0;
    padding: clamp(18px, 2.2vw, 30px);
    overflow: visible;
    border: 1px solid var(--ticketing-border);
    background: linear-gradient(180deg, #fbfbf9, #f1f1ed);
}
.ticketing-stage {
    position: relative;
    width: min(76%, 720px);
    height: clamp(54px, 6vw, 76px);
    margin: 0 auto clamp(32px, 4vw, 48px);
    display: grid;
    place-items: center;
    overflow: hidden;
    background: linear-gradient(180deg, #282828 0%, #111 100%);
    color: #d6b569;
    box-shadow: 0 6px 0 #d6b569, 0 15px 22px rgba(0,0,0,.13);
    clip-path: polygon(4% 0, 96% 0, 100% 24%, 88% 100%, 12% 100%, 0 24%);
}
.ticketing-stage::after {
    content: '';
    position: absolute;
    inset: auto 11% 8px;
    height: 1px;
    background: rgba(214,181,105,.55);
}
.ticketing-stage span {
    font-size: clamp(15px, 1.5vw, 20px);
    font-weight: 800;
    letter-spacing: .24em;
    text-transform: uppercase;
}
.ticketing-seat-room {
    width: 100%;
    min-width: 0;
    display: grid;
    gap: clamp(13px, 1.5vw, 20px);
    padding: 3px 0 12px;
}
.ticketing-seat-row {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) 34px;
    align-items: center;
    gap: 8px;
    min-width: 0;
}
.ticketing-seat-row::after,
.ticketing-seat-row-label {
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    background: #171717;
    color: #fff;
    font-size: 13px;
    font-weight: 800;
}
.ticketing-seat-row::after { content: attr(data-row-label); }
.ticketing-seat-row-content {
    min-width: 0;
    display: flex;
    justify-content: center;
    align-items: flex-end;
    gap: var(--seat-gap);
}
.ticketing-seat-chair {
    position: relative;
    flex: 0 1 var(--seat-width);
    width: var(--seat-width);
    max-width: 54px;
    min-width: 0;
    height: calc(var(--seat-width) * 1.08);
    min-height: 27px;
    padding: 0;
    border: 0;
    background: transparent;
    color: #111;
    cursor: pointer;
    transition: transform .14s ease, filter .14s ease;
}
.ticketing-seat-chair-back {
    position: absolute;
    inset: 0 8% 21%;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    border: 1px solid color-mix(in srgb, var(--seat-tier-color) 58%, #111);
    background: var(--seat-tier-color);
    box-shadow: inset 3px 0 rgba(255,255,255,.17), inset -3px 0 rgba(0,0,0,.08), inset 0 -5px rgba(0,0,0,.1);
}
.ticketing-seat-chair-back small {
    font-size: clamp(6px, calc(var(--seat-width) * .19), 11px);
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
}
.ticketing-seat-chair-base {
    position: absolute;
    left: 14%;
    right: 14%;
    bottom: 9%;
    z-index: 3;
    height: 22%;
    border: 1px solid color-mix(in srgb, var(--seat-tier-color) 64%, #111);
    background: color-mix(in srgb, var(--seat-tier-color) 82%, #111);
    box-shadow: 0 max(2px, calc(var(--seat-width) * .07)) 0 color-mix(in srgb, var(--seat-tier-color) 58%, #111);
}
.ticketing-seat-chair:hover:not(:disabled),
.ticketing-seat-chair:focus-visible {
    z-index: 20;
    transform: translateY(-4px) scale(1.08);
    outline: none;
    filter: drop-shadow(0 6px 5px rgba(0,0,0,.24));
}
.ticketing-seat-chair:focus-visible .ticketing-seat-chair-back {
    outline: 3px solid #111;
    outline-offset: 2px;
}
.ticketing-seat-chair.is-selected .ticketing-seat-chair-back {
    outline: 3px solid #006f63;
    outline-offset: 2px;
    box-shadow: 0 0 0 5px #fff, inset 3px 0 rgba(255,255,255,.17), inset -3px 0 rgba(0,0,0,.08), inset 0 -5px rgba(0,0,0,.1);
    animation: ticketing-seat-selected .24s ease-out;
}
@keyframes ticketing-seat-selected {
    50% { transform: translateY(-3px); }
}
.ticketing-seat-chair.status-held .ticketing-seat-chair-back { background: var(--ticketing-contract-held-fill, #e0a82f); }
.ticketing-seat-chair.status-committed .ticketing-seat-chair-back,
.ticketing-seat-chair.status-blocked .ticketing-seat-chair-back { background: var(--ticketing-contract-committed-fill, #595959); }
.ticketing-seat-chair:disabled { cursor: not-allowed; filter: grayscale(.55) saturate(.45); }
.ticketing-seat-chair:disabled .ticketing-seat-chair-back small { opacity: .42; }
.ticketing-seat-chair::after {
    content: attr(data-tooltip);
    position: absolute;
    left: 50%;
    bottom: calc(100% + 12px);
    z-index: 100;
    width: max-content;
    max-width: 260px;
    padding: 8px 10px;
    border: 1px solid #111;
    background: #111;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.35;
    text-align: left;
    transform: translate(-50%, 5px);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .12s ease, transform .12s ease;
}
.ticketing-seat-chair:hover::after,
.ticketing-seat-chair:focus-visible::after {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
}
.ticketing-seat-summary {
    position: sticky;
    top: 92px;
    display: grid;
    gap: 15px;
    padding: 20px;
    border: 1px solid var(--ticketing-border);
    border-top: 3px solid #d6b569;
    background: #fff;
}
.ticketing-seat-summary h3 { margin: 2px 0 0; font-size: 21px; }
.ticketing-seat-summary-kicker { color: #765e2d; font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.ticketing-seat-summary-empty { padding: 14px 0; color: var(--ticketing-muted); font-size: 13px; }
.ticketing-seat-summary-list { max-height: 330px; margin: 0; padding: 0; overflow-y: auto; list-style: none; }
.ticketing-seat-summary-list li {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    padding: 10px 0;
    border-top: 1px solid var(--ticketing-border);
}
.ticketing-seat-summary-list li div { min-width: 0; }
.ticketing-seat-summary-list li strong,
.ticketing-seat-summary-list li small { display: block; }
.ticketing-seat-summary-list li small { overflow: hidden; color: var(--ticketing-muted); text-overflow: ellipsis; white-space: nowrap; }
.ticketing-seat-summary-remove,
.ticketing-seat-reset { min-height: 34px !important; padding: 7px 10px !important; }
.ticketing-seat-summary-remove { align-self: center; background: transparent !important; color: #8d3030 !important; border: 1px solid #8d3030 !important; }
.ticketing-seat-summary-total { display: flex; justify-content: space-between; gap: 12px; padding-top: 13px; border-top: 2px solid #171717; }
.ticketing-seat-summary-total > strong { font-size: 21px; }
.ticketing-seat-legend,
.ticketing-seat-price-legend { justify-content: center; }
.ticketing-seat-legend i,
.ticketing-seat-price-legend i { border-radius: 2px; }
@media (max-width: 1180px) {
    .ticketing-seat-layout { grid-template-columns: 1fr; }
    .ticketing-seat-summary { position: static; grid-template-columns: minmax(0,1fr) auto; align-items: end; }
    .ticketing-seat-summary-list { grid-column: 1 / -1; max-height: 230px; }
    .ticketing-seat-summary-total { min-width: 210px; }
}
@media (max-width: 720px) {
    .ticketing-seat-visual-wrapper {
        --seat-gap: 2px;
        margin-right: -12px;
        margin-left: -12px;
        padding: 16px 4px 22px;
    }
    .ticketing-stage { width: 78%; margin-bottom: 28px; }
    .ticketing-seat-row { grid-template-columns: 20px minmax(0,1fr) 20px; gap: 2px; }
    .ticketing-seat-row::after,
    .ticketing-seat-row-label { width: 19px; height: 24px; font-size: 9px; }
    .ticketing-seat-room { gap: 11px; }
    .ticketing-seat-summary { grid-template-columns: 1fr; }
    .ticketing-seat-summary-total { min-width: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .ticketing-seat-chair { transition: none; }
    .ticketing-seat-chair.is-selected .ticketing-seat-chair-back { animation: none; }
}


/* R10 — plan pleine largeur, fauteuils fluides et récapitulatif hors de la scène. */
.event-public-page .block {
    padding-top: 0;
}

.ticketing-seat-layout {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;
    gap: 18px;
}

.ticketing-seat-visual-wrapper {
    --seat-side-space: 92px;
    --seat-gap: clamp(1px, .32vw, 8px);
    --seat-width: clamp(
        13px,
        calc((100% - var(--seat-side-space) - ((var(--seat-columns) - 1) * var(--seat-gap))) / var(--seat-columns)),
        54px
    );
    order: 1;
    box-sizing: border-box;
    width: 100%;
    max-width: none;
    min-width: 0;
    margin: 0;
    padding: clamp(14px, 2vw, 28px);
    overflow: hidden;
}

.ticketing-stage {
    width: calc(100% - var(--seat-side-space));
    max-width: none;
    box-sizing: border-box;
}

.ticketing-seat-room,
.ticketing-seat-row,
.ticketing-seat-row-content {
    max-width: 100%;
}

.ticketing-seat-row-content {
    overflow: visible;
}

.ticketing-seat-chair {
    flex: 0 0 var(--seat-width);
    width: var(--seat-width);
    max-width: var(--seat-width);
    min-width: var(--seat-width);
}

.ticketing-seat-summary {
    position: static;
    order: 2;
    width: 100%;
    box-sizing: border-box;
    grid-template-columns: minmax(180px, .8fr) minmax(0, 2fr) auto auto;
    align-items: center;
    gap: 12px 20px;
}

.ticketing-seat-summary-empty,
.ticketing-seat-summary-list {
    min-width: 0;
}

.ticketing-seat-summary-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    max-height: none;
    overflow: visible;
}

.ticketing-seat-summary-list li {
    min-width: min(220px, 100%);
    flex: 1 1 220px;
    padding: 8px 0;
}

.ticketing-seat-summary-total {
    min-width: 180px;
    white-space: nowrap;
}

@media (max-width: 900px) {
    .ticketing-seat-visual-wrapper {
        --seat-side-space: 68px;
        --seat-gap: clamp(1px, .24vw, 5px);
        padding: 16px 8px 22px;
    }

    .ticketing-seat-row {
        grid-template-columns: 24px minmax(0, 1fr) 24px;
        gap: 4px;
    }

    .ticketing-seat-row::after,
    .ticketing-seat-row-label {
        width: 22px;
        height: 26px;
        font-size: 10px;
    }

    .ticketing-seat-summary {
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: end;
    }

    .ticketing-seat-summary-list,
    .ticketing-seat-summary-empty {
        grid-column: 1 / -1;
    }
}

@media (max-width: 600px) {
    .ticketing-seat-visual-wrapper {
        --seat-side-space: 46px;
        --seat-gap: 1px;
        margin: 0;
        padding: 12px 2px 18px;
    }

    .ticketing-stage {
        width: calc(100% - var(--seat-side-space));
        min-height: 46px;
        height: 46px;
        margin-bottom: 24px;
    }

    .ticketing-stage span {
        font-size: 13px;
        letter-spacing: .16em;
    }

    .ticketing-seat-room {
        gap: 9px;
    }

    .ticketing-seat-row {
        grid-template-columns: 18px minmax(0, 1fr) 18px;
        gap: 1px;
    }

    .ticketing-seat-row::after,
    .ticketing-seat-row-label {
        width: 17px;
        height: 22px;
        font-size: 8px;
    }

    .ticketing-seat-chair-back small {
        font-size: clamp(4px, calc(var(--seat-width) * .18), 8px);
    }

    .ticketing-seat-summary {
        grid-template-columns: 1fr;
        padding: 16px;
    }

    .ticketing-seat-summary-list,
    .ticketing-seat-summary-empty {
        grid-column: auto;
    }

    .ticketing-seat-summary-total {
        min-width: 0;
        width: 100%;
    }
}

/* R11 — tunnel de sélection dédié, inspiré des interfaces de cinéma. */
.event-reservation-cta {
    position: sticky;
    bottom: 0;
    z-index: 30;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    margin: 34px 0 0;
    padding: 20px 24px;
    border-top: 3px solid var(--ticketing-accent);
    background: rgba(20, 20, 20, .97);
    color: #fff;
    box-shadow: 0 -10px 28px rgba(0,0,0,.18);
}
.event-reservation-cta span { color: var(--ticketing-accent); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.event-reservation-cta h2 { margin: 2px 0 5px; color: #fff; }
.event-reservation-cta p { margin: 0; color: rgba(255,255,255,.78); }
.event-reservation-button {
    flex: 0 0 auto;
    min-width: 230px;
    padding: 15px 22px;
    border: 1px solid var(--ticketing-accent);
    background: var(--ticketing-accent);
    color: #111 !important;
    font-weight: 900;
    text-align: center;
    text-decoration: none !important;
}
.event-reservation-button:hover,
.event-reservation-button:focus-visible { background: #fff; border-color: #fff; }
.event-reservation-button.is-disabled { opacity: .55; cursor: not-allowed; }

.ticketing-selection-page .block { padding-top: 0; }
.ticketing-selection-page .container { width: min(100%, 1680px); max-width: none; }
.ticketing-selection-header {
    display: grid;
    grid-template-columns: 220px minmax(0,1fr) 220px;
    align-items: center;
    gap: 18px;
    padding: 22px 0 18px;
    text-align: center;
}
.ticketing-selection-header > a { justify-self: start; color: #222; font-weight: 800; text-decoration: none; }
.ticketing-selection-header span { color: var(--ticketing-accent); font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.ticketing-selection-header h1 { margin: 3px 0; font-size: clamp(30px, 4vw, 54px); }
.ticketing-selection-header p { margin: 0; color: var(--ticketing-muted); }
.ticketing-booking-tunnel { margin: 0 0 110px; padding: 24px clamp(12px, 2vw, 28px) 0; }
.ticketing-booking-tunnel > .ticketing-section-heading { text-align: center; }
.ticketing-booking-tunnel .ticketing-seat-fieldset { padding: 0; border: 0; }
.ticketing-booking-tunnel .ticketing-seat-fieldset > legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.ticketing-booking-tunnel .ticketing-seat-visual-wrapper { border-color: #ddd; background: #f8f8f7; }
.ticketing-booking-tunnel .ticketing-seat-summary { margin-top: 4px; background: #fff; }
.ticketing-booking-tunnel .ticketing-selection-footer {
    position: fixed;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1000;
    display: grid;
    grid-template-columns: minmax(220px, 1fr) auto minmax(240px, 420px);
    align-items: center;
    gap: 24px;
    box-sizing: border-box;
    width: 100%;
    padding: 14px max(24px, calc((100vw - 1600px) / 2));
    border-top: 1px solid #202020;
    background: #171717;
    color: #fff;
    box-shadow: 0 -8px 24px rgba(0,0,0,.24);
}
.ticketing-booking-tunnel .ticketing-promo-field { display: flex; align-items: center; gap: 10px; margin: 0; }
.ticketing-booking-tunnel .ticketing-promo-field span { flex: 0 0 auto; color: #fff; }
.ticketing-booking-tunnel .ticketing-promo-field input { min-width: 130px; background: #fff; }
.ticketing-booking-tunnel .ticketing-promo-field small { display: none; }
.ticketing-booking-tunnel .ticketing-live-summary { display: flex; align-items: baseline; gap: 18px; white-space: nowrap; }
.ticketing-booking-tunnel .ticketing-live-summary span { color: rgba(255,255,255,.78); }
.ticketing-booking-tunnel .ticketing-live-summary strong { color: #fff; font-size: 24px; }
.ticketing-booking-tunnel [data-ticketing-selection-submit] {
    width: 100%;
    min-height: 54px;
    border-color: var(--ticketing-accent);
    background: var(--ticketing-accent);
    color: #111;
    font-size: 18px;
    font-weight: 900;
}
.ticketing-booking-tunnel [data-ticketing-selection-submit]::after { content: '  →'; }
.ticketing-booking-tunnel [data-ticketing-selection-submit]:disabled { opacity: .45; }

@media (max-width: 900px) {
    .event-reservation-cta { position: relative; flex-direction: column; align-items: stretch; }
    .event-reservation-button { width: 100%; min-width: 0; }
    .ticketing-selection-header { grid-template-columns: 1fr; text-align: left; }
    .ticketing-selection-header > a { order: -1; }
    .ticketing-booking-tunnel { margin-bottom: 92px; }
    .ticketing-booking-tunnel .ticketing-selection-footer {
        grid-template-columns: minmax(0,1fr) minmax(190px, 38vw);
        gap: 12px;
        padding: 10px 14px;
    }
    .ticketing-booking-tunnel .ticketing-promo-field { display: none; }
    .ticketing-booking-tunnel .ticketing-live-summary { justify-content: flex-start; }
}

@media (max-width: 600px) {
    .event-reservation-cta {
        position: sticky;
        margin-right: -15px;
        margin-left: -15px;
        padding: 12px 15px;
    }
    .event-reservation-cta > div { display: none; }
    .ticketing-selection-page .container { padding-right: 6px; padding-left: 6px; }
    .ticketing-selection-header { padding: 14px 10px 10px; }
    .ticketing-selection-header h1 { font-size: 30px; }
    .ticketing-selection-header p { font-size: 13px; }
    .ticketing-booking-tunnel { margin-bottom: 82px; padding: 10px 0 0; }
    .ticketing-booking-tunnel > .ticketing-section-heading { padding: 0 10px; }
    .ticketing-booking-tunnel .ticketing-section-heading p { display: none; }
    .ticketing-booking-tunnel .ticketing-selection-footer {
        grid-template-columns: minmax(0,1fr) minmax(150px, 48vw);
        padding: 9px 10px calc(9px + env(safe-area-inset-bottom));
    }
    .ticketing-booking-tunnel .ticketing-live-summary { display: grid; gap: 0; }
    .ticketing-booking-tunnel .ticketing-live-summary strong { font-size: 19px; }
    .ticketing-booking-tunnel [data-ticketing-selection-submit] { min-height: 48px; font-size: 15px; }
    .ticketing-seat-summary-list li { flex-basis: 100%; }
}

/* R12 — fauteuils sans habillage de bouton, échelle réelle et contraste AAA. */
.ticketing-seat-chair,
.ticketing-seat-chair:hover,
.ticketing-seat-chair:focus,
.ticketing-seat-chair:focus-visible,
.ticketing-seat-chair:active {
    appearance: none !important;
    -webkit-appearance: none !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

.ticketing-seat-chair-back {
    border-radius: 10px 10px 2px 2px;
}

.ticketing-seat-chair-back small {
    font-size: clamp(10px, calc(var(--seat-width) * .19), 11px);
    font-weight: 500;
    line-height: 1;
    white-space: nowrap;
    color: var(--seat-text-color, #000);
}

.ticketing-seat-chair:hover:not(:disabled),
.ticketing-seat-chair:focus-visible {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.ticketing-seat-visual-wrapper {
    --seat-width: 54px;
}


/* R13 — tunnel de réservation en deux volets, plan intégral et contraste AAA. */
body.front-template-ticketing_selection {
    overflow-x: clip;
    background: #f3f3f1;
}

body.front-template-ticketing_selection .site-main,
.ticketing-selection-page,
.ticketing-selection-page .ticketing-tunnel-section,
.ticketing-selection-page .ticketing-tunnel-section > .block,
.ticketing-selection-page .ticketing-tunnel-container {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    margin: 0 !important;
}

.ticketing-selection-page {
    --ticketing-sidebar-width: clamp(280px, 21vw, 350px);
    --ticketing-accent: var(--obt-accent-color, #d6b569);
    --ticketing-dark: #171a1f;
    --ticketing-muted: #666b72;
    min-height: 100vh;
    background: #f3f3f1;
}

.ticketing-selection-page .ticketing-tunnel-section > .block,
.ticketing-selection-page .ticketing-tunnel-container {
    padding: 0 !important;
}

.ticketing-tunnel-shell {
    display: grid;
    grid-template-columns: var(--ticketing-sidebar-width) minmax(0, 1fr);
    align-items: stretch;
    width: 100%;
    min-width: 0;
    min-height: calc(100vh - var(--obt-header-height, 0px));
}

/* Volet concert */
.ticketing-event-panel {
    position: sticky;
    top: 0;
    z-index: 20;
    align-self: start;
    display: flex;
    flex-direction: column;
    gap: 18px;
    width: 100%;
    min-width: 0;
    max-height: 100vh;
    padding: 20px 22px 34px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    background:
        radial-gradient(circle at 50% 8%, rgba(214, 181, 105, .16), transparent 35%),
        linear-gradient(180deg, #1c2026 0%, #111419 100%);
    color: #fff;
    box-shadow: 10px 0 30px rgba(17, 20, 25, .12);
    scrollbar-width: thin;
    scrollbar-color: rgba(214, 181, 105, .65) rgba(255, 255, 255, .08);
}

body[data-theme-header-sticky="all"] .ticketing-event-panel,
body[data-theme-header-sticky="desktop"] .ticketing-event-panel {
    top: var(--obt-header-height, 60px);
    max-height: calc(100vh - var(--obt-header-height, 60px));
}

.ticketing-event-back {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    min-height: 34px;
    padding: 15px;
    background: #d5b56d;
    color: rgb(0 0 0 / 84%) !important;
    font-size: 12px;
    font-weight: 800;
    text-decoration: none !important;
}

.ticketing-event-back:hover,
.ticketing-event-back:focus-visible {
    background: #e1c47f;
    color: #000 !important;
}

.ticketing-event-visual {
    position: relative;
    width: min(100%, 285px);
    height: auto;
    margin: 0 auto;
    overflow: visible;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 3px;
    background: #080a0d;
    box-shadow: 0 16px 34px rgba(0, 0, 0, .3);
}

.ticketing-event-visual::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(180deg, transparent 60%, rgba(0, 0, 0, .28));
}

.ticketing-event-visual img {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
    object-fit: contain;
}

.ticketing-event-visual-placeholder {
    display: grid;
    place-items: center;
    color: var(--ticketing-accent);
    font-size: 42px;
    font-weight: 900;
    letter-spacing: .12em;
}

.ticketing-event-intro {
    display: grid;
    gap: 7px;
    min-width: 0;
}

.ticketing-event-intro > span {
    color: var(--ticketing-accent);
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.ticketing-event-intro h2 {
    margin: 0;
    color: #fff;
    font-size: clamp(24px, 2.1vw, 32px);
    line-height: 1.04;
    overflow-wrap: anywhere;
}

.ticketing-event-intro p {
    margin: 0;
    color: rgba(255, 255, 255, .75);
    font-size: 13px;
    line-height: 1.55;
}

.ticketing-event-panel .ticketing-card-statuses {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0;
}

.ticketing-event-panel .ticketing-status {
    display: inline-flex;
    align-items: center;
    min-height: 25px;
    padding: 4px 8px;
    border: 1px solid rgba(255, 255, 255, .3);
    border-radius: 2px;
    background: transparent;
    color: #fff;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .04em;
}

.ticketing-event-panel .ticketing-status-available {
    border-color: #70d3aa;
    color: #a9f2d2;
}

.ticketing-event-facts {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0;
    border-top: 1px solid rgba(255, 255, 255, .14);
    border-bottom: 1px solid rgba(255, 255, 255, .14);
}

.ticketing-event-facts > div {
    min-width: 0;
    padding: 11px 10px 11px 0;
    border-bottom: 1px solid rgba(255, 255, 255, .1);
}

.ticketing-event-facts > div:nth-child(even) {
    padding-right: 0;
    padding-left: 10px;
    border-left: 1px solid rgba(255, 255, 255, .1);
}

.ticketing-event-facts > div:nth-last-child(-n + 2) {
    border-bottom: 0;
}

.ticketing-event-facts > .ticketing-event-fact-wide {
    grid-column: 1 / -1;
    padding-right: 0;
    padding-left: 0;
    border-left: 0;
}

.ticketing-event-facts dt {
    margin: 0 0 3px;
    color: rgba(255, 255, 255, .55);
    font-size: 9px;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.ticketing-event-facts dd {
    margin: 0;
    color: #fff;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.ticketing-event-details {
    border-top: 1px solid rgba(255, 255, 255, .14);
    color: rgba(255, 255, 255, .77);
}

.ticketing-event-details summary {
    position: relative;
    padding: 13px 24px 9px 0;
    color: #fff;
    font-size: 12px;
    font-weight: 900;
    cursor: pointer;
}

.ticketing-event-details summary::marker {
    color: var(--ticketing-accent);
}

.ticketing-event-details > div {
    padding: 0 0 11px;
    font-size: 12px;
    line-height: 1.55;
}

.ticketing-event-details p:last-child {
    margin-bottom: 0;
}

/* Zone de sélection */
.ticketing-tunnel-main {
    min-width: 0;
    padding: 0 clamp(14px, 2.1vw, 34px) 126px;
    background: #f3f3f1;
}

.ticketing-selection-page .ticketing-selection-header {
    display: grid;
    justify-items: center;
    gap: 4px;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: clamp(22px, 3vw, 42px) 8px clamp(18px, 2vw, 28px);
    text-align: center;
}

.ticketing-selection-page .ticketing-selection-header > span {
    color: #8d6b24;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.ticketing-selection-page .ticketing-selection-header h1 {
    margin: 0;
    color: #171a1f;
    font-size: clamp(32px, 3.3vw, 54px);
    line-height: 1;
}

.ticketing-selection-page .ticketing-selection-header p {
    margin: 2px 0 0;
    color: #62676e;
    font-size: 14px;
}

.ticketing-booking-section.ticketing-booking-tunnel,
.ticketing-selection-page .ticketing-selection-form,
.ticketing-selection-page .ticketing-seat-fieldset {
    width: 100%;
    max-width: none;
    min-width: 0;
    margin: 0;
}

.ticketing-booking-section.ticketing-booking-tunnel {
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
}

.ticketing-selection-page .ticketing-selection-form {
    display: grid;
    gap: 22px;
}

.ticketing-selection-page .ticketing-tier-fieldset {
    min-width: 0;
    padding: 18px;
    border: 1px solid #d7dadd;
    border-radius: 3px;
    background: #fff;
}

.ticketing-selection-page .ticketing-seat-fieldset {
    padding: 0;
    border: 0;
}

.ticketing-selection-page .ticketing-seat-fieldset > legend {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

.ticketing-plan-toolbar {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 18px;
    margin: 0 0 10px;
    padding: 0 2px;
}

.ticketing-plan-toolbar > div {
    display: grid;
    gap: 3px;
    min-width: 0;
}

.ticketing-plan-toolbar strong {
    color: #171a1f;
    font-size: 18px;
}

.ticketing-plan-toolbar span {
    color: #62676e;
    font-size: 12px;
    line-height: 1.35;
}

.ticketing-plan-toolbar > span {
    flex: 0 0 auto;
    color: #176b45;
    font-weight: 900;
    white-space: nowrap;
}

.ticketing-selection-page .ticketing-seat-layout {
    display: flex;
    flex-direction: column;
    gap: 12px;
    width: 100%;
    min-width: 0;
}

.ticketing-seat-map-viewport {
    order: 1;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: clip;
    overflow-y: visible;
    border: 1px solid #d7dadd;
    border-radius: 4px;
    background: #fff;
    box-shadow: 0 9px 28px rgba(23, 26, 31, .06);
    scrollbar-width: thin;
    scrollbar-color: #8a6a2a #ecebe7;
}

.ticketing-seat-map-viewport:focus-visible {
    outline: 3px solid #0b8178;
    outline-offset: 2px;
}

.ticketing-seat-map-viewport.is-scrollable {
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: x proximity;
}

.ticketing-seat-map-viewport.is-scrollable::after {
    content: "Faites glisser le plan horizontalement";
    position: sticky;
    right: 8px;
    bottom: 7px;
    display: block;
    width: max-content;
    margin: -2px 8px 7px auto;
    padding: 4px 7px;
    border-radius: 2px;
    background: rgba(23, 26, 31, .88);
    color: #fff;
    font-size: 9px;
    font-weight: 800;
    pointer-events: none;
}

.ticketing-selection-page .ticketing-seat-visual-wrapper {
    --seat-width: 34px;
    --seat-render-gap: 7px;
    --seat-row-label-width: 27px;
    --seat-row-label-gap: 7px;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    margin: 0;
    padding: clamp(20px, 2.2vw, 34px) clamp(10px, 1.5vw, 24px) clamp(24px, 2.7vw, 38px);
    overflow: visible;
    background: #fff;
    scroll-snap-align: start;
}

.ticketing-stage-row,
.ticketing-selection-page .ticketing-seat-row {
    display: grid;
    grid-template-columns: var(--seat-row-label-width) minmax(0, 1fr) var(--seat-row-label-width);
    align-items: center;
    gap: var(--seat-row-label-gap);
    width: 100%;
    min-width: 0;
}

.ticketing-stage-row {
    margin: 0 0 clamp(30px, 4vw, 56px);
}

.ticketing-selection-page .ticketing-stage {
    display: grid;
    place-items: center;
    width: 100%;
    max-width: none;
    min-height: clamp(52px, 5vw, 74px);
    margin: 0;
    overflow: hidden;
    clip-path: polygon(4% 0, 96% 0, 100% 23%, 90% 100%, 10% 100%, 0 23%);
    border: 0;
    border-radius: 0;
    background: linear-gradient(180deg, #2b2c2e 0%, #101112 100%);
    color: var(--ticketing-accent);
    box-shadow: 0 5px 0 var(--ticketing-accent), 0 13px 22px rgba(0, 0, 0, .13);
}

.ticketing-selection-page .ticketing-stage::after {
    content: "";
    position: absolute;
    inset: auto 10% 8px;
    height: 1px;
    background: rgba(214, 181, 105, .7);
}

.ticketing-selection-page .ticketing-stage span {
    font-size: clamp(13px, 1.2vw, 19px);
    font-weight: 900;
    letter-spacing: .24em;
    text-transform: uppercase;
}

.ticketing-selection-page .ticketing-seat-room {
    display: grid;
    gap: clamp(10px, .95vw, 15px);
    width: 100%;
    min-width: 0;
    padding: 4px 0 6px;
    overflow: visible;
}

.ticketing-selection-page .ticketing-seat-row-label,
.ticketing-selection-page .ticketing-seat-row::after {
    display: grid;
    place-items: center;
    box-sizing: border-box;
    width: var(--seat-row-label-width);
    height: var(--seat-row-label-width);
    margin: 0;
    border: 0;
    border-radius: 1px;
    background: #171a1f;
    color: #fff;
    font-size: 10px;
    font-weight: 900;
    line-height: 1;
}

.ticketing-selection-page .ticketing-seat-row::after {
    content: attr(data-row-label);
}

.ticketing-selection-page .ticketing-seat-row-content {
    display: grid;
    grid-template-columns: repeat(var(--seat-columns), var(--seat-width));
    column-gap: var(--seat-render-gap);
    justify-content: center;
    align-items: end;
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: visible;
}

/* Le bouton reste totalement transparent : seul le fauteuil interne est dessiné. */
.ticketing-selection-page .ticketing-seat-chair,
.ticketing-selection-page .ticketing-seat-chair:hover,
.ticketing-selection-page .ticketing-seat-chair:focus,
.ticketing-selection-page .ticketing-seat-chair:focus-visible,
.ticketing-selection-page .ticketing-seat-chair:active,
.ticketing-selection-page .ticketing-seat-chair:disabled {
    appearance: none !important;
    -webkit-appearance: none !important;
    position: relative;
    grid-column: var(--seat-column);
    justify-self: center;
    display: block !important;
    box-sizing: border-box;
    flex: none !important;
    width: var(--seat-width) !important;
    max-width: var(--seat-width) !important;
    min-width: var(--seat-width) !important;
    height: calc(var(--seat-width) * 1.11) !important;
    min-height: 0 !important;
    margin: -2px 0 -6px !important;
    padding: 0 !important;
    overflow: visible !important;
    border: 0 !important;
    border-radius: 0 !important;
    outline: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: inherit !important;
    cursor: pointer;
    transition: transform .14s ease, filter .14s ease;
}

.ticketing-selection-page .ticketing-seat-chair:hover:not(:disabled),
.ticketing-selection-page .ticketing-seat-chair:focus-visible {
    z-index: 40;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    transform: translateY(-3px) scale(1.055);
    filter: drop-shadow(0 5px 4px rgba(0, 0, 0, .22));
}

.ticketing-selection-page .ticketing-seat-chair:focus-visible .ticketing-seat-chair-back {
    outline: 3px solid #111;
    outline-offset: 3px;
}

span.ticketing-seat-chair-back {
    position: absolute;
    inset: 0 8% 22%;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    border: 1px solid color-mix(in srgb, var(--seat-fill-color, var(--seat-tier-color)) 60%, #111);
    border-radius: 10px 10px 2px 2px;
    background: var(--seat-fill-color, var(--seat-tier-color));
    box-shadow:
        inset 3px 0 rgba(255, 255, 255, .18),
        inset -3px 0 rgba(0, 0, 0, .1),
        inset 0 -5px rgba(0, 0, 0, .1);
}

.ticketing-seat-chair-label {
    position: relative;
    z-index: 3;
    display: grid;
    justify-items: center;
    gap: 1px;
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    padding: 1px 0;
    border: 0 !important;
    border-radius: 1px;
    background: transparent !important;
    background-color: transparent !important;
    color: var(--seat-text-color, #000) !important;
    box-shadow: none !important;
    line-height: 1;
}

.ticketing-seat-chair-back small {
    display: block;
    max-width: 100%;
    margin: 0;
    overflow: hidden;
    font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
    font-size: clamp(10px, calc(var(--seat-width) * .19), 11px);
    font-weight: 500;
    line-height: 1;
    letter-spacing: -.03em;
    white-space: nowrap;
    color: var(--seat-text-color, #000) !important;
    -webkit-text-fill-color: var(--seat-text-color, #000) !important;
    text-overflow: clip;
    text-shadow: none !important;
}

.ticketing-selection-page .ticketing-seat-chair-base {
    position: absolute;
    right: 2%;
    bottom: 13%;
    left: 2%;
    z-index: 1;
    box-sizing: border-box;
    height: 66%;
    border: 0;
    border-radius: 10px 10px 0 0;
    box-shadow: none;
}

.ticketing-selection-page .ticketing-seat-chair.is-selected .ticketing-seat-chair-back {
    border: 0 !important;
    outline: 0 !important;
    outline-offset: 0;
    box-shadow: none !important;
}

.ticketing-selection-page .ticketing-seat-chair:disabled {
    opacity: 1 !important;
    filter: none !important;
    cursor: not-allowed;
}

.ticketing-selection-page .ticketing-seat-chair:disabled .ticketing-seat-chair-back,
.ticketing-selection-page .ticketing-seat-chair:disabled .ticketing-seat-chair-base {
    filter: grayscale(.7) saturate(.36);
    opacity: .66;
}

.ticketing-selection-page .ticketing-seat-chair.status-blocked .ticketing-seat-chair-back,
.ticketing-selection-page .ticketing-seat-chair.status-blocked .ticketing-seat-chair-base {
    filter: none;
    opacity: .9;
}

.ticketing-seat-accessibility-mark {
    position: static;
    z-index: 8;
    display: grid;
    place-items: center;
    min-width: 0;
    height: auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: inherit;
    font-size: clamp(7px, calc(var(--seat-width) * .42), 17px);
    font-weight: 900;
    line-height: .85;
    pointer-events: none;
}

.ticketing-seat-chair.seat-visibility-reduced .ticketing-seat-chair-back {
    background-image: repeating-linear-gradient(135deg, transparent 0 4px, rgba(0, 0, 0, .18) 4px 6px);
}

.ticketing-selection-page .ticketing-seat-chair::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 11px);
    left: 50%;
    z-index: 100;
    width: max-content;
    max-width: min(285px, 74vw);
    padding: 8px 10px;
    transform: translate(-50%, 5px);
    border-radius: 2px;
    background: #111419;
    color: #fff;
    font-family: Arial, sans-serif;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.35;
    text-align: left;
    white-space: normal;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    box-shadow: 0 8px 20px rgba(0, 0, 0, .24);
    transition: opacity .12s ease, transform .12s ease, visibility .12s ease;
}

.ticketing-selection-page .ticketing-seat-chair:hover::after,
.ticketing-selection-page .ticketing-seat-chair:focus-visible::after {
    transform: translate(-50%, 0);
    opacity: 1;
    visibility: visible;
}

/* Récapitulatif sous le plan, jamais à côté. */
.ticketing-selection-page .ticketing-seat-summary {
    order: 2;
    position: static;
    display: grid;
    grid-template-columns: minmax(170px, .7fr) minmax(0, 2fr) auto auto;
    align-items: center;
    gap: 14px 18px;
    width: 100%;
    min-width: 0;
    margin: 0;
    padding: 14px 16px;
    border: 1px solid #d7dadd;
    border-radius: 3px;
    background: #fff;
    box-shadow: none;
}

.ticketing-seat-summary-heading {
    min-width: 0;
}

.ticketing-seat-summary-heading h3 {
    margin: 2px 0 0;
    color: #171a1f;
    font-size: 20px;
}

.ticketing-seat-summary-kicker {
    color: #806326;
    font-size: 9px;
    font-weight: 900;
    letter-spacing: .13em;
    text-transform: uppercase;
}

.ticketing-selection-page .ticketing-seat-summary-empty {
    padding: 0;
    color: #70757c;
    font-size: 13px;
}

.ticketing-selection-page .ticketing-seat-summary-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 8px;
    max-height: 190px;
    margin: 0;
    padding: 0;
    overflow-y: auto;
    list-style: none;
}

.ticketing-selection-page .ticketing-seat-summary-list:empty {
    display: none;
}

.ticketing-selection-page .ticketing-seat-summary-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-width: 0;
    padding: 8px 9px;
    border: 1px solid #e1e2e4;
    background: #fafafa;
}

.ticketing-selection-page .ticketing-seat-summary-list li div,
.ticketing-selection-page .ticketing-seat-summary-list li strong,
.ticketing-selection-page .ticketing-seat-summary-list li small {
    min-width: 0;
}

.ticketing-selection-page .ticketing-seat-summary-list li strong,
.ticketing-selection-page .ticketing-seat-summary-list li small {
    display: block;
}

.ticketing-selection-page .ticketing-seat-summary-list li small {
    overflow: hidden;
    color: #686d74;
    font-size: 10px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ticketing-seat-summary-remove,
.ticketing-seat-reset {
    min-height: 34px !important;
    padding: 6px 9px !important;
    border: 1px solid #9e3338 !important;
    border-radius: 1px !important;
    background: transparent !important;
    color: #8b272c !important;
    font-size: 10px !important;
    font-weight: 900 !important;
    box-shadow: none !important;
}

.ticketing-seat-reset {
    border-color: #9b7b35 !important;
    color: #765b20 !important;
}

.ticketing-seat-summary-total {
    display: grid;
    gap: 2px;
    min-width: 110px;
    padding-left: 14px;
    border-left: 2px solid #171a1f;
}

.ticketing-seat-summary-total span {
    font-size: 11px;
}

.ticketing-seat-summary-total > strong {
    font-size: 20px;
    white-space: nowrap;
}

.ticketing-seat-legend,
.ticketing-seat-price-legend {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px 15px;
    width: 100%;
    padding: 0 4px;
    color: #4f545a;
    font-size: 10px;
}

.ticketing-seat-legend span,
.ticketing-seat-price-legend span {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.ticketing-seat-legend i,
.ticketing-seat-price-legend i {
    display: inline-block;
    width: 11px;
    height: 11px;
    border: 1px solid rgba(17, 20, 25, .5);
    background: var(--seat-tier-color, #e9f7ef);
}

.ticketing-seat-legend .status-available { background: #e9f7ef; }
.ticketing-seat-legend .status-selected { background: var(--ticketing-contract-selected-fill, #03c700); }
.ticketing-seat-legend .status-held { background: var(--ticketing-contract-held-fill, #e0a82f); }
.ticketing-seat-legend .status-committed,
.ticketing-seat-legend .status-blocked { background: var(--ticketing-contract-committed-fill, #595959); }

.ticketing-inline-warning {
    margin: 12px 0 0;
}

/* Barre d'action fixe, alignée uniquement sous le volet de sélection. */
.ticketing-selection-page .ticketing-selection-footer {
    position: fixed;
    right: 0;
    bottom: 0;
    left: var(--ticketing-sidebar-width);
    z-index: 1100;
    display: grid;
    grid-template-columns: minmax(220px, 1fr) minmax(160px, auto) auto minmax(250px, 390px);
    align-items: center;
    gap: 16px;
    box-sizing: border-box;
    min-height: 76px;
    padding: 10px clamp(16px, 2vw, 32px) calc(10px + env(safe-area-inset-bottom));
    border-top: 1px solid rgba(17, 20, 25, .26);
    background: var(--ticketing-accent);
    color: #111419;
    box-shadow: 0 -8px 26px rgba(17, 20, 25, .17);
}

.ticketing-selection-page .ticketing-promo-field {
    display: grid;
    grid-template-columns: auto minmax(110px, 1fr);
    align-items: center;
    gap: 4px 10px;
    min-width: 0;
    margin: 0;
}

.ticketing-selection-page .ticketing-promo-field span {
    font-size: 10px;
    font-weight: 900;
    white-space: nowrap;
}

.ticketing-selection-page .ticketing-promo-field input {
    min-width: 0;
    min-height: 42px;
    border: 1px solid rgba(17, 20, 25, .35);
    border-radius: 1px;
    background: #fff;
}

.ticketing-selection-page .ticketing-promo-field small {
    display: none;
}

.ticketing-live-summary {
    display: grid;
    gap: 1px;
    min-width: 0;
}

.ticketing-selection-page .ticketing-live-summary > span {
    font-size: 13px;
    font-weight: 900;
}

.ticketing-selection-page .ticketing-live-summary > small {
    display: block;
    max-width: 260px;
    overflow: hidden;
    font-size: 10px;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ticketing-live-total {
    display: grid;
    gap: 1px;
    min-width: 108px;
    text-align: right;
}

.ticketing-live-total span {
    font-size: 9px;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.ticketing-live-total strong {
    font-size: 22px;
    line-height: 1;
    white-space: nowrap;
}

.ticketing-selection-page [data-ticketing-selection-submit] {
    width: 100%;
    min-height: 52px;
    padding: 10px 18px;
    border: 2px solid #111419;
    border-radius: 2px;
    background: #111419;
    color: #fff;
    font-size: 15px;
    font-weight: 900;
    box-shadow: none;
}

.ticketing-selection-page [data-ticketing-selection-submit]::after {
    content: "  →";
}

.ticketing-selection-page [data-ticketing-selection-submit]:hover:not(:disabled),
.ticketing-selection-page [data-ticketing-selection-submit]:focus-visible {
    background: #fff;
    color: #111419;
}

.ticketing-selection-page [data-ticketing-selection-submit]:disabled {
    opacity: .48;
    cursor: not-allowed;
}

.ticketing-booking-unavailable,
.ticketing-waitlist-panel,
.ticketing-external-booking {
    max-width: 960px;
    margin: 0 auto 24px;
}

@media (max-width: 1240px) {
    .ticketing-tunnel-shell {
        display: block;
        min-height: 0;
    }

    .ticketing-event-panel,
    body[data-theme-header-sticky="all"] .ticketing-event-panel,
    body[data-theme-header-sticky="desktop"] .ticketing-event-panel {
        position: relative;
        top: auto;
        display: grid;
        grid-template-columns: 150px minmax(0, 1fr) minmax(310px, .9fr);
        grid-template-rows: auto auto auto;
        align-items: start;
        gap: 12px 20px;
        max-height: none;
        padding: 16px clamp(16px, 3vw, 32px) 18px;
        overflow: visible;
        box-shadow: 0 8px 24px rgba(17, 20, 25, .12);
    }

    .ticketing-event-back {
        grid-column: 1 / -1;
        margin: 0;
    }

    .ticketing-event-visual {
        grid-column: 1;
        grid-row: 2 / span 2;
        width: 150px;
        margin: 0;
        aspect-ratio: auto;
        height: auto;
    }

    .ticketing-event-intro {
        grid-column: 2;
        grid-row: 2;
    }

    .ticketing-event-intro h2 {
        font-size: clamp(24px, 3vw, 34px);
    }

    .ticketing-event-intro p {
        display: -webkit-box;
        overflow: hidden;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 4;
    }

    .ticketing-event-panel .ticketing-card-statuses {
        grid-column: 2;
        grid-row: 3;
    }

    .ticketing-event-facts {
        grid-column: 3;
        grid-row: 2 / span 2;
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .ticketing-event-facts > div,
    .ticketing-event-facts > div:nth-child(even) {
        padding: 8px;
        border-left: 1px solid rgba(255, 255, 255, .1);
    }

    .ticketing-event-facts > div:nth-child(3n + 1) {
        padding-left: 0;
        border-left: 0;
    }

    .ticketing-event-facts > .ticketing-event-fact-wide {
        grid-column: span 2;
        padding-left: 8px;
        border-left: 1px solid rgba(255, 255, 255, .1);
    }

    .ticketing-event-details {
        grid-column: 1 / -1;
    }

    .ticketing-tunnel-main {
        padding-right: clamp(10px, 2vw, 24px);
        padding-left: clamp(10px, 2vw, 24px);
    }

    .ticketing-selection-page .ticketing-selection-footer {
        left: 0;
    }
}

@media (max-width: 900px) {
    .ticketing-event-panel {
        grid-template-columns: 112px minmax(0, 1fr);
        gap: 10px 16px;
        padding: 14px 16px 16px;
    }

    .ticketing-event-visual {
        width: 112px;
        height: auto;
        aspect-ratio: auto;
    }

    .ticketing-event-facts {
        grid-column: 1 / -1;
        grid-row: auto;
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .ticketing-event-facts > div:nth-child(3n + 1),
    .ticketing-event-facts > div,
    .ticketing-event-facts > div:nth-child(even) {
        padding: 8px;
        border-left: 1px solid rgba(255, 255, 255, .1);
    }

    .ticketing-event-facts > div:nth-child(4n + 1) {
        padding-left: 0;
        border-left: 0;
    }

    .ticketing-event-facts > .ticketing-event-fact-wide {
        grid-column: span 2;
    }

    .ticketing-tunnel-main {
        padding-bottom: 106px;
    }

    .ticketing-selection-page .ticketing-seat-summary {
        grid-template-columns: minmax(145px, auto) minmax(0, 1fr) auto;
    }

    .ticketing-selection-page .ticketing-seat-summary-list,
    .ticketing-selection-page .ticketing-seat-summary-empty {
        grid-column: 1 / -1;
    }

    .ticketing-selection-page .ticketing-seat-summary-total {
        grid-column: 2;
        grid-row: 1;
    }

    .ticketing-selection-page .ticketing-seat-reset {
        grid-column: 3;
        grid-row: 1;
    }

    .ticketing-selection-page .ticketing-selection-footer {
        grid-template-columns: minmax(0, 1fr) auto minmax(210px, 38vw);
        gap: 12px;
        min-height: 70px;
        padding: 9px 12px calc(9px + env(safe-area-inset-bottom));
    }

    .ticketing-selection-page .ticketing-promo-field {
        display: none;
    }
}

@media (max-width: 680px) {
    .ticketing-event-panel {
        grid-template-columns: 88px minmax(0, 1fr);
        gap: 9px 12px;
        padding: 11px 12px 14px;
    }

    .ticketing-event-back {
        min-height: 28px;
        font-size: 11px;
    }

    .ticketing-event-visual {
        width: 88px;
        height: auto;
    }

    .ticketing-event-intro h2 {
        font-size: 21px;
    }

    .ticketing-event-intro p {
        font-size: 11px;
        line-height: 1.4;
        -webkit-line-clamp: 3;
    }

    .ticketing-event-panel .ticketing-card-statuses {
        grid-column: 1 / -1;
        grid-row: auto;
    }

    .ticketing-event-facts {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ticketing-event-facts > div:nth-child(4n + 1),
    .ticketing-event-facts > div,
    .ticketing-event-facts > div:nth-child(even) {
        padding: 8px 7px;
        border-left: 1px solid rgba(255, 255, 255, .1);
    }

    .ticketing-event-facts > div:nth-child(odd) {
        padding-left: 0;
        border-left: 0;
    }

    .ticketing-event-facts > .ticketing-event-fact-wide {
        grid-column: 1 / -1;
        padding-left: 0;
        border-left: 0;
    }

    .ticketing-tunnel-main {
        padding: 0 3px 92px;
    }

    .ticketing-selection-page .ticketing-selection-header {
        padding: 18px 9px 15px;
    }

    .ticketing-selection-page .ticketing-selection-header h1 {
        font-size: 29px;
    }

    .ticketing-selection-page .ticketing-selection-header p {
        font-size: 12px;
    }

    .ticketing-plan-toolbar {
        align-items: start;
        gap: 8px;
        padding: 0 6px;
    }

    .ticketing-plan-toolbar strong {
        font-size: 15px;
    }

    .ticketing-plan-toolbar > div span {
        display: none;
    }

    .ticketing-plan-toolbar > span {
        font-size: 9px;
    }

    .ticketing-seat-map-viewport {
        border-right: 0;
        border-left: 0;
        border-radius: 0;
        box-shadow: none;
    }

    .ticketing-selection-page .ticketing-seat-visual-wrapper {
        --seat-row-label-width: 18px;
        --seat-row-label-gap: 3px;
        padding: 14px 6px 20px;
    }

    .ticketing-stage-row {
        margin-bottom: 25px;
    }

    .ticketing-selection-page .ticketing-stage {
        min-height: 44px;
    }

    .ticketing-selection-page .ticketing-stage span {
        font-size: 11px;
        letter-spacing: .18em;
    }

    .ticketing-selection-page .ticketing-seat-room {
        gap: 9px;
    }

    .ticketing-selection-page .ticketing-seat-row-label,
    .ticketing-selection-page .ticketing-seat-row::after {
        font-size: 7px;
    }

    .ticketing-selection-page .ticketing-seat-summary {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 9px;
        padding: 10px;
        border-right: 0;
        border-left: 0;
        border-radius: 0;
    }

    .ticketing-selection-page .ticketing-seat-summary-list,
    .ticketing-selection-page .ticketing-seat-summary-empty {
        grid-column: 1 / -1;
    }

    .ticketing-selection-page .ticketing-seat-summary-total {
        grid-column: 1;
        grid-row: auto;
        padding-left: 0;
        border-left: 0;
    }

    .ticketing-selection-page .ticketing-seat-reset {
        grid-column: 2;
        grid-row: 1;
    }

    .ticketing-seat-legend,
    .ticketing-seat-price-legend {
        justify-content: flex-start;
        padding-right: 7px;
        padding-left: 7px;
        font-size: 9px;
    }

    .ticketing-selection-page .ticketing-selection-footer {
        grid-template-columns: minmax(0, 1fr) minmax(154px, 47vw);
        gap: 8px;
        min-height: 64px;
        padding: 7px 8px calc(7px + env(safe-area-inset-bottom));
    }

    .ticketing-live-total {
        display: none;
    }

    .ticketing-selection-page .ticketing-live-summary > span {
        font-size: 12px;
    }

    .ticketing-selection-page .ticketing-live-summary > small {
        max-width: 42vw;
        font-size: 9px;
    }

    .ticketing-selection-page [data-ticketing-selection-submit] {
        min-height: 48px;
        padding: 8px 9px;
        font-size: 11px;
    }
}

@media (max-width: 390px) {
    .ticketing-event-facts dd {
        font-size: 11px;
    }

    .ticketing-selection-page .ticketing-live-summary > small {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .ticketing-selection-page .ticketing-seat-chair,
    .ticketing-selection-page .ticketing-seat-chair::after {
        transition: none;
    }
}

/* R14 — en-tête supprimé, scène allégée et sélection persistante. */
.ticketing-visually-hidden {
    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;
    clip-path: inset(50%) !important;
    border: 0 !important;
    white-space: nowrap !important;
}

.ticketing-selection-page {
    --ticketing-selection-dock-height: 83px;
}

.ticketing-selection-page .ticketing-selection-header {
    display: none !important;
}

.ticketing-selection-page .ticketing-tunnel-main {
    padding-top: clamp(9px, 1vw, 16px);
}

.ticketing-selection-page .ticketing-tunnel-main.has-ticketing-selection-footer {
    padding-bottom: calc(var(--ticketing-selection-dock-height, 83px) + 22px);
}

.ticketing-selection-page .ticketing-selection-form {
    gap: 16px;
}

.ticketing-selection-page .ticketing-plan-toolbar {
    margin-bottom: 7px;
}

.ticketing-selection-page .ticketing-seat-visual-wrapper {
    padding-top: clamp(9px, 1.1vw, 17px);
    padding-bottom: clamp(15px, 1.7vw, 24px);
}

.ticketing-selection-page .ticketing-stage-row {
    margin-bottom: clamp(13px, 1.4vw, 21px);
}

.ticketing-selection-page .ticketing-stage {
    position: relative;
    height: clamp(24px, 1.85vw, 30px);
    min-height: 0;
    clip-path: polygon(2.5% 0, 97.5% 0, 100% 28%, 96% 100%, 4% 100%, 0 28%);
    border: 1px solid rgba(142, 108, 34, .28);
    background: linear-gradient(180deg, rgba(251, 248, 240, .72) 0%, rgba(238, 231, 216, .62) 100%);
    color: #70551b;
    box-shadow: inset 0 -1px 0 rgba(214, 181, 105, .58);
}

.ticketing-selection-page .ticketing-stage::after {
    inset: auto 8% 3px;
    height: 1px;
    background: rgba(126, 94, 27, .26);
}

.ticketing-selection-page .ticketing-stage span {
    font-size: clamp(9px, .75vw, 12px);
    letter-spacing: .18em;
}

.ticketing-promo-row {
    display: flex;
    justify-content: flex-start;
    width: 100%;
    min-width: 0;
    padding: 0 2px;
}

.ticketing-selection-page .ticketing-promo-field.ticketing-promo-inline {
    display: grid !important;
    grid-template-columns: auto minmax(180px, 340px);
    align-items: center;
    gap: 4px 10px;
    width: min(100%, 520px);
    margin: 0;
    padding: 9px 11px;
    border: 1px solid #d7dadd;
    border-radius: 2px;
    background: #fff;
    color: #171a1f;
}

.ticketing-selection-page .ticketing-promo-field.ticketing-promo-inline span {
    color: #171a1f;
}

.ticketing-selection-page .ticketing-promo-field.ticketing-promo-inline input {
    width: 100%;
    min-height: 38px;
}

.ticketing-selection-page .ticketing-promo-field.ticketing-promo-inline small {
    display: block;
    grid-column: 2;
    color: #666b72;
    font-size: 9px;
}

/* Une infobulle masquée ne doit pas élargir artificiellement une rangée. */
.ticketing-selection-page .ticketing-seat-chair::after {
    content: none;
}

.ticketing-selection-page .ticketing-seat-chair:hover::after,
.ticketing-selection-page .ticketing-seat-chair:focus-visible::after {
    content: attr(data-tooltip);
}

/* Dock fixe : places choisies toujours visibles et action à droite. */
.ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-footer {
    position: fixed;
    right: 0;
    bottom: 0;
    left: var(--ticketing-sidebar-width);
    z-index: 1100;
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(430px, 570px) !important;
    grid-template-rows: minmax(0, 1fr) !important;
    align-items: stretch;
    gap: 0 !important;
    box-sizing: border-box;
    width: auto;
    min-width: 0;
    min-height: 0;
    padding: 0 0 env(safe-area-inset-bottom) !important;
    border-top: 1px solid rgba(17, 20, 25, .24);
    background: #fff;
    color: #111419;
    box-shadow: 0 -8px 26px rgba(17, 20, 25, .17);
}

.ticketing-selection-page .ticketing-booking-tunnel .ticketing-seat-summary.ticketing-seat-summary-dock {
    position: static;
    order: initial;
    grid-column: 1 !important;
    grid-row: 1 !important;
    display: grid;
    grid-template-columns: minmax(116px, auto) minmax(0, 1fr) auto;
    grid-template-rows: minmax(0, 1fr);
    align-items: center;
    gap: 8px 12px;
    box-sizing: border-box;
    width: 100% !important;
    min-width: 0;
    height: 82px !important;
    max-height: 82px !important;
    margin: 0;
    padding: 8px 12px;
    overflow: hidden;
    border: 0;
    border-radius: 0;
    background: rgba(255, 255, 255, .985);
    box-shadow: none;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-heading {
    min-width: 0;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-heading h3 {
    margin: 1px 0 0;
    font-size: 16px;
    line-height: 1.05;
    white-space: nowrap;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-kicker {
    color: #71571f;
    font-size: 8px;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-empty {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    padding: 0;
    color: #656a70;
    font-size: 12px;
    font-weight: 700;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list {
    grid-column: 2;
    grid-row: 1;
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 7px;
    min-width: 0;
    max-height: 58px;
    margin: 0;
    padding: 1px 2px 3px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
    scrollbar-color: #9a7b38 #ecebe7;
    list-style: none;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list:empty {
    display: none;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list li {
    flex: 0 0 auto;
    width: auto;
    min-width: 178px;
    max-width: 240px;
    min-height: 50px;
    padding: 5px 7px;
    border: 1px solid #dedfe1;
    background: #f8f8f7;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list li > div {
    min-width: 0;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list li strong {
    overflow: hidden;
    font-size: 11px;
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list li small {
    max-width: 150px;
    margin-top: 2px;
    color: #575b60;
    font-size: 9px;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-remove,
.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-reset {
    min-height: 30px !important;
    padding: 4px 7px !important;
    background: #fff !important;
    font-size: 9px !important;
    white-space: nowrap;
}

.ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-reset {
    grid-column: 3;
    grid-row: 1;
    justify-self: end;
}

.ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-actions {
    grid-column: 2 !important;
    grid-row: 1 !important;
    display: grid;
    grid-template-columns: minmax(125px, 1fr) auto minmax(210px, 300px);
    align-items: center;
    gap: 12px;
    box-sizing: border-box;
    width: 100% !important;
    min-width: 0;
    min-height: 82px;
    padding: 9px 14px;
    border-top: 0;
    border-left: 1px solid rgba(17, 20, 25, .18);
    background: var(--ticketing-accent);
    color: #111419;
}

.ticketing-selection-actions .ticketing-live-summary {
    min-width: 0;
}

.ticketing-selection-actions .ticketing-live-summary > small {
    max-width: 190px;
}

.ticketing-selection-actions .ticketing-live-total {
    display: grid !important;
    min-width: 92px;
}

.ticketing-selection-actions .ticketing-live-total span {
    display: block;
}

.ticketing-selection-actions .ticketing-live-total strong {
    font-size: 20px;
}

.ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-actions [data-ticketing-selection-submit] {
    justify-self: end;
    width: 100%;
    min-height: 52px;
    padding: 9px 14px;
    font-size: 14px;
}

@media (max-width: 1240px) {
    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-footer {
        left: 0;
    }
}

@media (max-width: 980px) {
    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-footer {
        grid-template-columns: minmax(0, 1fr) !important;
        grid-template-rows: 72px 64px !important;
    }

    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-seat-summary.ticketing-seat-summary-dock {
        grid-column: 1 !important;
        grid-row: 1 !important;
        height: 72px !important;
        max-height: 72px !important;
        padding: 6px 10px;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list {
        max-height: 54px;
    }

    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-actions {
        grid-column: 1 !important;
        grid-row: 2 !important;
        grid-template-columns: minmax(0, 1fr) auto minmax(205px, 36vw);
        min-height: 64px;
        padding: 7px 11px;
        border-top: 1px solid rgba(17, 20, 25, .18);
        border-left: 0;
    }

    .ticketing-selection-actions .ticketing-live-summary > small {
        max-width: 36vw;
    }
}

@media (max-width: 680px) {
    .ticketing-selection-page .ticketing-tunnel-main {
        padding-top: 7px;
    }

    .ticketing-selection-page .ticketing-tunnel-main.has-ticketing-selection-footer {
        padding-bottom: calc(var(--ticketing-selection-dock-height, 154px) + 16px);
    }

    .ticketing-selection-page .ticketing-seat-visual-wrapper {
        padding-top: 7px;
        padding-bottom: 14px;
    }

    .ticketing-selection-page .ticketing-stage-row {
        margin-bottom: 12px;
    }

    .ticketing-selection-page .ticketing-stage {
        height: 22px;
    }

    .ticketing-selection-page .ticketing-stage span {
        font-size: 8px;
        letter-spacing: .15em;
    }

    .ticketing-promo-row {
        padding: 0 6px;
    }

    .ticketing-selection-page .ticketing-promo-field.ticketing-promo-inline {
        grid-template-columns: 1fr;
        gap: 5px;
        width: 100%;
        padding: 8px 9px;
    }

    .ticketing-selection-page .ticketing-promo-field.ticketing-promo-inline small {
        grid-column: 1;
    }

    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-footer {
        grid-template-rows: 90px 62px !important;
    }

    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-seat-summary.ticketing-seat-summary-dock {
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-rows: 27px minmax(0, 1fr);
        gap: 4px 8px;
        height: 90px !important;
        max-height: 90px !important;
        padding: 5px 7px;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-heading {
        grid-column: 1;
        grid-row: 1;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-kicker {
        display: none;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-heading h3 {
        margin: 0;
        font-size: 14px;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-reset {
        grid-column: 2;
        grid-row: 1;
        min-height: 27px !important;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-empty,
    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list {
        grid-column: 1 / -1;
        grid-row: 2;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-empty {
        align-self: center;
        font-size: 11px;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list {
        max-height: 52px;
        padding-bottom: 2px;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list li {
        min-width: 158px;
        max-width: 190px;
        min-height: 46px;
        padding: 4px 6px;
    }

    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-list li small {
        max-width: 110px;
        font-size: 8px;
    }

    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-actions {
        grid-template-columns: minmax(0, 1fr) auto minmax(140px, 44vw);
        gap: 7px;
        min-height: 62px;
        padding: 6px 7px;
    }

    .ticketing-selection-actions .ticketing-live-summary > span {
        font-size: 11px;
    }

    .ticketing-selection-actions .ticketing-live-summary > small {
        max-width: 32vw;
        font-size: 8px;
    }

    .ticketing-selection-actions .ticketing-live-total {
        min-width: 70px;
    }

    .ticketing-selection-actions .ticketing-live-total span {
        display: none;
    }

    .ticketing-selection-actions .ticketing-live-total strong {
        font-size: 17px;
    }

    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-actions [data-ticketing-selection-submit] {
        min-height: 46px;
        padding: 7px 8px;
        font-size: 11px;
    }
}

@media (max-width: 430px) {
    .ticketing-selection-page .ticketing-seat-summary-dock .ticketing-seat-summary-heading h3 {
        font-size: 13px;
    }

    .ticketing-selection-page .ticketing-booking-tunnel .ticketing-selection-actions {
        grid-template-columns: minmax(0, 1fr) auto minmax(128px, 42vw);
    }

    .ticketing-selection-actions .ticketing-live-summary > small {
        display: none;
    }
}

/* R16 — entête compact, image pleine largeur, tooltips et checkout. */
.ticketing-selection-page .ticketing-event-panel {
    --ticketing-panel-gutter: 22px;
    padding: 0 var(--ticketing-panel-gutter) 34px;
}

.ticketing-selection-page .ticketing-event-visual {
    flex: 0 0 auto;
    width: calc(100% + var(--ticketing-panel-gutter) + var(--ticketing-panel-gutter));
    max-width: none;
    margin: 0 calc(0px - var(--ticketing-panel-gutter));
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.ticketing-selection-page .ticketing-event-visual img {
    display: block;
    width: 100%;
    height: auto;
    max-width: none;
    object-fit: contain;
    object-position: center top;
}

h2#ticketing-event-panel-title {
    font-size: clamp(17px, 0.6vw, var(--obt-h2-font-size)) !important;
}

.ticketing-selection-page .ticketing-selection-topbar {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 56px;
    padding: 8px 18px;
    border-bottom: 1px solid rgba(17, 20, 25, .12);
    background: #fff;
}

.ticketing-selection-page .ticketing-selection-topbar .ticketing-event-back {
    position: absolute;
    left: 18px;
    top: 50%;
    min-height: 34px;
    padding: 9px 13px;
    transform: translateY(-50%);
}

.ticketing-selection-page .ticketing-selection-topbar h1 {
    max-width: calc(100% - 360px);
    margin: 0;
    color: var(--ticketing-dark);
    font-size: clamp(20px, 1.7vw, 31px);
    line-height: 1.05;
    text-align: center;
}

.ticketing-selection-page .ticketing-selection-topbar-spacer {
    display: none;
}

/* Le rang survolé doit passer au-dessus des rangs suivants. Sans cela,
   l'infobulle d'un siège disabled/held restait derrière les fauteuils. */
.ticketing-selection-page .ticketing-seat-row {
    position: relative;
    z-index: 1;
}

.ticketing-selection-page .ticketing-seat-row:hover,
.ticketing-selection-page .ticketing-seat-row:focus-within {
    z-index: 500;
}

.ticketing-selection-page .ticketing-seat-chair:hover,
.ticketing-selection-page .ticketing-seat-chair:focus-visible {
    z-index: 1000 !important;
}

.ticketing-selection-page .ticketing-seat-chair:hover::after,
.ticketing-selection-page .ticketing-seat-chair:focus-visible::after {
    z-index: 2000 !important;
}

.ticketing-checkout-promo {
    display: grid;
    gap: 6px;
    margin: 18px 0;
    padding: 14px 0;
    border-top: 1px solid var(--ticketing-border);
    border-bottom: 1px solid var(--ticketing-border);
}

.ticketing-checkout-promo > span {
    color: var(--ticketing-dark, #171a1f);
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.ticketing-checkout-promo input {
    box-sizing: border-box;
    width: 100%;
    min-height: 42px;
    padding: 9px 11px;
    border: 1px solid rgba(17, 20, 25, .35);
    border-radius: 0;
    background: #fff;
    color: #111419;
    font: inherit;
    text-transform: uppercase;
}

.ticketing-checkout-promo input:focus-visible {
    outline: 3px solid rgba(213, 181, 109, .48);
    outline-offset: 2px;
    border-color: #7f6225;
}

.ticketing-checkout-promo small {
    color: var(--ticketing-muted, #666b72);
    font-size: 11px;
    line-height: 1.35;
}

.ticketing-change-selection-form {
    margin: 0;
}

.ticketing-change-selection-form .ticketing-change-selection {
    width: 100%;
    margin: 0;
    padding: 12px 8px 0;
    border: 0;
    border-top: 1px solid var(--ticketing-border);
    border-radius: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
    font: inherit;
    font-weight: 700;
    text-align: center;
}

.ticketing-change-selection-form .ticketing-change-selection:hover,
.ticketing-change-selection-form .ticketing-change-selection:focus-visible {
    background: transparent;
    color: var(--ticketing-accent, #8b6a24);
    text-decoration: underline;
}

@media (max-width: 980px) {
    .ticketing-selection-page .ticketing-event-panel {
        --ticketing-panel-gutter: 18px;
    }

    .ticketing-selection-page .ticketing-selection-topbar h1 {
        max-width: calc(100% - 300px);
        font-size: clamp(19px, 3vw, 26px);
    }
}

@media (max-width: 680px) {
    .ticketing-selection-page .ticketing-event-panel {
        --ticketing-panel-gutter: 14px;
        padding-bottom: 22px;
    }

    .ticketing-selection-page .ticketing-selection-topbar {
        display: grid;
        grid-template-columns: auto minmax(0, 1fr);
        gap: 10px;
        min-height: 52px;
        padding: 7px 10px;
    }

    .ticketing-selection-page .ticketing-selection-topbar .ticketing-event-back {
        position: static;
        align-self: center;
        min-height: 32px;
        padding: 8px 9px;
        transform: none;
        font-size: 10px;
        white-space: nowrap;
    }

    .ticketing-selection-page .ticketing-selection-topbar h1 {
        max-width: none;
        font-size: clamp(17px, 5vw, 21px);
        text-align: center;
    }
}

/* ========================================================================
   Tunnel billetterie R17 — topbar, compacité et couleurs d'état protégées
   ======================================================================== */
.ticketing-selection-page .ticketing-selection-topbar {
    --ticketing-topbar-label-size: clamp(13px, .95vw, 17px);
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) !important;
    align-items: center !important;
    gap: clamp(8px, 1vw, 18px) !important;
    min-height: 52px;
    padding: 7px clamp(10px, 1.2vw, 18px) !important;
}

.ticketing-selection-page .ticketing-selection-topbar .ticketing-event-back {
    position: static !important;
    top: auto !important;
    left: auto !important;
    justify-self: start;
    align-self: center;
    min-width: 0;
    max-width: 100%;
    grid-column: 1 !important;
    grid-row: 1 !important;
    transform: none !important;
    white-space: nowrap;
}

.ticketing-selection-page .ticketing-selection-topbar h1,
.ticketing-selection-page .ticketing-selection-availability {
    margin: 0;
    color: var(--ticketing-dark, #171a1f);
    font-size: var(--ticketing-topbar-label-size) !important;
    font-weight: 800;
    line-height: 1.1;
}

.ticketing-selection-page .ticketing-selection-topbar h1 {
    grid-column: 2 !important;
    grid-row: 1 !important;
    justify-self: center;
    max-width: none !important;
    text-align: center;
    white-space: nowrap;
}

.ticketing-selection-page .ticketing-selection-availability {
    display: inline-flex;
    grid-column: 3 !important;
    grid-row: 1 !important;
    justify-self: end;
    align-items: baseline;
    gap: .35em;
    min-width: 0;
    white-space: nowrap;
}

.ticketing-selection-page .ticketing-selection-availability strong,
.ticketing-selection-page .ticketing-selection-availability span {
    color: inherit;
    font: inherit;
}

.ticketing-selection-page .ticketing-event-description {
    margin: 0;
    color: rgba(255, 255, 255, .74);
    font-size: clamp(10px, .68vw, 12px);
    line-height: 1.45;
}

.ticketing-selection-page .ticketing-seat-visual-wrapper {
    padding-top: clamp(1px, .1vw, 2px) !important;
    padding-bottom: clamp(1px, .7vw, 2px) !important;
}

/* Les catégories tarifaires utilisent leur propre palette. Les états
   fonctionnels ont une palette fixe, indépendante et accessible. */
.ticketing-selection-page {
    --ticketing-seat-selected-fill: var(--ticketing-contract-selected-fill, #03c700);
    --ticketing-seat-selected-text: var(--ticketing-contract-selected-text, #000);
    --ticketing-seat-held-fill: var(--ticketing-contract-held-fill, #e0a82f);
    --ticketing-seat-held-text: var(--ticketing-contract-held-text, #000);
    --ticketing-seat-committed-fill: var(--ticketing-contract-committed-fill, #595959);
    --ticketing-seat-committed-text: var(--ticketing-contract-committed-text, #fff);
    --ticketing-seat-blocked-fill: var(--ticketing-contract-committed-fill, #595959);
    --ticketing-seat-blocked-text: var(--ticketing-contract-committed-text, #fff);
    --ticketing-seat-unavailable-fill: var(--ticketing-contract-unavailable-fill, #b8b8b8);
    --ticketing-seat-unavailable-text: var(--ticketing-contract-unavailable-text, #000);
}

.ticketing-selection-page .ticketing-seat-chair.seat-type-pmr.status-available:not(.is-selected) {
    --seat-tier-color: var(--ticketing-contract-pmr-fill, #1049fc) !important;
    --seat-category-color: var(--ticketing-contract-pmr-fill, #1049fc) !important;
    --seat-fill-color: var(--ticketing-contract-pmr-fill, #1049fc) !important;
    --seat-text-color: var(--ticketing-contract-pmr-text, #fff) !important;
}

.ticketing-selection-page .ticketing-seat-chair.seat-type-pmr.status-available:not(.is-selected) .ticketing-seat-chair-back {
    border: 0 !important;
    background: var(--ticketing-contract-pmr-fill, #1049fc) !important;
    color: var(--ticketing-contract-pmr-text, #fff) !important;
}

.ticketing-selection-page .ticketing-seat-chair.seat-type-pmr.status-available:not(.is-selected) .ticketing-seat-chair-label,
.ticketing-selection-page .ticketing-seat-chair.seat-type-pmr.status-available:not(.is-selected) .ticketing-seat-chair-label small,
.ticketing-selection-page .ticketing-seat-chair.seat-type-pmr.status-available:not(.is-selected) .ticketing-seat-accessibility-mark {
    color: #fff !important;
    -webkit-text-fill-color: #fff !important;
}

.ticketing-selection-page .ticketing-seat-chair.seat-type-pmr .ticketing-seat-accessibility-mark .fa {
    display: block;
    font-size: inherit;
    line-height: 1;
}

.ticketing-selection-page .ticketing-seat-chair.is-selected {
    --seat-tier-color: #008f14 !important;
    --seat-category-color: #4dff00 !important;
    --seat-fill-color: var(--ticketing-contract-selected-fill, #03c700) !important;
    --seat-text-color: var(--ticketing-contract-selected-text, #000) !important;
    z-index: 999 !important;
}

.ticketing-selection-page .ticketing-seat-chair.is-selected .ticketing-seat-chair-back {
    border: 0 !important;
    outline: 0 !important;
    background: var(--seat-fill-color) !important;
    color: var(--seat-text-color) !important;
    box-shadow: none !important;
    filter: none !important;
    opacity: 1 !important;
}

.ticketing-selection-page .ticketing-seat-chair.is-selected .ticketing-seat-chair-label,
.ticketing-selection-page .ticketing-seat-chair.is-selected .ticketing-seat-chair-label small,
.ticketing-selection-page .ticketing-seat-chair.is-selected .ticketing-seat-accessibility-mark {
    color: var(--seat-text-color) !important;
    -webkit-text-fill-color: var(--seat-text-color) !important;
}

.ticketing-selection-page .ticketing-seat-chair.status-held .ticketing-seat-chair-back,
.ticketing-selection-page .ticketing-seat-chair.status-committed .ticketing-seat-chair-back,
.ticketing-selection-page .ticketing-seat-chair.status-blocked .ticketing-seat-chair-back,
.ticketing-selection-page .ticketing-seat-chair.status-unavailable .ticketing-seat-chair-back {
    filter: none !important;
    opacity: 1 !important;
}

.ticketing-selection-page .ticketing-seat-chair.status-held .ticketing-seat-chair-back {
    background: var(--ticketing-seat-held-fill) !important;
}
.ticketing-selection-page .ticketing-seat-chair.status-held .ticketing-seat-chair-label,
.ticketing-selection-page .ticketing-seat-chair.status-held .ticketing-seat-chair-label small {
    color: var(--ticketing-seat-held-text) !important;
    -webkit-text-fill-color: var(--ticketing-seat-held-text) !important;
}

.ticketing-selection-page .ticketing-seat-chair.status-committed .ticketing-seat-chair-back {
    background: var(--ticketing-seat-committed-fill) !important;
}
.ticketing-selection-page .ticketing-seat-chair.status-committed .ticketing-seat-chair-label,
.ticketing-selection-page .ticketing-seat-chair.status-committed .ticketing-seat-chair-label small {
    color: var(--ticketing-seat-committed-text) !important;
    -webkit-text-fill-color: var(--ticketing-seat-committed-text) !important;
}

.ticketing-selection-page .ticketing-seat-chair.status-blocked .ticketing-seat-chair-back {
    background: var(--ticketing-seat-blocked-fill) !important;
}
.ticketing-selection-page .ticketing-seat-chair.status-blocked .ticketing-seat-chair-label,
.ticketing-selection-page .ticketing-seat-chair.status-blocked .ticketing-seat-chair-label small {
    color: var(--ticketing-seat-blocked-text) !important;
    -webkit-text-fill-color: var(--ticketing-seat-blocked-text) !important;
}

.ticketing-selection-page .ticketing-seat-chair.status-unavailable .ticketing-seat-chair-back {
    background: var(--ticketing-seat-unavailable-fill) !important;
}
.ticketing-selection-page .ticketing-seat-chair.status-unavailable .ticketing-seat-chair-label,
.ticketing-selection-page .ticketing-seat-chair.status-unavailable .ticketing-seat-chair-label small {
    color: var(--ticketing-seat-unavailable-text) !important;
    -webkit-text-fill-color: var(--ticketing-seat-unavailable-text) !important;
}

@media (max-width: 680px) {
    .ticketing-selection-page .ticketing-selection-topbar {
        --ticketing-topbar-label-size: clamp(10px, 2.9vw, 12px);
        grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) !important;
        gap: 5px !important;
        min-height: 46px;
        padding: 6px 7px !important;
    }

    .ticketing-selection-page .ticketing-selection-topbar .ticketing-event-back {
        min-height: 30px;
        padding: 5px 6px;
        overflow: hidden;
        font-size: 8.5px;
        text-overflow: ellipsis;
    }

    .ticketing-selection-page .ticketing-selection-topbar h1,
    .ticketing-selection-page .ticketing-selection-availability {
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .ticketing-selection-page .ticketing-selection-availability {
        gap: .25em;
    }
}

/* R18 — ajustements compacts demandés pour le tunnel de sélection. */
p.ticketing-event-description {
    font-size: 13px !important;
    text-align: justify;
    font-weight: 100;
}

.ticketing-selection-page .ticketing-tunnel-main {
    padding-top: 0;
}

.ticketing-tunnel-main {
    min-width: 0;
    padding: 0 clamp(5px, .1vw, 5px) 122px;
    background: #fff;
}

.ticketing-selection-page .ticketing-stage {
    position: relative;
    height: clamp(24px, 1.85vw, 30px);
    min-height: 0;
    clip-path: polygon(2.5% 0, 97.5% 0, 100% 28%, 96% 100%, 4% 100%, 0 28%);
    border: 0;
    background: #000;
    color: #fff;
    box-shadow: none;
}


/* R20 — séparation visible des sections des plans théâtre */
.ticketing-selection-page .ticketing-seat-section-title {
    display: grid;
    grid-template-columns: var(--seat-row-label-width) minmax(0, 1fr) var(--seat-row-label-width);
    align-items: center;
    gap: var(--seat-row-label-gap);
    width: 100%;
    margin: clamp(8px, 1vw, 14px) 0 2px;
}
.ticketing-selection-page .ticketing-seat-section-title strong {
    display: block;
    padding: 5px 10px;
    border-top: 1px solid rgba(112, 85, 27, .34);
    border-bottom: 1px solid rgba(112, 85, 27, .34);
    background: rgba(213, 181, 109, .08);
    color: #171a1f;
    font-size: clamp(9px, .65vw, 11px);
    font-weight: 900;
    letter-spacing: .14em;
    line-height: 1;
    text-align: center;
    text-transform: uppercase;
}

/* R21 — niveaux de salle et simulation visuelle des accès par escaliers */
.ticketing-selection-page .ticketing-seat-section-title {
    margin-top: calc(clamp(8px, 1vw, 14px) + (var(--section-level-jump, 0) * 12px));
}
.ticketing-selection-page .ticketing-seat-section-title strong {
    position: relative;
    display: grid;
    grid-template-columns: 1fr auto 32px;
    align-items: center;
    gap: 8px;
    text-align: left;
}
.ticketing-selection-page .ticketing-seat-section-title strong > span {
    text-align: center;
}
.ticketing-selection-page .ticketing-seat-section-title strong > small {
    color: #5e6670;
    font-size: clamp(8px, .55vw, 10px);
    font-weight: 800;
    letter-spacing: .08em;
    white-space: nowrap;
}
.ticketing-selection-page .ticketing-seat-section-title strong > i {
    display: block;
    width: 30px;
    height: 15px;
    background: linear-gradient(to top right,
        transparent 0 16%, #d5b56d 17% 23%,
        transparent 24% 41%, #d5b56d 42% 48%,
        transparent 49% 66%, #d5b56d 67% 73%,
        transparent 74%);
    opacity: calc(.22 + (var(--section-level, 0) * .13));
}
.ticketing-selection-page .ticketing-seat-row[data-level] {
    transition: margin-top .2s ease;
}
@media (max-width: 720px) {
    .ticketing-selection-page .ticketing-seat-section-title strong {
        grid-template-columns: 1fr auto 24px;
        gap: 5px;
    }
    .ticketing-selection-page .ticketing-seat-section-title strong > i {
        width: 22px;
    }
}

/* R23 — couloirs, escaliers et confirmation PMR */
.ticketing-selection-page .ticketing-seat-circulation{position:relative;z-index:0;grid-column:var(--circulation-column)/span var(--circulation-span);align-self:stretch;min-height:calc(var(--seat-width) * 1.08);pointer-events:none}
.ticketing-selection-page .ticketing-seat-circulation.is-corridor{background:linear-gradient(90deg,transparent 0 42%,rgba(213,181,109,.52) 43% 57%,transparent 58%)}
.ticketing-selection-page .ticketing-seat-circulation.is-corridor>i{position:absolute;inset:4px 18%;border-top:1px dashed rgba(23,26,31,.24);border-bottom:1px dashed rgba(23,26,31,.24)}
.ticketing-selection-page .ticketing-seat-circulation.is-stairs{background:repeating-linear-gradient(135deg,transparent 0 6px,rgba(213,181,109,.54) 6px 8px)}
.ticketing-selection-page .ticketing-seat-circulation.is-stairs>i{position:absolute;inset:3px 12%;border-left:1px solid rgba(23,26,31,.18);border-right:1px solid rgba(23,26,31,.18)}
.ticketing-selection-page .ticketing-seat-section-title strong>.ticketing-seat-stairs{height:17px;background:repeating-linear-gradient(135deg,transparent 0 5px,#d5b56d 5px 7px)}
.ticketing-pmr-seat-dialog{width:min(520px,calc(100vw - 28px));padding:0;border:1px solid rgba(112,85,27,.42);border-radius:0;background:#fff;color:#171a1f;box-shadow:0 22px 70px rgba(0,0,0,.34)}
.ticketing-pmr-seat-dialog::backdrop{background:rgba(10,12,15,.7);backdrop-filter:blur(3px)}
.ticketing-pmr-seat-dialog form{display:grid;gap:12px;padding:24px}
.ticketing-pmr-seat-dialog h3,.ticketing-pmr-seat-dialog p{margin:0}
.ticketing-pmr-seat-dialog h3{font-size:clamp(20px,2.2vw,27px);line-height:1.1}
.ticketing-pmr-seat-dialog p{color:#4e5660;font-size:14px;line-height:1.55}
.ticketing-pmr-seat-dialog-icon{display:grid;width:46px;height:46px;place-items:center;background:#dbeafe;color:#12366b;font-size:25px}
.ticketing-pmr-seat-dialog form>div:last-child{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
.ticketing-pmr-seat-dialog button{min-height:42px;padding:9px 14px;border:1px solid #c8ccd1;border-radius:0;background:#fff;color:#171a1f;font-weight:800;cursor:pointer}
.ticketing-pmr-seat-dialog [data-pmr-seat-confirm]{border-color:#d5b56d;background:#d5b56d;color:#111}
.ticketing-pmr-seat-dialog button:focus-visible{outline:3px solid #004c97;outline-offset:2px}
@media(max-width:600px){.ticketing-pmr-seat-dialog form{padding:18px}.ticketing-pmr-seat-dialog form>div:last-child{align-items:stretch;flex-direction:column}.ticketing-pmr-seat-dialog button{width:100%}}

/* R24 — séparateurs entre sections plutôt qu'entre rangs */
.ticketing-selection-page .ticketing-seat-section-separator {
    display:grid;
    grid-template-columns: var(--seat-row-label-width) minmax(0,1fr) var(--seat-row-label-width);
    align-items:center;
    gap:var(--seat-row-label-gap);
    width:100%;
    margin: clamp(8px, 1vw, 14px) 0 4px;
}
.ticketing-selection-page .ticketing-seat-section-separator > strong {
    position:relative;
    display:block;
    height: clamp(14px, 1.3vw, 18px);
}
.ticketing-selection-page .ticketing-seat-section-separator.is-corridor > strong {
    background:linear-gradient(90deg,transparent 0 42%,rgba(213,181,109,.58) 43% 57%,transparent 58%);
}
.ticketing-selection-page .ticketing-seat-section-separator.is-corridor > strong > i {
    position:absolute;
    inset:3px 12%;
    border-top:1px dashed rgba(23,26,31,.24);
    border-bottom:1px dashed rgba(23,26,31,.24);
}
.ticketing-selection-page .ticketing-seat-section-separator.is-stairs > strong > i {
    position:absolute;
    inset:0 12%;
    background:repeating-linear-gradient(135deg,transparent 0 5px,rgba(213,181,109,.58) 5px 7px);
}

/* R25 — paliers bleus et escaliers latéraux entre sections */
.ticketing-selection-page .ticketing-seat-section-title {
    margin: clamp(6px, .8vw, 10px) 0 2px;
}
.ticketing-selection-page .ticketing-seat-section-title[data-level] {
    margin-top: calc(clamp(6px, .8vw, 10px) + (var(--section-level-jump, 0) * 6px));
}
.ticketing-selection-page .ticketing-seat-row[data-level] {
    margin-top: 0;
}
.ticketing-selection-page .ticketing-seat-section-separator {
    margin: clamp(4px, .55vw, 8px) 0 2px;
}
.ticketing-selection-page .ticketing-seat-section-separator > strong {
    position: relative;
    display: grid;
    grid-template-columns: minmax(38px, 8%) minmax(140px, 1fr) minmax(38px, 8%);
    align-items: stretch;
    column-gap: 0;
    height: clamp(24px, 2.2vw, 30px);
    overflow: visible;
}
.ticketing-selection-page .ticketing-seat-separator-landing {
    display: block;
    background: #4448c9;
}
.ticketing-selection-page .ticketing-seat-separator-stair {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
}
.ticketing-selection-page .ticketing-seat-separator-stair::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 0 42%, #e3242b 43% 57%, transparent 58%);
    transform-origin: center;
}
.ticketing-selection-page .ticketing-seat-separator-stair.is-left::before {
    transform: skewX(-28deg);
}
.ticketing-selection-page .ticketing-seat-separator-stair.is-right::before {
    transform: skewX(28deg);
}
.ticketing-selection-page .ticketing-seat-section-separator.is-corridor .ticketing-seat-separator-stair::before {
    opacity: .55;
}
.ticketing-selection-page .ticketing-seat-section-separator.is-corridor .ticketing-seat-separator-landing {
    opacity: .88;
}
@media (max-width: 720px) {
    .ticketing-selection-page .ticketing-seat-section-separator > strong {
        grid-template-columns: minmax(24px, 7%) minmax(100px, 1fr) minmax(24px, 7%);
    }
}

/* R26 — géométrie théâtre : loges latérales, paliers et escaliers continus */
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-room {
    display: block;
    padding-top: 1px;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-circulation,
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-section-separator,
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-separator-stair,
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-separator-landing {
    display: none !important;
}
.ticketing-selection-page .ticketing-public-theater-layout {
    position: relative;
    display: grid;
    gap: clamp(3px, .35vw, 6px);
    width: 100%;
    min-width: 0;
    isolation: isolate;
}
.ticketing-selection-page .ticketing-public-theater-section {
    position: relative;
    min-width: 0;
    margin: 0;
    padding: 0;
    isolation: isolate;
}
.ticketing-selection-page .ticketing-public-theater-section > .ticketing-seat-section-title {
    position: relative;
    z-index: 5;
    margin: 0 0 3px !important;
}
.ticketing-selection-page .ticketing-public-theater-canvas {
    position: relative;
    z-index: 1;
    min-width: 0;
    padding: 1px 0 clamp(14px, 1.25vw, 18px);
}
.ticketing-selection-page .ticketing-public-theater-canvas.has-loges {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr) max-content;
    align-items: center;
    gap: clamp(4px, .5vw, 8px);
}
.ticketing-selection-page .ticketing-public-theater-main-rows {
    position: relative;
    z-index: 4;
    display: grid;
    gap: clamp(4px, .42vw, 7px);
    min-width: 0;
}
.ticketing-selection-page .ticketing-public-theater-loges {
    position: relative;
    z-index: 4;
    display: grid;
    align-content: center;
    gap: clamp(4px, .42vw, 7px);
    min-width: 0;
    padding: 5px 2px;
    border-top: 1px solid rgba(213, 181, 109, .32);
    border-bottom: 1px solid rgba(213, 181, 109, .32);
    background: rgba(213, 181, 109, .035);
}
.ticketing-selection-page .ticketing-public-theater-loges > strong {
    display: block;
    margin-bottom: 1px;
    color: #5b626a;
    font-size: clamp(7px, .48vw, 9px);
    font-weight: 900;
    letter-spacing: .07em;
    line-height: 1.15;
    text-align: center;
    text-transform: uppercase;
}
.ticketing-selection-page .ticketing-public-theater-loge-row {
    display: grid;
    grid-template-columns: 14px minmax(0, 1fr);
    align-items: center;
    gap: 3px;
}
.ticketing-selection-page .ticketing-public-theater-loge-row > span {
    color: #171a1f;
    font-size: 12px;
    font-weight: 900;
    text-align: center;
}
.ticketing-selection-page .ticketing-public-theater-loge-row > div {
    display: flex;
    justify-content: center;
    align-items: flex-end;
    gap: max(2px, calc(var(--seat-render-gap) * .55));
    min-width: 0;
}
.ticketing-selection-page .ticketing-public-theater-loge-row .ticketing-seat-chair {
    grid-column: auto !important;
    flex: 0 0 var(--seat-width) !important;
}
.ticketing-selection-page .ticketing-public-theater-landing {
    position: relative;
    z-index: 2;
    height: clamp(10px, .9vw, 13px);
    margin: 3px 7% 0;
    border-top: 1px solid rgba(213, 181, 109, .34);
    border-bottom: 1px solid rgba(213, 181, 109, .34);
    background: rgba(213, 181, 109, .065);
    pointer-events: none;
}
.ticketing-selection-page .ticketing-public-theater-architecture,
.ticketing-selection-page .ticketing-public-theater-architecture-global {
    position: absolute;
    inset: 0;
    z-index: 2;
    width: 100%;
    height: 100%;
    overflow: visible;
    pointer-events: none;
}
.ticketing-selection-page .ticketing-public-theater-architecture-global {
    z-index: 1;
}
.ticketing-selection-page .ticketing-public-theater-stair {
    fill: none;
    stroke: #b98a45;
    stroke-width: 1.25;
    stroke-linecap: round;
    opacity: .72;
    vector-effect: non-scaling-stroke;
}
.ticketing-selection-page .ticketing-public-theater-stair.is-connector {
    opacity: .48;
}
.ticketing-selection-page .ticketing-public-theater-step {
    stroke: #b98a45;
    stroke-width: .9;
    opacity: .62;
    vector-effect: non-scaling-stroke;
}
.ticketing-selection-page .ticketing-public-theater-landing-shape {
    fill: rgba(213, 181, 109, .075);
    stroke: rgba(142, 108, 34, .4);
    stroke-width: .9;
    vector-effect: non-scaling-stroke;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-row {
    position: relative;
    z-index: 4;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-chair {
    z-index: 5;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-chair:hover,
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-chair:focus-visible {
    z-index: 12;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-stage-row {
    margin-bottom: clamp(8px, .75vw, 12px);
}
@media (max-width: 920px) {
    .ticketing-selection-page .ticketing-public-theater-canvas.has-loges {
        grid-template-columns: max-content minmax(0, 1fr) max-content;
        gap: 4px;
    }
}
@media (max-width: 680px) {
    .ticketing-selection-page .ticketing-public-theater-canvas.has-loges {
        grid-template-columns: max-content minmax(390px, 1fr) max-content;
    }
    .ticketing-selection-page .ticketing-public-theater-loges > strong {
        font-size: 7px;
    }
}
.ticketing-selection-page .ticketing-public-theater-loges>strong{display:grid;gap:1px}
.ticketing-selection-page .ticketing-public-theater-loges>strong>span{display:block}
.ticketing-selection-page .ticketing-public-theater-loges>strong>small{display:block;color:#7a828b;font-size:7px;font-weight:800;letter-spacing:.04em}

/* R26.1 — paliers et escaliers continus, sans faux couloir entre les rangs */
.ticketing-selection-page .ticketing-public-theater-layout{gap:3px}
.ticketing-selection-page .ticketing-public-theater-section+.ticketing-public-theater-section{margin-top:0}
.ticketing-selection-page .ticketing-public-theater-section>.ticketing-seat-section-title{margin-bottom:2px!important}
.ticketing-selection-page .ticketing-public-theater-canvas{padding:1px 0 clamp(11px,.9vw,14px)}
.ticketing-selection-page .ticketing-public-theater-main-rows{gap:clamp(3px,.3vw,5px)}
.ticketing-selection-page .ticketing-public-theater-landing{height:clamp(8px,.72vw,10px);margin:2px 5% 0;background:rgba(213,181,109,.09)}
.ticketing-selection-page .ticketing-public-theater-connector-floor{fill:rgba(213,181,109,.085);stroke:rgba(112,85,27,.24);stroke-width:1;vector-effect:non-scaling-stroke}
.ticketing-selection-page .ticketing-public-theater-stair{stroke:#9c7431;stroke-width:1.4;opacity:.8}
.ticketing-selection-page .ticketing-public-theater-stair.is-connector{opacity:.72}
.ticketing-selection-page .ticketing-public-theater-step{stroke:#9c7431;opacity:.66}
.ticketing-selection-page .ticketing-public-theater-architecture-global{z-index:2}
.ticketing-selection-page .ticketing-public-theater-canvas.has-loges{align-items:stretch}
.ticketing-selection-page .ticketing-public-theater-loges{align-self:center;border:1px solid rgba(112,85,27,.22);background:rgba(213,181,109,.025)}

/* R27 — escaliers structurels liés aux allées */
.ticketing-selection-page .ticketing-public-theater-canvas{overflow:visible}
.ticketing-selection-page .ticketing-public-theater-main-rows,
.ticketing-selection-page .ticketing-public-theater-loges{position:relative;z-index:3}
.ticketing-selection-page .ticketing-public-theater-landing{position:relative;z-index:1;height:clamp(6px,.55vw,8px);margin:2px 0 0;background:rgba(212,191,141,.16);border:0}
.ticketing-selection-page .ticketing-public-theater-architecture,
.ticketing-selection-page .ticketing-public-theater-architecture-global,
.ticketing-selection-page .ticketing-seat-architecture,
.ticketing-selection-page .ticketing-seat-architecture-global{z-index:2}
.ticketing-selection-page .ticketing-public-theater-landing-shape,
.ticketing-selection-page .ticketing-seat-architecture-landing{fill:rgba(212,191,141,.18);stroke:#1c1c1c;stroke-width:.7;vector-effect:non-scaling-stroke}
.ticketing-selection-page .ticketing-public-theater-stair,
.ticketing-selection-page .ticketing-seat-architecture-stair-outline{fill:transparent;stroke:#1c1c1c;stroke-width:1.15;vector-effect:non-scaling-stroke}
.ticketing-selection-page .ticketing-public-theater-step,
.ticketing-selection-page .ticketing-seat-architecture-step{stroke:#1c1c1c;stroke-width:.85;vector-effect:non-scaling-stroke}
.ticketing-selection-page .ticketing-seat-architecture-arrow,
.ticketing-selection-page .ticketing-seat-architecture-arrow-head{stroke:#9a9a9a;stroke-width:1.15;fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.95}
.ticketing-selection-page .ticketing-public-theater-loges{border:none;background:transparent}
.ticketing-selection-page .ticketing-public-theater-main-rows{gap:clamp(2px,.25vw,4px)}
.ticketing-selection-page .ticketing-seat-row-content .ticketing-seat-gap.is-corridor{width:clamp(12px,1.2vw,18px);min-width:clamp(12px,1.2vw,18px)}
.ticketing-selection-page .ticketing-public-theater-arrow,
.ticketing-selection-page .ticketing-public-theater-arrow-head{stroke:#9a9a9a;stroke-width:1.15;fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.95}
.ticketing-selection-page .ticketing-public-theater-landing-shape,
.ticketing-selection-page .ticketing-public-theater-connector-floor{fill:rgba(212,191,141,.18);stroke:#1c1c1c;stroke-width:.7;vector-effect:non-scaling-stroke}

/* R30 — rangées théâtre structurées autour d'allées fixes */
.ticketing-selection-page .ticketing-public-theater-layout{--theater-stair-gap:38px}
.ticketing-selection-page .ticketing-public-theater-row-groups{
    display:flex!important;
    grid-template-columns:none!important;
    column-gap:0!important;
    justify-content:center!important;
    align-items:flex-end!important;
    width:100%;
    overflow:visible;
}
.ticketing-selection-page .ticketing-public-theater-seat-group{
    display:flex;
    flex:0 0 auto;
    align-items:flex-end;
    justify-content:center;
    gap:var(--seat-render-gap);
}
.ticketing-selection-page .ticketing-public-theater-aisle{
    display:block;
    flex:0 0 var(--theater-stair-gap);
    width:var(--theater-stair-gap);
    min-width:var(--theater-stair-gap);
    max-width:var(--theater-stair-gap);
    align-self:stretch;
    pointer-events:none;
}
.ticketing-selection-page .ticketing-public-theater-row-groups .ticketing-seat-chair{
    grid-column:auto!important;
    flex:0 0 var(--seat-width)!important;
}
.ticketing-selection-page .ticketing-public-theater-stair-outer{
    fill:none;
    stroke:#202124;
    stroke-linecap:butt;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
}
.ticketing-selection-page .ticketing-public-theater-stair-inner{
    fill:none;
    stroke:#fff;
    stroke-linecap:butt;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
}
.ticketing-selection-page .ticketing-public-theater-step{
    stroke:#202124;
    stroke-width:.8;
    vector-effect:non-scaling-stroke;
}
.ticketing-selection-page .ticketing-public-theater-arrow,
.ticketing-selection-page .ticketing-public-theater-arrow-head{
    fill:none;
    stroke:#8f9296;
    stroke-width:1.1;
    stroke-linecap:round;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
}
.ticketing-selection-page .ticketing-public-theater-landing-shape{
    fill:#fff;
    stroke:#202124;
    stroke-width:.8;
    vector-effect:non-scaling-stroke;
}


.ticketing-selection-page .ticketing-public-theater-main-rows{justify-items:center;width:min(100%,var(--ticketing-public-theater-main-width,100%));margin:0 auto}
.ticketing-selection-page .ticketing-public-theater-main-rows .ticketing-seat-row{width:min(100%,var(--ticketing-public-theater-main-width,100%))}
.ticketing-selection-page .ticketing-seat-architecture-arrow,
.ticketing-selection-page .ticketing-seat-architecture-arrow-head,
.ticketing-selection-page .ticketing-public-theater-arrow,
.ticketing-selection-page .ticketing-public-theater-arrow-head{display:none!important}


/* R32 — volet gauche pleine hauteur et titres de sections centrés rigoureusement */
.ticketing-selection-page .ticketing-event-panel,
body[data-theme-header-sticky="all"] .ticketing-selection-page .ticketing-event-panel,
body[data-theme-header-sticky="desktop"] .ticketing-selection-page .ticketing-event-panel{
    align-self:stretch;
    min-height:calc(100vh - var(--obt-header-height,0px));
    height:calc(100vh - var(--obt-header-height,0px));
    max-height:calc(100vh - var(--obt-header-height,0px));
}
.ticketing-selection-page .ticketing-seat-section-title strong{
    position:relative;
    display:block;
    min-height:24px;
    text-align:center !important;
}
.ticketing-selection-page .ticketing-seat-section-title strong > span{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    display:block;
    width:max-content;
    max-width:min(72%, calc(100% - 128px));
    text-align:center;
}
.ticketing-selection-page .ticketing-seat-section-title strong > small{
    position:absolute;
    right:40px;
    top:50%;
    transform:translateY(-50%);
}
.ticketing-selection-page .ticketing-seat-section-title strong > i{
    position:absolute;
    right:8px;
    top:50%;
    transform:translateY(-50%);
}
@media (max-width:1240px){
    .ticketing-selection-page .ticketing-event-panel,
    body[data-theme-header-sticky="all"] .ticketing-selection-page .ticketing-event-panel,
    body[data-theme-header-sticky="desktop"] .ticketing-selection-page .ticketing-event-panel{
        min-height:0;
        height:auto;
        max-height:none;
    }
}
@media (max-width:720px){
    .ticketing-selection-page .ticketing-seat-section-title strong > span{
        max-width:calc(100% - 96px);
    }
    .ticketing-selection-page .ticketing-seat-section-title strong > small{
        right:30px;
        font-size:clamp(7px,.52vw,9px);
    }
    .ticketing-selection-page .ticketing-seat-section-title strong > i{
        right:6px;
    }
}

/* R33 — calcul du plan en une passe, allées fixes et aucun chevauchement. */
.ticketing-selection-page .ticketing-seat-map-viewport,
.ticketing-selection-page .ticketing-seat-visual-wrapper {
    border: 0;
    border-radius: 0;
    box-shadow: none;
}
.ticketing-selection-page .ticketing-seat-map-viewport {
    background: transparent;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper {
    contain: layout style;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper:not(.is-fitted) .ticketing-seat-room {
    opacity: 0;
    animation: ticketing-seat-map-failsafe .01s 1.5s forwards;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-fitted .ticketing-seat-room {
    opacity: 1;
    animation: none;
}
.ticketing-selection-page .ticketing-seat-chair,
.ticketing-selection-page .ticketing-seat-chair:hover:not(:disabled),
.ticketing-selection-page .ticketing-seat-chair:focus-visible {
    transform: none;
    transition: filter .12s ease;
}
.ticketing-selection-page .ticketing-seat-chair:hover:not(:disabled),
.ticketing-selection-page .ticketing-seat-chair:focus-visible {
    filter: drop-shadow(0 3px 3px rgba(0, 0, 0, .2));
}
.ticketing-selection-page .ticketing-seat-chair.is-selected .ticketing-seat-chair-back {
    animation: none;
}
.ticketing-selection-page .ticketing-public-theater-row-groups,
.ticketing-selection-page .ticketing-public-theater-seat-group,
.ticketing-selection-page .ticketing-public-theater-loge-row > div {
    flex-wrap: nowrap !important;
}
.ticketing-selection-page .ticketing-public-theater-row-groups .ticketing-seat-chair,
.ticketing-selection-page .ticketing-public-theater-loge-row .ticketing-seat-chair {
    flex-shrink: 0 !important;
}
.ticketing-selection-page .ticketing-public-theater-architecture,
.ticketing-selection-page .ticketing-public-theater-architecture-global,
.ticketing-selection-page .ticketing-public-theater-stair-outer,
.ticketing-selection-page .ticketing-public-theater-stair-inner,
.ticketing-selection-page .ticketing-public-theater-step {
    display: block;
    opacity: 1;
}
.ticketing-selection-page .ticketing-public-theater-architecture,
.ticketing-selection-page .ticketing-public-theater-architecture-global {
    overflow: visible;
}
.ticketing-selection-page .ticketing-public-theater-arrow,
.ticketing-selection-page .ticketing-public-theater-arrow-head {
    display: none !important;
}
@media (prefers-reduced-motion: reduce) {
    .ticketing-selection-page .ticketing-seat-chair { transition: none; }
}
@keyframes ticketing-seat-map-failsafe {
    to { opacity: 1; }
}

/* R34 — CTA permanent, grandes jauges et infobulle hors du plan. */
.event-public-page {
    padding-bottom: calc(var(--event-reservation-cta-height, 92px) + 18px);
}
.event-public-page .event-reservation-cta {
    position: fixed;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1250;
    box-sizing: border-box;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 12px max(24px, calc((100vw - 1460px) / 2)) calc(12px + env(safe-area-inset-bottom));
    border: 0;
    border-top: 2px solid var(--ticketing-accent);
    border-radius: 0;
    box-shadow: 0 -8px 24px rgba(0, 0, 0, .24);
}
.event-public-page .event-reservation-cta h2 { font-size: clamp(20px, 2vw, 28px); }
.event-public-page .event-reservation-cta p { font-size: 14px; }

.ticketing-selection-page .ticketing-seat-chair::after {
    content: none !important;
    display: none !important;
}
.ticketing-floating-seat-tooltip {
    --seat-tooltip-accent: #d6b569;
    --seat-tooltip-accent-text: #000;
    position: fixed;
    z-index: 2147483000;
    isolation: isolate;
    display: grid;
    gap: 7px;
    box-sizing: border-box;
    width: max-content;
    min-width: min(240px, calc(100vw - 16px));
    max-width: min(340px, calc(100vw - 16px));
    padding: 11px 12px 10px;
    border: 0;
    border-radius: 2px;
    background: linear-gradient(145deg, #191c21 0%, #0d0f12 100%);
    color: #fff;
    box-shadow:
        inset 0 3px 0 var(--seat-tooltip-accent),
        0 14px 32px rgba(0, 0, 0, .38);
    font: 700 12px/1.25 Arial, sans-serif;
    pointer-events: none;
    animation: ticketing-seat-tooltip-in .12s ease-out;
}
.ticketing-floating-seat-tooltip[hidden] { display: none !important; }
.ticketing-floating-seat-tooltip::after {
    content: "";
    position: absolute;
    left: var(--seat-tooltip-arrow-left, 50%);
    z-index: -1;
    width: 10px;
    height: 10px;
    transform: translateX(-50%) rotate(45deg);
    background: #0d0f12;
}
.ticketing-floating-seat-tooltip[data-placement="top"]::after { bottom: -5px; }
.ticketing-floating-seat-tooltip[data-placement="bottom"]::after { top: -5px; }
.ticketing-seat-tooltip-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
}
.ticketing-seat-tooltip-place {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    min-width: 0;
}
.ticketing-seat-tooltip-eyebrow {
    color: #b8bdc6;
    font-size: 8px;
    font-weight: 800;
    letter-spacing: .13em;
    text-transform: uppercase;
}
.ticketing-seat-tooltip-code,
.ticketing-seat-tooltip-price {
    margin: 0;
    font-family: "Oswald", "Arial Narrow", Arial, sans-serif;
    font-weight: 800;
    line-height: 1;
}
.ticketing-seat-tooltip-code { font-size: 18px; }
.ticketing-seat-tooltip-status {
    flex: 0 0 auto;
    padding: 3px 6px;
    border: 0;
    border-radius: 1px;
    background: var(--seat-tooltip-accent);
    color: var(--seat-tooltip-accent-text);
    font-size: 9px;
    font-weight: 900;
    line-height: 1.1;
    text-transform: uppercase;
}
.ticketing-seat-tooltip-main {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: baseline;
    gap: 8px;
}
.ticketing-seat-tooltip-price {
    color: #fff;
    font-size: 20px;
}
.ticketing-seat-tooltip-category {
    overflow: hidden;
    color: #d5d8dd;
    font-size: 11px;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ticketing-seat-tooltip-hold {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 6px 7px;
    border: 0;
    border-radius: 1px;
    background: color-mix(in srgb, var(--seat-tooltip-accent) 20%, #191c21);
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    line-height: 1.2;
}
.ticketing-seat-tooltip-hold .fa {
    flex: 0 0 auto;
    color: var(--seat-tooltip-accent);
    font-size: 12px;
}
.ticketing-seat-tooltip-hold-text { min-width: 0; }
.ticketing-seat-tooltip-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 10px;
    color: #aeb4bd;
    font-size: 10px;
    font-weight: 600;
}
.ticketing-seat-tooltip-area,
.ticketing-seat-tooltip-special {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.ticketing-seat-tooltip-special { color: #fff; }
.ticketing-seat-tooltip-special .fa { color: var(--seat-tooltip-accent); }
@keyframes ticketing-seat-tooltip-in {
    from { opacity: 0; transform: translateY(3px); }
    to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
    .ticketing-floating-seat-tooltip { animation: none; }
}

.ticketing-selection-page [data-seat-density="compact"] .ticketing-seat-chair-back small {
    font-size: clamp(7px, calc(var(--seat-width) * .22), 9px);
}
.ticketing-selection-page [data-seat-density="dense"] .ticketing-seat-chair-back small {
    font-size: clamp(5px, calc(var(--seat-width) * .3), 7px);
}
.ticketing-selection-page [data-seat-density="micro"] .ticketing-seat-chair-back small {
    display: block;
    font-size: 5px;
}
.ticketing-selection-page [data-seat-density="dense"] .ticketing-seat-chair-back,
.ticketing-selection-page [data-seat-density="micro"] .ticketing-seat-chair-back {
    border-width: 0;
    border-radius: 1px;
    box-shadow: inset 0 -2px rgba(0, 0, 0, .1);
}

@media (max-width: 900px) {
    .event-public-page .event-reservation-cta {
        flex-direction: row;
        align-items: center;
        gap: 14px;
        padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
    }
    .event-public-page .event-reservation-button { width: auto; min-width: 210px; }
}
@media (max-width: 600px) {
    .event-public-page .event-reservation-cta {
        right: 0;
        left: 0;
        margin: 0;
        padding: 9px 10px calc(9px + env(safe-area-inset-bottom));
    }
    .event-public-page .event-reservation-cta > div { display: none; }
    .event-public-page .event-reservation-button { width: 100%; min-width: 0; }
}

/* R35 — loges rapprochées du parterre et repère de rang compact. */
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan {
    --seat-row-label-width: 14px;
    --seat-row-label-gap: 3px;
    --theater-loge-stair-zone: 38px;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-row {
    grid-template-columns: var(--seat-row-label-width) minmax(0, 1fr);
    column-gap: var(--seat-row-label-gap);
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-row::after {
    content: none;
    display: none;
}
.ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-row-label {
    position: relative;
    z-index: 8;
    display: grid;
    place-items: center;
    align-self: center;
    width: var(--seat-row-label-width);
    min-width: var(--seat-row-label-width);
    height: var(--seat-row-label-width);
    padding: 0;
    border: 0;
    border-radius: 0;
    background: #fff;
    color: #171a1f;
    font-size: 12px;
    font-weight: 900;
    line-height: 1;
    text-align: center;
}
.ticketing-selection-page .ticketing-public-theater-canvas.has-loges {
    grid-template-columns:
        max-content
        minmax(0, var(--ticketing-public-theater-main-width, 1fr))
        max-content;
    justify-content: center;
    column-gap: var(--theater-loge-stair-zone, 38px);
}
.ticketing-selection-page .ticketing-public-theater-loges.is-left { justify-self: end; }
.ticketing-selection-page .ticketing-public-theater-loges.is-right { justify-self: start; }

@media (max-width: 680px) {
    .ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan {
        --seat-row-label-width: 12px;
        --seat-row-label-gap: 2px;
    }
    .ticketing-selection-page .ticketing-public-theater-canvas.has-loges {
        grid-template-columns:
            max-content
            minmax(390px, var(--ticketing-public-theater-main-width, 1fr))
            max-content;
        column-gap: var(--theater-loge-stair-zone, 38px);
    }
    .ticketing-selection-page .ticketing-seat-visual-wrapper.is-theater-plan .ticketing-seat-row-label { font-size: 12px; }
}

/* R37 — escaliers structurels : aucune mesure SVG, aucune superposition. */
.ticketing-selection-page .ticketing-public-theater-layout[data-structural-stairs="1"] {
    --theater-stair-gap: var(--ticketing-contract-stair-track-width, 17px);
    --theater-stair-track-width: var(--ticketing-contract-stair-track-width, 17px);
    --theater-stair-visual-width: var(--ticketing-contract-stair-visual-width, 15px);
}
.ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs {
    display: grid;
    grid-template-columns:
        var(--theater-stair-track-width)
        minmax(1px, var(--ticketing-public-theater-main-width, 1fr))
        var(--theater-stair-track-width);
    grid-template-rows: auto auto;
    justify-content: center;
    align-items: stretch;
    column-gap: 0;
}
.ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs.has-loges {
    grid-template-columns:
        max-content
        var(--theater-stair-track-width)
        minmax(1px, var(--ticketing-public-theater-main-width, 1fr))
        var(--theater-stair-track-width)
        max-content;
    column-gap: 0;
}
.ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs > .ticketing-public-theater-loges,
.ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs > .ticketing-public-theater-main-rows,
.ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs > .ticketing-public-theater-structural-stair {
    grid-row: 1;
}
.ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs > .ticketing-public-theater-landing {
    grid-row: 2;
    grid-column: 1 / -1;
}
.ticketing-selection-page .ticketing-public-theater-structural-stair,
.ticketing-selection-page .ticketing-public-theater-aisle {
    position: relative;
    z-index: 2;
    display: block;
    right: auto;
    align-self: stretch;
    box-sizing: border-box;
    width: var(--theater-stair-track-width);
    min-width: var(--theater-stair-track-width);
    max-width: var(--theater-stair-track-width);
    overflow: hidden;
    pointer-events: none;
}
.ticketing-selection-page .ticketing-public-theater-structural-stair::before,
.ticketing-selection-page .ticketing-public-theater-aisle::before {
    content: "";
    position: absolute;
    inset: 0 auto;
    left: 50%;
    box-sizing: border-box;
    width: var(--theater-stair-visual-width);
    transform: translateX(-50%);
    border: 1px solid #202124;
    background: repeating-linear-gradient(
        to bottom,
        #fff 0 calc(var(--ticketing-contract-stair-step-height, 9px) - 1px),
        #202124 calc(var(--ticketing-contract-stair-step-height, 9px) - 1px) var(--ticketing-contract-stair-step-height, 9px)
    );
}

/* R43 — feuille tactile compacte et légende métier complète. */
.ticketing-seat-legend .status-pmr {
    display: inline-grid;
    place-items: center;
    border: 0;
    background: var(--ticketing-contract-pmr-fill, #1049fc);
    color: var(--ticketing-contract-pmr-text, #fff);
    font-size: 8px;
    line-height: 1;
}
.ticketing-seat-tooltip-actions {
    display: grid;
    grid-template-columns: minmax(0, .55fr) minmax(0, 1fr);
    gap: 7px;
    padding-top: 2px;
}
.ticketing-seat-tooltip-actions button {
    min-height: 38px;
    padding: 7px 9px;
    border: 0;
    border-radius: 1px;
    font: 800 11px/1.1 Arial, sans-serif;
    cursor: pointer;
}
.ticketing-seat-tooltip-close {
    background: #343941;
    color: #fff;
}
.ticketing-seat-tooltip-select {
    background: var(--seat-tooltip-accent);
    color: var(--seat-tooltip-accent-text);
}
.ticketing-seat-tooltip-actions button:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}
@media (hover: none), (pointer: coarse) {
    .ticketing-floating-seat-tooltip[data-touch-sheet="1"] {
        z-index: 2147483000;
        width: auto;
        min-width: 0;
        max-width: none;
        max-height: min(52vh, 360px);
        overflow-y: auto;
        padding: 13px 14px calc(12px + env(safe-area-inset-bottom));
        pointer-events: auto;
    }
    .ticketing-floating-seat-tooltip[data-touch-sheet="1"]::after { display: none; }
}
.ticketing-selection-page .ticketing-public-theater-aisle::before {
    inset-block: -4px;
}
.ticketing-selection-page .ticketing-public-theater-aisle > i { display: none !important; }
.ticketing-selection-page .ticketing-public-theater-main-rows .ticketing-seat-row.has-inline-row-label {
    display: block;
}
.ticketing-selection-page .ticketing-public-theater-row-groups > .ticketing-seat-row-label {
    position: relative;
    z-index: 4;
    flex: 0 0 var(--seat-row-label-width);
    width: var(--seat-row-label-width);
    min-width: var(--seat-row-label-width);
    height: var(--seat-row-label-width);
    margin: 0 var(--seat-row-label-gap) 0 0;
    background: #fff;
}
.ticketing-selection-page .ticketing-public-theater-layout[data-structural-stairs="1"] .ticketing-public-theater-architecture,
.ticketing-selection-page .ticketing-public-theater-layout[data-structural-stairs="1"] .ticketing-public-theater-architecture-global {
    display: none !important;
}

@media (max-width: 680px) {
    .ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs,
    .ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs.has-loges {
        column-gap: 0;
    }
    .ticketing-selection-page .ticketing-public-theater-canvas.has-structural-stairs.has-loges {
        grid-template-columns:
            max-content
            var(--theater-stair-track-width)
            minmax(390px, var(--ticketing-public-theater-main-width, 1fr))
            var(--theater-stair-track-width)
            max-content;
    }
}

/* R44 — bandeau de section demandé pour les plans publics. */
.ticketing-seat-section-title {
    background: #d5b56d;
}
