/* ==========================================================================
   BALLER — tokens
   Purple/cream sampled exactly from the real logo asset.
   ========================================================================== */
:root{
  --void:#0a0a0a;
  --ink:#151215;
  --purple:#6b0686;
  --purple-deep:#320340;
  --purple-mid:#8a1aa8;
  --purple-bright:#c060e0;
  --cream:#fffff0;
  --cream-dim:#c8c2ab;
  --line-on-dark:rgba(255,255,240,.14);
  --line-on-cream:rgba(21,18,21,.14);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto;} }

body{
  margin:0;
  background:var(--void);
  color:var(--cream);
  font-family:'Manrope',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

h1,h2,h3,p{margin:0;text-wrap:balance;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;background:none;border:none;color:inherit;}
img,video{max-width:100%;display:block;}
:focus-visible{outline:2px solid var(--purple-bright);outline-offset:4px;}
::selection{background:var(--purple);color:var(--cream);}

.eyebrow{font-size:11px;letter-spacing:.32em;text-transform:uppercase;}

/* ==========================================================================
   grain + progress thread + cursor (persistent chrome)
   ========================================================================== */
.grain{
  position:fixed;inset:0;pointer-events:none;z-index:80;
  opacity:.18;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='matrix' values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.35 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

.thread{position:fixed;top:0;right:20px;bottom:0;width:1px;background:var(--line-on-dark);z-index:70;}
.thread-dot{
  position:absolute;left:50%;top:0;width:6px;height:6px;border-radius:50%;
  background:var(--purple-bright);box-shadow:0 0 12px 3px rgba(192,96,224,.75);
  transform:translate(-50%,0);
}
@media (max-width:640px){ .thread{display:none;} }

.cursor-dot{
  position:fixed;top:0;left:0;width:14px;height:14px;border-radius:50%;
  border:1px solid var(--purple-bright);transform:translate(-50%,-50%);
  pointer-events:none;z-index:110;opacity:0;
  transition:width .2s ease,height .2s ease,background .2s ease,opacity .3s ease,border-color .2s ease;
}
.cursor-dot.active{opacity:1;}
.cursor-dot.big{width:40px;height:40px;background:rgba(192,96,224,.18);box-shadow:0 0 20px 4px rgba(192,96,224,.35);}
.cursor-dot.on-light{border-color:var(--purple);}

/* ==========================================================================
   nav
   ========================================================================== */
.site-nav{
  position:fixed;top:0;left:0;right:0;z-index:90;
  display:flex;align-items:center;justify-content:space-between;
  padding:22px 7vw;transition:background .4s ease,backdrop-filter .4s ease,border-color .4s ease,padding .3s ease;
  border-bottom:1px solid transparent;
}
.site-nav.scrolled{
  padding:14px 7vw;background:rgba(10,10,10,.62);backdrop-filter:blur(14px) saturate(140%);
  border-bottom-color:var(--line-on-dark);
}
.site-nav.on-light.scrolled{background:rgba(255,255,240,.72);border-bottom-color:var(--line-on-cream);}
.nav-mark img{height:16px;width:auto;transition:filter .3s ease;}
.site-nav.on-light .nav-mark img{filter:brightness(0) saturate(100%) invert(9%) sepia(85%) saturate(4500%) hue-rotate(280deg) brightness(70%);}
.nav-links{display:flex;gap:34px;}
.nav-link{
  font-size:11px;letter-spacing:.24em;cursor:pointer;position:relative;padding-bottom:4px;
  transition:color .25s ease;
}
.nav-link::after{
  content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--purple-bright);
  transform:scaleX(0);transform-origin:left;transition:transform .3s ease;
}
.nav-link:hover,.nav-link:focus-visible{color:var(--purple-bright);}
.nav-link:hover::after,.nav-link:focus-visible::after{transform:scaleX(1);}
.nav-burger{display:none;flex-direction:column;gap:5px;padding:8px;cursor:pointer;}
.nav-burger span{width:22px;height:1px;background:var(--cream);transition:background .3s ease;}
.site-nav.on-light .nav-burger span{background:var(--ink);}
@media (max-width:720px){
  .nav-links{display:none;}
  .nav-burger{display:flex;}
}

.mobile-menu{
  position:fixed;inset:0;z-index:96;background:var(--void);
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:26px;
  padding:0 9vw;transform:translateY(-100%);transition:transform .45s cubic-bezier(.2,.8,.2,1);
}
.mobile-menu.open{transform:translateY(0);}
.mobile-menu-link{
  font-family:'Big Shoulders Display',sans-serif;font-weight:700;font-size:clamp(30px,9vw,48px);
  color:var(--cream);transition:color .25s ease;
}
.mobile-menu-link:hover{color:var(--purple-bright);}
.mobile-menu-close{position:absolute;top:22px;right:7vw;font-size:32px;line-height:1;color:var(--cream);}
.mobile-menu-close:hover{color:var(--purple-bright);}

/* ==========================================================================
   preloader
   ========================================================================== */
#preloader{
  position:fixed;inset:0;z-index:100;background:var(--purple);
  display:flex;align-items:center;justify-content:center;
  animation:preOut .8s ease 2.4s forwards;
}
#preloader img{
  position:relative;width:min(42vw,300px);
  opacity:0;
  animation:preIn 1.3s ease-out .2s forwards;
}
@keyframes preIn{to{opacity:1;}}
@keyframes preOut{to{opacity:0;visibility:hidden;pointer-events:none;}}
@media (prefers-reduced-motion:reduce){
  #preloader{animation-delay:.4s;}
  #preloader img{animation:none;opacity:1;}
}

