:root{
  --bg:#0b0b0f;
  --card:#ffffff;
  --ink:#0f172a;
  --muted:#64748b;
  --line:#e5e7eb;
  --shadow:0 12px 30px rgba(0,0,0,.18);
  --radius:16px;
  --accent-btn:72, 150, 77;
  --accent-1:0, 132, 255;
  --accent-2:0, 200, 255;
}

*{ box-sizing:border-box; }

html{
  cursor:url("/static/img/pinball-cursor.svg") 16 16, auto;
}

@media (pointer: coarse){
  html{ cursor:auto; }
}

body{
  margin:0;
  font-family:system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  color:var(--ink);
  background:#f5f6fa;
}

a{ color:inherit; }

a,
button,
.btn,
.btn-dark,
.btn-cta,
.btn-cta-outline{
  cursor:pointer;
}

.wrap{
  max-width:1100px;
  margin:0 auto;
  padding:0 18px;
}

main{
  padding:22px 0 40px;
}

.hidden{ display:none !important; }
.m0{ margin:0; }
.mt6{ margin-top:6px; }
.mt8{ margin-top:8px; }
.mt10{ margin-top:10px; }
.mt12{ margin-top:12px; }
.mt14{ margin-top:14px; }
.mt16{ margin-top:16px; }
.mb0{ margin-bottom:0; }
.max520{ max-width:520px; }
.max740{ max-width:740px; }
.max980{ max-width:980px; }
.w100{ width:100%; }
.inline{ display:inline; }
.inline-block{ display:inline-block; }
.center{ text-align:center; padding:12px; }
.muted{ color:var(--muted); }
.accent{ color:rgb(var(--accent-1)); }
.accent-bg{
  background:rgba(var(--accent-1), .12);
  border-color:rgba(var(--accent-1), .35);
}

.grid{ display:grid; gap:12px; }
.grid-2{ grid-template-columns:1fr 1fr; }
@media (max-width:700px){
  .grid-2{ grid-template-columns:1fr; }
}

.hero{
  display:grid;
  grid-template-columns:1.2fr .8fr;
  gap:16px;
  align-items:stretch;
}
@media (max-width:860px){
  .hero{ grid-template-columns:1fr; }
}

/* Header */
header.site{
  --header-bg:none;
  background:
    linear-gradient(to bottom, rgba(0,0,0,.55), rgba(0,0,0,.75)),
    radial-gradient(900px 500px at 10% 0%, rgba(var(--accent-1), .35), transparent 60%),
    radial-gradient(800px 500px at 90% 0%, rgba(var(--accent-2), .35), transparent 60%),
    var(--header-bg),
    var(--bg);
  background-size:cover;
  background-position:center;
  color:#fff;
  padding:22px 0 18px;
  box-shadow:var(--shadow);
  position:sticky;
  top:0;
  z-index:2000;
  isolation:isolate;
}

header.site .wrap,
header.site .bar{
  position:relative;
  z-index:1;
}

.bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
}

.brand{
  text-decoration:none;
  min-width:260px;
}
.brand h1{
  margin:0;
  font-size:1.35rem;
  letter-spacing:.3px;
}
.brand p{
  margin:4px 0 0;
  color:rgba(203,213,225,.95);
}

/* Nav */
.site-nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.nav-desktop{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}

.nav-mobile{
  display:none;
  align-items:center;
  gap:8px;
}

.nav-toggle{
  margin-left:auto;
}

.nav-menu{
  position:absolute;
  top:calc(100% + 10px);
  right:0;
  display:inline-flex;
  flex-direction:column;
  align-items:stretch;
  width:fit-content;
  max-width:calc(100vw - 24px);
  padding:8px;
  background:#111;
  border:1px solid rgba(255,255,255,.14);
  border-radius:14px;
  box-shadow:0 12px 30px rgba(0,0,0,.45);
  transform:translate3d(0,0,0);
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}

.nav-menu[hidden]{
  display:none !important;
}

.nav-menu > *,
.nav-menu form,
.nav-menu-link,
.nav-menu-button{
  display:block;
  width:100%;
}

.nav-menu-link,
.nav-menu-button{
  padding:8px 10px;
  white-space:nowrap;
}

.nav-menu-divider{
  height:1px;
  margin:6px 4px;
  background:rgba(255,255,255,.12);
}

.nav-menu-section-label{
  font-size:.75rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#94a3b8;
  padding:6px 10px 2px;
}

@media (max-width:640px){
  .nav-desktop{ display:none; }
  .nav-mobile{ display:flex !important; align-items:center; gap:8px; }
  .bar{ flex-wrap:nowrap; }
  .brand{ min-width:0; flex:1 1 auto; }
  .brand p{ display:none; }
  .site-nav{ flex:0 0 auto; }
}

