/* ============ Run Zeke Run — shared styles ============ */
:root{
  --bg:#faf9f6; --ink:#141414; --red:#c82828; --gray:#6e6e6e; --line:#c8c6c0;
  --panel:#ffffff;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:'Lora',serif;line-height:1.5}
.wrap{max-width:760px;margin:0 auto;padding:0 24px}

.eyebrow{font-family:'Poppins';font-weight:700;font-size:12px;letter-spacing:.32em;
  text-transform:uppercase;color:var(--gray);text-align:center}
.rule{width:130px;height:4px;background:var(--red);margin:26px auto}

/* nav */
nav{text-align:center;padding:26px 0 14px;font-family:'Poppins';font-weight:700;
  font-size:12px;letter-spacing:.22em;text-transform:uppercase}
nav a{color:var(--gray);text-decoration:none;margin:0 16px;padding-bottom:5px;border-bottom:2px solid transparent}
nav a:hover{color:var(--ink)}
nav a.on{color:var(--ink);border-bottom-color:var(--red)}
nav a.navdonate{color:var(--red)}

header{padding:46px 0 40px;text-align:center}
h1{font-weight:500;font-size:clamp(40px,7vw,62px);line-height:1.15}
h1 em{font-style:italic}
h1 .red{color:var(--red)}
.sub{color:var(--gray);font-size:17px;max-width:480px;margin:18px auto 0}

.datebar{font-family:'Poppins';font-weight:700;font-size:14px;letter-spacing:.18em;
  text-transform:uppercase;text-align:center;margin-top:28px}
.datebar span{color:var(--red)}

/* countdown */
.countdown{font-family:'Poppins';font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gray);text-align:center;margin-top:14px}
.countdown b{color:var(--ink);font-weight:700}

/* big numbers */
.totals{display:flex;justify-content:center;gap:56px;flex-wrap:wrap;padding:38px 0 8px;text-align:center}
.tot .n{font-family:'Poppins';font-weight:700;font-size:clamp(44px,9vw,64px);line-height:1}
.tot .n.red{color:var(--red)}
.tot .k{font-family:'Poppins';font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--gray);margin-top:8px}

/* progress thermometer */
.thermo{padding:40px 0 6px}
.thermo .trackwrap{position:relative}
.thermo .track{position:relative;height:22px;background:var(--panel);border:2px solid var(--ink);overflow:hidden}
.thermo .fill{position:absolute;top:0;left:0;bottom:0;width:0;background:var(--red);
  transition:width 2.2s cubic-bezier(.22,1,.36,1)}
/* the little runner — he jogs to wherever the money is.
   Animated as a 3-frame flipbook: frames stagger visibility, no SVG transforms. */
.runner{position:absolute;bottom:24px;left:0;transform:translateX(-50%);
  transition:left 2.2s cubic-bezier(.22,1,.36,1);pointer-events:none}
.runner svg{display:block;animation:bob .32s infinite alternate ease-in-out}
.runner .fr{opacity:0;animation:runframe .64s infinite steps(1)}
.runner .fr:nth-of-type(1){animation-delay:0s}
.runner .fr:nth-of-type(2){animation-delay:.16s}
.runner .fr:nth-of-type(3){animation-delay:.32s}
.runner .fr:nth-of-type(4){animation-delay:.48s}
@keyframes runframe{0%{opacity:1}25%{opacity:0}100%{opacity:0}}
@keyframes bob{from{transform:translateY(0)}to{transform:translateY(-1.5px)}}
/* if the viewer prefers reduced motion, show him standing on one clean frame */
@media (prefers-reduced-motion: reduce){.runner .fr:nth-of-type(1){opacity:1}}
.thermo .marks{position:relative;height:1px}
.thermo .mk{position:absolute;top:0;transform:translateX(-50%);text-align:center}
.thermo .mk .tick{width:2px;height:9px;background:var(--ink);margin:0 auto}
.thermo .mk .lbl{font-family:'Poppins';font-size:10px;letter-spacing:.08em;color:var(--gray);
  margin-top:5px;white-space:nowrap}
