/* GatePass — customer-facing tickets, events & verify page */
:root{
  --gp-ink:#0e0d12;--gp-paper:#f7f4ee;--gp-line:rgba(14,13,18,.12);--gp-accent:#ff4d2e;--gp-accent-2:#ffd166;
  --gp-ok:#12b76a;--gp-bad:#e5484d;--gp-radius:22px;--gp-ease:cubic-bezier(.2,.8,.2,1)
}
.gp-cards,.gp-events,.gp-types{display:grid;gap:22px;margin:0 0 32px}
.gp-cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.gp-types{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
@keyframes gp-rise{from{opacity:0;transform:translateY(18px) rotate(-.4deg)}to{opacity:1;transform:none}}
@keyframes gp-shine{0%{transform:translateX(-120%) skewX(-18deg)}100%{transform:translateX(220%) skewX(-18deg)}}
@keyframes gp-pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,77,46,.45)}60%{box-shadow:0 0 0 10px rgba(255,77,46,0)}}
@keyframes gp-tick{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}

/* ticket card: stub + perforation */
.gp-card{position:relative;display:grid;grid-template-columns:1fr 168px;background:var(--gp-paper);color:var(--gp-ink);border-radius:var(--gp-radius);overflow:hidden;box-shadow:0 30px 60px -30px rgba(14,13,18,.45),0 1px 0 var(--gp-line);animation:gp-rise .6s var(--gp-ease) both;transition:transform .35s var(--gp-ease),box-shadow .35s var(--gp-ease)}
.gp-card:nth-child(2){animation-delay:.08s}.gp-card:nth-child(3){animation-delay:.16s}.gp-card:nth-child(4){animation-delay:.24s}
.gp-card:hover{transform:translateY(-4px) rotate(-.3deg);box-shadow:0 40px 70px -30px rgba(14,13,18,.55)}
.gp-card::before{content:"";position:absolute;top:0;bottom:0;right:168px;border-left:2px dashed var(--gp-line)}
.gp-card::after{content:"";position:absolute;right:157px;top:-11px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 calc(100% + 0px) 0 0 #fff}
.gp-card__main{padding:26px 24px 22px;display:flex;flex-direction:column;gap:6px;min-width:0}
.gp-card__event{font:700 clamp(20px,2.4vw,26px)/1.1 ui-serif,"Iowan Old Style",Georgia,serif;letter-spacing:-.02em;margin:0}
.gp-card__type{display:inline-flex;align-items:center;gap:8px;font:600 12px/1 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.14em;padding:7px 11px;border-radius:999px;color:#fff;width:max-content;margin-bottom:6px}
.gp-card__meta{font:14px/1.5 system-ui,sans-serif;opacity:.78;margin:0}
.gp-card__meta b{opacity:1}
.gp-card__code{margin-top:auto;font:600 13px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;padding-top:14px;display:flex;align-items:center;gap:10px}
.gp-card__actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.gp-card__qr{background:#fff;display:grid;place-items:center;padding:18px 16px;position:relative}
.gp-card__qr svg{width:100%;height:auto;max-width:136px}
.gp-card__void{position:absolute;inset:0;display:grid;place-items:center;background:rgba(247,244,238,.85);backdrop-filter:blur(3px);font:800 15px/1 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.2em;color:var(--gp-bad);transform:rotate(-14deg)}
.gp-badge{display:inline-block;padding:4px 9px;border-radius:6px;font:700 11px/1 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.12em}
.gp-badge--active{background:#e4f8ee;color:#087443}.gp-badge--used{background:#e8ecf5;color:#31456e}
.gp-badge--cancelled,.gp-badge--refunded,.gp-badge--blocked{background:#fde8e8;color:#9b1c1c}.gp-badge--expired{background:#f2eee6;color:#6b5f4a}
.gp-btn{appearance:none;border:0;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px;padding:11px 16px;border-radius:12px;background:var(--gp-ink);color:#fff;font:600 13px/1 system-ui,sans-serif;position:relative;overflow:hidden;transition:transform .2s var(--gp-ease),background .2s}
.gp-btn:hover{transform:translateY(-1px);color:#fff}
.gp-btn:active{transform:translateY(1px) scale(.98)}
.gp-btn::after{content:"";position:absolute;top:0;bottom:0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);transform:translateX(-120%) skewX(-18deg)}
.gp-btn:hover::after{animation:gp-shine .8s var(--gp-ease)}
.gp-btn--ghost{background:transparent;color:var(--gp-ink);box-shadow:inset 0 0 0 1.5px var(--gp-line)}
.gp-btn--accent{background:var(--gp-accent);animation:gp-pulse 2.4s infinite}

/* events grid + ticket type tiles w/ FOMO */
.gp-event{border-radius:var(--gp-radius);overflow:hidden;background:var(--gp-ink);color:#fff;position:relative;animation:gp-rise .7s var(--gp-ease) both}
.gp-event__banner{aspect-ratio:21/9;background:#1b1a22 center/cover;position:relative}
.gp-event__banner::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(14,13,18,.95))}
.gp-event__body{padding:22px 24px 26px;position:relative;margin-top:-70px}
.gp-event__date{display:inline-block;font:700 12px/1 system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--gp-accent-2);margin-bottom:8px}
.gp-event h3{margin:0 0 6px;font:700 clamp(24px,3vw,34px)/1.05 ui-serif,Georgia,serif;letter-spacing:-.03em}
.gp-event__venue{opacity:.7;font:14px/1.4 system-ui,sans-serif;margin:0 0 18px}
.gp-type{background:#fff;color:var(--gp-ink);border-radius:16px;padding:18px 18px 16px;display:flex;flex-direction:column;gap:8px;border-top:5px solid var(--c,var(--gp-accent));transition:transform .3s var(--gp-ease),box-shadow .3s;box-shadow:0 12px 30px -18px rgba(0,0,0,.4)}
.gp-type:hover{transform:translateY(-3px);box-shadow:0 22px 40px -18px rgba(0,0,0,.5)}
.gp-type h4{margin:0;font:700 17px/1.2 system-ui,sans-serif}
.gp-type p{margin:0;font:13px/1.45 system-ui,sans-serif;opacity:.75}
.gp-type__price{font:800 26px/1 ui-serif,Georgia,serif;letter-spacing:-.02em;display:flex;align-items:baseline;gap:10px}
.gp-type__price s{font:500 14px/1 system-ui,sans-serif;opacity:.45}
.gp-type__early{display:inline-flex;align-items:center;gap:6px;background:var(--gp-accent-2);color:var(--gp-ink);font:700 11px/1 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.1em;padding:6px 9px;border-radius:6px;width:max-content}
.gp-type__early::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gp-accent);animation:gp-pulse 1.6s infinite}
.gp-type__left{font:600 12px/1 system-ui,sans-serif;color:var(--gp-accent)}
.gp-type__left--out{color:#777;text-decoration:line-through}
.gp-type__bar{height:5px;border-radius:999px;background:#eee;overflow:hidden}
.gp-type__bar i{display:block;height:100%;width:var(--w,0%);background:linear-gradient(90deg,var(--gp-accent),var(--gp-accent-2));transition:width 1.2s var(--gp-ease)}
.gp-type .gp-btn{margin-top:auto;justify-content:center}
.gp-type .gp-btn.is-soldout{background:#ddd;color:#666;pointer-events:none;animation:none}

/* verify page */
.gp-verify{max-width:520px;margin:40px auto;text-align:center;font-family:system-ui,sans-serif}
.gp-verify__card{background:var(--gp-paper);color:var(--gp-ink);border-radius:var(--gp-radius);padding:34px 30px 28px;box-shadow:0 30px 60px -30px rgba(0,0,0,.5);animation:gp-rise .6s var(--gp-ease) both}
.gp-verify__icon{width:76px;height:76px;border-radius:50%;margin:0 auto 16px;display:grid;place-items:center;font-size:36px;color:#fff;background:var(--gp-ok);animation:gp-tick .6s var(--gp-ease) both}
.gp-verify--bad .gp-verify__icon{background:var(--gp-bad)}
.gp-verify--warn .gp-verify__icon{background:#b98900}
.gp-verify h2{margin:0 0 4px;font:800 26px/1.1 ui-serif,Georgia,serif;letter-spacing:-.02em}
.gp-verify dl{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;text-align:left;margin:20px 0 0;font-size:14px}
.gp-verify dt{opacity:.6}.gp-verify dd{margin:0;font-weight:600}
.gp-verify__note{font-size:12px;opacity:.6;margin-top:18px;line-height:1.5}
.gp-verify-form{display:flex;gap:8px;max-width:520px;margin:20px auto}
.gp-verify-form input{flex:1;padding:12px 14px;border:1.5px solid var(--gp-line);border-radius:12px;font:15px system-ui,sans-serif}

@media (max-width:560px){
  .gp-card{grid-template-columns:1fr}
  .gp-card::before{border-left:0;border-top:2px dashed var(--gp-line);right:0;left:0;top:auto;bottom:168px}
  .gp-card::after{display:none}
  .gp-card__qr{padding:22px}
}
@media (prefers-reduced-motion:reduce){.gp-card,.gp-event,.gp-verify__card,.gp-verify__icon,.gp-btn--accent,.gp-type__early::before{animation:none}}