/* Auth */
.auth-desktop{
  display:flex;
  align-items:center;
  gap:10px;
}
.auth-mobile{
  display:none;
  align-items:center;
  gap:8px;
  margin-right:8px;
}
.auth{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}

@media (max-width:640px){
  .auth-desktop{ display:none; }
  .auth-mobile{
    display:flex;
    align-items:center;
    gap:6px;
  }

  .auth-mobile .btn-cta,
  .auth-mobile .btn-cta-outline,
  .auth-mobile .pill,
  .nav-toggle{
    padding:6px 10px;
    font-size:.85rem;
    border-radius:10px;
    white-space:nowrap;
  }
}

/* Dropdown account menu */
.acct-dd{
  position:relative;
  display:inline-block;
}

.acct-btn{
  white-space:nowrap;
}

.acct-menu{
  position:absolute;
  top:calc(100% + 10px);
  right:0;
  background:#111;
  border:1px solid rgba(255,255,255,.14);
  border-radius:14px;
  box-shadow:0 12px 30px rgba(0,0,0,.45);
  padding:6px;
  min-width:160px;
  z-index:4000;
}

.acct-menu[hidden]{
  display:none !important;
}

.acct-link{
  display:block;
  width:100%;
  text-align:left;
  padding:8px 10px;
  border-radius:10px;
  color:#e5e7eb;
  text-decoration:none;
  background:transparent;
  border:0;
  font:inherit;
  cursor:pointer;
}

.acct-link:hover{
  background:rgba(var(--accent-1), .18);
}

.acct-logout{
  color:#fecaca;
}

.menu-form{
  margin:0;
}

.menu-button-reset{
  background:none;
  border:0;
  padding:0;
  width:100%;
  text-align:left;
  cursor:pointer;
}

.pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 10px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.06);
  color:rgba(229,231,235,.96);
  font-size:.92rem;
}

.pill-account{
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.18);
}

/* Cards / messages / tables / forms */
.card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:18px;
}

.flash{
  padding:10px 12px;
  border-radius:12px;
  margin:0 0 12px;
  border:1px solid var(--line);
}
.flash.error{ background:#fee2e2; }
.flash.success{ background:#dcfce7; }

.table-wrap{
  overflow-x:auto;
  max-height:70vh;
  margin-top:10px;
}

table.data{
  width:100%;
  border-collapse:collapse;
  font-size:.95rem;
  background:#fff;
  border-radius:12px;
  overflow:hidden;
}

table.data th,
table.data td{
  padding:10px 12px;
  border-bottom:1px solid var(--line);
  text-align:left;
  vertical-align:middle;
}

table.data th{
  background:rgba(var(--accent-1), .08);
  font-weight:700;
  color:#374151;
  border-bottom:2px solid #e5e7eb;
}

table.data tbody tr:nth-child(even){
  background:#fafafa;
}

table.data tr:hover td,
table.data tbody tr:hover{
  background:rgba(var(--accent-1), .06);
}

table.data tr:last-child td{
  border-bottom:none;
}

td.num,
th.num{
  text-align:right;
  font-variant-numeric:tabular-nums;
}

.form{ margin-top:14px; }
.label{
  display:block;
  font-weight:600;
  margin-top:12px;
}
.help{
  margin-top:6px;
  font-weight:400;
}
.input,
.file{
  width:100%;
  padding:10px;
  border:1px solid #d1d5db;
  border-radius:10px;
  margin-top:6px;
  background:#fff;
}

/* Buttons */
.btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:8px 12px;
  border-radius:12px;
  border:1px solid rgba(var(--accent-1), .25);
  background:rgba(var(--accent-1), .06);
  color:inherit;
  text-decoration:none;
  font-weight:500;
}
.btn:hover{
  background:rgba(var(--accent-1), .12);
}

.btn-active{
  border-color:rgba(var(--accent-btn), .55);
  background:rgba(var(--accent-btn), .14);
  box-shadow:0 0 0 3px rgba(var(--accent-btn), .12);
}

.btn-dark{
  display:inline-block;
  padding:10px 14px;
  border-radius:10px;
  border:0;
  background:#111;
  color:#fff;
  font:inherit;
}
.btn-dark:hover{
  filter:brightness(1.08);
}

.btn-link{
  background:none;
  border:none;
  padding:0;
  margin:0;
  color:inherit;
  text-decoration:underline;
  font:inherit;
}

.btn-small{
  display:inline-block;
  margin-left:10px;
  padding:6px 10px;
  border-radius:10px;
  border:1px solid #d1d5db;
  background:#fff;
  font:inherit;
}
.btn-small:hover{
  background:#f9fafb;
}

.btn-cta,
.btn-cta-outline{
  display:inline-block;
  font:inherit;
  text-decoration:none;
  padding:10px 14px;
  border-radius:12px;
}

.btn-cta{
  border:1px solid rgba(var(--accent-1), .55);
  background:linear-gradient(
    90deg,
    rgba(var(--accent-1), .95),
    rgba(var(--accent-2), .95)
  );
  color:#0b0b0f;
  box-shadow:0 10px 22px rgba(0,0,0,.12);
}
.btn-cta:hover{ filter:brightness(1.05); }
.btn-cta:active{ transform:translateY(1px); }

.btn-cta-outline{
  border:1px solid rgba(var(--accent-1), .55);
  background:rgba(var(--accent-1), .08);
  color:rgb(var(--accent-1));
}
.btn-cta-outline:hover{
  background:rgba(var(--accent-1), .14);
  border-color:rgba(var(--accent-1), .75);
}

/* Loading overlay */
.loading-overlay{
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.45);
  z-index:9999;
}

