:root{
  --ivory:#F7F5EF; --ivory-2:#EFECE2; --ink:#1C1B17; --ink-soft:#55534B;
  --green:#0A4A2F; --green-text:#C7D8C9; --red:#D8261C; --navy:#0B1F3A;
  --display:'Archivo Black','Archivo',sans-serif; --body:'Archivo',system-ui,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--body);background:var(--ivory);color:var(--ink);line-height:1.55}
a{color:var(--green)} a:hover{color:var(--red)}
.wrap{max-width:1160px;margin:0 auto;padding:0 24px}
h1,h2{font-family:var(--display);font-weight:400;margin:0;line-height:1.05}
.btn{display:inline-block;background:var(--red);color:#fff;text-decoration:none;font-weight:700;font-size:18px;padding:16px 36px;border-radius:6px;border:none;font-family:var(--body);cursor:pointer}
.btn:hover{background:#B81E15;color:#fff}
.btn[disabled]{opacity:.6;cursor:default}
.btn.ghost{background:transparent;border:2px solid currentColor;color:inherit}
.btn.ghost:hover{background:rgba(255,255,255,.1)}
:focus-visible{outline:3px solid var(--red);outline-offset:2px}
.tbd{display:inline-block;font-family:var(--body);font-size:12px;font-weight:700;letter-spacing:2px;padding:4px 10px;border:1.5px solid currentColor;border-radius:4px;vertical-align:middle;opacity:.8}

/* Hero + nav */
.hero{position:relative;overflow:hidden;background:var(--green);color:var(--ivory);padding-bottom:88px}
.hero.ink{background:var(--ink)}
.hero.photo{background:var(--navy) url('assets/golden-gate.jpg') center 40% / cover no-repeat;color:#fff}
.hero.photo::before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,20,40,.78) 0%,rgba(8,20,40,.55) 55%,rgba(8,20,40,.85) 100%)}
.hero .circle{position:absolute;right:-180px;top:-140px;width:560px;height:560px;border-radius:50%;background:var(--red);opacity:.9}
.hero .inner{position:relative}
.topbar{display:flex;justify-content:space-between;align-items:center;padding-top:32px;gap:16px;flex-wrap:wrap}
.wordmark{font-family:var(--display);font-size:22px;letter-spacing:2px}
.wordmark a{color:inherit;text-decoration:none}
.nav{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.nav a{color:inherit;text-decoration:none;font-weight:600;font-size:15px;opacity:.92}
.nav a:hover{color:inherit;opacity:1;text-decoration:underline}
.nav a.pill{background:var(--red);color:#fff;padding:8px 16px;border-radius:999px;font-size:14px;opacity:1}
.nav a.pill:hover{background:#B81E15;text-decoration:none}
.nav a.pill .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#fff;margin-right:8px;vertical-align:1px}
.hero .kicker{font-size:14px;font-weight:700;letter-spacing:3px;opacity:.85;margin:64px 0 20px}
.hero h1{font-size:clamp(44px,8vw,92px);color:inherit}
.hero p.lede{font-size:clamp(17px,2.2vw,21px);max-width:660px;color:#E4EDE4;margin:24px 0 28px}
.hero.photo p.lede{color:#E6ECF3}
.hero.ink p.lede{color:#C9C6BB}
.hero .cta-row{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.hero .cta-row a.plain{color:inherit;font-weight:600;font-size:17px}
.hero .sub{font-size:15px;color:#B9CDBB;margin-top:16px}
.hero.photo .sub{color:#C9D3DF}
.hero .soon{display:inline-block;font-family:var(--display);font-size:clamp(18px,2.4vw,26px);letter-spacing:4px;color:#fff;background:var(--red);padding:8px 18px;border-radius:6px;margin:22px 0 4px}
.hero .credit{position:absolute;right:12px;bottom:8px;font-size:11px;color:rgba(255,255,255,.55)}
.hero .credit a{color:rgba(255,255,255,.7)}

/* Stat strip */
.stats{border-bottom:2px solid var(--ink)}
.stats .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;padding:36px 0}
.stat b{display:block;font-family:var(--display);font-weight:400;font-size:clamp(28px,3vw,40px);color:var(--green)}
.stat.hot b{color:var(--red)}
.stat span{font-size:15px;color:var(--ink-soft)}

/* Sections */
section{padding:80px 0}
section h2{font-size:clamp(32px,4.5vw,48px);margin-bottom:20px}
.lead{font-size:19px;color:#3B3A33;max-width:780px;margin:0 0 36px}
.prose{font-size:18px;color:#3B3A33;max-width:780px}
.prose p{margin:0 0 20px}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.card{background:#fff;border:2px solid var(--ink);border-radius:10px;padding:26px}
.card h3{margin:0 0 8px;font-size:20px}
.card p{margin:0;font-size:16px;color:var(--ink-soft)}
.card .big{font-family:var(--display);font-size:40px;color:var(--red);margin-bottom:6px}

/* Weeks */
.weeks-band{background:var(--ivory-2);border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}
.weeks{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.week{background:#fff;border:2px solid var(--ink);border-radius:10px;padding:22px;display:flex;flex-direction:column}
.week.pre{background:var(--ink);color:var(--ivory);border-color:var(--ink)}
.week.pre p{color:#C9C6BB} .week.pre .ms{color:var(--green-text);border-color:#4A4840}
.week .tag{font-family:var(--display);font-size:13px;letter-spacing:2px;color:var(--red)}
.week h3{margin:8px 0;font-size:22px}
.week p{margin:0;font-size:15px;color:var(--ink-soft);flex-grow:1}
.week .ms{font-size:13px;font-weight:600;color:var(--green);border-top:1px solid #D8D4C6;padding-top:12px;margin-top:14px}
.rhythm{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:36px}
.rhythm .r{border-left:3px solid var(--red);padding-left:16px}
.rhythm h3{margin:0 0 6px;font-size:18px}
.rhythm p{margin:0;font-size:15px;color:var(--ink-soft)}

/* Deal */
.deal{background:var(--green);color:var(--ivory)}
.deal h2{color:var(--ivory)}
.deal .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:36px}
.deal .n{font-family:var(--display);font-size:42px;color:var(--red)}
.deal h3{margin:10px 0 8px;font-size:19px}
.deal p{margin:0;font-size:15px;color:var(--green-text)}

/* Prizes */
.prize-champ{background:var(--ink);color:var(--ivory)}
.prize-champ p{color:#C9C6BB}
.ptag{font-size:13px;font-weight:700;letter-spacing:2px;color:var(--green)}
.prize-champ .ptag{color:var(--red)}
.pval{font-family:var(--display);font-size:30px;margin:8px 0}
.finale{background:var(--ivory-2);border:2px solid var(--ink);border-radius:10px;padding:26px 30px;margin-top:24px}
.finale h3{margin:0 0 6px;font-size:19px}
.finale p{margin:0;font-size:16px;color:var(--ink-soft)}

/* Speakers */
.speakers{background:var(--ivory-2);border-top:2px solid var(--ink)}
.speaker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:36px}
.speaker{background:#fff;border:2px dashed #9B978A;border-radius:10px;padding:26px 22px;text-align:center}
.speaker .avatar{width:72px;height:72px;border-radius:50%;background:var(--ivory-2);border:2px solid var(--ink);margin:0 auto 16px;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:22px;color:var(--ink-soft)}
.speaker h3{margin:0 0 6px;font-size:17px}
.speaker p{margin:0;font-size:14px;color:var(--ink-soft)}
.speakers .cta{margin-top:32px;font-size:16px;color:var(--ink-soft)}

/* Who */
.who{border-top:2px solid var(--ink)}
.who .grid{display:grid;grid-template-columns:1fr 1fr;gap:48px}
.who .item{font-size:16px;color:#3B3A33;border-bottom:1px solid #D8D4C6;padding:14px 0}
.who .item:last-child{border-bottom:none}

/* FAQ */
.faq{background:var(--ivory-2);border-top:2px solid var(--ink)}
.faq .wrap{max-width:900px}
.qa{margin-bottom:28px}
.qa h3{margin:0 0 6px;font-size:18px}
.qa p{margin:0;font-size:16px;color:var(--ink-soft)}

/* Forms (dark sections) */
.dark{background:var(--ink);color:var(--ivory)}
.dark .wrap{max-width:900px}
.dark h2{color:var(--ivory)}
.dark p.lead{color:#C9C6BB}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:32px 0}
.field label{display:block;font-size:13px;font-weight:600;letter-spacing:1px;color:#C9C6BB;margin-bottom:8px}
.field input,.field select{width:100%;background:#2A2924;border:1px solid #4A4840;border-radius:6px;padding:14px 16px;font-size:16px;color:var(--ivory);font-family:var(--body)}
.dark .note{font-size:14px;color:#8A877C}
.dark .row{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.msg{margin-top:18px;font-size:16px;min-height:24px}
.msg.ok{color:#9BD1A5} .msg.err{color:#F08A82}
.inline{display:flex;gap:12px;flex-wrap:wrap;max-width:620px}
.inline input{flex:1 1 260px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.4);border-radius:6px;padding:14px 16px;font-size:16px;color:#fff;font-family:var(--body)}
.inline input::placeholder{color:#C9D3DF}
.inline .msg{flex-basis:100%;margin:0}

/* Sponsor tiers */
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:8px 0 12px}
.tier{border:1px solid #4A4840;border-radius:8px;padding:18px}
.tier h3{margin:0 0 6px;font-size:16px;color:var(--ivory)}
.tier p{margin:0;font-size:14px;color:#8A877C}

/* Get-involved band (home) */
.involve{background:var(--ink);color:var(--ivory);border-top:1px solid #4A4840}
.involve h2{color:var(--ivory)}
.involve .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:32px 0}
.involve h3{margin:0 0 6px;font-size:19px}
.involve p{margin:0;font-size:15px;color:#C9C6BB}

/* SF teaser strip (home) */
.strip{position:relative;color:#fff;background:var(--navy) url('assets/golden-gate.jpg') center 40% / cover no-repeat;border-top:2px solid var(--ink)}
.strip .shade{background:linear-gradient(90deg,rgba(8,20,40,.85) 0%,rgba(8,20,40,.6) 100%);padding:56px 0}
.strip .wrap{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}
.strip .kicker{font-size:13px;font-weight:700;letter-spacing:3px;opacity:.85;margin:0 0 8px}
.strip h2{color:#fff;font-size:clamp(28px,4vw,44px);margin:0}
.strip p{margin:8px 0 0;color:#E6ECF3;font-size:17px}

footer{background:var(--ink);border-top:1px solid #4A4840;color:#8A877C}
footer .wrap{display:flex;justify-content:space-between;align-items:center;padding:24px;font-size:14px;gap:12px;flex-wrap:wrap}
footer .wordmark{color:#C9C6BB;font-size:16px}
footer a{color:#C9C6BB}
footer .legal{width:100%;text-align:center;font-size:13px;color:#6E6B61;padding-top:14px;border-top:1px solid #33312B;margin-top:6px}

@media (max-width:1000px){
  .weeks{grid-template-columns:repeat(3,1fr)}
  .speaker-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .stats .grid,.deal .grid{grid-template-columns:1fr 1fr}
  .cards,.rhythm,.tiers,.involve .grid{grid-template-columns:1fr}
  .who .grid{grid-template-columns:1fr}
  section{padding:56px 0}
  .hero .kicker{margin-top:48px}
}
@media (max-width:560px){
  .stats .grid,.deal .grid,.weeks,.form-grid,.speaker-grid{grid-template-columns:1fr}
  .hero .circle{width:340px;height:340px;right:-140px;top:-120px}
  .nav{gap:14px}
}
@media (prefers-reduced-motion: no-preference){
  html{scroll-behavior:smooth}
}

/* Waitlist modal */
dialog.modal{border:none;border-radius:12px;padding:0;background:var(--ink);color:var(--ivory);width:min(720px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto}
dialog.modal::backdrop{background:rgba(20,19,16,.7)}
.modal .body{padding:36px 36px 32px}
.modal h2{font-size:clamp(26px,3.5vw,36px);color:var(--ivory);margin-bottom:8px}
.modal p.lead{font-size:17px;color:#C9C6BB;margin-bottom:0}
.modal .form-grid{margin:26px 0 22px}
.modal .close{position:absolute;top:14px;right:14px;background:transparent;border:none;color:#C9C6BB;font-size:28px;line-height:1;cursor:pointer;padding:6px 10px;border-radius:6px}
.modal .close:hover{color:#fff;background:#2A2924}
.modal form{position:relative}
.modal .row{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.modal .note{font-size:14px;color:#8A877C}
@media (max-width:560px){.modal .body{padding:28px 20px 24px}}
