@import url('https://fonts.googleapis.com/css2?family=Archivo+Black&family=Inter:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap');
:root{color-scheme:dark;--bg:#0b0b0d;--panel:#101014;--accent:#a0bbff;--button-blue:#183675;--button-hover:#25488c;--ink:#f5f2f6;--muted:#aaa5b2;--line:#38343f;--display:"Archivo Black","Arial Black",sans-serif;--mono:"Space Mono",monospace;--sans:Inter,Arial,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:76px}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 var(--sans)}
[hidden]{display:none!important}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.5}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.top{position:sticky;top:0;z-index:3;min-height:65px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 5%;background:#121117f7;border-bottom:1px solid var(--line)}
.wordmark{font:700 16px var(--mono);letter-spacing:.31em}
.top nav{display:flex;gap:28px;align-items:center}
.top nav a:first-child{color:var(--accent);border-bottom:1px solid var(--accent)}
.top nav button,.link,.icon{background:none;border:0;color:inherit;padding:0}
.admin-link,.secondary{border:1px solid #57515f;padding:8px 13px;border-radius:5px;background:#17161c;color:var(--ink);white-space:nowrap}
.hero{min-height:clamp(460px,57vw,710px);position:relative;isolation:isolate;display:flex;align-items:center;overflow:hidden;border-bottom:1px solid var(--line);background:radial-gradient(ellipse at 75% 47%,#392155,transparent 55%),#111018}
.hero-photo{position:absolute;z-index:-2;inset:-8% 0;background:url(assets/hero.png) center 50%/cover no-repeat;transform:translateY(var(--hero-offset,0px));will-change:transform}
.hero:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#08080bef 2%,#08080b80 49%,transparent 90%),linear-gradient(0deg,#09090c 0%,transparent 49%)}
.hero-content{padding:60px 5.5%;width:100%}
.eyebrow,.subtitle,legend,.primary{font-size:.76rem;text-transform:uppercase;letter-spacing:.2em;font-weight:750}
.eyebrow{color:var(--accent);display:flex;align-items:center;gap:12px;margin:0 0 10px}
.hero .eyebrow:after{content:"";width:65px;height:1px;background:var(--accent)}
.hero h1{font:400 clamp(45px,9vw,134px)/.93 var(--display);margin:18px 0;letter-spacing:-.045em;overflow-wrap:anywhere;text-shadow:0 4px 25px #000b}
.subtitle{letter-spacing:.31em;color:#ddd7e2}
.tagline{font:400 clamp(22px,3.2vw,40px)/1.15 var(--mono);margin:34px 0 28px}
.primary{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:43px;padding:10px 21px;border:0;border-radius:5px;background:var(--button-blue);color:#f3f6ff;transition:background .2s}
.primary:hover{background:var(--button-hover)}
.primary span{font-size:20px}
.lineup,.venue{padding:36px 5.5%;display:grid;gap:28px;border-bottom:1px solid var(--line);align-items:start}
.lineup{grid-template-columns:minmax(140px,1fr) 2.6fr}
.lineup h2,.venue h2{font:400 clamp(34px,4vw,58px)/1 var(--display);text-transform:uppercase;margin:0 0 13px}
.lineup .subtitle{max-width:225px;font-size:10px;line-height:1.8}
.artists{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}
.artist-image,.venue-image{border:1px solid #55515e;border-radius:4px;background-image:url(assets/reference.png);background-repeat:no-repeat}
.artist-image{aspect-ratio:138/88;background-size:1269.56% 1019.32%}
.artist:nth-child(1) .artist-image{background-position:16.23% 60.94%}
.artist:nth-child(2) .artist-image{background-position:25.40% 60.94%}
.artist:nth-child(3) .artist-image{background-position:34.51% 60.94%}
.artist h3{font:400 clamp(17px,2.6vw,33px)/1.15 var(--display);margin:8px 0 3px;text-transform:uppercase}
.artist time{color:var(--accent);font-size:.78rem;font-weight:700}
.venue{grid-template-columns:1.1fr 1fr;align-items:center}
.venue-image{aspect-ratio:276/136;background-size:634.78% 659.56%;background-position:3.18% 88.70%}
.venue p{text-transform:uppercase;letter-spacing:.21em;font-size:.74rem;max-width:360px;line-height:1.75}
.muted{color:var(--muted)}
footer{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px 5.5%;color:#dbd7e0}
footer div{display:flex;gap:18px;align-items:center}
footer span{color:var(--accent)}
.link{text-decoration:underline;text-underline-offset:3px}
.admin-grid{display:grid;grid-template-columns:200px minmax(0,1fr);max-width:1300px;margin:auto;min-height:70vh}
.admin-grid aside{border-right:1px solid var(--line);padding:35px 20px}
.admin-grid aside a{display:block;padding:10px 0}
.editor{padding:35px clamp(16px,4vw,55px)}
.editor h1,dialog h2{font:400 40px/1 var(--display);margin:0}
.bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.panel{padding:20px;border:1px solid var(--line);border-radius:8px;background:var(--panel);margin:18px 0}
.panel h2{font-size:.81rem;letter-spacing:.13em;text-transform:uppercase;margin:0 0 12px}
.fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 22px}
.artist-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:10px}
#artist-fields{margin-bottom:22px}
.panel textarea{margin-bottom:12px}
label{display:grid;gap:5px;color:#e1dbe7;font-size:.77rem;letter-spacing:.04em}
input,textarea,select{width:100%;min-width:0;border:1px solid #484350;border-radius:5px;background:#19181e;color:var(--ink);padding:9px 10px}
.discount-form{display:flex;align-items:end;gap:9px;flex-wrap:wrap}
.discount-form label{flex:1;min-width:110px}
.code-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);padding:12px 0}
.actions{display:flex;gap:7px;flex-wrap:wrap}
.stats{display:flex;gap:28px;flex-wrap:wrap;margin:16px 0}
.stats strong{color:var(--accent);display:block;font-size:1.6rem}
.feedback{margin:4px 0;color:#e4d9ff;font-size:.81rem}
.feedback:empty{display:none}
dialog{border:1px solid #575064;border-radius:16px;padding:0;width:min(94vw,440px);max-height:94dvh;background:#0e0d12;color:var(--ink);box-shadow:0 20px 90px #000c}
dialog::backdrop{background:#07060ac7;backdrop-filter:blur(7px)}
.dialog-inner{padding:22px}
.icon{font-size:24px;width:32px;height:32px;border:1px solid #595364;border-radius:50%;line-height:1}
.dialog-inner .eyebrow{margin-top:20px}
.dialog-inner h2{margin-bottom:18px}
#order-form{display:grid;gap:10px}
fieldset{border:0;padding:0;margin:0}
legend{margin:0 0 5px;color:#ddd7e4}
.quantities{display:flex;gap:6px;flex-wrap:wrap}
.quantities button{flex:1;border:1px solid var(--line);border-radius:5px;padding:7px;background:#131219;color:var(--ink)}
.quantities button[aria-pressed=true]{background:var(--button-blue);color:#f3f6ff}
.code-entry{display:grid;grid-template-columns:1fr auto;align-items:end;gap:8px}
.summary{border:1px solid var(--line);padding:12px;border-radius:7px}
.summary h3{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;margin:0 0 8px}
.summary div{display:flex;justify-content:space-between;gap:15px;margin:4px 0}
.summary .total{border-top:1px solid var(--line);padding-top:8px;font-weight:700}
.total span:last-child{color:var(--accent);font-size:1.2rem}
.terms-agree{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.terms-agree label{display:flex;align-items:center}
.terms-agree input{width:auto;accent-color:var(--accent)}
.full{width:100%}
.payment-note{text-align:center;font-size:.72rem;color:var(--muted);margin:0}
#info-copy{white-space:pre-wrap}
.sr{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}
.reveal{transition:transform .65s,opacity .65s}
.reveal.waiting{transform:translateY(18px);opacity:.65}
@media(max-width:720px){.top{flex-wrap:wrap;padding:12px 5%;gap:10px}
.top nav{order:3;width:100%;justify-content:space-between;gap:8px}
.lineup,.venue{grid-template-columns:1fr;gap:17px;padding:26px 5%}
.hero{min-height:455px}
.hero-content{padding-inline:5%}
.hero h1{font-size:clamp(39px,10vw,68px)}
.hero-photo{background-position:62% center}
.top .wordmark,footer .wordmark{font-size:13px}
.admin-grid{grid-template-columns:1fr}
.admin-grid aside{display:none}
.fields{grid-template-columns:repeat(2,minmax(0,1fr))}
footer{flex-wrap:wrap}
.artists{gap:9px}
.artist time{font-size:.66rem}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}
*,*:before,*:after{transition:none!important}
.hero-photo{transform:none!important}
.reveal.waiting{transform:none;opacity:1}
}
.top nav a:first-child{border-bottom:1px solid transparent;color:inherit}
.top nav a[aria-current="location"]{color:var(--accent);border-bottom:1px solid var(--accent)}
.top{position:sticky}
.hero h1{text-transform:uppercase}
main#landing{overflow:clip}
.lineup,.venue,.ticket-wall{scroll-margin-top:12px;transform-origin:center left}
.ticket-wall{padding:48px 5.5%;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--line);background:linear-gradient(120deg,#110e1a,#101113 78%);box-shadow:inset 0 1px 0 #4879d45c}
.ticket-wall h2{font:400 clamp(34px,4vw,58px)/1 var(--display);margin:0;text-transform:uppercase}
.ticket-wall p{color:var(--muted);margin-bottom:0}
#venue-description,#venue-note{white-space:pre-line}
.artist:nth-child(n+4) .artist-image{background-position:16.23% 60.94%}
.image-control{display:grid;align-content:start;gap:8px;min-width:0}
.image-control img{display:block;width:100%;height:94px;object-fit:cover;border:1px solid var(--line);border-radius:5px}
.image-control .secondary,.artist-fields > .secondary{justify-self:start;align-self:end}
.artist-fields{border-top:1px solid var(--line);padding:14px 0}
#attendee-list{overflow:auto;margin-top:12px}
#attendee-list table{border-collapse:collapse;width:100%;text-align:left}
#attendee-list td,#attendee-list th{padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.login{min-height:100dvh;display:grid;place-items:center;padding:20px;background:radial-gradient(ellipse at center,#2a1b38,#0b0b0d 70%)}
.login form{width:min(100%,380px)}
.login h1{font:400 42px var(--display)}
.login .primary{margin-top:14px}
#load-error{margin:18px 5%;color:#f9d1e7}
@media(max-width:480px){.artists{grid-template-columns:repeat(2,minmax(0,1fr))}.hero h1{overflow-wrap:anywhere}.artist-fields{grid-template-columns:1fr}.top nav a{font-size:.8rem}}
 .wordmark{text-transform:uppercase}
.hero-photo:not(.uploaded-image), .image-control img[src="/assets/hero.png"] {
  filter: grayscale(1) sepia(1) saturate(2.6) hue-rotate(173deg) brightness(.77);
}
.hero-photo.uploaded-image {
  inset: 0;
  transform: none;
}
.uploaded-image {
  background-size: contain !important;
  background-position: center !important;
  background-repeat: no-repeat;
}
.artist-image.uploaded-image, .venue-image.uploaded-image, .image-control img {
  background-color: #101522;
}
.image-control img {
  object-fit: contain;
  object-position: center;
}
.hero-ticket-price {
  color: #d7e3ff;
  font: 400 .83rem/1.6 var(--mono);
  margin: -8px 0 20px;
}
.primary, .quantities button[aria-pressed=true] {
  border: 1px solid #4d70b5;
}
.subtitle, .eyebrow, legend {
  font-family: var(--mono);
}
.hero-ticket-price { margin: 24px 0 20px; }
.lineup-carousel { min-width: 0; }
.cube-viewport {
  width: min(100%, 540px);
  margin: 0 auto;
  container-type: inline-size;
  perspective: 1000px;
  overflow: hidden;
  border: 1px solid #314676;
  border-radius: 7px;
  background: #090c13;
  touch-action: pan-y;
  cursor: grab;
  user-select: none;
}
.cube-viewport:active { cursor: grabbing; }
.cube-viewport:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.cube-stage {
  --cube-depth: 50cqw;
  display: grid;
  min-height: clamp(205px, 53cqw, 290px);
  transform-style: preserve-3d;
  transform: translateZ(calc(-1 * var(--cube-depth)));
}
.cube-face {
  grid-area: 1 / 1;
  display: grid;
  min-width: 0;
  grid-template-rows: minmax(0,1fr) auto auto;
  gap: 7px;
  padding: clamp(14px, 4cqw, 24px);
  background: linear-gradient(150deg, #151f34, #090b10 75%);
  transform: rotateY(var(--face-angle)) translateZ(var(--cube-depth));
  backface-visibility: hidden;
}
.cube-face .artist-image {
  min-height: 140px;
  width: 100%;
  aspect-ratio: auto;
  background-color: #000;
  background-origin: content-box;
  padding: 12px;
  background-position: 16.23% 60.94%;
}
.cube-face h3 { margin: 4px 0 0; overflow-wrap: anywhere; }
.cube-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin-top: 12px;
}
.cube-controls button { min-width: 46px; min-height: 42px; }
.cube-controls p,.cube-hint { margin: 0; color: var(--muted); font-family: var(--mono); }
.cube-hint { text-align: center; margin: 7px 0; font-size: .75rem; }
.set-list { margin: 14px auto 0; max-width: 540px; }
.set-list summary { cursor: pointer; color: var(--accent); }
.set-list ol { padding-left: 24px; }
.set-list li { padding: 5px 0; }
.set-list li span { margin-left: 10px; color: var(--muted); }
