/* ============================================================
   BTIDY — BenSited single-file build
   Palette: Cleveland sports — Brown #512F2E / Orange #FA4616 / White #FFFFFF
   ============================================================ */

:root{
  --brown:#512F2E;
  --brown-deep:#3A2120;
  --orange:#FA4616;
  --orange-soft:#FF6A3D;
  --white:#FFFFFF;

  --ink:#12100F;          /* page background */
  --ink-2:#1B1716;        /* raised surface  */
  --ink-3:#241E1C;        /* card surface    */
  --win:#22C55E;          /* parlay leg hit  */
  --line:rgba(250,70,22,.20);
  --line-soft:rgba(255,255,255,.10);

  --text:#F2EDEA;
  --muted:#BCB0AB;

  --font-display:'Anton', 'Arial Black', Impact, sans-serif;
  --font-body:'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;

  --wrap:1180px;
  --pad:clamp(20px,5vw,40px);
  --radius:18px;
  --shadow:0 18px 40px rgba(0,0,0,.45);
  --ease:cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--ink);
  color:var(--text);
  font-family:var(--font-body);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:var(--orange-soft);text-underline-offset:3px}
a:hover{color:var(--orange)}

/* Focus visibility (WCAG 2.4.7) */
:focus-visible{
  outline:3px solid var(--orange);
  outline-offset:3px;
  border-radius:6px;
}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--orange);color:#12100F;font-weight:800;
  padding:14px 20px;border-radius:0 0 10px 0;text-decoration:none;
}
.skip-link:focus{left:0}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad)}

/* ---------- Type ---------- */
.display{
  font-family:var(--font-display);
  font-weight:400;
  letter-spacing:.01em;
  line-height:.92;
  text-transform:uppercase;
  margin:0;
}
h2.display{font-size:clamp(2.1rem,6vw,3.6rem);margin-bottom:18px}
h3{font-family:var(--font-body);font-weight:800;letter-spacing:-.01em;margin:0}

