/* Bodies By Garrett — refresh (design D) */
:root { --bg:#0a0a0b; --bg2:#0e0e10; --red:#fe0000; --red-hover:#ff2e1a; --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.12); --txt:#e8e8e6; --dim:rgba(255,255,255,.6); }
* { box-sizing:border-box }
html { scroll-behavior:smooth }
body { margin:0; font-family:'Instrument Sans',sans-serif; background:var(--bg); color:var(--txt); overflow-x:clip }
a { color:var(--red) } a:hover { color:#ff4d2e }
img { max-width:100% }
h1,h2,h3,.display { font-family:'Archivo',sans-serif; text-transform:uppercase }
@keyframes riseIn { from{opacity:0; transform:translateY(46px)} to{opacity:1; transform:translateY(0)} }
@keyframes reveal { from{opacity:0; transform:translateY(60px)} to{opacity:1; transform:translateY(0)} }
@keyframes pulseDown { 0%,100%{transform:translateY(0); opacity:.5} 50%{transform:translateY(8px); opacity:1} }
.sv { animation:reveal .9s cubic-bezier(.2,.7,.2,1) both; animation-timeline:view(); animation-range:entry 5% entry 45% }
.rise { opacity:0; animation:riseIn .9s cubic-bezier(.2,.7,.2,1) forwards }
@media (prefers-reduced-motion:reduce) { .sv,.rise{animation:none!important;opacity:1!important} }
/* nav */
.nav { position:fixed; top:0; left:0; right:0; z-index:50; display:flex; align-items:center; justify-content:space-between; padding:16px 32px; background:rgba(10,10,11,.82); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); border-bottom:1px solid var(--line) }
.nav__logo img { height:20px; display:block }
.nav__links { list-style:none; display:flex; align-items:center; gap:26px; padding:0; margin:0; font-family:'Archivo',sans-serif; font-weight:700; font-size:12.5px; letter-spacing:.14em; text-transform:uppercase }
.nav__links a { color:rgba(255,255,255,.7); text-decoration:none; padding-bottom:4px; border-bottom:2px solid transparent; transition:color .2s, border-color .2s }
.nav__links a:hover { color:#fff; border-color:var(--red) }
.nav__links a.active { color:#fff; border-color:var(--red) }
.nav__links a.cta { color:#fff; background:var(--red); padding:11px 22px; border-radius:3px; border-bottom:none; transition:background .2s }
.nav__links a.cta:hover { background:var(--red-hover) }
.nav__burger { display:none; background:none; border:0; cursor:pointer; padding:10px; }
.nav__burger span { display:block; width:24px; height:2px; background:#fff; margin:5px 0; transition:transform .25s, opacity .25s }
.nav__burger span:last-child { background:var(--red) }
/* hero */
.hero { position:relative; min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; overflow:hidden; padding:100px 32px 80px }
.hero__img, .pagehero__img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:grayscale(1) contrast(1.15) brightness(.6) }
.hero__glow { position:absolute; inset:0; background:radial-gradient(ellipse at center, rgba(254,0,0,.14), transparent 60%) }
.hero__shade { position:absolute; inset:0; background:linear-gradient(to bottom, rgba(10,10,11,.7), rgba(10,10,11,.35) 40%, rgba(10,10,11,.92)) }
.hero__inner { position:relative; z-index:1; display:flex; flex-direction:column; align-items:center }
.eyebrow-row { display:flex; align-items:center; gap:14px; margin-bottom:30px }
.eyebrow-row span.rule { width:44px; height:1px; background:rgba(255,255,255,.4) }
.eyebrow-row span.txt { font-size:13px; letter-spacing:.3em; text-transform:uppercase; color:rgba(255,255,255,.8); font-weight:600 }
.hero h1 { font-weight:900; line-height:.86; letter-spacing:-.01em; font-size:clamp(56px, 10.5vw, 168px); margin:0; color:#fff }
.stroke { -webkit-text-stroke:2px rgba(255,255,255,.65); color:transparent }
.stroke-red { -webkit-text-stroke:2px var(--red); color:transparent }
.red { color:var(--red) }
.hero h1 .glow-red { color:var(--red); text-shadow:0 0 80px rgba(254,0,0,.45) }
.hero p { max-width:520px; font-size:17px; line-height:1.65; color:rgba(255,255,255,.75); margin:30px 0 36px }
.btn-row { display:flex; gap:14px; flex-wrap:wrap; justify-content:center }
.btn { font-family:'Archivo',sans-serif; font-weight:700; text-transform:uppercase; letter-spacing:.08em; font-size:14.5px; padding:17px 36px; color:#fff; background:var(--red); text-decoration:none; border-radius:3px; transition:background .2s, box-shadow .2s; display:inline-block }
.btn:hover { background:var(--red-hover); color:#fff; box-shadow:0 12px 40px rgba(254,0,0,.4) }
.btn--ghost { background:transparent; border:1px solid rgba(255,255,255,.35) }
.btn--ghost:hover { background:rgba(255,255,255,.1); border-color:#fff; box-shadow:none }
.scrollcue { position:absolute; bottom:26px; left:50%; transform:translateX(-50%); z-index:1; color:rgba(255,255,255,.6); font-size:12px; letter-spacing:.2em; text-transform:uppercase; display:flex; flex-direction:column; align-items:center; gap:8px }
.scrollcue i { display:block; width:1px; height:26px; background:linear-gradient(to bottom, var(--red), transparent); animation:pulseDown 1.8s ease-in-out infinite }
/* page hero (subpages) */
.pagehero { position:relative; min-height:56vh; display:flex; align-items:flex-end; overflow:hidden; padding:140px 32px 56px }
.pagehero__shade { position:absolute; inset:0; background:linear-gradient(to bottom, rgba(10,10,11,.6), rgba(10,10,11,.3) 45%, rgba(10,10,11,.95)) }
.pagehero__inner { position:relative; z-index:1; max-width:1100px; margin:0 auto; width:100% }
.pagehero h1 { font-weight:900; line-height:.86; letter-spacing:-.01em; font-size:clamp(52px, 9vw, 140px); margin:0; color:#fff }
.kicker { font-family:'Archivo',sans-serif; font-weight:900; color:var(--red); font-size:15px; letter-spacing:.2em; text-transform:uppercase; margin-bottom:14px }
/* sections */
.section { position:relative; padding:120px 32px; border-bottom:1px solid var(--line) }
.section--alt { background:var(--bg2) }
.wrap { max-width:1100px; margin:0 auto; position:relative }
.ghost { position:absolute; top:40px; left:0; font-family:'Archivo',sans-serif; font-weight:900; font-size:clamp(120px, 20vw, 280px); line-height:1; color:rgba(255,255,255,.035); text-transform:uppercase; white-space:nowrap; pointer-events:none }
.ghost--right { left:auto; right:0 }
.section h2 { font-weight:900; line-height:.92; font-size:clamp(38px, 5.4vw, 84px); margin:0 0 56px; color:#fff }
.section h2.tight { margin-bottom:28px }
.lead { font-size:17px; line-height:1.75; color:rgba(255,255,255,.72); max-width:620px }
/* pillars */
.pillars { display:grid; grid-template-columns:repeat(3,1fr); gap:44px }
.pillar .bar { width:100%; height:1px; background:rgba(255,255,255,.15); margin-bottom:22px; position:relative }
.pillar .bar i { position:absolute; left:0; top:-1px; width:56px; height:3px; background:var(--red) }
.pillar h3 { font-weight:800; font-size:19px; margin:0 0 12px; color:#fff }
.pillar p { font-size:15px; line-height:1.7; color:var(--dim); margin:0 }
/* photo band */
.band { position:relative; border-bottom:1px solid var(--line); overflow:hidden }
.band__img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:grayscale(1) brightness(.35) }
.band__shade { position:absolute; inset:0; background:linear-gradient(100deg, rgba(10,10,11,.95) 35%, rgba(10,10,11,.55)) }
.band__inner { position:relative; max-width:1100px; margin:0 auto; padding:130px 32px }
/* timeline */
.timeline { display:grid; border-left:2px solid rgba(254,0,0,.4); padding-left:48px }
.tstep { position:relative; padding:32px 0; border-bottom:1px solid var(--line); display:grid; grid-template-columns:64px 1fr; gap:28px; align-items:center }
.tstep::before { content:""; position:absolute; left:-57px; top:50%; transform:translateY(-50%); width:16px; height:16px; border-radius:50%; background:var(--bg); border:3px solid var(--red) }
.tstep img { height:48px; filter:invert(1); opacity:.9 }
.tstep h3 { font-weight:800; font-size:20px; margin:0 0 8px; color:#fff }
.tstep p { font-size:16px; line-height:1.7; color:rgba(255,255,255,.65); margin:0 }
/* cards / wall */
.wall { columns:3 300px; column-gap:18px }
.review { break-inside:avoid; margin-bottom:18px; background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.1); border-radius:6px; padding:26px; transition:border-color .3s, background .3s }
.review:hover { border-color:rgba(254,0,0,.55); background:rgba(255,255,255,.05) }
.review .stars { color:var(--red); letter-spacing:2px; font-size:13.5px; margin-bottom:14px }
.review p { font-size:14.5px; line-height:1.68; color:rgba(255,255,255,.72); margin:0 0 18px }
.who { display:flex; align-items:center; gap:12px }
.who img, .who .avatar { width:36px; height:36px; border-radius:50%; object-fit:cover }
.who .avatar { background:var(--red); color:#fff; display:flex; align-items:center; justify-content:center; font-family:'Archivo',sans-serif; font-weight:800; font-size:13px }
.who .name { font-weight:600; font-size:14px; color:#fff }
.who .src, .who a.src { font-size:12px; color:rgba(255,255,255,.45); text-decoration:none }
.who a.src:hover { color:var(--red) }
/* info cards (about page) */
.cards2 { display:grid; grid-template-columns:1fr 1fr; gap:18px }
.card { border:1px solid var(--line2); border-radius:6px; padding:34px; background:var(--bg); transition:border-color .3s }
.card:hover { border-color:rgba(254,0,0,.55) }
.card img.icon { height:48px; filter:invert(1); opacity:.9; margin-bottom:20px }
.card h3 { font-weight:800; font-size:19px; margin:0 0 16px; color:#fff }
.slashlist { list-style:none; padding:0; margin:0; display:grid; gap:13px }
.slashlist li { display:flex; gap:12px; align-items:baseline; font-size:15.5px; line-height:1.5; color:rgba(255,255,255,.72) }
.slashlist li::before { content:"/"; color:var(--red); font-family:'Archivo',sans-serif; font-weight:900 }
.panel { border:1px solid var(--line2); border-radius:6px; padding:34px; background:rgba(255,255,255,.03) }
.panel .tick { width:56px; height:3px; background:var(--red); margin-bottom:22px }
.split { display:grid; grid-template-columns:1.2fr .8fr; gap:56px; align-items:start }
.numcard .num { font-family:'Archivo',sans-serif; font-weight:900; font-size:26px; color:rgba(255,255,255,.22); margin-bottom:16px }
/* contact / cta */
.cta { padding:150px 32px; text-align:center; position:relative; overflow:hidden; border-bottom:1px solid var(--line) }
.cta__glow { position:absolute; inset:0; background:radial-gradient(ellipse at 50% 120%, rgba(254,0,0,.22), transparent 60%) }
.cta__inner { position:relative; max-width:1100px; margin:0 auto }
.cta h2 { font-weight:900; line-height:.9; font-size:clamp(44px, 6.5vw, 104px); margin:0 0 40px; color:#fff }
.bigmail { font-family:'Archivo',sans-serif; font-weight:800; font-size:clamp(18px, 3vw, 40px); color:#fff; text-decoration:none; border-bottom:3px solid var(--red); padding-bottom:6px; transition:color .2s; word-break:break-all }
.bigmail:hover { color:var(--red) }
.contact-row { display:flex; justify-content:center; gap:36px; margin-top:44px; flex-wrap:wrap; font-size:15px; color:rgba(255,255,255,.65) }
.contact-row a { color:rgba(255,255,255,.75); text-decoration:none; transition:color .2s }
.contact-row a:hover { color:#fff }
.contact-row .sep { color:rgba(255,255,255,.3) }
/* footer */
.footer { border-top:1px solid var(--line); padding:36px 32px; max-width:1100px; margin:0 auto; display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap }
.footer img.mark { height:18px }
.socials { display:flex; gap:8px }
.socials a { display:flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:3px; border:1px solid rgba(255,255,255,.14); transition:border-color .2s }
.socials a:hover { border-color:var(--red) }
.socials img { height:16px; filter:brightness(0) invert(1) }
.footer .fine { font-size:13px; color:rgba(255,255,255,.45) }
.footer .fine a { color:rgba(255,255,255,.6); text-decoration:none }
/* privacy policy */
.policy { max-width:800px }
.policy > p, .policy li, .policy address { color:rgba(255,255,255,.72); font-size:16px; line-height:1.8 }
.policy h3 { font-family:'Archivo',sans-serif; font-size:22px; text-transform:uppercase; margin:46px 0 12px; color:#fff }
.policy a { color:#fff; text-decoration-color:var(--red); text-underline-offset:4px }
.policy address { font-style:normal; padding-left:20px; border-left:3px solid var(--red) }
.policy__updated { margin-top:42px; color:rgba(255,255,255,.45) !important; font-size:13px !important }
/* responsive */
@media (max-width: 900px) {
  .pillars { grid-template-columns:1fr; gap:34px }
  .cards2, .split { grid-template-columns:1fr; gap:26px }
  .section { padding:80px 22px }
  .band__inner { padding:90px 22px }
  .ghost { display:none }
}
@media (max-width: 820px) {
  .nav { backdrop-filter:none; -webkit-backdrop-filter:none; background:rgba(10,10,11,.98) }
  .nav__burger { display:block }
  .nav__links { position:fixed; top:72px; left:0; right:0; bottom:0; background:rgba(10,10,11,.98); flex-direction:column; align-items:flex-start; gap:0; padding:24px 28px; display:none; overflow-y:auto }
  .nav__links.open { display:flex }
  .nav__links li { width:100% }
  .nav__links a { display:block; padding:16px 0; font-size:20px; border-bottom:1px solid var(--line) }
  .nav__links a.cta { margin-top:18px; text-align:center; padding:16px 22px }
  .timeline { padding-left:28px }
  .tstep { grid-template-columns:44px 1fr; gap:18px }
  .tstep::before { left:-37px }
  .tstep img { height:36px }
  .hero { min-height:88vh }
  .pagehero { padding:120px 22px 40px }
  .cta { padding:100px 22px }
}
/* ===== ultra parallax (index) ===== */
@keyframes wipeUp { from{transform:translateY(0)} to{transform:translateY(-101%)} }
@keyframes bandL { from{transform:translateX(0)} to{transform:translateX(-50%)} }
@keyframes growX { from{transform:scaleX(0)} to{transform:scaleX(1)} }
@keyframes heroZoom { from{transform:scale(1.28)} to{transform:scale(1)} }
@keyframes heroTitleOut { from{transform:scale(1); opacity:1; filter:blur(0)} to{transform:scale(2.1); opacity:0; filter:blur(8px)} }
@keyframes heroFadeOut { from{opacity:1; transform:translateY(0)} to{opacity:0; transform:translateY(-90px)} }
@keyframes driftL { from{transform:translateX(6%)} to{transform:translateX(-14%)} }
@keyframes driftR { from{transform:translateX(-14%)} to{transform:translateX(6%)} }
@keyframes pimgY { from{transform:translateY(-7%) scale(1.12)} to{transform:translateY(7%) scale(1.12)} }
@keyframes hslide { from{transform:translateX(0)} to{transform:translateX(calc(-100% + 100vw))} }
@keyframes colUp { from{transform:translateY(70px)} to{transform:translateY(-70px)} }
@keyframes colDown { from{transform:translateY(-70px)} to{transform:translateY(70px)} }
@keyframes fromL { from{opacity:0; transform:translateX(-16vw)} to{opacity:1; transform:translateX(0)} }
@keyframes fromR { from{opacity:0; transform:translateX(16vw)} to{opacity:1; transform:translateX(0)} }
.wipe { position:fixed; inset:0; background:var(--red); z-index:200; animation:wipeUp .8s cubic-bezier(.75,0,.2,1) .55s forwards; pointer-events:none }
.progress { position:fixed; top:0; left:0; right:0; height:3px; background:var(--red); transform-origin:0 50%; transform:scaleX(0); z-index:99; animation:growX linear both; animation-timeline:scroll(root) }
.hero-pin { height:230vh; view-timeline-name:--hero }
.hero-sticky { position:sticky; top:0; height:100vh; overflow:hidden; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center }
.hero-bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:grayscale(1) contrast(1.15) brightness(.6); animation:heroZoom linear both; animation-timeline:--hero; animation-range:contain 0% contain 100% }
.hero-title { animation:heroTitleOut linear both; animation-timeline:--hero; animation-range:contain 10% contain 85% }
.hero-soft { animation:heroFadeOut linear both; animation-timeline:--hero; animation-range:contain 5% contain 55% }
.marquee { background:var(--red); overflow:hidden; padding:12px 0; position:relative; z-index:2 }
.marquee > div { display:flex; width:max-content; animation:bandL 30s linear infinite; font-family:'Archivo',sans-serif; font-weight:800; text-transform:uppercase; font-size:15px; letter-spacing:.14em; color:#fff; white-space:nowrap }
.marquee span { padding:0 24px }
.marquee span.dot { padding:0 }
.ghost-drift-l { animation:driftL linear both; animation-timeline:view() }
.ghost-drift-r { animation:driftR linear both; animation-timeline:view() }
.pwrap { overflow:hidden; position:absolute; inset:0 }
.pimg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; animation:pimgY linear both; animation-timeline:view() }
.hsec { height:420vh; view-timeline-name:--hsteps }
.hsec-sticky { position:sticky; top:0; height:100vh; overflow:hidden; display:flex; flex-direction:column; justify-content:center }
.htrack { display:flex; gap:22px; width:max-content; padding:0 5vw; animation:hslide linear both; animation-timeline:--hsteps; animation-range:contain 0% contain 100% }
.hcard { width:min(560px, 82vw); min-height:46vh; flex-shrink:0; border:1px solid var(--line2); border-radius:8px; background:var(--bg2); padding:44px; display:flex; flex-direction:column; justify-content:space-between; gap:30px }
.hcard .bignum { font-family:'Archivo',sans-serif; font-weight:900; font-size:72px; line-height:1; color:transparent; -webkit-text-stroke:2px var(--red) }
.hcard img.icon { height:56px; filter:invert(1); opacity:.9 }
.hcard h3 { font-weight:800; font-size:24px; margin:0 0 12px; color:#fff }
.hcard p { font-size:16.5px; line-height:1.7; color:rgba(255,255,255,.68); margin:0 }
.hcard--red { background:var(--red); border:none; justify-content:center; gap:26px }
.hcard--red h3 { font-weight:900; font-size:clamp(30px,3vw,44px); line-height:.95; margin:0 }
.hcard--red .btn { background:#fff; color:var(--red); align-self:flex-start }
.hbarwrap { max-width:1100px; margin:36px auto 0; width:100%; padding:0 32px }
.hbarwrap .track { height:2px; background:var(--line2); position:relative; overflow:hidden }
.hbar { position:absolute; inset:0; background:var(--red); transform-origin:0 50%; transform:scaleX(0); animation:growX linear both; animation-timeline:--hsteps; animation-range:contain 0% contain 100% }
.tri { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; align-items:start }
.tri .col { display:grid; gap:18px }
.col-up { animation:colUp linear both; animation-timeline:view(); animation-range:cover 0% cover 100% }
.col-down { animation:colDown linear both; animation-timeline:view(); animation-range:cover 0% cover 100%; margin-top:40px }
.from-l { animation:fromL cubic-bezier(.2,.7,.2,1) both; animation-timeline:view(); animation-range:entry 0% entry 70% }
.from-r { animation:fromR cubic-bezier(.2,.7,.2,1) both; animation-timeline:view(); animation-range:entry 0% entry 70% }
@supports not (animation-timeline: view()) {
  .hero-pin { height:100vh } .hsec { height:auto } .hsec-sticky { position:static; height:auto; padding:100px 0 }
  .htrack { width:auto; flex-wrap:wrap; animation:none } .hcard { flex:1 1 300px; min-height:0 }
  .progress, .hbar { animation:none; transform:scaleX(1) }
  .hero-bg, .hero-title, .hero-soft, .ghost-drift-l, .ghost-drift-r, .pimg, .col-up, .col-down { animation:none }
  .from-l, .from-r { animation:reveal .9s cubic-bezier(.2,.7,.2,1) both }
}
@media (max-width: 900px) { .tri { grid-template-columns:1fr } .col-down { margin-top:0 } .hcard { padding:28px } }
@media (prefers-reduced-motion: reduce) {
  .wipe, .hero-bg, .hero-title, .hero-soft, .ghost-drift-l, .ghost-drift-r, .pimg, .htrack, .col-up, .col-down, .from-l, .from-r, .marquee > div { animation:none !important; opacity:1 !important }
  .hsec { height:auto } .hsec-sticky { position:static; height:auto } .htrack { width:auto; flex-wrap:wrap }
}
