/* ===== LifeWithBigGee — Breakout Spine =====
   Palette (locked): warm black #161210, ember #E8722C, paprika #B23A28,
   teal #1F6E6A (sparingly), cream #F2E8D5. Light rises from below. */

:root{
  --black:#161210;
  --ember:#E8722C;
  --paprika:#B23A28;
  --teal:#1F6E6A;
  --cream:#F2E8D5;
  --cream-dim:rgba(242,232,213,.62);
  --card:#1f1913;
  --card-edge:rgba(232,114,44,.16);
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:auto}
body{
  background:var(--black) url("../assets/plates/iron_texture.jpg") repeat;
  background-size:1024px;
  color:var(--cream);
  font-family:Inter,system-ui,sans-serif;
  overflow-x:hidden;
}

/* layers: embers canvas (fixed, behind) < spine svg (absolute, over bg) < content */
#embers{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;pointer-events:none}
#spine-wrap{position:absolute;inset:0;z-index:1;pointer-events:none}
#spine{position:absolute;top:0;left:0;width:100%;height:100%;overflow:visible}
#page{position:relative;z-index:2}

#bolt-logo{
  position:absolute;width:clamp(130px,16vw,230px);aspect-ratio:526/703;opacity:0;
  transform:translate(-50%,-50%) scale(.45);pointer-events:none;
  filter:drop-shadow(0 0 30px rgba(232,114,44,.6)) drop-shadow(0 0 80px rgba(232,114,44,.32));
}

.spine-dot{fill:#5a4a3c;transition:fill .5s}
.spine-dot.lit{fill:var(--cream)}
.spine-halo{fill:none;stroke:var(--ember);stroke-width:2;opacity:0;transition:opacity .6s}
.spine-halo.lit{opacity:.8;animation:halo 2.4s ease-out infinite}
@keyframes halo{0%{transform:scale(.6);opacity:.8}100%{transform:scale(2.2);opacity:0}}
.spine-halo{transform-box:fill-box;transform-origin:center}

/* ===== type ===== */
.eyebrow{font-family:"Bebas Neue",sans-serif;letter-spacing:.55em;font-size:clamp(14px,1.6vw,20px);color:var(--ember)}
.fraunces{font-family:Fraunces,serif;font-style:italic;font-weight:600}

/* ===== hero ===== */
#hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden}
.hero-img{
  position:absolute;inset:0;
  background:url("../assets/plates/hero_portrait.jpg") center 30%/cover no-repeat;
}
.hero-img::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(22,18,16,.25) 0%,rgba(22,18,16,0) 35%,rgba(22,18,16,.92) 88%,#161210 100%)}
.hero-copy{position:relative;padding:0 6vw 18svh;max-width:900px}
#hero-name{
  font-family:Anton,sans-serif;font-size:clamp(64px,13vw,190px);
  line-height:.95;letter-spacing:.01em;color:var(--cream);
  text-shadow:0 20px 60px rgba(22,18,16,.8);
}
.tagline{font-family:Fraunces,serif;font-style:italic;font-weight:600;
  font-size:clamp(24px,3.4vw,44px);color:var(--ember);margin-top:.35em}
.bio{color:var(--cream-dim);max-width:46ch;margin-top:1.2em;font-size:clamp(15px,1.4vw,18px);line-height:1.6}
.scroll-cue{
  position:absolute;bottom:4svh;left:50%;transform:translateX(-50%);
  font-family:"Bebas Neue",sans-serif;letter-spacing:.5em;font-size:12px;color:var(--cream-dim);
  display:flex;flex-direction:column;align-items:center;gap:10px;
}
.scroll-cue span{width:1px;height:44px;background:linear-gradient(180deg,transparent,var(--ember));
  animation:cue 2s ease-in-out infinite}
@keyframes cue{0%,100%{opacity:.3;transform:scaleY(.6)}50%{opacity:1;transform:scaleY(1)}}

/* ===== sections ===== */
/* mobile-first: the anchor photo is real in-flow content now, so the
   generous svh padding designed for desktop's absolute-positioned corner
   photo just reads as dead space stacked on top of dead space here —
   tight and grouped is the mobile-first move, spacious is the desktop one */
