/* Index concert stock. All dimensions of the wall, portrait and dock are inherited. */
.concert-index{--concert-ink:#faf5ff;--concert-muted:#e5cfff;--holo:linear-gradient(135deg,#e1bbff,#96efdc 21%,#dfb2ff 42%,#ffb7e7 60%,#c8f0aa 77%,#bc9aff);--barcode:repeating-linear-gradient(90deg,currentColor 0 1px,transparent 1px 3px,currentColor 3px 5px,transparent 5px 6px,currentColor 6px 7px,transparent 7px 10px,currentColor 10px 13px,transparent 13px 15px)}
.concert-index .barcode{display:block;background:var(--barcode);color:#efdaff;border:0;padding:0;transform:none;min-width:0}
/* Original photo/word art is the headliner; security printing frames it. */
.concert-index .tear-nav a:before{border-radius:9px 9px 0 0;border-color:#be91eb;background:linear-gradient(0deg,#160821 1%,#17082744 72%),var(--ticket-photo) center/cover;box-shadow:inset 5px 0 #c7a0ff,inset 7px 0 #49147e,inset 0 3px #fff2}
.concert-index .tear-nav a:after{content:'GIGI PROMOTIONS PRESENTS';position:absolute;top:8px;left:13px;right:6px;font:700 6px/1.4 var(--label);letter-spacing:.7px;color:#fff;text-shadow:0 1px 2px #000}
.concert-index .tear-nav .menu-art svg{color:#e7d4ff;filter:drop-shadow(1px 1px 0 #c74fce)}
.concert-index .tear-nav a .rip-piece{display:grid;grid-template-columns:1fr 33px;grid-template-rows:auto auto;align-content:center;gap:3px 5px;padding:7px 10px 6px 12px;background:linear-gradient(110deg,#451278,#27103e);border:1px solid #bb89e3;border-top:1px dashed #f0d4ff;border-radius:0 0 8px 8px;color:#fff;font-style:normal;box-shadow:inset 0 -3px #a046da}
.concert-index .tear-nav a .rip-piece:before{top:1px;left:0;right:0;height:2px;background:repeating-linear-gradient(90deg,#e9cfff 0 2px,transparent 2px 6px)}
.concert-index .tear-nav a .rip-piece:after{background:radial-gradient(circle at 0 50%,#151216 0 4px,transparent 4.5px),radial-gradient(circle at 100% 50%,#151216 0 4px,transparent 4.5px)}
.concert-index .tear-nav .stub-admit{font:700 9px/1.3 var(--label);letter-spacing:1.2px;white-space:nowrap}
.concert-index .tear-nav .stub-repeat{font:600 6px/1.3 var(--label);letter-spacing:.5px;grid-column:1;color:#ecd9ff}
.concert-index .tear-nav a .barcode{grid-column:2;grid-row:1/3;width:30px;height:25px;align-self:center;padding:0;border-right:3px solid #b9f1df}
/* Photo ink is protected by an opaque dark field beneath all copy. */
.concert-index :is(.action-paste,.services-copy,.mission-copy,.co-bill,.contact-wall>div,.printed-slip){position:relative;background:linear-gradient(100deg,#230b3ff5 0%,#321051f5 66%,#240c38e8),url('../assets/photo/menu-contact.webp') center/cover;color:var(--concert-ink);border:1px solid #c294ec;border-radius:12px;box-shadow:inset 0 3px #ffffff14,inset 0 0 0 6px #b776ee19,3px 5px 0 #0005;mask:none;padding-right:64px}
.concert-index :is(.action-paste,.services-copy,.mission-copy,.co-bill,.contact-wall>div){padding-top:47px}
.concert-index .services-copy{background-image:linear-gradient(100deg,#160923f5,#300b4aeb),url('../assets/photo/menu-vibe.webp');border-radius:12px 0 0 12px}
.concert-index .mission-copy{background-image:linear-gradient(100deg,#421268fa,#260d3aef),url('../assets/photo/menu-home.webp')}
.concert-index .co-bill{background-image:linear-gradient(100deg,#11091df5,#291035ef),url('../assets/photo/menu-vibe.webp')}
.concert-index .concert-imprint{position:absolute;top:17px;left:24px;right:57px;font:700 8px/1.5 var(--label);letter-spacing:1.6px;color:#fff;border-bottom:1px solid #ff4ed8;padding-bottom:6px}
.concert-index .concert-imprint>span{display:block;font-size:6px;letter-spacing:1.1px;color:#e5cfff}
.concert-index .ticket-security{position:absolute;right:0;top:0;bottom:0;width:36px;border-left:1px dashed #d1a4f3;border-radius:0 11px 11px 0;background:linear-gradient(90deg,#fff0 0 24px,#fff1 24px),#160b23;display:flex;align-items:center;flex-direction:column;gap:17px;padding:16px 0;pointer-events:none}
.concert-index .ticket-security:before{content:'';position:absolute;left:3px;top:9px;bottom:9px;width:3px;background:var(--holo)}
.concert-index .ticket-security>span{writing-mode:vertical-rl;font:800 9px/1 var(--label);letter-spacing:2px;color:#fff}
.concert-index .ticket-security>svg{width:22px;height:20px;flex:none;color:#dfbfff;filter:drop-shadow(1px 1px #ff72d8)}
.concert-index .ticket-security .barcode{width:19px;height:42px;margin-top:auto}
.concert-index :is(.mission-copy,.co-bill,.contact-wall>div):before{content:'GIGI PROMOTIONS / INDEPENDENT MUSIC';left:24px;right:45px;color:#e5cfff;font-size:6px;letter-spacing:1px;opacity:1}
.concert-index :is(.mission-copy,.co-bill,.contact-wall>div):after{border-color:#ce9bf0;right:36px}
.concert-index :is(.services-copy h2,.mission-copy h2,.printed-slip h3){color:#e5c2ff}
.concert-index .services-copy h2 span:nth-child(2){color:#fff}
.concert-index .mission-copy h2 span{text-shadow:2px 2px #6918a5;color:#fff}
.concert-index .ticket-stamp{color:#edcdff!important;border-color:#c994ef;right:43px;filter:drop-shadow(1px 1px #df3cbd)}
.concert-index .mission-copy>svg{color:#edcdff;border-color:#c994ef;right:42px}
.concert-index .concert-grid{display:grid;grid-template-columns:1fr 1.5fr;border:1px solid #a76fd0;margin-top:18px;background:#170a29;color:#fff}
.concert-index .concert-grid>span{padding:7px 9px;font:700 7px/1.5 var(--label);letter-spacing:1px}
.concert-index .concert-grid>span+span{border-left:1px solid #a76fd0}
.concert-index .concert-grid b{display:block;font:700 9px/1.6 var(--label);letter-spacing:.6px;color:#f0dcff}
.concert-index .service-line{margin-right:-25px;color:#fff;border-color:#d5adf5;font-size:10px}
/* Four individually printed stubs, including the complete moving backing. */
.concert-index .stub-control .rip-piece{display:grid;grid-template-columns:1fr auto;align-content:center;gap:6px 10px;padding:14px 18px 14px 20px;background:linear-gradient(110deg,#4d187d,#2b0c46);color:#fff;border-color:#bf8dea;box-shadow:inset 0 3px #fff1}
.concert-index .stub-control:nth-child(even) .rip-piece{background:linear-gradient(110deg,#29113f,#180b26)}
.concert-index .stub-control:nth-child(3) .rip-piece{background:linear-gradient(110deg,#671d95,#3e125f)}
.concert-index .service-name{font:400 clamp(17px,1.9vw,28px)/1.5 var(--brush)}
.concert-index .stub-control .stub-meta{grid-column:1/3;font:600 6px/1.6 var(--label);letter-spacing:1px;color:#efdaff}
.concert-index .stub-control .barcode{grid-column:1/3;width:75px;height:13px;border-right:4px solid #baf2da}
.concert-index .stub-control:first-child .rip-piece{border-radius:0 12px 0 0}
.concert-index .stub-control:last-child .rip-piece{border-radius:0 0 12px 0}
.concert-index .stub-control .rip-piece:before{background-image:radial-gradient(circle,#e4c6ff 1px,transparent 1.3px)}
/* Contact/link stubs are printed tickets too, with quiet foil in the outer margin. */
.concert-index .stub-link .link-stub{background:linear-gradient(90deg,#451674 0%,#451674 calc(100% - 4px),#c4e6ed calc(100% - 4px),#f7b3e0);color:#fff;border-color:#e3b7ff;border-radius:0 0 5px 5px}
.concert-index .contact-wall li{background:linear-gradient(100deg,#1d0c2f,#391257);color:#fff;border-color:#b57cdd;border-radius:9px;box-shadow:inset 0 3px #fff1}
.concert-index .contact-wall li .rip-piece{position:relative;background:linear-gradient(110deg,#542084,#35104e);color:#fff;border-color:#e6bfff;border-radius:8px 0 0 8px;padding-bottom:29px}
.concert-index .contact-wall li .rip-piece:after{content:'';position:absolute;bottom:9px;left:12px;right:12px;height:9px;background:var(--barcode);color:#e7cfff}
.concert-index .contact-wall li span:before{filter:brightness(0) invert(1)}
.concert-index .printed-slip{border-radius:10px;border-top:2px dotted #d5abf3;background-image:linear-gradient(100deg,#28103ff5,#1b0c2bef),url('../assets/photo/menu-vibe.webp')}
.concert-index .printed-slip:after{content:'GIGI PROMOTIONS PRESENTS / INDEPENDENT';display:block;font:600 7px/1.6 var(--label);letter-spacing:1px;color:#e5cfff;margin-top:16px}
/* Semicircular die cuts align with the vertical security perforation. */
.concert-index :is(.action-paste,.mission-copy,.co-bill,.contact-wall>div,.services-copy){mask-image:radial-gradient(circle at calc(100% - 36px) 0,transparent 0 5px,#000 5.5px),radial-gradient(circle at calc(100% - 36px) 100%,transparent 0 5px,#000 5.5px);mask-composite:intersect}
@media(max-width:700px){
 .concert-index .tear-nav a:after{font-size:4px;letter-spacing:.3px;top:4px;left:9px}
 .concert-index .tear-nav a .rip-piece{grid-template-columns:1fr 23px;grid-template-rows:auto;padding:4px 7px;gap:3px}
 .concert-index .tear-nav .stub-admit{font-size:6px;letter-spacing:.7px}
 .concert-index .tear-nav .stub-repeat{display:none}
 .concert-index .tear-nav a .barcode{grid-row:1;width:22px;height:12px}
 .concert-index :is(.action-paste,.services-copy,.mission-copy,.co-bill,.contact-wall>div){padding-right:49px;padding-top:47px}
 .concert-index .concert-imprint{left:18px;font-size:6px;letter-spacing:1px}
 .concert-index .concert-imprint>span{font-size:5px}
 .concert-index .ticket-security{width:29px}.concert-index .ticket-security>span{font-size:7px}
 .concert-index .ticket-security .barcode{width:14px}
 .concert-index .ticket-security:before{width:2px}
 .concert-index .services-copy{border-radius:12px 12px 0 0}
 .concert-index .stub-control .rip-piece{grid-template-columns:1fr;align-content:start;justify-items:center;padding:14px 5px 10px;gap:8px;min-height:125px;border-top:0}
 .concert-index .service-name{font:700 clamp(8px,2.4vw,13px)/1.6 var(--label);min-height:32px}
 .concert-index .stub-control .stub-meta{grid-column:1;font-size:5px;letter-spacing:.2px}
 .concert-index .stub-control .barcode{grid-column:1;width:75%;height:12px}
 .concert-index .stub-control:first-child .rip-piece{border-radius:0 0 0 12px}.concert-index .stub-control:last-child .rip-piece{border-radius:0 0 12px 0}
 .concert-index .service-line{font-size:8px;gap:8px 12px;margin-right:-12px}
 .concert-index .concert-grid{margin-top:14px}.concert-index .concert-grid b{font-size:7px}
 .concert-index .action-paste .ticket-stamp{right:34px;top:9px;width:20px;height:20px}
 .concert-index :is(.action-paste,.mission-copy,.co-bill,.contact-wall>div,.services-copy){mask-image:radial-gradient(circle at calc(100% - 29px) 0,transparent 0 4px,#000 4.5px),radial-gradient(circle at calc(100% - 29px) 100%,transparent 0 4px,#000 4.5px)}
}