/* ==========================================================================
   moment shell — every moment gets a faint purple hairline at its top edge:
   the recurring "stitch" that ties the sections together.
   ========================================================================== */
main{position:relative;}
.moment{position:relative;padding:min(12vw,110px) 7vw;display:flex;flex-direction:column;justify-content:center;}
.moment:not(.hero)::before{
  content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--purple-bright) 50%,transparent);opacity:.55;
}
.moment.on-cream{background:var(--cream);color:var(--ink);}
.moment.on-purple{background:radial-gradient(120% 100% at 50% 0%,var(--purple) 0%,var(--purple-deep) 100%);}

.reveal{opacity:1;transform:none;filter:blur(0);transition:opacity 1s ease,transform 1s ease,filter 1s ease;}
.reveal.pre{opacity:0;transform:translateY(28px);filter:blur(2px);}

/* shared purple corner-glow color grade across photography, so every photo
   on the site reads as part of the same world */
.fullphoto-frame{position:relative;}
.fullphoto-frame::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(155deg,rgba(107,6,134,.28),transparent 55%);
  mix-blend-mode:multiply;
}

/* ==========================================================================
   hero video
   ========================================================================== */
.hero{min-height:100vh;padding-bottom:64px;justify-content:flex-end;}
.hero-media{position:absolute;inset:0;overflow:hidden;background:linear-gradient(160deg,var(--purple-deep),var(--void) 70%);}
.hero-media video{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  background:linear-gradient(160deg,var(--purple-deep),var(--void) 70%);
}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(0deg,rgba(10,10,10,.62) 0%,rgba(10,10,10,.05) 38%,rgba(10,10,10,0) 55%,rgba(50,3,64,.18) 100%);
}
.hero-content{position:relative;z-index:2;}
.hero-content img{width:min(70vw,560px);filter:drop-shadow(0 8px 40px rgba(107,6,134,.55));}
.hero-motto{
  font-family:'Fraunces',serif;font-style:italic;font-weight:400;color:var(--cream);
  font-size:clamp(15px,2vw,22px);margin-top:16px;
}
.scroll-cue{
  position:absolute;left:7vw;bottom:36px;z-index:2;
  display:flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.3em;color:var(--cream-dim);
}
.scroll-cue .rule{width:1px;height:30px;background:var(--line-on-dark);position:relative;overflow:hidden;}
.scroll-cue .rule::after{
  content:"";position:absolute;left:0;top:-100%;width:100%;height:100%;background:var(--purple-bright);
  animation:cueDrop 2.2s ease-in-out infinite;
}
@keyframes cueDrop{0%{top:-100%;}60%{top:100%;}100%{top:100%;}}
@media (prefers-reduced-motion:reduce){ .scroll-cue .rule::after{animation:none;top:40%;} }

/* ==========================================================================
   the idea — 13 events. one world. (photo + purple wash)
   ========================================================================== */