.eyebrow{
  display:inline-flex;align-items:center;gap:9px;
  font-size:.72rem;font-weight:800;letter-spacing:.20em;text-transform:uppercase;
  color:var(--orange);margin:0 0 16px;
}
.eyebrow::before{
  content:"";width:26px;height:3px;background:var(--orange);border-radius:2px;flex:none;
}
.lead{font-size:clamp(1.02rem,2.1vw,1.18rem);color:var(--muted);max-width:62ch}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--font-body);font-weight:800;font-size:.94rem;
  letter-spacing:.03em;text-transform:uppercase;text-decoration:none;
  padding:16px 28px;border-radius:999px;border:2px solid transparent;
  cursor:pointer;transition:transform .18s var(--ease), background-color .18s, border-color .18s, box-shadow .18s;
  min-height:52px;
}
.btn svg{flex:none}
.btn-primary{background:var(--orange);color:#12100F;border-color:var(--orange)}
.btn-primary:hover{background:var(--orange-soft);border-color:var(--orange-soft);color:#12100F;transform:translateY(-2px);box-shadow:0 12px 26px rgba(250,70,22,.32)}
.btn-ghost{background:transparent;color:var(--white);border-color:rgba(255,255,255,.35)}
.btn-ghost:hover{border-color:var(--orange);color:var(--white);transform:translateY(-2px);background:rgba(250,70,22,.10)}
.btn-block{width:100%}
.btn.magnetic{will-change:transform}
.btn-primary.magnetic:hover{transform:none}

/* ---------- Header ---------- */
.site-header{
  position:sticky;top:0;z-index:100;
  background:rgba(18,16,15,.72);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
  transition:background-color .25s, border-color .25s;
}
.site-header.is-stuck{background:rgba(18,16,15,.95);border-bottom-color:var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:72px}

.brand{display:inline-flex;align-items:center;gap:11px;text-decoration:none;color:var(--white)}
.brand-word{font-family:var(--font-display);font-size:1.45rem;letter-spacing:.04em;line-height:1}

.nav-links{display:flex;align-items:center;gap:6px;list-style:none;margin:0;padding:0}
.nav-links a{
  display:block;padding:10px 15px;border-radius:999px;
  color:var(--text);text-decoration:none;
  font-size:.88rem;font-weight:600;letter-spacing:.02em;
  transition:color .18s, background-color .18s;
}
.nav-links a:hover{color:var(--white);background:rgba(255,255,255,.07)}
.nav-cta{margin-left:8px;padding:12px 22px !important;min-height:44px}

.nav-toggle{
  display:none;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:12px;
  background:rgba(255,255,255,.06);border:1px solid var(--line-soft);
  color:var(--white);cursor:pointer;
}
.nav-toggle span{display:block;width:20px;height:2px;background:currentColor;border-radius:2px;position:relative;transition:background-color .2s}
.nav-toggle span::before,.nav-toggle span::after{
  content:"";position:absolute;left:0;width:20px;height:2px;background:currentColor;border-radius:2px;
  transition:transform .24s var(--ease), top .2s;
}
.nav-toggle span::before{top:-6px}
.nav-toggle span::after{top:6px}
.nav-toggle[aria-expanded="true"] span{background:transparent}
.nav-toggle[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.nav-toggle[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}

@media (max-width:900px){
  .nav-toggle{display:inline-flex}
  .nav-links{
    position:absolute;left:0;right:0;top:100%;
    flex-direction:column;align-items:stretch;gap:4px;
    background:#161211;border-bottom:1px solid var(--line);
    padding:14px var(--pad) 22px;
    box-shadow:var(--shadow);
    display:none;
  }
  .nav-links.is-open{display:flex}
  .nav-links a{padding:14px 12px;font-size:1rem}
  .nav-cta{margin-left:0;margin-top:8px;text-align:center;justify-content:center}
}

/* ---------- Hero ---------- */
.hero{position:relative;overflow:hidden;padding:clamp(48px,9vw,96px) 0 clamp(56px,8vw,88px)}
.hero-bg{position:absolute;inset:0;z-index:0;pointer-events:none}
.hero-bg::before{
  content:"";position:absolute;inset:-30%;will-change:transform;
  background:
    radial-gradient(48% 42% at 22% 26%, rgba(250,70,22,.30) 0%, transparent 62%),
    radial-gradient(46% 46% at 80% 68%, rgba(81,47,46,.72) 0%, transparent 66%);
  animation:drift 22s ease-in-out infinite alternate;
}
.hero-bg::after{
  content:"";position:absolute;inset:-30%;will-change:transform;
  background:radial-gradient(38% 38% at 55% 85%, rgba(255,106,61,.22) 0%, transparent 68%);
  animation:driftAlt 28s ease-in-out infinite alternate;
}
@keyframes drift{
  0%{transform:translate3d(0,0,0) scale(1)}
  100%{transform:translate3d(2.5%,-2.5%,0) scale(1.08)}
}
@keyframes driftAlt{
  0%{transform:translate3d(0,0,0) scale(1.05)}
  100%{transform:translate3d(-3%,2%,0) scale(1)}
}
.hero-bg-layer{position:absolute;inset:-15%;pointer-events:none;will-change:transform}
.hero-bg-layer--1{background:radial-gradient(42% 42% at 30% 30%, rgba(250,70,22,.16) 0%, transparent 70%)}
.hero-bg-layer--2{background:radial-gradient(40% 40% at 75% 70%, rgba(81,47,46,.55) 0%, transparent 72%)}
.hero-grid{
  position:absolute;inset:0;opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(70% 60% at 50% 40%,#000 0%,transparent 100%);
  -webkit-mask-image:radial-gradient(70% 60% at 50% 40%,#000 0%,transparent 100%);
}

.hero-inner{
  position:relative;z-index:1;
  display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(28px,5vw,64px);align-items:center;
}
@media (max-width:940px){.hero-inner{grid-template-columns:1fr;gap:36px}}

.hero-title-block{width:fit-content;max-width:100%}

.hero-badge{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  width:100%;
  margin:0 0 14px;
}
.hero-badge-word{
  color:var(--white);font-size:.78rem;font-weight:800;letter-spacing:.22em;text-transform:uppercase;
}
.hero-badge-dot{width:5px;height:5px;border-radius:50%;background:var(--orange);flex:none}
@media (max-width:480px){
  .hero-badge-word{font-size:.66rem;letter-spacing:.14em}
}

.hero h1{
  font-family:var(--font-display);font-weight:400;text-transform:uppercase;
  font-size:clamp(4rem,14.5vw,10.5rem);line-height:.82;letter-spacing:.005em;
  margin:0 0 6px;color:var(--white);
}
.hero h1 .accent{
  color:transparent;
  -webkit-text-stroke:2px var(--orange);
  paint-order:stroke fill;
}
.hero-quote{
  font-family:var(--font-display);text-transform:uppercase;
  font-size:clamp(1.35rem,4.6vw,2.5rem);line-height:1;color:var(--orange);
  margin:0 0 20px;letter-spacing:.01em;
}
.hero p.lead{margin:0 0 30px}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px}

.hero-figure{position:relative}
.hero-photo{
  position:relative;border-radius:26px;overflow:hidden;
  /* 4:5 matches the source (1320x1630 = 0.810) almost exactly, so the
     full body survives and the crop is ~1% off the sides. */
  aspect-ratio:4/5;
  background:linear-gradient(150deg,var(--brown) 0%, var(--brown-deep) 55%, #201312 100%);
  border:1px solid var(--line);
  box-shadow:var(--shadow);
}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center center}
.hero-photo::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(18,16,15,.72) 0%,transparent 46%);
  pointer-events:none;
}
.photo-caption{
  position:absolute;left:18px;bottom:16px;z-index:2;
  font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--white);text-shadow:0 2px 10px rgba(0,0,0,.8);
}
/* graceful fallback when a photo file is not present yet */
.photo-fallback{
  position:absolute;inset:0;display:none;
  align-items:center;justify-content:center;text-align:center;padding:24px;
  font-size:.78rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.55);
}
.is-missing .photo-fallback{display:flex}

