/* Tixyard. Printed-ticket look: warm paper, ink-dark text, the logo's green and gold used as solid colours.
   One column on phones (with a bottom nav), event grid + sticky ticket panel on wider screens. */
:root{
  color-scheme:dark;
  --paper:#07110B; --surface:rgba(255,255,255,.055); --sunk:rgba(255,255,255,.04);
  --ink:#EEF6EF; --ink-2:#C2D1C6; --muted:#8FA394; --line:rgba(255,255,255,.09); --line-2:rgba(255,255,255,.16);
  --green:#45E07A; --green-hi:#5CFF8A; --green-ink:#A8F5C0; --green-soft:rgba(69,224,122,.14);
  --gold:#FFC93C; --gold-ink:#FFD976; --gold-soft:rgba(255,201,60,.13);
  --red:#FF8A80; --red-soft:rgba(255,99,88,.14); --blue:#8FB4FF; --blue-soft:rgba(110,150,255,.15);
  --glass:rgba(255,255,255,.055); --glass-2:rgba(255,255,255,.09); --blur:blur(18px) saturate(140%);
  --glow-green:0 0 28px rgba(69,224,122,.35); --glow-gold:0 0 26px rgba(255,201,60,.35);
  --f-head:"Archivo","Arial Narrow",Arial,sans-serif;
  --f-body:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --f-word:"Unbounded","Archivo",sans-serif;
  --r:16px; --r-sm:12px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 var(--f-body);-webkit-font-smoothing:antialiased;padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
body[data-page]{padding-bottom:0}
h1,h2,h3{font-family:var(--f-head);font-stretch:88%;font-weight:800;line-height:1.08;letter-spacing:-.01em;margin:0}
h1{font-size:clamp(30px,6vw,46px)}
h2{font-size:22px}
h3{font-size:18px}
p{margin:0}
a{color:var(--green)}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:4px}
.container{max-width:1120px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.narrow{max-width:640px}
.muted{color:var(--muted)} .small{font-size:14px} .mono{font-family:var(--f-mono);letter-spacing:.02em}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:10px} .between{justify-content:space-between} .grow{flex:1 1 auto;min-width:0}
.stack{display:grid;gap:16px} .stack-sm{display:grid;gap:8px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:560px){.grid2{grid-template-columns:1fr}}
.icon{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.icon.sm{width:16px;height:16px}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--ink);color:#fff;padding:10px 14px;border-radius:var(--r-sm);font-weight:700;text-decoration:none}
.skip:focus{top:12px}

/* ---------- header ---------- */
.topbar{position:sticky;top:0;z-index:40;background:var(--paper);border-bottom:1px solid var(--line)}
.topbar .bar{max-width:1120px;margin:0 auto;height:62px;display:flex;align-items:center;gap:24px;padding:0 max(16px,env(safe-area-inset-left,0px))}
.brand{display:inline-flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink)}
.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#123B22}
.brand-mark svg.mark{width:24px;height:24px}
.brand-mark img{width:24px;height:24px}
.wordmark{font:800 20px var(--f-word);letter-spacing:-.04em;color:var(--ink)}
.wordmark b{color:var(--green);font-weight:800}
.topnav{display:none;gap:4px;margin-right:auto}
.topnav a{color:var(--ink-2);text-decoration:none;font-weight:600;padding:8px 12px;border-radius:var(--r-sm)}
.topnav a:hover{background:var(--sunk);color:var(--ink)}
.topnav a[aria-current="page"]{color:var(--ink);box-shadow:inset 0 -3px 0 var(--green);border-radius:0}
.who{display:flex;align-items:center;gap:8px;margin-left:auto}
.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--green-soft);color:var(--green-ink);font-weight:800;font-size:14px}
.iconbtn{width:38px;height:38px;display:inline-grid;place-items:center;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);cursor:pointer;color:var(--ink-2)}
.iconbtn:hover{border-color:var(--line-2);color:var(--ink)}
.iconbtn:disabled{opacity:.4;cursor:not-allowed}
@media (min-width:860px){.topnav{display:flex}.who{margin-left:0}}

