/* Perfect VIP – Mapa sektorów: sama mapa (wspólne dla panelu i sklepu) */
.pvip-map-host { position: relative; width: 100%; aspect-ratio: 760 / 660; max-height: 78vh; --pvip-ring: #ececea; --pvip-floor: #e3e3e0; --pvip-na: #c9cdd3; --pvip-na-ink: #8b939d; --pvip-ink: #17202c; }
.pvip-map { width: 100%; height: 100%; display: block; touch-action: none; user-select: none; -webkit-user-select: none; cursor: grab; }
.pvip-map.pvip-dragging { cursor: grabbing; }
.pvip-m-ring { fill: var(--pvip-ring); stroke: var(--pvip-ring); }
.pvip-m-floor { fill: var(--pvip-floor); }
.pvip-m-pitch { fill: #8fbf7f; stroke: #fff; stroke-width: 1.5; }
.pvip-m-stage rect, .pvip-m-stage path { fill: #9ba3ad; }
.pvip-m-bg { fill: var(--pvip-ring); }
.pvip-m-deco { fill: #d5d8dd; }
.pvip-m-stage text { fill: #fff; font: 700 11px/1 system-ui, sans-serif; letter-spacing: .08em; text-anchor: middle; dominant-baseline: central; }

.pvip-sec path { fill: var(--pvip-na); stroke: #fff; stroke-width: .8; vector-effect: non-scaling-stroke; transition: fill .15s, opacity .15s; }
.pvip-sec text { pointer-events: none; text-anchor: middle; dominant-baseline: central; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; font-weight: 650; fill: var(--pvip-na-ink); }
.pvip-sec text.pvip-tiny { display: none; }
.pvip-zoomed .pvip-sec text.pvip-tiny { display: block; }
.pvip-sec.pvip-floor path { fill: #d5d8dc; }
.pvip-sec.pvip-on path, .pvip-sec.pvip-soldout path { cursor: pointer; }
.pvip-sec.pvip-on text, .pvip-sec.pvip-soldout text { fill: #fff; }
.pvip-sec.pvip-on:hover path, .pvip-sec.pvip-on:focus-visible path { filter: brightness(1.12); stroke: var(--pvip-ink); stroke-width: 2; }
.pvip-sec.pvip-sel path { stroke: var(--pvip-ink); stroke-width: 3; }
.pvip-sec.pvip-dim { opacity: .3; }
.pvip-sec:focus { outline: none; }
.pvip-sec:focus-visible path { stroke: #2563eb; stroke-width: 3; }

.pvip-pin { cursor: pointer; }
.pvip-pin rect, .pvip-pin path { fill: var(--pvip-ink); }
.pvip-pin text { fill: #fff; font: 700 11.5px/1 system-ui, sans-serif; text-anchor: middle; dominant-baseline: central; }
.pvip-pin.pvip-sel rect, .pvip-pin.pvip-sel path { fill: var(--c); }
.pvip-pin.pvip-out rect, .pvip-pin.pvip-out path { fill: #6b7380; }

.pvip-zoom { position: absolute; right: 10px; top: 10px; display: flex; flex-direction: column; background: #fff; border: 1px solid #e4e2dc; border-radius: 10px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,.06); }
.pvip-zoom button { width: 38px; height: 38px; border: 0; background: none; font-size: 19px; line-height: 1; cursor: pointer; color: var(--pvip-ink); padding: 0; }
.pvip-zoom button + button { border-top: 1px solid #e4e2dc; }
.pvip-zoom button:disabled { opacity: .3; cursor: default; }
.pvip-tip { position: absolute; z-index: 5; pointer-events: none; background: var(--pvip-ink); color: #fff; border-radius: 10px; padding: 8px 11px; font: 13px/1.4 system-ui, sans-serif; min-width: 170px; transform: translate(-50%, calc(-100% - 14px)); box-shadow: 0 6px 20px rgba(0,0,0,.25); }
.pvip-tip.pvip-below { transform: translate(-50%, 18px); }
.pvip-tip b { font-size: 14px; }
@media (max-width: 782px) { .pvip-map-host { max-height: 62vh; } .pvip-zoom button { width: 34px; height: 34px; } }
@media (prefers-reduced-motion: reduce) { .pvip-sec path { transition: none; } }
/* plan miejsc sektora (loże, płyta siedząca) – wspólny dla sklepu i panelu */
.pvip-seats { display: block; width: 100%; height: auto; margin: 0 auto; user-select: none; -webkit-user-select: none; }
.pvip-seats-stage { fill: #e4e6ea; }
.pvip-seats-stage-t { fill: #6b7380; font: 700 9px/1 system-ui, sans-serif; letter-spacing: .2em; text-anchor: middle; dominant-baseline: central; }
.pvip-seats-row { fill: #8a919c; font: 600 11px/1 system-ui, sans-serif; text-anchor: middle; dominant-baseline: central; }
.pvip-seat text { font: 700 11px/1 system-ui, sans-serif; text-anchor: middle; dominant-baseline: central; pointer-events: none; }
.pvip-seat rect { transition: fill .12s, stroke .12s; }
.pvip-seat[tabindex] { cursor: pointer; outline: none; }
.pvip-seat[tabindex]:focus-visible .pvip-seat-body { stroke: #17202c; stroke-width: 2; }
/* sklep */
.pvip-st-on .pvip-seat-body, .pvip-st-on .pvip-seat-back { fill: #fff; stroke: var(--pvip-seat, #c49a5a); stroke-width: 1.6; }
.pvip-st-on text { fill: #17202c; }
.pvip-st-on[tabindex]:hover .pvip-seat-body { fill: color-mix(in srgb, var(--pvip-seat, #c49a5a) 18%, #fff); }
.pvip-st-sel .pvip-seat-body, .pvip-st-sel .pvip-seat-back { fill: var(--pvip-seat, #c49a5a); stroke: var(--pvip-seat, #c49a5a); }
.pvip-st-sel text { fill: #fff; }
.pvip-st-taken .pvip-seat-body, .pvip-st-taken .pvip-seat-back { fill: #9aa1ab; }
.pvip-st-taken text { fill: #eef0f3; }
.pvip-st-off .pvip-seat-body, .pvip-st-off .pvip-seat-back { fill: #e6e8ec; }
.pvip-st-off text { fill: #b4b9c1; }
/* panel: pula / poza pulą / sprzedane */
.pvip-st-pool .pvip-seat-body, .pvip-st-pool .pvip-seat-back { fill: var(--pvip-seat, #c49a5a); }
.pvip-st-pool text { fill: #fff; }
.pvip-st-sold .pvip-seat-body, .pvip-st-sold .pvip-seat-back { fill: #4b5563; }
.pvip-st-sold text { fill: #fff; }
.pvip-seatplan, .pvip-ed-seatplan { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.pvip-seats-side { fill: #d9c3a0; }
.pvip-wheel-hint { position: absolute; left: 50%; bottom: 14px; transform: translateX(-50%); background: rgba(23,32,44,.88); color: #fff; font-size: 13px; line-height: 1.35; padding: 8px 14px; border-radius: 999px; pointer-events: none; text-align: center; max-width: calc(100% - 24px); z-index: 3; }
.pvip-wheel-hint[hidden] { display: none; }