.thermo .mk .lbl b{color:var(--ink);font-weight:700;display:block;font-size:11px}
.thermo .cap{font-family:'Poppins';font-size:13px;color:var(--gray);text-align:center;margin-top:46px}
.thermo .cap b{color:var(--ink);font-weight:700}

/* mile grid — printed punch card feel */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:12px;padding:34px 0 10px}
.m{aspect-ratio:1;border:2px solid var(--ink);display:flex;flex-direction:column;
  align-items:center;justify-content:center;background:var(--panel);position:relative;transition:background .4s,border-color .4s}
.m b{font-family:'Poppins';font-weight:700;font-size:24px}
.m i{font-family:'Poppins';font-style:normal;font-size:9px;letter-spacing:.18em;color:var(--gray)}
.m .who{font-size:11px;font-style:italic;color:var(--red);
  max-width:92%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m.unlocked{border-color:var(--red)}
.m.unlocked b{color:var(--red)}
.m.run{background:var(--ink);border-color:var(--ink)}
.m.run b{color:var(--bg)} .m.run i{color:#8a8a8a}
.m.run .who{color:#e8a0a0}
/* locked miles are buyable — hover flips them into a price tag */
.m.locked{cursor:pointer}
.m.locked .flip{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;background:var(--red);color:#fff;opacity:0;transition:opacity .18s}
.m.locked .flip b{color:#fff;font-size:17px}
.m.locked .flip i{color:#ffd2d2;font-size:8px;letter-spacing:.16em}
.m.locked:hover .flip,.m.locked:focus-visible .flip{opacity:1}
/* run miles get a hole punched through them, like a real punch card */
.m.run::after{content:"";position:absolute;top:7px;right:7px;width:10px;height:10px;
  border-radius:50%;background:var(--bg);box-shadow:inset 0 1px 2px rgba(0,0,0,.5)}
.legend{text-align:center;font-family:'Poppins';font-size:12px;color:var(--gray);padding:8px 0 0}
.legend b{color:var(--ink);font-weight:500}

section{padding:44px 0}
h2{font-weight:500;font-size:34px;text-align:center;margin-bottom:8px}
.lede{text-align:center;color:var(--gray);max-width:520px;margin:0 auto 34px}

/* how it works (about page) */
.steps{counter-reset:step;max-width:560px;margin:0 auto}
.step{display:grid;grid-template-columns:64px 1fr;gap:22px;padding:24px 0;border-bottom:1px solid var(--line);align-items:start}
.step:last-child{border-bottom:none}
.step .num{font-family:'Poppins';font-weight:700;font-size:34px;color:var(--red);line-height:1.1}
.step h3{font-weight:500;font-size:23px}
.step p{color:var(--gray);font-size:16px;margin-top:4px}

/* why / story — landscape family photo above the words */
.story{max-width:560px;margin:0 auto}
.story img{width:100%;height:auto;border:2px solid var(--ink);display:block;margin-bottom:28px}
.story .photoph{display:none!important}
.story p{font-size:18px;line-height:1.7}
.story p+p{margin-top:16px}
.story .sig{font-style:italic;color:var(--gray);margin-top:16px;font-size:16px}

/* the deal */
.deal{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);padding:34px 0;text-align:center}
.deal p{font-size:clamp(22px,4vw,28px);font-style:italic;line-height:1.6}
.deal p b{font-style:normal;font-family:'Poppins';font-weight:700}
.deal p .red{color:var(--red)}

/* menu */
.menu-item{display:grid;grid-template-columns:96px 1fr;gap:20px;padding:22px 0;border-bottom:1px solid var(--line);align-items:start}
.menu-item:last-child{border-bottom:none}
.price{font-family:'Poppins';font-weight:700;font-size:30px}
.menu-item h3{font-weight:500;font-size:26px}
.menu-item p{color:var(--gray);font-size:16px;margin-top:2px}
.tag{display:inline-block;font-family:'Poppins';font-weight:700;font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--red);border:1px solid var(--red);padding:3px 10px;margin-bottom:16px}
.menu-head{text-align:center}

/* stretch goals */
.stretch{list-style:none}
.sg{display:grid;grid-template-columns:104px 1fr auto;gap:18px;align-items:center;
  padding:18px 0;border-bottom:1px solid var(--line)}
.sg:last-child{border-bottom:none}
.sg .amt{font-family:'Poppins';font-weight:700;font-size:22px}
.sg h3{font-weight:500;font-size:21px}
.sg p{color:var(--gray);font-size:15px;margin-top:1px}
.sg .state{font-family:'Poppins';font-weight:700;font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;white-space:nowrap;padding:5px 12px;border:1px solid var(--line);color:var(--gray)}
.sg.hit{border-color:var(--red)}
.sg.hit .amt,.sg.hit h3{color:var(--red)}
.sg.hit .state{color:#fff;background:var(--red);border-color:var(--red)}

/* donate CTA */
.cta{text-align:center;padding:14px 0 4px}
a.donate{display:inline-block;background:var(--red);color:#fff;text-decoration:none;
  font-family:'Poppins';font-weight:700;font-size:18px;letter-spacing:.06em;
  padding:20px 56px;transition:transform .12s ease, background .12s}
a.donate:hover{background:#a81f1f;transform:translateY(-2px)}
.cta .alt{margin-top:14px;font-size:14px;color:var(--gray)}
.cta .alt a{color:var(--ink)}

/* share */
.share{text-align:center}
.share h2{margin-bottom:6px}
.share-btns{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:24px}
.share-btns a,.share-btns button{font-family:'Poppins';font-weight:700;font-size:13px;letter-spacing:.05em;
  text-decoration:none;cursor:pointer;border:2px solid var(--ink);background:var(--panel);color:var(--ink);
  padding:13px 22px;transition:background .12s,color .12s}
.share-btns a:hover,.share-btns button:hover{background:var(--ink);color:var(--bg)}
#copied{font-family:'Poppins';font-size:12px;color:var(--red);margin-top:14px;height:16px;
  opacity:0;transition:opacity .2s;letter-spacing:.1em;text-transform:uppercase;font-weight:700}
#copied.show{opacity:1}

/* donors */
.donors{background:var(--panel);border:1px solid var(--line);padding:30px}
.donor{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid #eceae5;font-size:16px}
.donor:last-child{border-bottom:none}
.donor .amt{font-family:'Poppins';font-weight:700;white-space:nowrap}
.donor .msg{display:block;font-style:italic;color:var(--gray);font-size:14px;margin-top:2px}
.empty{text-align:center;color:var(--gray);font-style:italic}

/* live band */
.liveband{display:none;text-align:center;padding:16px;background:var(--ink);color:var(--bg);
  font-family:'Poppins';font-size:13px;letter-spacing:.14em;text-transform:uppercase}
.liveband a{color:#ffb4b4;text-decoration:underline}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--red);
  margin-right:10px;animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* confetti — fires when a donation lands while you watch */
.cf{position:fixed;top:-14px;width:9px;height:14px;z-index:99;pointer-events:none;
  animation:cfall linear forwards}
@keyframes cfall{to{transform:translateY(105vh) rotate(720deg)}}

/* live donation toast */
#toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,120px);z-index:98;
  background:var(--ink);color:var(--bg);font-family:'Poppins';font-size:14px;
  padding:14px 26px;box-shadow:0 8px 30px rgba(0,0,0,.25);
  transition:transform .45s cubic-bezier(.22,1,.36,1);max-width:88vw;text-align:center}
#toast.show{transform:translate(-50%,0)}
#toast b{color:#ffb4b4}

footer{text-align:center;padding:46px 0 64px;color:var(--gray);font-size:14px}
footer .heart{color:var(--red);cursor:pointer;display:inline-block;transition:transform .15s}
footer .heart:hover{transform:scale(1.35)}
footer nav{padding:0 0 18px}

@media (max-width:520px){
  .menu-item{grid-template-columns:72px 1fr}
  .price{font-size:24px}
  .totals{gap:32px}
  nav a{margin:0 9px}
  .story{grid-template-columns:1fr;gap:22px;text-align:center;justify-items:center}
  .sg{grid-template-columns:76px 1fr;grid-template-areas:"amt body" "amt state";row-gap:6px}
  .sg .amt{grid-area:amt} .sg .state{grid-area:state;justify-self:start}
}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