/* ---------- Ticker: scrolling marquee ----------
   Hardened for a gapless loop and smooth compositing:
   - JS measures real content width and replicates enough copies that
     one "half" of the track always exceeds the viewport, so the -50%
     loop never runs out of content (the earlier gap bug).
   - contain + backface-visibility + will-change give the browser every
     hint to keep this on its own compositor layer, so its motion stays
     smooth even if something else on the page is doing scroll-linked
     work on the main thread at the same time. */
.ticker{
  background:var(--brown);border-block:1px solid rgba(0,0,0,.35);
  overflow:hidden;padding:14px 0;
  contain:layout style paint;
}
.ticker-track{
  display:flex;width:max-content;
  animation:slide 34s linear infinite;
  will-change:transform;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  transform:translate3d(0,0,0);
}
.ticker:hover .ticker-track{animation-play-state:paused}
@keyframes slide{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
.ticker-item{
  display:inline-flex;align-items:center;gap:20px;padding-inline:20px;
  font-family:var(--font-display);text-transform:uppercase;
  font-size:clamp(1rem,2.4vw,1.5rem);color:var(--white);letter-spacing:.03em;white-space:nowrap;
}
.ticker-item .dot{width:9px;height:9px;border-radius:50%;background:var(--orange);flex:none}

/* ---------- Sections ---------- */
.section{padding:clamp(64px,9vw,110px) 0;position:relative}
.section-alt{background:var(--ink-2)}
.section-head{max-width:70ch;margin-bottom:clamp(32px,5vw,52px)}
.section-head h2{color:var(--white)}

/* ---------- About ---------- */
.about-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:clamp(28px,5vw,64px);align-items:center}
@media (max-width:900px){.about-grid{grid-template-columns:1fr}}

/* Photo + catchphrases panel */
.about-feature{
  position:relative;border-radius:22px;overflow:hidden;
  background:var(--ink-3);border:1px solid var(--line-soft);box-shadow:var(--shadow);
  display:flex;flex-direction:column;
}
.about-feature-photo{position:relative;aspect-ratio:4/5;overflow:hidden}
.about-feature-photo img{width:100%;height:100%;object-fit:cover;display:block}
.about-feature-photo::after{
  content:"";position:absolute;inset:auto 0 0 0;height:45%;
  background:linear-gradient(to top, var(--ink-3) 0%, transparent 100%);
  pointer-events:none;
}
.about-feature-quotes{
  position:relative;list-style:none;margin:0;
  padding:22px clamp(24px,4.5vw,36px) clamp(28px,4.5vw,40px);
  display:grid;gap:14px;
}
.about-feature-quotes li{
  font-family:var(--font-display);text-transform:uppercase;
  font-size:clamp(1.25rem,3vw,1.9rem);line-height:1.04;color:var(--white);
  padding-left:20px;border-left:3px solid var(--orange);
}
.about-copy p{color:var(--muted);margin:0 0 18px;max-width:60ch}
.about-copy p strong{color:var(--text)}

.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:30px}
@media (max-width:560px){.stats{grid-template-columns:1fr}}
.stat{
  background:var(--ink-3);border:1px solid var(--line-soft);border-radius:14px;
  padding:18px 18px 16px;
}
.stat-k{font-family:var(--font-display);font-size:1.6rem;color:var(--orange);line-height:1;text-transform:uppercase}
.stat-v{font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:8px}

