:root{
  --sky-top:#070718; --sky-mid:#1c1636; --sky-low:#5b2f63; --sky-horizon:#c8674f; --sky-sun:#ffb765;
  --ink:#f4f1ff; --muted:#bdb7d6; --faint:#8b86a8;
  --line:rgba(255,255,255,.10); --gold:#ffd18a; --sun:#ffb765; --coral:#ff7e5f;
  --glass:rgba(18,14,38,.5); --glass-2:rgba(28,22,54,.62); --glass-brd:rgba(255,255,255,.14);
  --radius:20px; --radius-sm:13px; --maxw:1080px;
  --serif:'Fraunces',Georgia,'Times New Roman',serif;
  --sans:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);background:#08081a;line-height:1.6;overflow-x:hidden;position:relative;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
::selection{background:var(--sun);color:#2a1200}

/* ---- Sky backdrop (absolute: sunset behind hero, deepening to night below) ---- */
.sky{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-2;background:
  linear-gradient(180deg,
    #070718 0,
    #171029 22vh,
    #2e1d45 44vh,
    #5b2f63 66vh,
    #9c5050 86vh,
    var(--sky-horizon) 100vh,
    #7d4257 108vh,
    #33244a 122vh,
    #0d0b20 148vh,
    #08081a 100%)}
#stars{position:absolute;top:0;left:0;width:100%;z-index:-1;pointer-events:none}
.horizon-glow{position:absolute;left:50%;top:74vh;transform:translateX(-50%);width:120vw;height:44vh;
  background:radial-gradient(ellipse at center,rgba(255,183,101,.4),rgba(255,126,95,.12) 42%,transparent 70%);
  z-index:-1;pointer-events:none}

/* ---- Nav ---- */
.nav{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:16px 26px;transition:background .3s,backdrop-filter .3s,border-color .3s;border-bottom:1px solid transparent}
.nav.scrolled{background:rgba(7,7,24,.72);backdrop-filter:blur(14px) saturate(1.2);border-bottom-color:var(--line)}
.nav-brand{font-family:var(--serif);font-weight:600;font-size:18px;letter-spacing:.2px}
.nav-links{display:flex;gap:26px}
.nav-links a{color:var(--muted);font-size:14px;font-weight:500;position:relative;transition:color .2s}
.nav-links a::after{content:'';position:absolute;left:0;bottom:-5px;width:0;height:1.5px;background:var(--sun);transition:width .25s}
.nav-links a:hover{color:var(--ink)}
.nav-links a:hover::after{width:100%}
.nav-actions{display:flex;align-items:center;gap:14px}
.lang-toggle{background:transparent;border:1px solid var(--glass-brd);color:var(--faint);border-radius:999px;
  padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;letter-spacing:.5px;display:flex;gap:4px}
.lang-toggle .on{color:var(--ink)}
.lang-toggle .sep{opacity:.4}
.lang-toggle:hover{border-color:var(--sun)}
@media(max-width:780px){
  .nav{padding:12px 16px;gap:10px}
  .nav-links{display:none}
  .nav-brand{font-size:15px}
  .nav-actions{gap:9px}
  .lang-toggle{padding:6px 9px}
  .nav-actions .btn-sm{padding:8px 14px;font-size:13px}
}
@media(max-width:380px){
  .nav-actions .btn-primary{display:none}
}

/* ---- Buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;cursor:pointer;
  border-radius:999px;font-weight:700;font-family:inherit;transition:transform .16s,box-shadow .24s,opacity .2s;
  white-space:nowrap;padding:11px 20px;font-size:15px}
.btn-primary{background:linear-gradient(135deg,var(--sun),var(--coral));color:#2a1200;
  box-shadow:0 10px 34px -8px rgba(255,140,80,.55)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 40px -8px rgba(255,140,80,.7)}
.btn-primary:active{transform:translateY(0)}
.btn-primary:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none;filter:grayscale(.3)}
.btn-ghost{background:rgba(255,255,255,.07);color:var(--ink);border:1px solid var(--glass-brd)}
.btn-ghost:hover{background:rgba(255,255,255,.12)}
.btn-sm{padding:9px 17px;font-size:14px}
.btn-lg{padding:16px 34px;font-size:17px}

/* ---- Hero ---- */
.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:120px 22px 60px;position:relative}
.hero-inner{max-width:760px}
.hero-kicker{color:var(--gold);letter-spacing:3px;text-transform:uppercase;font-size:12.5px;font-weight:600;margin-bottom:22px}
.hero-title{font-family:var(--serif);font-size:clamp(44px,8.5vw,92px);line-height:1.02;font-weight:600;letter-spacing:-.5px;
  background:linear-gradient(175deg,#fff 30%,#ffdcb0);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-sub{color:var(--muted);font-size:clamp(17px,2.4vw,23px);margin:20px auto 34px;max-width:600px;font-weight:400}
.countdown{display:flex;gap:14px;justify-content:center;margin:8px 0 36px}
.countdown div{min-width:74px;background:rgba(28,22,54,.66);border:1px solid var(--glass-brd);border-radius:var(--radius-sm);
  padding:14px 10px}
.countdown span{display:block;font-family:var(--serif);font-size:32px;font-weight:600;color:#fff;font-variant-numeric:tabular-nums}
.countdown label{font-size:10.5px;text-transform:uppercase;letter-spacing:1.2px;color:var(--faint);margin-top:2px}
.hero-doors{color:var(--faint);margin-top:20px;font-size:14px}
.scroll-hint{position:absolute;bottom:26px;font-size:22px;color:var(--muted);animation:bob 2.2s infinite ease-in-out;opacity:.7}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(9px)}}

/* ---- Sections ---- */
.section{max-width:var(--maxw);margin:0 auto;padding:96px 22px}
.section-head{text-align:center;margin-bottom:52px}
.section-eyebrow{display:inline-block;font-size:12px;letter-spacing:3px;color:var(--sun);font-weight:700;margin-bottom:10px;opacity:.85}
.section-head h2{font-family:var(--serif);font-size:clamp(30px,5vw,48px);font-weight:600;letter-spacing:-.3px}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}

/* ---- Timeline ---- */
.timeline{list-style:none;max-width:580px;margin:0 auto;border-left:2px solid var(--line);padding-left:30px}
.timeline-item{position:relative;padding:18px 0;display:flex;gap:20px;align-items:baseline}
.timeline-item::before{content:'';position:absolute;left:-38px;top:24px;width:13px;height:13px;border-radius:50%;
  background:var(--sun);box-shadow:0 0 0 5px rgba(255,183,101,.16),0 0 16px var(--sun)}
.timeline-time{font-family:var(--serif);color:var(--gold);font-weight:600;min-width:58px;font-size:18px;font-variant-numeric:tabular-nums}
.timeline-text{color:var(--muted);font-size:16px}

/* ---- Lineup ---- */
.lineup-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:24px;max-width:620px;margin:0 auto}
.lineup-card{background:var(--glass-2);border:1px solid var(--glass-brd);border-radius:var(--radius);padding:26px 20px;
  text-align:center;transition:transform .25s,border-color .25s}
.lineup-card:hover{transform:translateY(-4px);border-color:rgba(255,209,138,.4)}
.lineup-photo{width:120px;height:120px;border-radius:50%;margin:0 auto 16px;overflow:hidden;
  border:2px solid var(--glass-brd);display:flex;align-items:center;justify-content:center;
  background-color:rgba(255,255,255,.06);position:relative}
.lineup-initial{font-family:var(--serif);font-size:44px;color:rgba(255,255,255,.5)}
.lineup-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 28%}
.lineup-card h3{font-family:var(--serif);font-size:22px;font-weight:600}
.lineup-card p{color:var(--faint);font-size:14px;margin-top:4px}