.idea{min-height:84vh;align-items:center;text-align:center;gap:10px;position:relative;overflow:hidden;}
.idea-bg{position:absolute;inset:0;z-index:0;}
.idea-bg img{width:100%;height:100%;object-fit:cover;}
.idea-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgba(50,3,64,.62),rgba(10,10,10,.8));}
.idea-copy{position:relative;z-index:1;}
.stack-line{
  font-family:'Big Shoulders Display',sans-serif;font-weight:800;
  font-size:clamp(32px,7vw,80px);line-height:1.08;color:rgba(255,255,240,.55);
}
.stack-final{font-size:clamp(42px,10.5vw,124px);color:var(--cream);margin-top:6px;}
.num{color:var(--cream);font-weight:900;}
.idea-sub{
  font-family:'Fraunces',serif;font-style:italic;color:var(--cream-dim);
  font-size:clamp(14px,2vw,18px);margin-top:16px;
}

/* ==========================================================================
   the 13 — homepage entrance, reusing the overlay's own row styling
   ========================================================================== */
.the13{background:var(--void);padding-top:min(12vw,110px);padding-bottom:min(12vw,110px);}
.the13-eyebrow{display:block;margin-bottom:22px;color:var(--purple-bright);}
.home13-rows{list-style:none;margin:0;padding:0;max-width:900px;}
.h13-row{
  display:flex;align-items:baseline;gap:18px;padding:12px 8px;border-bottom:1px solid var(--line-on-dark);
  cursor:pointer;transition:color .25s ease,padding-left .25s ease,background .25s ease;
}
.h13-row:hover,.h13-row:focus-visible{color:var(--purple-bright);padding-left:16px;background:rgba(192,96,224,.06);}
.h13-row .e-num{
  font-family:'Big Shoulders Display',sans-serif;font-weight:900;font-size:clamp(16px,2vw,22px);
  color:var(--purple-bright);min-width:2ch;
}
.h13-row .e-dash{color:var(--cream-dim);font-size:clamp(16px,2vw,22px);}
.h13-row .e-name{
  font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:clamp(24px,4.4vw,44px);line-height:1;
}
@media (max-width:720px){
  .h13-row .e-name{font-size:clamp(20px,7vw,34px);}
  .h13-row{gap:12px;}
}

/* ==========================================================================
   full screen photo — where will we see you
   ========================================================================== */
.fullphoto{min-height:100vh;padding:0;}
.fullphoto-frame{position:relative;width:100%;height:100vh;overflow:hidden;}
.fullphoto-frame img{width:100%;height:100%;object-fit:cover;}
.fullphoto-frame::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,0) 30%,rgba(0,0,0,.15) 100%);z-index:1;}
.fullphoto-cap{
  position:absolute;bottom:44px;left:50%;transform:translateX(-50%);z-index:2;text-align:center;
  font-family:'Fraunces',serif;font-style:italic;font-size:clamp(18px,3.4vw,30px);color:var(--cream);
}

/* ==========================================================================
   final cta (cream)
   ========================================================================== */
.cta{min-height:86vh;align-items:flex-start;justify-content:center;}
.cta h2{
  font-family:'Big Shoulders Display',sans-serif;font-weight:900;
  font-size:clamp(42px,10vw,120px);line-height:.92;margin-bottom:36px;
}
#signupForm{display:flex;flex-wrap:wrap;gap:14px;max-width:640px;width:100%;}
#signupForm input{
  flex:1 1 260px;background:transparent;border:none;border-bottom:1px solid var(--line-on-cream);
  color:var(--ink);font-size:17px;padding:12px 2px;font-family:'Manrope',sans-serif;
}
#signupForm input::placeholder{color:rgba(21,18,21,.45);}
#signupForm input:focus{border-bottom-color:var(--purple);}
#signupForm button{
  flex:0 0 auto;background:var(--ink);color:var(--cream);border:none;
  padding:13px 32px;font-weight:700;letter-spacing:.14em;font-size:13px;cursor:pointer;
  transition:background .25s ease,box-shadow .25s ease;
}
#signupForm button:hover{background:var(--purple);box-shadow:0 0 24px -4px rgba(107,6,134,.6);}
.cta-status{font-size:12px;color:rgba(21,18,21,.55);margin-top:16px;}
.cta-success{
  font-family:'Big Shoulders Display',sans-serif;font-weight:800;letter-spacing:.02em;
  font-size:clamp(26px,4vw,40px);color:var(--purple);margin-top:6px;
}

/* ==========================================================================
   footer
   ========================================================================== */