/* ---------- Next up (event band) ---------- */
.nextup{
  position:relative;overflow:hidden;
  border-block:1px solid var(--line);
}
.nextup-bg{
  position:absolute;inset:-15% 0;z-index:0;pointer-events:none;
  background:linear-gradient(120deg,var(--brown) 0%,#3A2120 58%,#2A1615 100%);
}
.nextup-inner{
  position:relative;z-index:1;
  display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:wrap;
  padding-block:clamp(30px,5vw,46px);
}
.nextup-text{max-width:60ch}
.nextup h2{font-size:clamp(1.7rem,4.6vw,2.6rem);color:var(--white);margin-bottom:14px}
.nextup p{margin:0;color:rgba(255,255,255,.82)}

/* ---------- The Lineup ---------- */
.lineup{
  display:grid;gap:20px;
  grid-template-columns:repeat(6,1fr);
  grid-template-areas:
    "c1 c1 c1 c2 c2 c2"
    "c3 c3 c4 c4 c5 c5";
}
.lineup .card:nth-child(1){grid-area:c1}
.lineup .card:nth-child(2){grid-area:c2}
.lineup .card:nth-child(3){grid-area:c3}
.lineup .card:nth-child(4){grid-area:c4}
.lineup .card:nth-child(5){grid-area:c5}
@media (max-width:860px){
  .lineup{
    grid-template-columns:1fr;
    grid-template-areas:"c1" "c2" "c3" "c4" "c5";
  }
}
.card{
  position:relative;display:flex;flex-direction:column;
  background:var(--ink-3);border:1px solid var(--line);border-radius:var(--radius);
  padding:28px 26px 26px;overflow:hidden;
  transition:transform .22s var(--ease), border-color .22s, box-shadow .22s;
}
.card::before{
  content:"";position:absolute;inset:0 0 auto 0;height:3px;
  background:linear-gradient(90deg,var(--orange),var(--brown));
  transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease);
  z-index:2;
}
.card-bg{position:absolute;inset:0;z-index:0;pointer-events:none}
.card-bg img{width:100%;height:100%;object-fit:cover;object-position:center}
.card-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(165deg, rgba(18,16,15,.82) 0%, rgba(18,16,15,.90) 55%, rgba(18,16,15,.96) 100%);
}
.card:hover .card-bg img,.card:focus-within .card-bg img{transform:scale(1.05)}
.card-bg img{transition:transform .5s var(--ease)}
.card:hover,.card:focus-within{transform:translateY(-6px);border-color:var(--line);box-shadow:var(--shadow)}
.card:hover::before,.card:focus-within::before{transform:scaleX(1)}
.card.tilt-active{will-change:transform}
.card.tilt-active:hover,.card.tilt-active:focus-within{transform:none}
.card.tilt-active:hover .card-bg img,.card.tilt-active:focus-within .card-bg img{transform:none}

.card-rank{
  position:absolute;top:20px;right:22px;
  font-family:var(--font-display);font-size:2.6rem;line-height:1;
  color:rgba(255,255,255,.05);
}
.card-icon{
  width:52px;height:52px;border-radius:14px;flex:none;
  display:grid;place-items:center;margin-bottom:20px;
  background:rgba(250,70,22,.12);border:1px solid var(--line);color:var(--orange);
  z-index:1;
}
.card h3{font-size:1.32rem;color:var(--white);margin-bottom:6px;z-index:1}
.card-kicker{
  font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:var(--orange);margin-bottom:12px;
  z-index:1;
}
.card p{color:var(--muted);font-size:.97rem;margin:0 0 22px;z-index:1}
.card-link{
  margin-top:auto;display:inline-flex;align-items:center;gap:9px;
  font-weight:800;font-size:.86rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--white);text-decoration:none;
  z-index:1;
}
.spot-glow{
  position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;
  background:radial-gradient(220px circle at var(--sx,50%) var(--sy,50%), rgba(250,70,22,.20), transparent 70%);
  transition:opacity .3s var(--ease);
}
.card:hover .spot-glow,.card:focus-within .spot-glow{opacity:1}
.card::after{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px);
  background-size:5px 5px;
  opacity:0;transition:opacity .3s var(--ease);
}
.card:hover::after,.card:focus-within::after{opacity:1}
.card-link::after{
  content:"";width:15px;height:15px;flex:none;
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8 7h9v9'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8 7h9v9'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:transform .2s var(--ease);
}
.card-link:hover{color:var(--orange)}
.card-link:hover::after{transform:translate(3px,-3px)}
/* whole card clickable, link text keeps the accessible name */
.card-link::before{content:"";position:absolute;inset:0}

