/* Shared matte-paper tickets, approved in the volume prototype. */
:root{--ticket-paper:#f8f3e9;--ticket-shadow:2px 3px 0 #9a8874,4px 7px 4px #0007,10px 20px 17px #0006,22px 35px 34px #0003}
html[data-theme=light]{--ticket-shadow:2px 3px 0 #b3a18c,5px 8px 6px #422c232e,12px 22px 22px #422c2324,24px 42px 48px #422c231c}
.main-ticket,.poster-ticket{--paper:var(--ticket-paper);color:#27221e}
html .hero-ticket-zone,html[data-theme=light] .hero-ticket-zone{filter:none;perspective:1400px}
.main-ticket{width:360px;aspect-ratio:.55;border-radius:19px;touch-action:pan-y;transform:perspective(1400px) rotateY(-7deg) rotateZ(-2deg);isolation:isolate;--notch-y:84px}
.main-ticket,.main-ticket:hover{transform:perspective(1400px) rotateX(var(--ticket-rx,3deg)) rotateY(var(--ticket-ry,-7deg)) rotateZ(-2deg);transition:transform .2s ease-out}
.hero-ticket-zone{translate:12px 18px}
.ticket-fan{translate:0 5vh}
.main-ticket::before{background:var(--ticket-paper)}
.main-ticket::after{content:"";display:block;position:absolute;inset:85px 0 0;z-index:-1;width:auto;height:auto;border-radius:0 0 19px 19px;background:none;box-shadow:var(--ticket-shadow)}
.main-ticket .ticket-reveal{height:84px;background:var(--ticket-paper);color:#796b58;font-size:10px;padding:24px 20px;mask-image:none}
.main-ticket .ticket-reveal b{font-size:15px}.main-ticket .ticket-reveal small{display:none}
.main-ticket .ticket-peel{height:84px;padding:0;border:0;background:none;overflow:visible;mask-image:none;transform:none!important;opacity:1;filter:none;box-shadow:none}
.main-ticket .ticket-peel::after{display:none}
.main-ticket[data-peel-state] .ticket-peel{filter:none}
.ticket-peel-face{position:absolute;inset:0;display:flex;justify-content:space-between;align-items:center;gap:14px;padding:18px 20px;background:linear-gradient(110deg,#fffaf1,#f8f3e9 65%,#eae0cf);border-radius:19px 19px 0 0;clip-path:inset(0 0 0 calc(var(--tear) * 100%))}
.main-ticket .ticket-peel b{font-size:22px;line-height:1.06;max-width:70%;text-align:left;letter-spacing:-.035em}.main-ticket .ticket-peel small{max-width:30%;color:#403427;font-size:11px;font-weight:900;line-height:1.25;letter-spacing:.015em;text-align:right;text-transform:uppercase}
.ticket-peel-face::after{content:"";position:absolute;bottom:0;left:10px;right:10px;height:1px;background:repeating-linear-gradient(90deg,#b5a28b 0 3px,transparent 3px 8px)}
.main-ticket .tear-roll{display:block;position:absolute;top:-3px;bottom:-2px;left:calc(var(--tear) * (100% - 42px));right:auto;width:calc(var(--tear) * 42px);height:auto;opacity:clamp(0,calc(var(--tear) * 12),1);border-radius:45% / 9%;background:linear-gradient(90deg,#806c55,#c7b8a2 9%,#eee5d5 23%,#fffaf1 48%,#eee2ce 70%,#b39d7c 91%,#8b7356);box-shadow:4px 3px 5px #34241340,10px 9px 13px #34241335;transform:rotate(calc(var(--tear) * -7deg));transform-origin:50% 100%;pointer-events:none}
.main-ticket .tear-roll::after{content:"";position:absolute;left:2px;right:2px;top:-2px;height:6px;border-radius:50%;background:radial-gradient(ellipse,#79634a 15%,#dfd0b8 25%,#f8f0e1 45%,#a18b70 65%,#eaddc7 75%)}
.main-ticket .ticket-poster{inset:96px 14px 103px;border-radius:0;overflow:visible;background:transparent}
.main-ticket .ticket-footer{top:auto;bottom:20px;left:21px;right:21px;padding:0;border:0;gap:7px}
.main-ticket .ticket-footer b{font-size:26px;line-height:1.05}.main-ticket .ticket-footer small{font-size:12px;color:#6d6256}
.main-ticket .ticket-poster::before,.poster-ticket .ticket-art::before{content:"";position:absolute;inset:-8px -10px -10px;background-image:var(--ticket-art);background-size:100% 100%;background-position:center;filter:blur(13px);opacity:.58;mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent),linear-gradient(transparent,#000 12%,#000 86%,transparent);mask-composite:intersect;pointer-events:none;z-index:-1}
.main-ticket .ticket-poster img,.poster-ticket .ticket-art img{position:relative;display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;background:transparent;mask-image:linear-gradient(90deg,transparent,#000 11%,#000 89%,transparent),linear-gradient(transparent,#000 8%,#000 88%,transparent);mask-composite:intersect}
.main-ticket .ticket-poster:has([data-program=zveri])::before,.poster-ticket .ticket-art:has([data-program=zveri])::before{display:none}
.main-ticket .ticket-poster img[data-program=zveri],.poster-ticket .ticket-art img[data-program=zveri]{mask-image:none;mix-blend-mode:darken}
.event-card,.event-card.no-event{aspect-ratio:auto;filter:none;box-shadow:none;padding:0 4px 7px 0}
.event-card:hover{box-shadow:none;transform:translateY(-5px) rotate(-.5deg)}
.event-card .poster-ticket{--ticket-stub-height:74px;display:flex;flex-direction:column;height:100%;padding:86px 12px 18px;overflow:visible;background:var(--ticket-paper);border:0;border-radius:19px;mask-image:none;box-shadow:var(--ticket-shadow)}
.poster-ticket .ticket-meta{height:74px;left:14px;right:14px;padding:12px 5px;border-bottom:1px dashed #b5a28b;overflow:visible}
.poster-ticket .ticket-date-time{font-size:17px;line-height:1.2;color:#27221e}
.poster-ticket .ticket-art{position:relative;isolation:isolate;display:grid;place-items:center;flex:none;height:auto;aspect-ratio:1054/1492;width:100%;overflow:visible;border-radius:0;background:transparent}
.poster-ticket .ticket-art img{position:absolute;inset:0;width:100%;height:100%;margin:auto}
.event-card::before{content:"";position:absolute;inset:0 4px 7px 0;z-index:-1;border-radius:19px;box-shadow:var(--ticket-shadow)}
.event-card .poster-ticket{box-shadow:none;mask-image:radial-gradient(circle at 7.5px 74px,transparent 7px,#000 7.5px),radial-gradient(circle at calc(100% - 7.5px) 74px,transparent 7px,#000 7.5px);mask-composite:intersect}
.card-caption{padding:16px 7px 0;display:flex;flex-direction:column;gap:7px;flex:1}
.card-caption>strong{font:900 24px/1.06 var(--display);letter-spacing:-.035em;text-transform:uppercase;overflow-wrap:anywhere}
.card-caption .ticket-details{font-size:12px;line-height:1.4;color:#6d6256}.card-caption .ticket-venue{color:inherit}
.card-caption .ticket-price{position:static;align-self:flex-start;margin-top:auto;padding:10px 0 0;border:0;border-radius:0;box-shadow:none;background:none;font-size:12px;color:#796b58}
.event-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px}
.city-event-group .event-grid{grid-auto-columns:minmax(270px,calc((100% - 84px)/4));gap:28px;padding:12px 8px 45px}
.fan-ticket .fan-art img{object-fit:contain;background:var(--ticket-paper)}
@media(min-width:761px){.hero-layout{padding-top:28px;padding-bottom:170px;min-height:850px}.main-ticket{width:clamp(300px,26vw,380px)}body.home-scenes-ready[data-home-scene=hero]{overflow-y:auto}}
@media(max-width:1100px){.event-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){body.home-scenes-ready[data-home-scene=hero]{overflow-y:auto}.hero-layout{display:flex;flex-direction:column;align-items:center;gap:30px;padding:28px 0 185px}.hero-copy{width:100%}.hero-copy h1{font-size:44px}.hero-subtitle{font-size:30px}.hero-ticket-zone{position:relative;inset:auto;width:100%;margin:0}.main-ticket{width:min(340px,calc(100vw - 64px));aspect-ratio:.55}.main-ticket .ticket-peel,.main-ticket .ticket-reveal{height:84px}.main-ticket .ticket-peel b{font-size:21px}.main-ticket .ticket-peel small{font-size:9px}.main-ticket .ticket-poster{inset:96px 14px 103px}.main-ticket .ticket-footer{top:auto;bottom:18px;gap:6px}.main-ticket .ticket-footer b{font-size:24px}.main-ticket .ticket-footer small{font-size:12px}.ticket-fan{bottom:0}.event-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.city-event-group .event-grid{grid-auto-columns:min(82vw,310px);gap:20px}}
@media(max-width:480px){.event-grid{grid-template-columns:1fr}.card-caption>strong{font-size:26px}}
@media(prefers-reduced-motion:reduce){.main-ticket,.main-ticket:hover,.event-card:hover{transform:none}}
@media(max-width:760px){.hero-ticket-zone{translate:6px 12px}}

/* Both paper layers share the same circular cutout at the perforation. */
.main-ticket .ticket-peel-face,.main-ticket .ticket-reveal{mask-image:radial-gradient(circle at 10px 84px,transparent 9.5px,#000 10px),radial-gradient(circle at calc(100% - 10px) 84px,transparent 9.5px,#000 10px);mask-composite:intersect;mask-repeat:no-repeat}
.main-ticket .ticket-footer{bottom:54px}
.main-ticket .ticket-poster{bottom:137px}
.main-ticket .ticket-footer b{font-size:24px}
.card-caption{padding-bottom:34px}
.ticket-sticker{position:absolute;z-index:8;right:0;bottom:0;width:132px;height:45px;padding:0 24px 0 8px;border:0;border-radius:14px 0 19px 0;background:linear-gradient(135deg,#eadbbf,#f5ead7 65%,#cfb78c);color:#665035;font:700 10px/1.2 var(--body,Arial,sans-serif);cursor:pointer;box-shadow:-2px -2px 5px #65503518;transition:filter .2s}
.ticket-sticker i{position:absolute;right:0;bottom:0;width:21px;height:21px;background:linear-gradient(135deg,#9f8660,#fff5e0 65%);clip-path:polygon(100% 0,100% 100%,0 100%);border-radius:0 0 16px 0;transform-origin:100% 100%;transition:transform .25s}
.ticket-sticker{touch-action:none}
.event-card .poster-ticket{z-index:7;pointer-events:none}
.ticket-sticker,.ticket-info{pointer-events:auto}
.ticket-info-text{min-height:0;flex:1}
.main-ticket .ticket-info{mask-image:radial-gradient(circle at 10px 10px,transparent 9.5px,#000 10px),radial-gradient(circle at calc(100% - 10px) 10px,transparent 9.5px,#000 10px);mask-composite:intersect}
.ticket-sticker:hover i,.ticket-sticker:focus-visible i{transform:rotate(-12deg) scale(1.4)}
.ticket-sticker:focus-visible,.ticket-info button:focus-visible{outline:2px solid #a66b38;outline-offset:-4px}
.ticket-info{position:absolute;inset:84px 0 0;z-index:9;border-radius:0 0 19px 19px;background:#f8f3e9;color:#27221e;padding:26px 22px 48px;display:flex;flex-direction:column;cursor:auto;text-align:left;animation:ticketInfoPeel .4s ease both}
.ticket-info[hidden]{display:none}
.ticket-info h3{font:900 23px/1.08 var(--display);letter-spacing:-.03em;margin:0 28px 18px 0;overflow-wrap:anywhere}
.ticket-info-text{overflow:auto;overscroll-behavior:contain;touch-action:pan-y;font:400 14px/1.65 Arial,sans-serif;scrollbar-width:thin;padding-right:8px;user-select:text}
.ticket-info-text p{margin:0 0 18px;white-space:pre-line}
.event-card .ticket-info a,.ticket-info a{position:static;display:inline;color:#8b502e;font:600 12px/1.4 Arial,sans-serif;text-decoration:underline}
.ticket-info-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border:1px solid #bca98b70;border-radius:50%;color:#665035;background:transparent;font:22px Arial,sans-serif;cursor:pointer}
.info-open .ticket-sticker{z-index:10}
.event-card.info-open:hover{transform:none}
.main-ticket.info-open,.main-ticket.info-open:hover{transform:perspective(1400px) rotateY(-2deg)}
@keyframes ticketInfoPeel{from{clip-path:circle(0 at 100% 100%)}to{clip-path:circle(150% at 100% 100%)}}
@media(prefers-reduced-motion:reduce){.ticket-info{animation:none}.ticket-sticker i{transition:none}.main-ticket.info-open{transform:none}}

/* Keep the cast shadow below the circular cutout, not across its right edge. */
.main-ticket::after{mask-image:linear-gradient(transparent 174px,#000 184px);mask-size:calc(100% + 320px) calc(100% + 320px);mask-position:-160px -160px;mask-repeat:no-repeat;mask-clip:no-clip}
.ticket-sticker{--corner-size:28px;background:transparent;box-shadow:none;padding-right:40px;border-radius:0 0 19px 0}
.ticket-sticker span{position:relative;z-index:2;font-size:9px}
.ticket-sticker::before{content:"";position:absolute;right:0;bottom:0;width:var(--corner-size);height:var(--corner-size);border-radius:0 0 16px 0;background:repeating-linear-gradient(0deg,transparent 0 6px,#927a553d 6px 7px),#dfcfb4;clip-path:polygon(100% 0,100% 100%,0 100%);transition:width .18s,height .18s}
.ticket-sticker i{right:0;bottom:0;width:var(--corner-size);height:var(--corner-size);border-radius:0 0 3px 0;clip-path:polygon(0 0,100% 0,0 100%);background:linear-gradient(135deg,#fffaf0 25%,#eee0c6 70%,#b59d7938);filter:drop-shadow(3px 4px 2px #4c382b66);transform:translate(-2px,-2px);transform-origin:50% 50%;transition:width .18s,height .18s,transform .18s}
.ticket-sticker:hover,.ticket-sticker:focus-visible{--corner-size:42px}
.ticket-sticker:hover i,.ticket-sticker:focus-visible i{transform:translate(-4px,-4px)}

.main-ticket,.main-ticket *{user-select:none!important;-webkit-user-select:none!important}
.main-ticket img{-webkit-user-drag:none;pointer-events:none}
.ticket-info{background:#f0e7d7}
.ticket-info.is-closing{animation:ticketInfoPeel .36s ease reverse both;pointer-events:none}
.ticket-sticker::before{background:#e5d8bf}
.ticket-sticker span{font-size:16px;font-weight:850;line-height:1;letter-spacing:-.025em}
.ticket-sticker{width:188px;height:52px;padding-left:10px;padding-right:42px}
.main-ticket .ticket-footer small{font-size:14px;line-height:1.4;color:#504639;font-weight:600}
.card-caption .ticket-details{font-size:14px;line-height:1.4;color:#504639;font-weight:600}
.event-card:hover,.event-card.info-open:hover{transform:translateY(-4px);box-shadow:none}
.event-card{transition:transform .25s ease-out}
.fan-ticket .fan-art{background:var(--ticket-paper)!important}
.fan-ticket .fan-art img{mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent),linear-gradient(transparent,#000 7%,#000 90%,transparent);mask-composite:intersect}
.fan-ticket[data-program-id=zveri] .fan-art img{mask-image:none}

/* Peel the printed cover away from a stationary description underneath. */
.ticket-cover{position:relative;z-index:10;background:var(--ticket-paper);display:flex;flex-direction:column;flex:1;min-height:0;mask-image:linear-gradient(135deg,#000 calc((1 - var(--info-progress,0)) * 100% - 1%),transparent calc((1 - var(--info-progress,0)) * 100%));pointer-events:none}
.main-ticket .ticket-cover{position:absolute;inset:84px 0 0;border-radius:0 0 19px 19px;display:block}
.main-ticket .ticket-cover .ticket-poster{top:12px}
.ticket-info,.ticket-info.is-closing{z-index:9;clip-path:none!important;animation:none;overflow:hidden}
.ticket-info::after{display:none}
.ticket-cover::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,transparent calc((1 - var(--info-progress,0)) * 100% - 17%),#b4a994 calc((1 - var(--info-progress,0)) * 100% - 15%),#fff9ed calc((1 - var(--info-progress,0)) * 100% - 8%),#ded2bf calc((1 - var(--info-progress,0)) * 100%));opacity:clamp(0,calc(var(--info-progress,0) * 20),1)}
.main-ticket .ticket-sticker,.event-card .ticket-sticker{z-index:11}
.main-ticket.info-open .ticket-cover,.event-card.info-open .ticket-cover{pointer-events:none}
.ticket-info-text,.ticket-info-close{position:relative;z-index:1}
.ticket-info-close{position:absolute}
.poster-ticket .ticket-art img:not([data-program=zveri]){mask-image:linear-gradient(90deg,transparent,#000 13%,#000 87%,transparent),linear-gradient(transparent,#000 10%,#000 87%,transparent);mask-composite:intersect}
@media(prefers-reduced-motion:reduce){.ticket-info.is-closing{animation:none}.event-card:hover{transform:none}}

/* Continuous upward peel: the same progress drives drag, opening and return. */
.ticket-info,.ticket-info.is-closing{animation:none;clip-path:inset(calc((1 - var(--info-progress,0)) * 100%) 0 0);padding-bottom:22px}
.ticket-info::after{content:"";position:absolute;left:0;right:0;top:calc((1 - var(--info-progress,0)) * 100%);height:18px;opacity:clamp(0,calc((1 - var(--info-progress,0)) * 8),1);background:linear-gradient(#c6bdaeb3,#f8f2e7 45%,#e5dbc9);box-shadow:0 -4px 9px #3c302d33;pointer-events:none}
.info-open:not(.info-dragging):not(.info-animating) .ticket-sticker{visibility:hidden;pointer-events:none}
.ticket-info-text{scrollbar-color:auto;scrollbar-width:auto;color-scheme:light}
.ticket-info-text::-webkit-scrollbar{width:6px;background:transparent}
.ticket-info-text::-webkit-scrollbar-track{background:transparent}
.ticket-info-text::-webkit-scrollbar-thumb{background:#96918a;border-radius:8px}
.ticket-info-text::-webkit-scrollbar-button{display:none;width:0;height:0}
@supports not selector(::-webkit-scrollbar){.ticket-info-text{scrollbar-color:#96918a transparent;scrollbar-width:thin}}
.fan-ticket .fan-art{isolation:isolate;overflow:visible!important;border-radius:0!important;background:transparent!important}
.fan-ticket .fan-art::before{content:"";position:absolute;inset:-4px;background:var(--ticket-art) center/cover;filter:blur(5px);opacity:.7;mask-image:linear-gradient(90deg,transparent,#000 20%,#000 80%,transparent),linear-gradient(transparent,#000 14%,#000 85%,transparent);mask-composite:intersect;z-index:-1}
.fan-ticket .fan-art img{position:relative;mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent),linear-gradient(transparent,#000 12%,#000 86%,transparent);mask-composite:intersect}
.fan-ticket[data-program-id=zveri] .fan-art::before{display:none}
.fan-ticket[data-program-id=zveri] .fan-art img{mask-image:none}
/* Edge semicircles and a detached paper stub share the same perforation. */
.main-ticket::before{mask-image:radial-gradient(circle at 0 var(--notch-y),transparent 9.5px,#000 10px),radial-gradient(circle at 100% var(--notch-y),transparent 9.5px,#000 10px)}
.main-ticket .ticket-peel,.main-ticket .ticket-peel-face,.main-ticket .ticket-reveal{mask-image:radial-gradient(circle at 0 100%,transparent 9.5px,#000 10px),radial-gradient(circle at 100% 100%,transparent 9.5px,#000 10px);mask-composite:intersect}
/* Description and the persistent cover begin at the perforation, so their
   cutout centres are at their top corners. Keep the cover's reveal gradient. */
.main-ticket .ticket-info{mask-image:radial-gradient(circle at 0 0,transparent 9.5px,#000 10px),radial-gradient(circle at 100% 0,transparent 9.5px,#000 10px);mask-composite:intersect}
.main-ticket .ticket-cover{mask-image:radial-gradient(circle at 0 0,transparent 9.5px,#000 10px),radial-gradient(circle at 100% 0,transparent 9.5px,#000 10px),linear-gradient(135deg,#000 calc((1 - var(--info-progress,0)) * 100% - 1%),transparent calc((1 - var(--info-progress,0)) * 100%));mask-composite:intersect}
.main-ticket .ticket-peel{transform:none!important;opacity:1;mask-image:none;cursor:grab;touch-action:none}
.main-ticket[data-peel-state=dragging] .ticket-peel,.main-ticket[data-peel-state=opening] .ticket-peel{transition:none}
.main-ticket .ticket-peel-face{clip-path:inset(0 0 0 calc(var(--tear) * 100%))}
.main-ticket .tear-roll{display:block;transition:transform .2s ease-out,opacity .2s ease-out}
.main-ticket[data-peel-state=open] .tear-roll{transform:translate(65px,20px) rotate(18deg);opacity:0}
.event-card .poster-ticket{background:linear-gradient(transparent 74px,var(--ticket-paper) 74px);mask-image:radial-gradient(circle at 160px 234px,transparent 7px,#000 7.5px),radial-gradient(circle at calc(100% - 160px) 234px,transparent 7px,#000 7.5px);mask-size:calc(100% + 320px) calc(100% + 320px);mask-position:-160px -160px;mask-clip:no-clip;mask-repeat:no-repeat}
.event-card .ticket-tear-control{position:absolute;inset:0 0 auto;z-index:12;height:74px;padding:10px 19px;display:flex;flex-direction:column;justify-content:center;background:var(--ticket-paper);border-radius:19px 19px 0 0;border-bottom:1px dashed #b5a28b;text-decoration:none;color:#27221e;pointer-events:auto;touch-action:none;user-select:none;cursor:grab;mask-image:radial-gradient(circle at 0 100%,transparent 7px,#000 7.5px),radial-gradient(circle at 100% 100%,transparent 7px,#000 7.5px);mask-composite:intersect;transform:translate(calc(var(--card-tear,0) * 110px),calc(var(--card-tear,0) * -70px)) rotate(calc(var(--card-tear,0) * 16deg));opacity:calc(1 - var(--card-tear,0) * var(--card-tear,0));transition:transform .25s ease-out,opacity .25s ease-out}
.event-card.is-tearing .ticket-tear-control{transition:none;cursor:grabbing}
.ticket-tear-hint{font-size:9px;line-height:1.3;margin-top:3px;color:#796b58}
.ticket-tear-control:focus-visible{outline:2px solid #a66b38;outline-offset:-5px}
@media(prefers-reduced-motion:reduce){.main-ticket .ticket-peel,.event-card .ticket-tear-control{transform:none!important;transition:none}}

/* Catalog stubs curl along the same moving fold as the main ticket. */
.event-card .ticket-tear-control{padding:0;background:none;border:0;mask-image:none;transform:none;opacity:1;overflow:visible;transition:none}
.card-peel-face{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:10px 19px;border-radius:19px 19px 0 0;background:linear-gradient(110deg,#fffaf1,#f8f3e9 65%,#eae0cf);border-bottom:1px dashed #b5a28b;clip-path:inset(0 0 0 calc(var(--card-tear,0) * 100%));mask-image:radial-gradient(circle at 0 100%,transparent 7px,#000 7.5px),radial-gradient(circle at 100% 100%,transparent 7px,#000 7.5px);mask-composite:intersect}
.card-tear-roll{position:absolute;top:-2px;bottom:-2px;left:calc(var(--card-tear,0) * (100% - 34px));width:calc(var(--card-tear,0) * 34px);opacity:clamp(0,calc(var(--card-tear,0) * 12),1);border-radius:45% / 9%;background:linear-gradient(90deg,#806c55,#c7b8a2 9%,#eee5d5 23%,#fffaf1 48%,#eee2ce 70%,#b39d7c 91%,#8b7356);box-shadow:4px 3px 5px #34241340,10px 9px 13px #34241335;transform:rotate(calc(var(--card-tear,0) * -7deg));transform-origin:50% 100%;pointer-events:none}
.card-tear-roll::after{content:"";position:absolute;left:2px;right:2px;top:-2px;height:6px;border-radius:50%;background:radial-gradient(ellipse,#79634a 15%,#dfd0b8 25%,#f8f0e1 45%,#a18b70 65%,#eaddc7 75%)}

/* The absent part of a peeled stub must not keep casting a rectangular shadow.
   In the dark theme, let only the remaining paper cast the upper shadow. */
.event-card::before{top:74px;border-top-left-radius:0;border-top-right-radius:0;mask-image:linear-gradient(transparent 172px,#000 182px);mask-size:calc(100% + 320px) calc(100% + 320px);mask-position:-160px -160px;mask-repeat:no-repeat;mask-clip:no-clip}
html:not([data-theme=light]) .card-peel-face{filter:drop-shadow(2px 2px 2px #0005)}

/* Keep long descriptions flat, opaque and comfortably spaced while reading. */
.main-ticket.info-open,.main-ticket.info-open:hover,.event-card.info-open,.event-card.info-open:hover{transform:none!important;transition:none}
.info-open .ticket-sticker{visibility:hidden!important;pointer-events:none}
.info-open:not(.info-dragging):not(.info-animating) .ticket-cover{visibility:hidden}
.ticket-info{background:#faf7f0;color:#292929}
.ticket-info h3{letter-spacing:0;line-height:1.2}
.ticket-info-text{font:400 16px/1.65 var(--body);color:#292929;letter-spacing:normal;text-shadow:none;-webkit-text-stroke:0}
.ticket-info-text p{margin:0 0 20px}
/* The main stub gives the pull instruction a full, unbroken line. */
.main-ticket .ticket-peel-face{flex-direction:column;align-items:stretch;justify-content:center;gap:4px;padding:10px 20px}
.main-ticket .ticket-peel b{max-width:none;font-size:20px;line-height:1.15;letter-spacing:0}
.main-ticket .ticket-peel small{max-width:none;width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;line-height:1.2;letter-spacing:0;text-align:left}
.main-ticket .ticket-pull-hint{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;font-size:12px;color:#27221e}
.main-ticket .ticket-pull-arrow{font:700 32px/1 var(--body);flex:none}

/* Dark scenes need a clean paper edge, without the light-theme extrusion. */
html:not([data-theme=light]) .main-ticket::after,
html:not([data-theme=light]) .event-card::before{display:none}
.fan-ticket .fan-stub{background:transparent}
.main-ticket .ticket-pull-hint,.ticket-tear-hint{display:inline-flex;align-items:center;justify-content:flex-end;gap:9px;font-size:13px;font-weight:850;line-height:1.1;color:#403427;white-space:nowrap}
.ticket-tear-hint{margin-top:5px;align-self:flex-start;justify-content:flex-start;gap:10px;font-size:12px;letter-spacing:.01em}
.ticket-tear-hint .ticket-pull-arrow{font-size:30px;line-height:.7}
.main-ticket .ticket-pull-arrow,.ticket-tear-hint .ticket-pull-arrow{display:inline-block;flex:none;font:700 40px/.65 var(--body)}
.ticket-sticker{--corner-size:40px;width:202px;height:56px;padding-right:52px}
.ticket-sticker::before{background:linear-gradient(135deg,#aa9069,#d6c09c 55%,#e6d6ba);box-shadow:inset -1px -1px 0 #927a55}
.ticket-sticker i{background:linear-gradient(135deg,#fffaf0 12%,#f2e5cc 58%,#b6986c 70%,#fff6e4 73%,#d1b78d);transform:translate(-4px,-4px);filter:drop-shadow(3px 5px 3px #4c382b80)}
.ticket-sticker:hover,.ticket-sticker:focus-visible{--corner-size:48px}
.ticket-sticker:hover i,.ticket-sticker:focus-visible i{transform:translate(-6px,-6px)}
@media(max-width:380px){.main-ticket .ticket-peel-face{padding-inline:14px}.main-ticket .ticket-peel small{gap:5px;font-size:9px}.main-ticket .ticket-pull-hint{font-size:11px;gap:5px}}
/* Fill the photo area for the four compositions with excessive inner margins. */
.main-ticket .ticket-poster:has(img:is([data-program=bumer],[data-program=komissar],[data-program=concord-orchestra],[data-program=ramazanovy])),
.poster-ticket .ticket-art:has(img:is([data-program=bumer],[data-program=komissar],[data-program=concord-orchestra],[data-program=ramazanovy])){overflow:hidden}
.main-ticket .ticket-poster img:is([data-program=bumer],[data-program=komissar],[data-program=concord-orchestra],[data-program=ramazanovy]),
.poster-ticket .ticket-art img:is([data-program=bumer],[data-program=komissar],[data-program=concord-orchestra],[data-program=ramazanovy]){width:100%;height:100%;object-fit:cover;object-position:center;mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent),linear-gradient(transparent,#000 4%,#000 93%,transparent);mask-composite:intersect}
/* Anvar's ticket photograph keeps its original blue background. */
.main-ticket .ticket-poster img[data-program=anvar-nurgaliev],.poster-ticket .ticket-art img[data-program=anvar-nurgaliev]{width:100%;height:100%;object-fit:cover;mask-image:none;-webkit-mask-image:none}
.main-ticket .ticket-poster:has(img[data-program=anvar-nurgaliev])::before,.poster-ticket .ticket-art:has(img[data-program=anvar-nurgaliev])::before{display:none}
/* Fill the portrait aperture instead of leaving contain-sized blank borders. */
.main-ticket .ticket-poster img{width:100%;height:100%;object-fit:cover;object-position:center;mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent),linear-gradient(transparent,#000 3%,#000 94%,transparent);mask-composite:intersect}
/* Leave enough paint space for the full penumbra of the rail shadows. */
.main-ticket .ticket-poster img[data-program="viktoria-skladchikova"]{object-position:center top}
.city-event-group .event-grid{padding-bottom:100px;margin-bottom:-45px;padding-top:22px;mask-image:linear-gradient(90deg,transparent,#000 18px,#000 calc(100% - 18px),transparent)}
html[data-theme=light]{--ticket-shadow:1px 2px 0 #b3a18c,3px 6px 8px #422c2326,8px 22px 26px #422c2326,12px 38px 42px #422c231c}
/* Keep the complete portrait against the right edge; the backdrop fills the aperture. */
.main-ticket .ticket-poster:has(img[data-program=ilsiya-badretdinova]),
.poster-ticket .ticket-art:has(img[data-program=ilsiya-badretdinova]),
.fan-ticket .fan-art:has(img[data-program=ilsiya-badretdinova]){background:#242423;overflow:hidden}
.main-ticket .ticket-poster img[data-program=ilsiya-badretdinova],
.poster-ticket .ticket-art img[data-program=ilsiya-badretdinova],
.fan-ticket .fan-art img[data-program=ilsiya-badretdinova]{width:100%!important;height:100%!important;object-fit:cover;object-position:right bottom;mask-image:none;-webkit-mask-image:none;mix-blend-mode:normal}
.main-ticket .ticket-poster:has(img[data-program=ilsiya-badretdinova])::before,
.poster-ticket .ticket-art:has(img[data-program=ilsiya-badretdinova])::before,
.fan-ticket .fan-art:has(img[data-program=ilsiya-badretdinova])::before{display:none}
/* Restore the same gentle photographic edge treatment on the large home ticket. */
#mainTicket .ticket-poster:has(img:is([data-program=ilsiya-badretdinova],[data-program=anvar-nurgaliev])){background:transparent;overflow:visible}
#mainTicket .ticket-poster img:is([data-program=ilsiya-badretdinova],[data-program=anvar-nurgaliev]){mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent),linear-gradient(transparent,#000 4%,#000 94%,transparent);mask-composite:intersect}
#mainTicket .ticket-poster:has(img:is([data-program=ilsiya-badretdinova],[data-program=anvar-nurgaliev]))::before{display:block;filter:blur(13px);opacity:.58}