.sec{position:relative;isolation:isolate;padding:7svh 6vw;min-height:0;display:flex;flex-direction:column;align-items:center;gap:14px}
@media(min-width:1100px){.sec{flex-direction:row;gap:0;padding:22svh 6vw;min-height:70svh}}
.sec-inner{position:relative;z-index:1;width:100%;max-width:1150px;margin:0 auto;display:grid;grid-template-columns:1fr;gap:36px}
.sec:nth-child(odd) .sec-head{text-align:left}
.sec-head h2{font-family:Anton,sans-serif;font-size:clamp(44px,7vw,110px);line-height:1;color:var(--cream)}
.sec-head .sec-tag{font-family:Fraunces,serif;font-style:italic;font-weight:600;
  color:var(--ember);font-size:clamp(18px,2.2vw,28px);margin-top:.3em}
.sec-glow{position:absolute;left:50%;bottom:0;transform:translateX(-50%);z-index:0;
  width:120vw;height:45vh;pointer-events:none;opacity:0;
  background:radial-gradient(ellipse at 50% 100%,rgba(232,114,44,.22) 0%,rgba(232,114,44,0) 65%)}
.sec.lit .sec-glow{opacity:1;transition:opacity 1.2s}

/* trade section: candlestick chart as creative background */
.sec[data-secid="trade"]::before{
  content:"";
  position:absolute;
  right:0;bottom:0;
  width:72%;height:90%;
  background:url('../assets/vector/trade_candles.svg') right bottom/contain no-repeat;
  opacity:.18;
  pointer-events:none;
  z-index:0;
}

/* desktop: push link cards left so they never sit behind the cutout photo */
@media(min-width:1100px){
  .sec:has(.anchor-cut) .sec-inner{
    padding-right:min(34vw,400px);
  }
}