.card-featured{background:linear-gradient(160deg,#2C1918 0%,var(--ink-3) 62%);border-color:var(--line)}

/* Social card carries three separate links, so it opts out of the
   whole-card click overlay that .card-link::before provides. */
.card--multi .card-link::before{content:none}
.card-socials{margin-top:auto;display:flex;flex-wrap:wrap;gap:8px;z-index:1}
.card-socials a{
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 12px;border-radius:999px;
  background:rgba(255,255,255,.04);border:1px solid var(--line);
  color:var(--white);text-decoration:none;
  font-weight:800;font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;
  transition:color .2s var(--ease),background .2s var(--ease),border-color .2s var(--ease);
}
.card-socials a:hover,.card-socials a:focus-visible{
  color:var(--orange);background:rgba(250,70,22,.12);border-color:rgba(250,70,22,.45);
}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(28px,5vw,60px);align-items:start}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr}}
.contact-aside p{color:var(--muted);margin:0 0 26px;max-width:48ch}
.contact-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.contact-list li{display:flex;gap:14px;align-items:flex-start}
.contact-list .ci{
  width:40px;height:40px;border-radius:11px;flex:none;display:grid;place-items:center;
  background:rgba(250,70,22,.12);border:1px solid var(--line);color:var(--orange);
}
.contact-list .cl{font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.contact-list .cv{font-weight:700;color:var(--white);word-break:break-word}
.contact-list a{color:var(--white);text-decoration:none}
.contact-list a:hover{color:var(--orange)}

.form-card{
  background:var(--ink-3);border:1px solid var(--line-soft);border-radius:var(--radius);
  padding:clamp(24px,4vw,36px);box-shadow:var(--shadow);
}
.field{margin-bottom:20px}
.field label{
  display:block;font-size:.76rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;
  color:var(--text);margin-bottom:9px;
}
.req{color:var(--orange)}
.field input,.field select,.field textarea{
  width:100%;font-family:inherit;font-size:1rem;color:var(--text);
  background:#171211;border:1px solid rgba(255,255,255,.14);border-radius:12px;
  padding:14px 16px;min-height:52px;
  transition:border-color .18s, box-shadow .18s, background-color .18s;
}
.field textarea{min-height:140px;resize:vertical;line-height:1.6}
.field select{
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23BCB0AB' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 15px center;background-size:19px;
  padding-right:46px;
}
.field input::placeholder,.field textarea::placeholder{color:#7C716D}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--orange);background:#1C1615;
  box-shadow:0 0 0 3px rgba(250,70,22,.22), 0 0 24px 4px rgba(250,70,22,.16);
}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"],.field select[aria-invalid="true"]{
  border-color:#FF7A62;
}
.field-error{display:block;min-height:0;color:#FF9B87;font-size:.82rem;font-weight:600;margin-top:7px}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
/* Turnstile widget. The iframe is a fixed 300x65 and cannot be restyled, so
   this only spaces it and keeps it from overflowing a narrow card. It renders
   on itsbtidy.info only — the widget's hostname list is the apex, so on a
   *.workers.dev preview there is simply nothing here. */
.cf-turnstile{margin:4px 0 18px;min-height:65px}
.cf-turnstile iframe{max-width:100%}

.form-status{
  margin-top:18px;padding:0;border-radius:12px;
  font-size:.94rem;font-weight:600;line-height:1.55;
}
.form-status.show{padding:14px 16px}
.form-status.ok{background:rgba(64,180,110,.13);border:1px solid rgba(64,180,110,.42);color:#8FE3B2}
.form-status.err{background:rgba(255,90,60,.12);border:1px solid rgba(255,90,60,.42);color:#FFAE9C}
.form-note{font-size:.79rem;color:#8E827E;margin:16px 0 0;line-height:1.55}

/* ---------- Footer ---------- */
.site-footer{background:#0C0A0A;border-top:1px solid var(--line-soft);padding:clamp(48px,7vw,72px) 0 34px}
.footer-top{
  display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:36px;
  padding-bottom:36px;border-bottom:1px solid var(--line-soft);
}
@media (max-width:820px){.footer-top{grid-template-columns:1fr;gap:28px}}
.footer-brand p{color:var(--muted);font-size:.94rem;margin:14px 0 0;max-width:42ch}
.footer-col h4{
  font-size:.74rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:var(--white);margin:0 0 16px;
}
.footer-col ul{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.footer-col a{color:var(--muted);text-decoration:none;font-size:.94rem}
.footer-col a.social-link{display:inline-flex;align-items:center;gap:8px}
.footer-col a.social-link svg{flex:none;color:var(--orange)}
.footer-col a:hover{color:var(--orange)}

/* Legal / compliance block — required, do not remove */
.legal{padding-top:30px;display:grid;gap:16px}
.legal-disclaimer{
  background:rgba(250,70,22,.07);border:1px solid var(--line);border-radius:14px;
  padding:18px 20px;
}
.legal-disclaimer h5{
  margin:0 0 8px;font-size:.72rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--orange);
}
.legal-disclaimer p{margin:0 0 10px;font-size:.83rem;line-height:1.65;color:#9A8E8A}
.legal-disclaimer p:last-child{margin-bottom:0}
.legal-disclaimer a{color:#C9BDB8}
.legal-bar{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;
  font-size:.82rem;color:#8E827E;
}
.legal-bar a{color:#8E827E;text-decoration:none}
.legal-bar a:hover{color:var(--orange)}
.legal-links{display:flex;flex-wrap:wrap;gap:18px}

/* Build credit — last line of the footer. */
.made-by{
  margin:20px 0 0;padding-top:18px;
  border-top:1px solid var(--line-soft);
  text-align:center;font-size:.8rem;color:#8E827E;
}
.made-by a{
  color:var(--text);text-decoration:none;font-weight:700;
  border-bottom:1px solid rgba(250,70,22,.45);
  transition:color .2s var(--ease),border-color .2s var(--ease);
}
.made-by a:hover,.made-by a:focus-visible{color:var(--orange);border-color:var(--orange)}

/* ---------- Scroll reveal ---------- */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease), transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}
/* When GSAP drives reveals, hand off the hidden/shown state to it entirely
   so the CSS base state and GSAP's inline styles never fight each other. */
html.js-gsap .reveal{opacity:1;transform:none;transition:none}

/* ---------- Grain overlay ----------
   No mix-blend-mode: blending a fixed full-viewport layer against
   content that's constantly animating (ticker, hero drift) forces the
   browser to recompute the blend every frame, which is the classic
   cause of scroll/animation jank. Plain low-alpha compositing is
   effectively free by comparison and gives a near-identical look. */
.grain-overlay{
  position:fixed;inset:0;z-index:150;pointer-events:none;
  opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:180px 180px;
}

/* ---------- Back to top ---------- */
.back-to-top{
  position:fixed;right:clamp(16px,4vw,28px);bottom:clamp(16px,4vw,28px);z-index:120;
  width:48px;height:48px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--orange);color:#12100F;box-shadow:var(--shadow);text-decoration:none;
  visibility:hidden;opacity:0;transform:translateY(12px);
  transition:opacity .25s var(--ease), transform .25s var(--ease), visibility .25s, background-color .18s;
}
.back-to-top.is-visible{visibility:visible;opacity:1;transform:none}
.back-to-top:hover{background:var(--orange-soft)}

/* ---------- Reduced motion (WCAG 2.3.3) ---------- */
/* ============================================================
   PARLAY PRELOADER
   A four-leg bet slip cashes on open: each leg turns green in
   sequence, then the slip stamps PARLAY WON and clears.
   Runs on its own inline script — no GSAP dependency, so it can
   never be left on screen by a failed CDN.
   ============================================================ */
body.parlay-lock{overflow:hidden}
.parlay{
  position:fixed;inset:0;z-index:999;
  display:flex;overflow:auto;padding:24px;
  background:radial-gradient(120% 90% at 50% 0%, #2A1A17 0%, var(--ink) 62%);
  transition:opacity .45s var(--ease),visibility .45s var(--ease);
  /* Failsafe: if scripting never runs, the overlay still clears
     itself rather than trapping the visitor behind it. */
  animation:parlay-bail .4s 6s forwards;
}
@keyframes parlay-bail{to{opacity:0;visibility:hidden}}
.parlay.done{opacity:0;visibility:hidden;pointer-events:none}
.parlay-slip{
  width:min(400px,100%);margin:auto;
  background:var(--ink-2);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);
  padding:20px 20px 18px;
  opacity:0;transform:translateY(14px) scale(.97);
  transition:opacity .45s var(--ease),transform .45s var(--ease);
}
.parlay.on .parlay-slip{opacity:1;transform:none}
.parlay-head{
  display:flex;align-items:center;gap:13px;
  padding-bottom:15px;border-bottom:1px dashed rgba(255,255,255,.15);
}
.parlay-face{
  width:52px;height:52px;border-radius:50%;flex:none;
  object-fit:cover;
  border:2px solid var(--orange);background:var(--ink-3);
}
.parlay-head-text{flex:1;min-width:0}
.parlay-head-kicker{
  font-size:.6rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
  color:var(--orange);margin:0 0 4px;
}
.parlay-head-title{
  font-family:var(--font-display);text-transform:uppercase;
  font-size:1.28rem;line-height:1;color:var(--white);margin:0;
}
.parlay-odds{
  font-family:var(--font-display);font-size:1.1rem;line-height:1;
  color:var(--white);letter-spacing:.02em;
}
.parlay-legs{list-style:none;margin:15px 0 0;padding:0;display:grid;gap:9px}
.parlay-leg{
  display:flex;align-items:center;gap:11px;
  padding:11px 13px;border-radius:12px;
  background:rgba(255,255,255,.04);border:1px solid var(--line-soft);
  transition:background .35s var(--ease),border-color .35s var(--ease);
}
.parlay-check{
  width:21px;height:21px;border-radius:50%;flex:none;
  display:grid;place-items:center;color:#0A2013;
  border:2px solid rgba(255,255,255,.24);background:transparent;
  transition:background .3s var(--ease),border-color .3s var(--ease),transform .3s var(--ease);
}
.parlay-check svg{
  opacity:0;transform:scale(.5);
  transition:opacity .25s var(--ease),transform .25s var(--ease);
}
.parlay-leg-name{
  flex:1;min-width:0;font-weight:700;font-size:.86rem;
  letter-spacing:.06em;text-transform:uppercase;color:var(--text);
}
.parlay-leg-odds{
  font-weight:800;font-size:.8rem;color:var(--muted);
  font-variant-numeric:tabular-nums;transition:color .35s var(--ease);
}
.parlay-leg.hit{background:rgba(34,197,94,.14);border-color:rgba(34,197,94,.55)}
.parlay-leg.hit .parlay-check{background:var(--win);border-color:var(--win);transform:scale(1.08)}
.parlay-leg.hit .parlay-check svg{opacity:1;transform:none}
.parlay-leg.hit .parlay-leg-name{color:var(--white)}
.parlay-leg.hit .parlay-leg-odds{color:var(--win)}
.parlay-result{
  margin-top:16px;text-align:center;
  opacity:0;transform:scale(.82) rotate(-4deg);
  transition:opacity .35s var(--ease),transform .45s cubic-bezier(.2,1.45,.4,1);
}
.parlay-result.on{opacity:1;transform:none}
.parlay-result-word{
  display:inline-block;padding:9px 20px;border-radius:11px;
  font-family:var(--font-display);text-transform:uppercase;letter-spacing:.04em;
  font-size:clamp(1.45rem,6vw,2rem);line-height:1;
  color:var(--win);border:2.5px solid var(--win);background:rgba(34,197,94,.10);
}

/* Roomier slip once there is width for it — the six legs earn the
   extra scale on desktop, while phones keep the compact sizing. */
@media (min-width:760px) and (min-height:780px){
  .parlay-slip{width:min(500px,100%);padding:26px 26px 24px}
  .parlay-head{gap:16px;padding-bottom:18px}
  .parlay-face{width:66px;height:66px}
  .parlay-head-kicker{font-size:.66rem;margin-bottom:5px}
  .parlay-head-title{font-size:1.62rem}
  .parlay-odds{font-size:1.4rem}
  .parlay-legs{margin-top:18px;gap:11px}
  .parlay-leg{padding:14px 16px;gap:13px;border-radius:13px}
  .parlay-check{width:25px;height:25px}
  .parlay-check svg{width:14px;height:14px}
  .parlay-leg-name{font-size:.98rem}
  .parlay-leg-odds{font-size:.9rem}
  .parlay-result{margin-top:20px}
  .parlay-result-word{padding:11px 26px;font-size:2.4rem}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .reveal{opacity:1;transform:none}
  .ticker-track{animation:none;width:auto}
  .parlay{display:none}
}

/* ---------- Print ---------- */
@media print{
  .site-header,.ticker,.hero-bg,.form-card,.grain-overlay,.back-to-top{display:none}
  body{background:#fff;color:#000}
}

/* ============================================================
   LIVE SHOWS PAGE (shows.html)
   Event-grid pattern: a scannable date block, the details that
   decide attendance (time / venue / city), and one ticket CTA
   per show. Status uses green for on-sale, per ticketing
   convention, reusing the parlay --win token.
   ============================================================ */
/* The header is sticky, so it already occupies layout space — the page
   head only needs breathing room, not clearance for it. */
.page-head{padding:clamp(30px,4vw,50px) 0 clamp(24px,3.5vw,38px)}
.page-head .display{margin:0 0 14px}
.page-head .lead{max-width:56ch}
.back-link{
  /* flex (not inline-flex) so it takes its own line above the eyebrow,
     which is itself inline-level */
  display:flex;width:fit-content;align-items:center;gap:8px;
  font-size:.78rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);text-decoration:none;margin-bottom:18px;
  transition:color .2s var(--ease);
}
.back-link:hover,.back-link:focus-visible{color:var(--orange)}

.shows-section{padding-top:clamp(32px,4.5vw,54px)}
.shows-list{list-style:none;margin:0;padding:0;display:grid;gap:18px}
.show{
  position:relative;
  display:grid;grid-template-columns:auto 1fr auto;
  align-items:center;gap:clamp(18px,3vw,32px);
  background:var(--ink-3);border:1px solid var(--line);
  border-radius:var(--radius);padding:22px clamp(20px,3vw,28px);
  transition:transform .22s var(--ease),border-color .22s var(--ease),box-shadow .22s var(--ease);
}
.show:hover,.show:focus-within{
  transform:translateY(-4px);border-color:rgba(250,70,22,.45);box-shadow:var(--shadow);
}

.show-date{
  flex:none;width:88px;padding:12px 8px;border-radius:14px;text-align:center;
  background:rgba(250,70,22,.10);border:1px solid var(--line);
}
.show-month{
  display:block;font-size:.7rem;font-weight:800;letter-spacing:.18em;
  text-transform:uppercase;color:var(--orange);
}
.show-day{
  display:block;font-family:var(--font-display);font-size:2.5rem;line-height:.95;
  color:var(--white);margin:2px 0 1px;
}
.show-dow{
  display:block;font-size:.66rem;font-weight:800;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);
}

.show-body{min-width:0}
.show-status{
  display:inline-flex;align-items:center;gap:7px;margin-bottom:9px;
  padding:4px 11px;border-radius:999px;
  font-size:.63rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--win);background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.45);
}
.show-status::before{
  content:"";width:6px;height:6px;border-radius:50%;background:var(--win);flex:none;
}
.show-venue{
  font-family:var(--font-display);text-transform:uppercase;
  font-size:clamp(1.25rem,2.6vw,1.6rem);line-height:1.05;color:var(--white);margin:0 0 10px;
}
.show-meta{
  list-style:none;margin:0;padding:0;
  display:flex;flex-wrap:wrap;gap:8px 20px;
}
.show-meta li{
  display:flex;align-items:center;gap:8px;
  color:var(--muted);font-size:.9rem;
}
.show-meta svg{flex:none;color:var(--orange)}

.show-cta{flex:none}
.show-cta .btn{white-space:nowrap}

@media (max-width:760px){
  .show{grid-template-columns:auto 1fr;gap:16px 18px}
  .show-cta{grid-column:1 / -1}
  .show-cta .btn{width:100%;justify-content:center}
}
@media (max-width:420px){
  .show{grid-template-columns:1fr}
  .show-date{width:auto;display:flex;align-items:baseline;justify-content:center;gap:10px}
  .show-day{font-size:1.9rem;margin:0}
}

.shows-empty{
  margin-top:26px;padding:22px clamp(20px,3vw,26px);
  background:var(--ink-2);border:1px dashed var(--line);border-radius:var(--radius);
}
.shows-empty p{margin:0;color:var(--muted)}
.shows-empty strong{color:var(--white)}

/* Short viewports: compact the slip so six legs still fit without the
   overlay needing to scroll. */
@media (max-height:700px){
  .parlay-slip{padding:16px 18px 15px}
  .parlay-head{gap:11px;padding-bottom:11px}
  .parlay-face{width:42px;height:42px}
  .parlay-head-kicker{font-size:.55rem;margin-bottom:2px}
  .parlay-head-title{font-size:1.1rem}
  .parlay-odds{font-size:.95rem}
  .parlay-legs{margin-top:11px;gap:6px}
  .parlay-leg{padding:7px 11px;gap:9px;border-radius:10px}
  .parlay-check{width:18px;height:18px}
  .parlay-check svg{width:10px;height:10px}
  .parlay-leg-name{font-size:.78rem}
  .parlay-leg-odds{font-size:.72rem}
  .parlay-result{margin-top:11px}
  .parlay-result-word{padding:6px 16px;font-size:1.35rem}
}

/* Landscape phones: the PARLAY WON payoff has to stay on screen, so
   everything tightens one more step. */
@media (max-height:480px){
  .parlay{padding:14px}
  .parlay-slip{padding:13px 15px 12px}
  .parlay-head{gap:9px;padding-bottom:9px}
  .parlay-face{width:36px;height:36px;border-width:2px}
  .parlay-head-title{font-size:.98rem}
  .parlay-odds{font-size:.85rem}
  .parlay-legs{margin-top:9px;gap:4px}
  .parlay-leg{padding:4px 9px;gap:8px;border-radius:8px}
  .parlay-check{width:15px;height:15px}
  .parlay-check svg{width:9px;height:9px}
  .parlay-leg-name{font-size:.7rem;letter-spacing:.04em}
  .parlay-leg-odds{font-size:.66rem}
  .parlay-result{margin-top:9px}
  .parlay-result-word{padding:5px 14px;font-size:1.15rem;border-width:2px}
}
