.ti-ticket-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.ti-ticket{--ticket-ink:#F5F5F7;position:relative;display:flex;flex-direction:column;min-width:0;padding:23px 25px 18px;overflow:hidden;color:var(--ticket-ink);border:1px solid transparent;border-radius:12px;background:repeating-linear-gradient(155deg,#FFFFFF04 0 1px,transparent 1px 5px),linear-gradient(125deg,#555862,#282A33 55%,#363942);box-shadow:none;isolation:isolate}.ti-ticket{--ticket-notch-radius:11px;--ticket-notch-y:calc(47% + var(--ticket-notch-radius));--ticket-cutouts:radial-gradient(circle at -1px var(--ticket-notch-y),transparent calc(var(--ticket-notch-radius) - .5px),#000 var(--ticket-notch-radius)),radial-gradient(circle at calc(100% + 1px) var(--ticket-notch-y),transparent calc(var(--ticket-notch-radius) - .5px),#000 var(--ticket-notch-radius));-webkit-mask-image:var(--ticket-cutouts);mask-image:var(--ticket-cutouts);-webkit-mask-composite:source-in;mask-composite:intersect}.ti-ticket[data-ticket-plan=play_pass]{background:repeating-linear-gradient(155deg,#FFFFFF06 0 1px,transparent 1px 5px),linear-gradient(125deg,#9D7B39,#503C1A 60%,#6C5021);border-color:transparent}.ti-ticket[data-ticket-plan=play_pass_pro]{background:repeating-linear-gradient(155deg,#FFFFFF04 0 1px,transparent 1px 5px),linear-gradient(125deg,#9E2147,#4A0E24 65%,#6F1833);border-color:transparent}.ti-ticket .ti-ticket-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.ti-ticket .ti-ticket-heading h3{color:var(--ticket-ink)!important;font:650 21px/1.2 Inter,system-ui,sans-serif;letter-spacing:-.025em;margin:0}.ti-ticket .ti-ticket-heading>i{font-size:20px;opacity:.75;color:var(--ticket-ink)!important}.ti-ticket-price{display:flex;align-items:baseline;gap:7px;margin:17px 0 19px;flex-wrap:wrap}.ti-ticket-price strong{font:750 37px/1 Inter,system-ui,sans-serif;letter-spacing:-.05em;color:var(--ticket-ink)!important}.ti-ticket-price>span{font-size:12px;line-height:1.5;color:var(--ticket-ink)}.ti-ticket ul{list-style:none;padding:0;margin:0 0 24px;display:grid;gap:9px;flex:1}.ti-ticket li{display:flex;gap:9px;align-items:flex-start;font-size:12px;line-height:1.5;color:var(--ticket-ink)}.ti-ticket li>i{font-size:12px;margin-top:3px;color:var(--ticket-ink)!important}.ti-ticket button{display:flex;align-items:center;justify-content:center;gap:10px;min-height:40px;width:100%;border:1px solid #FFFFFF4D;border-radius:8px;padding:9px 12px;background:#00000018;color:var(--ticket-ink);font:600 12px/1.3 Inter,system-ui,sans-serif;cursor:pointer;transition:background .15s}.ti-ticket button>i{color:inherit!important;font-size:11px}.ti-ticket button:hover{background:#FFFFFF16}.ti-ticket button:disabled{cursor:default;opacity:.67;background:#FFFFFF0A}.ti-ticket[data-ticket-plan=free] button:not(:disabled){background:#A30F3D;color:#FFF;border-color:#A30F3D}.ti-ticket-barcode{width:58px;height:10px;margin-top:12px;align-self:flex-end;opacity:.35;background:repeating-linear-gradient(90deg,currentColor 0 1px,transparent 1px 3px)}.ti-ticket-active{align-self:flex-start;font-size:9px;letter-spacing:.04em;font-weight:650;margin-top:10px;padding:4px 7px;border:1px solid #FFFFFF2B;background:#00000038;border-radius:5px;color:#FFF}.ti-ticket[data-selected=true]{outline:none}.ti-ticket button:focus-visible{outline:2px solid currentColor;outline-offset:3px}
html[data-mode=light] .ti-ticket{--ticket-ink:#202026;background:repeating-linear-gradient(155deg,#00000003 0 1px,transparent 1px 5px),linear-gradient(125deg,#F8F8FA,#D8DAE0 60%,#EEEEF1);border-color:transparent;box-shadow:none}.ti-ticket-grid{--ticket-surround:var(--public-bg,#101014)}html[data-mode=light] .ti-ticket-grid{--ticket-surround:var(--public-bg,#FFF)}html[data-mode=light] .ti-ticket[data-ticket-plan=play_pass]{--ticket-ink:#2B230F;background:repeating-linear-gradient(155deg,#00000003 0 1px,transparent 1px 5px),linear-gradient(125deg,#FFF3CF,#E0BD64 65%,#F0DB9B);border-color:transparent}html[data-mode=light] .ti-ticket[data-ticket-plan=play_pass_pro]{--ticket-ink:#FFF;background:repeating-linear-gradient(155deg,#FFFFFF04 0 1px,transparent 1px 5px),linear-gradient(125deg,#A31C43,#5A112B 65%,#8B193B);border-color:transparent}html[data-mode=light] .ti-ticket:not([data-ticket-plan=play_pass_pro]) button{border-color:#2020263B;background:#FFFFFF1F}html[data-mode=light] .ti-ticket[data-ticket-plan=free] button:not(:disabled){background:#A30F3D;border-color:#A30F3D}html[data-mode=light] .ti-ticket-active{background:#30250D;color:#FFF}
@media(max-width:850px){.ti-ticket-grid{gap:12px}.ti-ticket{padding:20px 18px 15px}.ti-ticket .ti-ticket-heading h3{font-size:19px}.ti-ticket-price strong{font-size:33px}}
@media(max-width:650px){.ti-ticket-grid{grid-template-columns:1fr;gap:14px}.ti-ticket{padding:22px;max-width:450px;width:100%;margin:auto}.ti-ticket ul{margin-bottom:19px}.ti-ticket-price{margin:14px 0 18px}.ti-ticket-price strong{font-size:34px}}

/* Shared hover motion; dimensions and ticket cutouts stay unchanged. */
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .ti-ticket{transition:transform .24s cubic-bezier(.2,.7,.2,1)}
 .ti-ticket:hover{transform:translateY(-5px)}
 .ti-ticket .ti-ticket-heading::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 30%,#FFFFFF16 50%,transparent 70%);transform:translateX(-125%) skewX(-12deg);transition:transform .65s ease}
 .ti-ticket:hover .ti-ticket-heading::after{transform:translateX(125%) skewX(-12deg)}
}

/* The edge follows the real cutouts; the parent mask clips every pixel in the holes. */
.ti-ticket{--ticket-edge:#FFFFFF30}
html[data-mode=light] .ti-ticket{--ticket-edge:#20202630}
.ti-ticket::before{content:'';position:absolute;inset:-1px;pointer-events:none;border:1px solid var(--ticket-edge);border-radius:inherit;background:radial-gradient(circle at -1px var(--ticket-notch-y),transparent calc(var(--ticket-notch-radius) - .3px),var(--ticket-edge) var(--ticket-notch-radius),var(--ticket-edge) calc(var(--ticket-notch-radius) + .7px),transparent calc(var(--ticket-notch-radius) + 1.3px)),radial-gradient(circle at calc(100% + 1px) var(--ticket-notch-y),transparent calc(var(--ticket-notch-radius) - .3px),var(--ticket-edge) var(--ticket-notch-radius),var(--ticket-edge) calc(var(--ticket-notch-radius) + .7px),transparent calc(var(--ticket-notch-radius) + 1.3px));z-index:1}