/* ---- Tickets ---- */
.ticket-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:36px}
.ticket-option{background:var(--glass-2);border:1px solid var(--glass-brd);border-radius:var(--radius);padding:26px;
  transition:border-color .22s,transform .22s,box-shadow .22s;display:flex;flex-direction:column}
.ticket-option:hover{border-color:var(--sun);transform:translateY(-3px);box-shadow:0 20px 50px -24px rgba(255,150,90,.5)}
.ticket-option.has-qty{border-color:var(--sun);background:var(--glass-2)}
.ticket-option.is-soldout{opacity:.5;filter:grayscale(.5)}
.ticket-option-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.ticket-option h3{font-family:var(--serif);font-size:23px;font-weight:600}
.ticket-price{font-family:var(--serif);font-size:30px;font-weight:600;color:var(--gold);line-height:1;white-space:nowrap}
.ticket-price span{font-size:15px;margin-left:2px;opacity:.8}
.ticket-desc{color:var(--muted);font-size:14px;margin:12px 0 20px;flex:1}
.qty-control{display:flex;align-items:center;gap:12px;margin-top:auto}
.qty-btn{width:40px;height:40px;border-radius:11px;border:1px solid var(--glass-brd);background:rgba(255,255,255,.06);
  color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .18s}
.qty-btn:hover{background:rgba(255,183,101,.22)}
.qty-input{width:58px;height:40px;text-align:center;border-radius:11px;border:1px solid var(--glass-brd);
  background:rgba(0,0,0,.28);color:#fff;font-size:16px;font-weight:600;-moz-appearance:textfield}
.qty-input::-webkit-outer-spin-button,.qty-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ticket-soldout{margin-top:auto;color:var(--sky-horizon);font-weight:700;text-transform:uppercase;letter-spacing:1.5px;font-size:14px}

.checkout-box{max-width:560px;margin:0 auto;background:rgba(28,22,54,.72);border:1px solid var(--glass-brd);border-radius:var(--radius);
  padding:28px}
.checkout-summary{margin-bottom:16px;display:grid;gap:6px;font-size:14px;color:var(--muted)}
.checkout-summary .line{display:flex;justify-content:space-between}
.checkout-fields{display:grid;gap:14px;margin-bottom:20px}
.checkout-fields label{display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--faint);font-weight:500}
.checkout-fields input{padding:13px 15px;border-radius:12px;border:1px solid var(--glass-brd);background:rgba(0,0,0,.28);
  color:#fff;font-size:16px;font-family:inherit;transition:border-color .18s}
.checkout-fields input:focus{outline:none;border-color:var(--sun)}
.checkout-total{font-family:var(--serif);font-size:22px;text-align:right;margin-bottom:20px}
.checkout-total strong{color:var(--gold)}
.checkout-actions{display:flex;flex-direction:column;gap:14px}
#pay-card{width:100%}
#paypal-button-container{min-height:0}
.checkout-secure{text-align:center;color:var(--faint);font-size:12.5px;margin-top:16px}
.checkout-error{color:#ff9a9a;margin-top:12px;min-height:20px;text-align:center;font-size:14px}

/* ---- Venue ---- */
.venue-grid{display:grid;grid-template-columns:.9fr 1.4fr;gap:30px;align-items:center}
.venue-info h3{font-family:var(--serif);font-size:26px;margin-bottom:10px;font-weight:600}
.venue-info p{color:var(--muted);margin-bottom:20px}
.venue-map iframe{border:0;width:100%;height:340px;border-radius:var(--radius);filter:saturate(.85) contrast(1.05)}
@media(max-width:780px){.venue-grid{grid-template-columns:1fr}.venue-map iframe{height:280px}}

/* venue photo gallery: wide hero + a row of tiles */
.venue-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:26px}
.venue-gallery figure{margin:0;border-radius:var(--radius);overflow:hidden;background:var(--glass);
  border:1px solid var(--glass-brd);aspect-ratio:4/3}
.venue-gallery .g-wide{grid-column:1/-1;aspect-ratio:16/7}
.venue-gallery img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.venue-gallery figure:hover img{transform:scale(1.05)}
@media(max-width:780px){
  /* one column on phones: no orphaned tile, and the photos actually get seen */
  .venue-gallery{grid-template-columns:1fr;gap:10px}
  .venue-gallery figure{aspect-ratio:16/10}
  .venue-gallery .g-wide{aspect-ratio:16/9}
}

/* ---- FAQ ---- */
.faq-list{max-width:700px;margin:0 auto;display:grid;gap:12px}
.faq-item{background:var(--glass-2);border:1px solid var(--glass-brd);border-radius:var(--radius-sm);padding:2px 22px}
.faq-item summary{cursor:pointer;padding:18px 0;font-weight:600;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-plus{color:var(--sun);font-size:22px;transition:transform .25s;flex-shrink:0}
.faq-item[open] .faq-plus{transform:rotate(45deg)}
.faq-item p{color:var(--muted);padding:0 0 18px;font-size:15px}

/* ---- Footer ---- */
.footer{text-align:center;padding:60px 22px;color:var(--faint);border-top:1px solid var(--line);margin-top:50px}
.footer-brand{font-family:var(--serif);font-size:20px;color:var(--ink);margin-bottom:10px}
.footer p{font-size:14px}
.footer-small{font-size:12.5px;opacity:.7;margin-top:6px}

/* ---- Ticket + success pages ---- */
.ticket-page,.success-page{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:24px}
.ticket-card,.success-card{background:rgba(24,19,45,.86);border:1px solid var(--glass-brd);border-radius:26px;padding:38px 34px;
  max-width:430px;width:100%;text-align:center;box-shadow:0 30px 80px -30px rgba(0,0,0,.7)}
.ticket-card h1{font-family:var(--serif);font-size:26px;font-weight:600}
.ticket-qr{width:236px;margin:22px auto;background:#fff;padding:14px;border-radius:16px}
.ticket-qr svg{width:100%;height:auto;display:block}
.ticket-code{font-family:'SF Mono',ui-monospace,monospace;font-size:26px;letter-spacing:6px;color:var(--gold);margin:8px 0 20px}
.ticket-type{font-size:18px;color:#fff;margin-top:10px;font-weight:600}
.ticket-meta{color:var(--faint);font-size:14px;margin-top:6px}
.ticket-status{margin-top:16px;padding:12px;border-radius:12px;font-weight:800;letter-spacing:.3px}
.ticket-status.valid{background:rgba(80,200,120,.16);color:#7ee0a0}
.ticket-status.used{background:rgba(255,180,80,.16);color:#ffcf8a}
.ticket-status.invalid{background:rgba(255,90,90,.16);color:#ff9a9a}
.success-check{width:74px;height:74px;border-radius:50%;background:rgba(80,200,120,.2);color:#7ee0a0;font-size:40px;
  display:flex;align-items:center;justify-content:center;margin:0 auto 20px}
.success-card h1{font-family:var(--serif);font-size:26px;font-weight:600;margin-bottom:8px}
.success-card>p{color:var(--muted)}
.success-tickets{margin:22px 0;display:grid;gap:10px}
.ticket-link{display:block;padding:14px;border-radius:12px;background:rgba(255,255,255,.08);border:1px solid var(--glass-brd);
  font-family:'SF Mono',ui-monospace,monospace;font-size:14px;letter-spacing:1px;transition:background .18s}
.ticket-link:hover{background:rgba(255,183,101,.2)}
.loading{color:var(--faint)}
.success-save{color:var(--gold);font-size:14px;line-height:1.5;margin:6px auto 8px;max-width:380px;font-weight:600}
.success-spam{color:var(--faint);font-size:13px;line-height:1.5;margin:2px auto 20px;max-width:360px}
.success-spam a,.success-save a,.ticket-meta a{color:var(--sun);text-decoration:underline}

/* ---- Check-in ---- */
.checkin-page{padding:24px;max-width:540px;margin:0 auto}
.checkin-page h1{font-family:var(--serif);font-size:28px;font-weight:600;margin-bottom:6px}
.checkin-stats{width:100%;margin:16px 0;border-collapse:collapse;color:var(--muted);font-size:15px}
.checkin-stats th,.checkin-stats td{padding:8px 10px;border-bottom:1px solid var(--line)}
#scanner{border-radius:16px;overflow:hidden;background:#000;aspect-ratio:4/3;position:relative}
#scanner video{width:100%;height:100%;object-fit:cover}
.scan-frame{position:absolute;inset:18%;border:3px solid rgba(255,255,255,.5);border-radius:16px;pointer-events:none}
.scan-result{margin-top:18px;padding:24px;border-radius:16px;text-align:center;font-size:22px;font-weight:800}
.scan-result.valid{background:rgba(80,200,120,.22);color:#7ee0a0}
.scan-result.used{background:rgba(255,180,80,.22);color:#ffcf8a}
.scan-result.invalid{background:rgba(255,90,90,.22);color:#ff9a9a}
.scan-result small{display:block;font-weight:500;font-size:14px;margin-top:6px;opacity:.85}
.admin-find{margin-top:26px;border-top:1px solid var(--line);padding-top:20px}
.admin-find h2{font-family:var(--serif);font-size:20px;font-weight:600;margin-bottom:12px}
.find-hint{color:var(--faint);font-size:14px;margin-top:12px}
.find-row{background:var(--glass-2);border:1px solid var(--glass-brd);border-radius:14px;padding:14px;margin-top:12px}
.find-who{font-size:14px;color:var(--muted);margin-bottom:8px}
.find-who span{word-break:break-all}
.find-codes{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.find-code{font-family:'SF Mono',ui-monospace,monospace;font-size:13px;letter-spacing:1px;color:var(--gold);
  background:rgba(255,209,138,.1);border:1px solid var(--glass-brd);border-radius:8px;padding:4px 8px}
.find-code.used{color:var(--faint);text-decoration:line-through;opacity:.7}
.find-row .btn{width:100%}
.guest-form{display:grid;gap:10px}
.guest-row{display:flex;gap:10px}
.guest-row select{flex:1}
.guest-row input{width:88px}
.guest-form input,.guest-form select{padding:12px;border-radius:12px;border:1px solid var(--glass-brd);
  background:rgba(0,0,0,.25);color:#fff;font-family:inherit;font-size:15px}
.guest-form select{appearance:none;-webkit-appearance:none}
.guest-form select option{background:#1c1636;color:#fff}
.guest-ok{margin-top:12px;padding:12px 14px;border-radius:12px;background:rgba(80,200,120,.16);color:#7ee0a0;font-size:14px}
.guest-ok .find-code{color:#7ee0a0;background:rgba(80,200,120,.12);margin-top:6px;display:inline-block}
.guest-err{margin-top:12px;padding:12px 14px;border-radius:12px;background:rgba(255,90,90,.16);color:#ff9a9a;font-size:14px}

@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.scroll-hint{animation:none}}