footer{
  padding:54px 7vw 40px;background:var(--void);border-top:1px solid var(--line-on-dark);
  display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;
}
footer img{height:20px;opacity:.9;}
footer .foot-meta{display:flex;flex-direction:column;gap:5px;align-items:flex-end;text-align:right;}
footer p{font-size:12px;color:var(--cream-dim);letter-spacing:.03em;}

/* ==========================================================================
   THE 13 — editions overlay
   ========================================================================== */
.editions{
  position:fixed;inset:0;z-index:98;display:none;opacity:0;
  background:radial-gradient(140% 100% at 50% 0%,var(--purple-deep) 0%,var(--void) 65%);
  transition:opacity .4s ease;
}
.editions.open{display:block;opacity:1;}
.editions-bg{
  position:absolute;inset:0;background-size:cover;background-position:center;
  opacity:0;transition:opacity .6s ease;
}
.editions-bg.show{opacity:.45;}
.editions-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgba(50,3,64,.6),rgba(10,10,10,.88));}
.editions-close{
  position:absolute;top:20px;right:7vw;z-index:5;font-size:30px;line-height:1;color:var(--cream);
  transition:color .25s ease,transform .25s ease;
}
.editions-close:hover{color:var(--purple-bright);transform:rotate(90deg);}

.editions-list{position:relative;z-index:2;height:100%;overflow-y:auto;padding:min(10vw,90px) 7vw 60px;}
.editions-head{margin-bottom:26px;}
.editions-head .eyebrow{color:var(--purple-bright);}
.edition-rows{list-style:none;margin:0;padding:0;max-width:900px;}
.edition-row{
  display:flex;align-items:baseline;gap:26px;padding:14px 10px;border-bottom:1px solid var(--line-on-dark);
  cursor:pointer;transition:color .25s ease,padding-left .25s ease,background .25s ease;
}
.edition-row:hover,.edition-row:focus-visible{color:var(--purple-bright);padding-left:20px;background:rgba(192,96,224,.06);}
.edition-row .e-num{
  font-family:'Big Shoulders Display',sans-serif;font-weight:900;font-size:clamp(20px,2.6vw,30px);
  color:var(--purple-bright);min-width:2.4ch;
}
.edition-row .e-name{
  font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:clamp(28px,5.4vw,58px);line-height:1;
}

.editions-detail{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;justify-content:center;padding:min(10vw,90px) 7vw;gap:22px;}
.detail-back{position:absolute;top:20px;left:7vw;font-size:11px;letter-spacing:.2em;color:var(--cream-dim);transition:color .25s ease;}
.detail-back:hover{color:var(--purple-bright);}
.detail-frame{width:100%;max-width:760px;aspect-ratio:16/9;overflow:hidden;border-radius:2px;position:relative;}
.detail-frame img{width:100%;height:100%;object-fit:cover;}
.detail-frame::after{content:"";position:absolute;inset:0;background:linear-gradient(155deg,rgba(107,6,134,.3),transparent 55%);mix-blend-mode:multiply;}
.detail-copy .eyebrow{color:var(--purple-bright);}
.detail-copy h3{
  font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:clamp(38px,7vw,84px);
  line-height:1;margin-top:8px;
}
.detail-meta{font-size:13px;color:var(--cream-dim);margin-top:6px;letter-spacing:.03em;}
.detail-headline{
  font-family:'Big Shoulders Display',sans-serif;font-weight:800;letter-spacing:.01em;
  font-size:clamp(19px,2.6vw,25px);color:var(--cream);margin-top:22px;max-width:26ch;
}
.detail-lines{margin-top:8px;display:flex;flex-direction:column;gap:4px;}
.detail-lines p{font-size:15px;line-height:1.5;color:var(--cream-dim);max-width:36ch;}
.detail-closer{margin-top:14px;}
.detail-closer:empty{display:none;}
.closer-soft{
  font-family:'Fraunces',serif;font-style:italic;color:var(--cream);
  font-size:clamp(16px,2.2vw,20px);
}
.closer-tag{
  font-family:'Big Shoulders Display',sans-serif;font-weight:800;letter-spacing:.05em;
  text-transform:uppercase;color:var(--purple-bright);font-size:clamp(14px,1.8vw,17px);
}

@media (max-width:720px){
  .edition-row .e-name{font-size:clamp(24px,9vw,44px);}
  .edition-row{gap:16px;}
}