.loading-card{
  display:flex;
  align-items:center;
  gap:14px;
  padding:14px 18px;
  border-radius:14px;
  background:rgba(20,20,24,.92);
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 12px 30px rgba(0,0,0,.35);
  backdrop-filter:blur(8px);
}

.spinner{
  width:22px;
  height:22px;
  border-radius:999px;
  border:3px solid rgba(255,255,255,.25);
  border-top-color:rgba(255,255,255,.9);
  animation:spin .8s linear infinite;
}

@keyframes spin{
  to{ transform:rotate(360deg); }
}

.loading-title{ font-weight:800; }
.loading-subtitle{ opacity:.85; font-size:.95em; }

/* Footer */
.pinball-divider{
  position:relative;
  height:6px;
  margin-top:40px;
  background:
    linear-gradient(
      90deg,
      transparent 0%,
      rgba(var(--accent-1), .45) 20%,
      rgba(var(--accent-2), .55) 50%,
      rgba(var(--accent-1), .45) 80%,
      transparent 100%
    );
}

.pinball-divider::after{
  content:"";
  position:absolute;
  inset:-8px 0;
  background:
    radial-gradient(
      60% 100% at 50% 50%,
      rgba(var(--accent-2), .35),
      transparent 70%
    );
  filter:blur(10px);
  pointer-events:none;
}

@media (prefers-reduced-motion: no-preference){
  .pinball-divider{
    animation:pinballGlow 8s ease-in-out infinite;
  }

  @keyframes pinballGlow{
    0%,100%{ opacity:.55; }
    50%{ opacity:1; }
  }
}

.site-footer{
  background:#0b0b0f;
  color:#e5e7eb;
  margin-top:40px;
  padding:28px 0;
  border-top:1px solid rgba(255,255,255,.08);
}

.footer-grid{
  display:grid;
  grid-template-columns:1.2fr 1fr 1fr;
  gap:18px;
}

@media (max-width:860px){
  .footer-grid{ grid-template-columns:1fr; }
}

.footer-title{
  font-weight:600;
  margin-bottom:8px;
  letter-spacing:.2px;
}

.footer-links a{
  display:block;
  text-decoration:none;
  color:#cbd5e1;
  margin-top:6px;
}
.footer-links a:hover{
  color:#ffffff;
  text-decoration:underline;
}

.footer-muted{
  color:#94a3b8;
  font-size:.92rem;
  margin-top:8px;
}

.footer-spacer{
  margin-top:10px;
}

.social-row{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
  margin-top:10px;
}

.social-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:40px;
  height:40px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.06);
  color:#cbd5e1;
  text-decoration:none;
}
.social-icon:hover{
  background:rgba(var(--accent-1), .18);
  border-color:rgba(var(--accent-1), .35);
  color:#fff;
}
.social-icon svg{
  width:20px;
  height:20px;
  display:block;
  fill:currentColor;
}

.sr-only{
  position:absolute !important;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
.soft-accent{
  border-color: rgba(var(--accent-1), .25);
  background: rgba(var(--accent-1), .04);
}

.mini{
  border: 1px dashed #cbd5e1;
  border-radius: 14px;
  padding: 14px;
  background: #fafafa;
}

/* Next scheduled venue highlight */
.next-venue{
  border-color: rgba(var(--accent-1), .45) !important;
  background: linear-gradient(
    90deg,
    rgba(var(--accent-1), .08),
    rgba(var(--accent-2), .06)
  ) !important;
}

.next-badge{
  display:inline-block;
  margin-left: 10px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: .82rem;
  border: 1px solid rgba(var(--accent-1), .25);
  background: rgba(var(--accent-1), .10);
  color: rgb(var(--accent-1));
}

.next-badge a{
  color: inherit;
  text-decoration: underline;
  margin-left: 8px;
  opacity: .95;
}
.next-badge a:hover{
  opacity: 1;
}

tr.next-row td{
  background: rgba(var(--accent-1), .06);
}