/* ---------- bottom nav (phones) ---------- */
.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}
.bottomnav .inner{display:flex;max-width:560px;margin:0 auto}
.bottomnav a{flex:1;display:grid;justify-items:center;gap:2px;padding:9px 4px 10px;font-size:12px;font-weight:700;color:var(--muted);text-decoration:none}
.bottomnav a .icon{width:22px;height:22px}
.bottomnav a[aria-current="page"]{color:var(--green)}
@media (min-width:860px){.bottomnav{display:none}body{padding-bottom:0}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;border-radius:var(--r-sm);border:1px solid var(--green);background:var(--green);color:#fff;font-weight:700;font-size:15px;line-height:1.2;text-decoration:none;cursor:pointer;white-space:nowrap}
.btn:hover{background:var(--green-hi);border-color:var(--green-hi)}
.btn:disabled{background:var(--line-2);border-color:var(--line-2);color:#fff;cursor:not-allowed}
.btn.ghost{background:var(--surface);color:var(--ink);border-color:var(--line-2)}
.btn.ghost:hover{border-color:var(--ink-2)}
.btn.soft{background:var(--green-soft);color:var(--green-ink);border-color:var(--green-soft)}
.btn.gold{background:var(--gold);border-color:var(--gold);color:#2B2000}
.btn.gold:hover{background:#E2AA00}
.btn.danger{background:var(--surface);color:var(--red);border-color:#E9B9B4}
.btn.danger:hover{background:var(--red-soft)}
.btn.sm{padding:8px 12px;font-size:14px}
.btn.lg{padding:15px 22px;font-size:16px}
.btn.block{width:100%}

/* ---------- surfaces & bits ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.card h3{margin-bottom:10px}
.notice{background:var(--gold-soft);color:var(--gold-ink);border-radius:var(--r-sm);padding:12px 14px;font-size:15px}
.notice.green{background:var(--green-soft);color:var(--green-ink)}
.pill{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}
.pill.ok{background:var(--green-soft);color:var(--green-ink)} .pill.info{background:var(--blue-soft);color:var(--blue)}
.pill.gray{background:var(--sunk);color:var(--ink-2)} .pill.bad{background:var(--red-soft);color:var(--red)} .pill.warn{background:var(--gold-soft);color:var(--gold-ink)}
.err{color:var(--red);font-size:14px;font-weight:600}
.empty{display:grid;justify-items:center;text-align:center;gap:8px;padding:36px 20px;color:var(--muted)}
.empty .icon{width:30px;height:30px;color:var(--line-2)}
.empty b{color:var(--ink);font-size:17px}
.skel{border-radius:var(--r);background:linear-gradient(90deg,var(--sunk) 0,#F4F1E9 50%,var(--sunk) 100%);background-size:200% 100%;animation:sk 1.4s infinite linear}
@keyframes sk{to{background-position:-200% 0}}
.spinner{width:34px;height:34px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--green);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.toast{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:90;background:var(--ink);color:#fff;padding:11px 16px;border-radius:var(--r-sm);font-weight:600;font-size:15px;max-width:calc(100% - 32px)}
@media (min-width:860px){.toast{bottom:24px}}

/* ---------- forms ---------- */
.field{display:grid;gap:6px;margin-bottom:14px}
.field label{font-weight:700;font-size:14px}
input[type=text],input[type=email],input[type=tel],input[type=number],input[type=search],input[type=datetime-local],select,textarea{width:100%;padding:12px 13px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);font-size:16px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft)}
textarea{min-height:110px;resize:vertical}
.help{font-size:13px;color:var(--muted)}
.agree{display:flex;gap:10px;align-items:center;font-size:15px;margin:2px 0 14px;cursor:pointer}
.agree input{width:20px;height:20px;flex:none;accent-color:var(--green)}
.switch{display:flex;gap:10px;align-items:center;font-weight:700;cursor:pointer;margin-bottom:8px}
.switch input{width:20px;height:20px;accent-color:var(--green)}

/* ---------- home ---------- */
body{overflow-x:clip}
.intro{padding:34px 0 8px;display:grid;gap:12px;max-width:760px}
.intro p{font-size:18px;color:var(--ink-2)}
/* full-width green band */
.hero{margin:0 calc(50% - 50vw);background:#123B22;color:#fff;padding:36px 0 40px;position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;right:-60px;bottom:-60px;width:220px;height:220px;border-radius:50%;border:28px solid #1A5230}
.hero-in{max-width:1120px;margin:0 auto;padding:0 max(16px,env(safe-area-inset-left,0px));display:grid;gap:28px;position:relative;z-index:1}
@media (min-width:900px){.hero-in{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;gap:40px}.hero{padding:56px 0 60px}}
.hero-kicker{display:inline-block;font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
.hero h1{font-size:clamp(44px,9vw,78px);line-height:.95;font-stretch:80%;letter-spacing:-.02em}
.hero-sub{font-size:18px;color:#CFE0D3;margin:14px 0 18px;max-width:440px}
.hero .search{border-color:transparent;max-width:520px}
.search{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:0 14px;margin-top:6px;color:var(--ink)}
.search .icon{color:var(--muted)}
.search input{border:0;padding:15px 0;background:transparent;box-shadow:none}
.search input:focus{box-shadow:none}
.search:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px rgba(242,183,5,.45)}
/* spotlight: the next event as a big gold-edged card */
.spot{display:grid;grid-template-columns:1fr;background:var(--surface);color:var(--ink);border-radius:14px;overflow:hidden;text-decoration:none;position:relative;transform:rotate(1.2deg);border:3px solid var(--gold);transition:transform .2s}
.spot:hover{transform:rotate(0deg) translateY(-3px)}
.spot-label{position:absolute;top:12px;left:12px;z-index:2;background:var(--gold);color:#2B2000;font-weight:800;font-size:13px;text-transform:uppercase;letter-spacing:.05em;padding:5px 10px;border-radius:6px}
.spot-cover{position:relative;aspect-ratio:16/8;background:var(--sunk)}
.spot-cover img,.spot-cover .gencover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.spot-body{display:grid;gap:4px;padding:16px 18px 18px;border-top:2px dashed var(--line-2)}
.spot-body h2{font-size:26px}
.spot-body > span{color:var(--muted);font-size:15px}
.spot-cta{display:flex;align-items:center;justify-content:space-between;margin-top:8px}
.spot-cta b{font-family:var(--f-head);font-size:22px}
.empty-spot{display:grid;gap:6px;padding:28px;transform:none;border-style:dashed;color:var(--muted)}
.empty-spot b{color:var(--ink);font-size:20px;font-family:var(--f-head)}
/* category chips with a colour dot */
.chips{display:flex;gap:8px;overflow-x:auto;padding:22px 0 6px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);font-weight:700;font-size:14px;cursor:pointer;color:var(--ink-2)}
.chip i{width:9px;height:9px;border-radius:50%;background:var(--c)}
.chip:hover{border-color:var(--ink-2)}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.chip[aria-pressed="true"][style]{background:var(--c);border-color:var(--c)}
.chip[aria-pressed="true"] i{background:#fff}
.listhead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:26px 0 14px;border-bottom:3px solid var(--ink);padding-bottom:8px}
.listhead h2{font-size:28px;font-stretch:80%}
.listhead span{color:var(--muted);font-size:14px;font-weight:700}
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
/* event card = a ticket: cover, perforation, stub with the date */
.ecard{--c:var(--green);position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line-2);border-radius:12px;text-decoration:none;color:var(--ink);transition:transform .18s,border-color .18s}
.ecard:hover{transform:translateY(-4px);border-color:var(--ink)}
.ecard:hover h3{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.ecover{position:relative;aspect-ratio:16/9;background:var(--sunk);overflow:hidden;border-radius:11px 11px 0 0}
.ecover img,.ecover .gencover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.flag{position:absolute;left:10px;top:10px;background:var(--ink);color:#fff;font-size:12px;font-weight:800;padding:4px 8px;border-radius:6px;text-transform:uppercase;letter-spacing:.04em}
.sticker{position:absolute;right:10px;bottom:10px;background:var(--gold);color:#2B2000;font:800 16px var(--f-head);padding:6px 11px;border-radius:7px;transform:rotate(-3deg);border:2px solid #2B2000}
.ebody{position:relative;display:flex;gap:14px;padding:16px;border-top:2px dashed var(--line-2);flex:1}
.ebody::before,.ebody::after{content:"";position:absolute;top:-11px;width:20px;height:20px;border-radius:50%;background:var(--paper);border:1px solid var(--line-2)}
.ebody::before{left:-11px;clip-path:inset(0 0 0 50%)} .ebody::after{right:-11px;clip-path:inset(0 50% 0 0)}
.datebox{flex:none;width:56px;display:grid;justify-items:center;align-content:center;padding:8px 0;border-radius:8px;background:var(--c);color:#fff;line-height:1}
.datebox b{font:800 26px var(--f-head)}
.datebox span{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;margin-top:3px}
.einfo{display:grid;gap:3px;min-width:0;align-content:start}
.etag{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--c)}
.einfo h3{font-size:21px}
.emeta{color:var(--ink-2);font-size:14px}
.ehost{color:var(--muted);font-size:13px}
.gencover{display:grid;place-items:center}
.gencover svg{width:48px;height:48px;fill:none;stroke:rgba(255,255,255,.9);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
/* how it works + host band */
.how{margin-top:44px}
.how h2{font-size:28px;font-stretch:80%;margin-bottom:14px}
.how ol{list-style:none;margin:0;padding:0;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));counter-reset:step}
.how li{counter-increment:step;display:grid;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px 18px 18px 64px;position:relative}
.how li::before{content:counter(step);position:absolute;left:18px;top:16px;width:32px;height:32px;border-radius:50%;background:var(--gold);color:#2B2000;display:grid;place-items:center;font:800 17px var(--f-head)}
.how li b{font-size:17px}
.how li span{color:var(--muted);font-size:15px}
.hostband{margin-top:28px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;background:var(--gold);color:#2B2000;border-radius:14px;padding:24px}
.hostband h2{font-size:30px;font-stretch:80%}
.hostband p{max-width:560px;margin-top:6px}
.hostband .btn.gold{background:#2B2000;border-color:#2B2000;color:#fff}
.hostline{margin:30px 0 0;padding:16px 0;border-top:1px solid var(--line);color:var(--ink-2)}
.hostline a{font-weight:700}

/* ---------- event page ---------- */
.backlink{display:inline-flex;align-items:center;gap:6px;margin:18px 0 12px;color:var(--ink-2);font-weight:600;text-decoration:none}
.backlink:hover{color:var(--ink)}
.elayout{display:grid;gap:24px}
@media (min-width:900px){.elayout{grid-template-columns:minmax(0,1fr) 370px;align-items:start}.side{position:sticky;top:80px}}
.ehero{position:relative;border-radius:var(--r);overflow:hidden;aspect-ratio:16/9;background:var(--sunk)}
.ehero.skel{margin-top:16px}
.ehero img,.ehero .gencover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.etitle{display:grid;gap:8px}
.tag{--c:var(--green);justify-self:start;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#fff;background:var(--c);border-radius:6px;padding:4px 10px}
.soon{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#2B2000;background:var(--gold);border-radius:6px;padding:4px 10px}
.etitle h1{font-stretch:80%;font-size:clamp(36px,7vw,58px);line-height:.98}
.etitle b{color:var(--ink)}
.facts{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.facts li{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.facts li .icon{color:var(--green);margin-top:2px}
.facts li span{display:grid}
.facts li span span{color:var(--muted);font-size:14px}
.about h2{font-size:20px;margin-bottom:8px}
.about p{white-space:pre-line;color:var(--ink-2)}
#tix-card{border:2px solid var(--ink);padding:0;overflow:hidden}
#tix-card > *:not(.tix-head){margin-left:20px;margin-right:20px}
#tix-card > *:last-child{margin-bottom:20px}
#tix-card > .btn.block{width:calc(100% - 40px)}
.tix-head{display:flex;justify-content:space-between;align-items:baseline;background:var(--ink);color:#fff;padding:14px 20px;margin-bottom:6px}
.tix-head h2{font-size:22px}
.tix-head span{color:var(--gold);font-weight:800}
#tix-card .notice{margin-bottom:12px}
.tt{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.tt b{display:block}
.tp{font-weight:700;color:var(--ink-2)}
.left{font-size:13px;font-weight:700;color:var(--red)}
.stepper{display:inline-flex;align-items:center;border:1px solid var(--line-2);border-radius:var(--r-sm);overflow:hidden}
.stepper button{width:40px;height:40px;border:0;background:var(--surface);font-size:20px;font-weight:700;cursor:pointer}
.stepper button:hover:not(:disabled){background:var(--sunk)}
.stepper button:disabled{color:var(--line-2);cursor:not-allowed}
.stepper output{min-width:32px;text-align:center;font-weight:800}
.total{display:flex;justify-content:space-between;align-items:baseline;border-top:2px solid var(--ink);margin:12px 0;padding-top:12px;font-size:18px}
.total b{font-family:var(--f-head);font-size:24px}
.secure{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;font-size:13px;color:var(--muted)}
.buybar{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom,0px));z-index:35;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface);border-top:1px solid var(--line);padding:10px 16px}
.buybar .bt{display:grid}
.buybar .bt span{font-size:13px;color:var(--muted)}
@media (min-width:900px){.buybar{display:none}}

/* poll */
.poll-opts{display:grid;gap:8px;margin:12px 0}
.popt input{position:absolute;opacity:0;pointer-events:none}
.popt .pin{position:relative;display:flex;justify-content:space-between;gap:10px;padding:12px 14px;border:1px solid var(--line-2);border-radius:var(--r-sm);cursor:pointer;overflow:hidden}
.popt .pin > span{position:relative}
.popt .bar{position:absolute;inset:0 auto 0 0;background:var(--green-soft)}
.popt .sub{display:block;font-size:13px;color:var(--muted)}
.popt .pct{font-weight:700;font-size:14px;white-space:nowrap}
.popt input:checked + .pin{border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}
.popt input:focus-visible + .pin{outline:3px solid var(--gold);outline-offset:2px}
.live{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--muted)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--green)}
.winner,.success{display:grid;gap:6px;background:#123B22;color:#fff;border-radius:var(--r);padding:22px}
.winner .eyebrow,.success .eyebrow{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--gold)}
.winner .wt{font-family:var(--f-head);font-stretch:88%;font-size:28px;font-weight:800;line-height:1.1}
.success h1{font-size:30px}
.success p{color:#D5E3D8}

/* ---------- checkout ---------- */
.scrim{position:fixed;inset:0;z-index:80;background:rgba(22,33,26,.5);display:flex;align-items:flex-end;justify-content:center}
.sheet{width:100%;max-width:520px;max-height:92vh;overflow:auto;background:var(--surface);border-radius:14px 14px 0 0;padding:18px 20px calc(20px + env(safe-area-inset-bottom,0px))}
.grab{display:block;width:40px;height:4px;border-radius:4px;background:var(--line-2);margin:0 auto 12px}
@media (min-width:640px){.scrim{align-items:center}.sheet{border-radius:var(--r)}.grab{display:none}}
.summary{display:grid;gap:6px;background:var(--paper);border-radius:var(--r-sm);padding:14px;margin:14px 0 16px}
.summary .row{justify-content:space-between}
.overlay{position:fixed;inset:0;z-index:95;background:var(--paper);display:grid;place-content:center;justify-items:center;gap:12px;text-align:center;padding:24px}
.overlay p{max-width:440px}

/* ---------- tickets: drawn like a tear-off ticket ---------- */
.ticket{position:relative;display:grid;grid-template-columns:1fr;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden}
.t-main{display:grid;gap:5px;padding:18px 20px;align-content:start}
.t-main .ev{font-family:var(--f-head);font-stretch:88%;font-size:22px;font-weight:800;line-height:1.1}
.t-main .holder{font-weight:700;color:var(--ink-2)}
.t-code{font:700 18px var(--f-mono);letter-spacing:.06em;margin-top:4px}
.t-stub{display:grid;justify-items:center;gap:8px;padding:18px;border-top:2px dashed var(--line-2);background:var(--paper)}
.t-brand{display:inline-flex;align-items:center;gap:6px;font:800 13px var(--f-word);letter-spacing:-.03em;color:var(--ink-2)}
.t-brand svg{width:16px;height:16px}
.qr{background:#fff;padding:8px;border-radius:6px;line-height:0}
.qr svg{width:180px;height:180px}
.ticket.used{opacity:.6}
@media (min-width:640px){
  .ticket{grid-template-columns:1fr 230px}
  .t-stub{border-top:0;border-left:2px dashed var(--line-2)}
  .ticket::before,.ticket::after{content:"";position:absolute;right:220px;width:20px;height:20px;border-radius:50%;background:var(--paper);border:1px solid var(--line-2)}
  .ticket::before{top:-11px} .ticket::after{bottom:-11px}
}

/* ---------- host & admin ---------- */
.pagehead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px;padding-top:26px}
.pagehead h1{font-size:clamp(28px,5vw,38px)}
.kpis{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:grid;gap:2px}
.kpi b{font-family:var(--f-head);font-size:26px}
.kpi span{color:var(--muted);font-size:14px}
.kpi.hl{background:#123B22;border-color:#123B22;color:#fff}
.kpi.hl span{color:#C9DACE}
.list{display:grid}
.li{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line);color:var(--ink)}
.list .li:first-child{border-top:0}
.li .sub{display:block;color:var(--muted);font-size:14px}
.thumb{width:56px;height:42px;border-radius:6px;overflow:hidden;background:var(--sunk)}
.thumb img,.thumb .gencover{width:100%;height:100%;object-fit:cover}
.thumb .gencover svg{width:20px;height:20px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{border:0;background:none;padding:10px 14px;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap}
.tabs button[aria-selected="true"]{color:var(--ink);box-shadow:inset 0 -3px 0 var(--green)}
.coverpick{position:relative;display:grid;place-items:center;aspect-ratio:16/9;border:2px dashed var(--line-2);border-radius:var(--r);margin-bottom:16px;overflow:hidden;cursor:pointer;color:var(--muted);font-weight:600}
.coverpick img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.coverpick input{position:absolute;inset:0;opacity:0;cursor:pointer}
.ttrow{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:10px;align-items:end}
.ttrow .field{margin-bottom:0}
@media (max-width:560px){.ttrow{grid-template-columns:1fr 1fr auto}.ttrow .f-name{grid-column:1 / -1}}
.scanner{position:relative;border-radius:var(--r);overflow:hidden;background:#000;margin-bottom:12px;aspect-ratio:1}
.scanner video{width:100%;height:100%;object-fit:cover}
.scanner .frame{position:absolute;inset:18%;border:3px solid var(--gold);border-radius:12px}
.result{border-radius:var(--r);padding:16px;margin-top:12px;display:grid;gap:8px}
.result.ok{background:var(--green-soft);color:var(--green-ink)} .result.bad{background:var(--red-soft);color:var(--red)} .result.info{background:var(--gold-soft);color:var(--gold-ink)}
.bars{display:grid;gap:12px}
.barrow .row{justify-content:space-between;font-size:15px}
.track{height:10px;border-radius:999px;background:var(--sunk);overflow:hidden;margin-top:4px}
.fill{height:100%;background:var(--green)}
.fill.gold{background:var(--gold)}
.tiebox{display:grid;gap:8px;background:var(--gold-soft);border-radius:var(--r-sm);padding:12px;margin-bottom:10px}

/* ---------- footer ---------- */
.foot{margin-top:44px;padding:22px 0 28px;border-top:1px solid var(--line);color:var(--muted);font-size:14px}
.foot-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.foot-brand{display:inline-flex;align-items:center;gap:6px}
.foot-brand svg{width:20px;height:20px}
.foot-brand b{font:800 15px var(--f-word);letter-spacing:-.04em;color:var(--ink)}
.foot-brand i{font-style:normal;color:var(--green)}
.foot-links{display:flex;flex-wrap:wrap;gap:6px 18px;margin-bottom:8px}
.foot-links a,.foot-biz a{color:var(--ink-2)}
.foot-links a:hover,.foot-biz a:hover{color:var(--ink)}
.foot-biz{margin:0}
body[data-page] .foot{text-align:left}

/* ---------- cookie banner ---------- */
.consent{position:fixed;left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:60;max-width:680px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding:16px 18px;border-radius:var(--r);background:var(--ink);color:#F1F1EC}
.consent p{margin:0;flex:1 1 300px;font-size:14px;line-height:1.5}
.consent a{color:#9FE0AE}
.consent-btns{display:flex;gap:8px;flex:none}
.consent .btn.ghost{background:transparent;color:#fff;border-color:#55615A}
body[data-page] .consent{bottom:16px}
@media (min-width:860px){.consent{bottom:20px}}

/* ---------- static pages ---------- */
body[data-page] .topbar .bar{justify-content:space-between}
.legal{max-width:760px;margin:26px auto 0;line-height:1.7}
.legal h1{margin:0 0 6px}
.legal h2{margin:30px 0 8px;font-size:22px}
.legal h3{margin:18px 0 6px;font-size:17px}
.legal ul{padding-left:20px}
.legal li{margin:4px 0}
.legal .updated{color:var(--muted);font-size:14px;margin:0 0 18px}
.legal details{border-top:1px solid var(--line);padding:14px 0}
.legal summary{cursor:pointer;font-weight:700;font-size:17px}
.legal details p{margin:8px 0 0;color:var(--ink-2)}
.biz-missing{border:1px dashed var(--gold);background:var(--gold-soft);border-radius:var(--r-sm);padding:12px 14px;color:var(--gold-ink);margin:0 0 18px}
.notfound{text-align:center;padding:60px 0 20px;display:grid;gap:10px;justify-items:center}
.notfound .code{font:800 84px/1 var(--f-head);color:var(--green);margin:0}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}


/* ================= glass theme: minimal layout, glow and gradient as accents ================= */
body{background:
  radial-gradient(55% 45% at 12% -5%, rgba(46,219,98,.22), transparent 70%),
  radial-gradient(40% 35% at 95% 8%, rgba(255,201,60,.13), transparent 70%),
  radial-gradient(50% 40% at 50% 110%, rgba(46,219,98,.10), transparent 70%),
  #07110B;background-attachment:fixed}
.card,.ecard,.spot,.how li,.hostband,.kpi,.legal.card,.sheet,.consent,.winner,.success,#tix-card,.ticket{
  background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--line);box-shadow:0 10px 40px rgba(0,0,0,.25)}
.topbar{background:rgba(7,17,11,.55);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-bottom:1px solid var(--line)}
.bottomnav{background:rgba(7,17,11,.7);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-top:1px solid var(--line)}
.bottomnav a[aria-current="page"]{color:var(--green-hi);text-shadow:0 0 14px rgba(92,255,138,.6)}
.topnav a:hover{background:var(--glass-2)}
.topnav a[aria-current="page"]{box-shadow:inset 0 -2px 0 var(--green-hi)}
.brand-mark{background:linear-gradient(150deg,#164A2A,#07110B);border:1px solid rgba(92,255,138,.3);box-shadow:0 0 18px rgba(46,219,98,.3)}
.wordmark b,.foot-brand i{color:var(--green-hi)}
.skip{background:var(--gold);color:#1A1300}
.iconbtn{background:var(--glass);border-color:var(--line-2);color:var(--ink-2)}

/* buttons: gradient + soft glow */
.btn{background:linear-gradient(135deg,#5CFF8A,#1FB141);border:0;color:#04140A;box-shadow:var(--glow-green);border-radius:999px}
.btn:hover{background:linear-gradient(135deg,#7DFFA3,#28C24C);box-shadow:0 0 36px rgba(92,255,138,.5)}
.btn:disabled{background:var(--glass-2);color:var(--muted);box-shadow:none}
.btn.ghost{background:var(--glass);color:var(--ink);border:1px solid var(--line-2);box-shadow:none}
.btn.ghost:hover{background:var(--glass-2);border-color:rgba(255,255,255,.3)}
.btn.soft{background:var(--green-soft);color:var(--green-ink);box-shadow:none}
.btn.gold{background:linear-gradient(135deg,#FFE08A,#F2B705);color:#1A1300;box-shadow:var(--glow-gold)}
.btn.gold:hover{background:linear-gradient(135deg,#FFE9A8,#FFC21A)}
.btn.danger{background:transparent;color:var(--red);border:1px solid rgba(255,138,128,.4);box-shadow:none}
.btn.danger:hover{background:var(--red-soft)}

/* forms */
input[type=text],input[type=email],input[type=tel],input[type=number],input[type=search],input[type=datetime-local],select,textarea{background:rgba(255,255,255,.06);border-color:var(--line-2);color:var(--ink)}
input:focus,select:focus,textarea:focus{border-color:var(--green-hi);box-shadow:0 0 0 3px rgba(69,224,122,.2),var(--glow-green)}
select option{background:#0E1A12;color:var(--ink)}
.search{background:rgba(255,255,255,.07);border:1px solid var(--line-2);border-radius:999px;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.search:focus-within{border-color:var(--green-hi);box-shadow:var(--glow-green)}
.hero .search{border-color:var(--line-2)}

/* home: no solid band, just space and light */
.hero{background:transparent;padding:40px 0 20px}
.hero::after{border:0;width:360px;height:360px;right:-120px;bottom:-140px;background:radial-gradient(circle,rgba(255,201,60,.18),transparent 65%)}
.hero h1{background:linear-gradient(120deg,#FFFFFF 30%,#8CFFB0 70%,#FFD976);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800}
.hero-kicker{color:var(--green-hi)}
.hero-sub{color:var(--ink-2)}
@media (min-width:900px){.hero{padding:64px 0 36px}}
.spot{transform:none;border:1px solid rgba(255,201,60,.35);box-shadow:var(--glow-gold),0 20px 60px rgba(0,0,0,.35)}
.spot:hover{transform:translateY(-4px)}
.spot-label{background:linear-gradient(135deg,#FFE08A,#F2B705);color:#1A1300;border-radius:999px}
.spot-body{border-top:1px dashed var(--line-2)}
.chip{background:var(--glass);border-color:var(--line-2);color:var(--ink-2);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.chip[aria-pressed="true"]{background:linear-gradient(135deg,#5CFF8A,#1FB141);border-color:transparent;color:#04140A;box-shadow:var(--glow-green)}
.chip[aria-pressed="true"][style]{background:var(--c);color:#fff;box-shadow:0 0 22px color-mix(in srgb,var(--c) 60%,transparent)}
.chip[aria-pressed="true"]:not([style]) i{background:#04140A}
.listhead{border-bottom:1px solid var(--line-2)}
.ecard{border-radius:var(--r);transition:transform .2s,box-shadow .2s,border-color .2s}
.ecard:hover{border-color:rgba(92,255,138,.35);box-shadow:0 0 30px rgba(69,224,122,.18),0 20px 50px rgba(0,0,0,.35)}
.ecover{border-radius:15px 15px 0 0}
.ebody{border-top:1px dashed var(--line-2)}
.ebody::before,.ebody::after{background:#07110B;border-color:var(--line)}
.sticker,.flag{background:rgba(7,17,11,.6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;border:1px solid rgba(255,255,255,.2);transform:none;border-radius:999px;font-size:14px}
.flag{font-size:11px}
.datebox{background:linear-gradient(160deg,color-mix(in srgb,var(--c) 75%,white),var(--c));box-shadow:0 0 22px color-mix(in srgb,var(--c) 55%,transparent);border-radius:12px}
.etag{color:color-mix(in srgb,var(--c) 40%,white)}
.how li::before{background:linear-gradient(135deg,#FFE08A,#F2B705);box-shadow:var(--glow-gold)}
.hostband{color:var(--ink);background:linear-gradient(135deg,rgba(69,224,122,.14),rgba(255,201,60,.10));border-color:rgba(92,255,138,.25)}
.hostband p{color:var(--ink-2)}
.hostband .btn.gold{background:linear-gradient(135deg,#FFE08A,#F2B705);color:#1A1300}

/* event page */
.ehero{border:1px solid var(--line);box-shadow:0 20px 60px rgba(0,0,0,.35)}
.tag{color:#fff;border-radius:999px;box-shadow:0 0 18px color-mix(in srgb,var(--c) 55%,transparent)}
.soon{background:linear-gradient(135deg,#FFE08A,#F2B705);color:#1A1300;border-radius:999px}
.etitle h1{background:linear-gradient(120deg,#FFFFFF 40%,#A8F5C0);-webkit-background-clip:text;background-clip:text;color:transparent}
.facts{border-top:1px solid var(--line)}
.facts li{border-bottom:1px solid var(--line)}
.facts li .icon{color:var(--green-hi)}
#tix-card{border:1px solid rgba(92,255,138,.25);box-shadow:var(--glow-green),0 20px 60px rgba(0,0,0,.3)}
.tix-head{background:linear-gradient(135deg,rgba(69,224,122,.18),rgba(255,201,60,.08));color:var(--ink);border-bottom:1px solid var(--line)}
.tix-head span{color:var(--gold)}
.tt{border-top:1px solid var(--line)}
.total{border-top:1px solid var(--line-2)}
.stepper{border-color:var(--line-2);border-radius:999px}
.stepper button{background:transparent;color:var(--ink)}
.stepper button:hover:not(:disabled){background:var(--glass-2)}
.stepper button:disabled{color:var(--line-2)}
.buybar{background:rgba(7,17,11,.75);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-top:1px solid var(--line)}
.popt .pin{border-color:var(--line-2);background:var(--glass)}
.popt .bar{background:linear-gradient(90deg,rgba(69,224,122,.28),rgba(69,224,122,.08))}
.popt input:checked + .pin{border-color:var(--green-hi);box-shadow:var(--glow-green)}
.winner,.success{background:linear-gradient(135deg,rgba(69,224,122,.18),rgba(255,201,60,.08));color:var(--ink);border-color:rgba(92,255,138,.25)}
.success p{color:var(--ink-2)}

/* checkout, overlays, toasts */
.scrim{background:rgba(3,8,5,.6);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.sheet{background:rgba(14,26,18,.88)}
.summary{background:rgba(255,255,255,.05)}
.overlay{background:rgba(7,17,11,.92);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.toast{background:rgba(14,26,18,.9);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--line-2)}
.consent{background:rgba(14,26,18,.85)}
.consent .btn.ghost{color:var(--ink);border-color:var(--line-2)}

/* tickets */
.ticket{border-color:var(--line-2)}
.t-stub{background:rgba(255,255,255,.03);border-color:var(--line-2)}
.ticket::before,.ticket::after{background:#07110B;border-color:var(--line-2)}
.qr{box-shadow:0 0 30px rgba(255,255,255,.12)}

/* host + admin */
.kpi.hl{background:linear-gradient(135deg,rgba(69,224,122,.25),rgba(69,224,122,.08));border-color:rgba(92,255,138,.3);box-shadow:var(--glow-green);color:var(--ink)}
.kpi.hl span{color:var(--ink-2)}
.tabs{border-bottom:1px solid var(--line)}
.tabs button[aria-selected="true"]{box-shadow:inset 0 -2px 0 var(--green-hi);color:var(--ink)}
.fill{background:linear-gradient(90deg,#1FB141,#5CFF8A)}
.fill.gold{background:linear-gradient(90deg,#F2B705,#FFE08A)}
.coverpick{border-color:var(--line-2)}
.notice{border:1px solid rgba(255,201,60,.2)}
.notice.green{border-color:rgba(92,255,138,.2)}
.foot{border-top:1px solid var(--line)}
.legal a,.agree a,a{color:var(--green-hi)}
.notfound .code{background:linear-gradient(120deg,#FFFFFF,#5CFF8A);-webkit-background-clip:text;background-clip:text;color:transparent}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.card,.ecard,.spot,.how li,.hostband,.sheet,.consent,#tix-card,.ticket{background:#0F1C14}}
.skel{background:linear-gradient(90deg,rgba(255,255,255,.04) 0,rgba(255,255,255,.09) 50%,rgba(255,255,255,.04) 100%);background-size:200% 100%}
.search input[type=search]{background:transparent;border:0;box-shadow:none;padding-left:0;padding-right:0}
.search input[type=search]:focus{box-shadow:none}

/* sign-in panel */
.or{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--muted);font-size:13px}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line-2)}
.linkbtn{background:none;border:0;padding:4px 0;color:var(--green-hi);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.authf .row{flex-wrap:wrap}
#door h3{display:flex;align-items:center;gap:8px}
input[type=password]{width:100%;padding:12px 13px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:rgba(255,255,255,.06);color:var(--ink);font-size:16px}
input[type=password]:focus{outline:none;border-color:var(--green-hi);box-shadow:0 0 0 3px rgba(69,224,122,.2),var(--glow-green)}
/* password box with show/hide */
.pw{position:relative}
.pw input{padding-right:50px!important}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:38px;height:38px;border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:10px;display:grid;place-items:center}
.pw-eye:hover{color:var(--ink);background:var(--glass-2)}
.pw-eye[aria-pressed="true"]{color:var(--green-hi)}
/* email code */
.verify{display:grid;justify-items:center;text-align:center;gap:10px;padding:32px 20px}
.verify > .icon{width:30px;height:30px;color:var(--green-hi)}
.verify > b{font-size:18px}
.verify > span{color:var(--muted);max-width:420px}
.codeform{display:flex;gap:10px;width:100%;max-width:360px;margin-top:6px}
input.code-input{flex:1;min-width:0;text-align:center;font:800 26px var(--f-mono);letter-spacing:.4em;padding:12px 8px}