.links{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr))}
.link-card{
  position:relative;display:block;text-decoration:none;color:var(--cream);
  background:linear-gradient(180deg,var(--card) 0%,#181310 100%);
  border:1px solid var(--card-edge);border-radius:14px;
  padding:26px 28px;overflow:hidden;
  transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .35s,box-shadow .35s;
}
.link-card::after{ /* ember underlight */
  content:"";position:absolute;left:0;right:0;bottom:0;height:60%;pointer-events:none;
  background:radial-gradient(ellipse at 50% 115%,rgba(232,114,44,.28),rgba(232,114,44,0) 70%);
  opacity:0;transition:opacity .35s;
}
.link-card:hover{transform:translateY(-4px);border-color:rgba(232,114,44,.55);
  box-shadow:0 18px 40px -18px rgba(232,114,44,.35)}
.link-card:hover::after{opacity:1}
/* touch devices don't get :hover — mirror it on :active (the tap itself)
   with no transition delay so it reads as instant tactile feedback */
.link-card:active{transform:translateY(-2px) scale(.98);border-color:rgba(232,114,44,.55);
  transition:transform .08s,border-color .08s}
.link-title{font-family:"Bebas Neue",sans-serif;font-size:26px;letter-spacing:.06em;display:flex;align-items:center;gap:12px}
.link-desc{color:var(--cream-dim);font-size:15px;margin-top:6px;line-height:1.5}
.badge{font-family:"Bebas Neue",sans-serif;font-size:13px;letter-spacing:.18em;
  color:var(--black);background:var(--ember);border-radius:4px;padding:3px 9px 1px}
.link-arrow{position:absolute;top:24px;right:24px;color:var(--ember);font-size:20px;
  transform:translateX(-6px);opacity:0;transition:all .35s}
.link-card:hover .link-arrow{transform:none;opacity:1}

/* coming-soon: visible, on-brand, but deliberately inert — never a dead link */
.link-card--soon{cursor:default;opacity:.62}
.link-card--soon .badge{background:transparent;border:1px solid rgba(242,232,213,.35);color:var(--cream-dim)}
.link-card--soon:hover,.link-card--soon:active{transform:none;box-shadow:none;border-color:var(--card-edge)}
.link-card--soon:hover::after{opacity:0}

.anchor-cut{
  /* mobile: a real, fully-visible portrait up top — same photo, same
     presence as desktop, just laid out in-flow instead of tucked in a corner */
  position:static;order:-1;margin:0 auto;
  width:min(58vw,280px);opacity:1;pointer-events:none;

  /* soften the hard cutout edges — face/chest stays sharp, fades toward all edges */
  -webkit-mask-image:radial-gradient(
    ellipse 86% 80% at 50% 28%,
    black 32%,
    rgba(0,0,0,.88) 50%,
    rgba(0,0,0,.48) 67%,
    transparent 86%
  );
  mask-image:radial-gradient(
    ellipse 86% 80% at 50% 28%,
    black 32%,
    rgba(0,0,0,.88) 50%,
    rgba(0,0,0,.48) 67%,
    transparent 86%
  );
  filter:drop-shadow(0 20px 36px rgba(22,18,16,.6));
}
@media(min-width:1100px){
  .anchor-cut{
    position:absolute;bottom:0;right:0;order:0;margin:0;
    z-index:2;width:min(38vw,420px);opacity:.95;
    filter:drop-shadow(0 24px 44px rgba(22,18,16,.7));
  }
}

/* ===== finale =====
   Footer lives INSIDE #finale now so the flame video's glow is one
   continuous scene behind the bolt strike, the CTA, and the footer —
   no hard seam between "the moment" and the page's closing credits. */
#finale{
  position:relative;isolation:isolate;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;
  min-height:110svh;padding:20svh 6vw 0;text-align:center;
}
#flame-video{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1;
  opacity:.46;pointer-events:none;
  -webkit-mask-image:radial-gradient(ellipse 100% 70% at 50% 46%,black 35%,transparent 92%);
  mask-image:radial-gradient(ellipse 100% 70% at 50% 46%,black 35%,transparent 92%);
}
@media(prefers-reduced-motion:reduce){#flame-video{display:none}}
.finale-inner{max-width:680px;position:relative}
#cta-title{font-family:Anton,sans-serif;font-size:clamp(44px,7vw,100px);line-height:1.02;margin-top:.4em}
.cta-desc{color:var(--cream-dim);font-size:clamp(16px,1.6vw,19px);margin-top:1em}
.cta-btn{
  display:inline-block;margin-top:2.4em;text-decoration:none;
  font-family:"Bebas Neue",sans-serif;font-size:24px;letter-spacing:.22em;
  color:var(--black);background:linear-gradient(180deg,#F2934A,var(--ember) 55%,var(--paprika));
  padding:20px 46px 16px;border-radius:10px;
  box-shadow:0 14px 44px -10px rgba(232,114,44,.55), 0 0 0 1px rgba(242,232,213,.12) inset;
  transition:transform .3s,box-shadow .3s;
}
.cta-btn:hover{transform:translateY(-3px) scale(1.02);
  box-shadow:0 22px 60px -10px rgba(232,114,44,.75), 0 0 0 1px rgba(242,232,213,.2) inset}
.cta-btn:active{transform:translateY(-1px) scale(.99);transition:transform .08s}
@media(max-width:480px){.cta-btn{font-size:19px;letter-spacing:.16em;padding:18px 28px 14px;white-space:nowrap}}

/* ===== footer (nested inside #finale — see note above) ===== */
footer{position:relative;text-align:center;padding:120px 6vw 46px;width:100%}
.foot-mark{width:min(300px,60vw);opacity:.9}
.foot-line{color:var(--cream-dim);font-size:13px;margin-top:18px}
.foot-line .fraunces{color:var(--ember)}
.admin-door{position:absolute;right:18px;bottom:14px;color:rgba(242,232,213,.25);
  text-decoration:none;font-size:16px}
.admin-door:hover{color:var(--ember)}

/* ===== mobile spine rail =====
   left padding clears the spine rail that runs down the left edge below
   760px; vertical padding matches the tightened mobile spacing above —
   this used to reintroduce the old 16svh gaps and undo that fix. */
@media(max-width:760px){
  .sec{padding:7svh 6vw 7svh 64px}
  .hero-copy{padding-bottom:12svh}
}

/* reduced motion: no shader, everything visible */
@media(prefers-reduced-motion:reduce){
  #embers{display:none}
  .scroll-cue span{animation:none}
  .spine-halo.lit{animation:none;opacity:.5}
}
