/* =====================================================================
   TWO-ZONE THEME (loaded last)
   • HERO + backdrop  = dark "blue stage"  → particles glow (additive+bloom)
   • Everything below  = light blue / white  → clean product sections
   The site background is white; the fixed dark #bg shows ONLY through the
   transparent hero, because main (z-index:5) content sections are opaque.
   ===================================================================== */

/* ---- GLOBAL (body + content) : light palette ---- */
:root{
  --bg:#ffffff; --panel:#f4f7fe;
  --ink:#0c142e; --ink-2:#283349; --muted:#56627a; --soft:#8a94a8;
  --line:#e7edf7; --line2:#dbe4f2;
  --accent:#2563eb; --accent-2:#3b82f6;
  --blue:#2563eb; --cyan:#0891b2; --green:#10a56f; --violet:#6366f1;
  --rose:#e11d48;
  --glass:rgba(255,255,255,.7);
}
body{background:#ffffff;color:var(--ink)}

/* =====================================================================
   DARK BLUE ZONE — re-declare the dark variables (and re-resolve `color`)
   on the hero, nav, preloader, glass panels and callouts so their
   light-on-dark text/frosting stays correct against the blue stage.
   ===================================================================== */
#preloader,.nav,.hero,.panels,.glass,.callouts,.callout,.hero-foot{
  color:var(--ink);
  --ink:#f3f6fd; --ink-2:#cdd6e6; --muted:#9aa6bd; --soft:#6a758d;
  --line:rgba(255,255,255,.10); --line2:rgba(255,255,255,.20);
  --glass:rgba(255,255,255,.05);
  --accent:#60a5fa;                 /* bright blue accent for tiny hero UI bits */
}

/* backdrop: near-black with a blue/indigo core glow, matching the logo mark */
#bg{background:
  radial-gradient(60% 52% at 58% 42%, rgba(37,99,235,.32), transparent 64%),
  radial-gradient(46% 40% at 82% 16%, rgba(99,102,241,.18), transparent 70%),
  radial-gradient(48% 46% at 16% 84%, rgba(14,165,233,.18), transparent 70%),
  #05070d}
.vignette{background:radial-gradient(120% 100% at 56% 44%, transparent 46%, rgba(3,5,10,.86) 100%)}
#preloader{background:#05070d}
#matrix{opacity:.6}

/* hero blue accents (eyebrow dot, feed dot, panel dot, scroll cue, form name) */
.eyebrow i{background:#60a5fa;box-shadow:0 0 9px rgba(96,165,250,.7)}
.g-bar .dot{background:#3b82f6;box-shadow:0 0 8px #3b82f6}
.feed li .s{background:#60a5fa;box-shadow:0 0 7px #60a5fa}
.mini{color:#7dd3fc}
.hero-foot #formName{color:#60a5fa}
.scrollcue i{background:linear-gradient(#60a5fa,transparent)}

/* "AI-native" accent word → blue gradient (ties the text to the particle glow) */
h1 .grad{background:linear-gradient(100deg,#60a5fa,#6366f1 55%,#38bdf8);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 0 22px rgba(59,130,246,.32))}

/* hero buttons on the dark stage — solid white primary for max contrast */
.hero .btn.primary{color:#0c142e;background:#fff;border:none;
  box-shadow:0 14px 36px -12px rgba(0,0,0,.5)}
.hero .btn.primary:hover{box-shadow:0 20px 48px -12px rgba(0,0,0,.6)}
.hero .btn.primary .px{background:conic-gradient(#0c142e 0 25%,transparent 0 50%,#0c142e 0 75%,transparent 0);background-size:7px 7px}
.hero .btn.ghost{color:#f3f6fd;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.04)}
.hero .btn.ghost:hover{border-color:#60a5fa;background:rgba(255,255,255,.08)}

/* nav: transparent over the dark hero, then flips to light glass on scroll */
.nav.scrolled{background:rgba(255,255,255,.85);backdrop-filter:blur(14px);
  border-color:var(--line);box-shadow:0 8px 26px -20px rgba(20,40,90,.35)}
.nav.scrolled .brand{color:#0c142e}
.nav.scrolled .nlinks{color:#56627a}
.nav.scrolled .nlinks a:hover{color:#0c142e}
.nav.scrolled .navcta{color:#0c142e;border-color:#dbe4f2}
.nav.scrolled .navcta:hover{color:#2563eb;border-color:#2563eb}

/* "Join us" call-out — bold + accent so it stands out among the regular nav links */
.nlinks .join-link{font-weight:800;color:var(--accent)}
.nlinks .join-link:hover{color:var(--accent)}
.nav.scrolled .join-link{color:#2563eb}
.nav.scrolled .join-link:hover{color:#1d4ed8}
.fnav .join-link{font-weight:700;color:#2563eb}

/* =====================================================================
   LIGHT CONTENT ZONE — opaque sections that cover the dark backdrop.
   ===================================================================== */
.blk{background:#f7faff}
.grad2{background:linear-gradient(100deg,#2563eb,#6366f1);
  -webkit-background-clip:text;background-clip:text;color:transparent}

/* project grid */
.card{background:#fff;border-color:var(--line);box-shadow:0 20px 50px -30px rgba(20,40,90,.22)}
.card .tl{color:var(--muted)}
.pchip{background:rgba(255,255,255,.92);color:var(--ca)}
.t{background:#eef3fc;border-color:var(--line);color:var(--ink-2)}
.slider{background:#e9eef6}
.arr{background:rgba(255,255,255,.94);color:#0c142e;box-shadow:0 6px 16px rgba(20,40,90,.18)}
.arr:hover{color:#2563eb}
.slide.contain img{background:#fff}
.dot{background:rgba(20,40,90,.28)} .dot.on{background:#2563eb}

/* roadmap / founder / support */
.ritem{background:#fff;border-color:var(--line)}
.founder{background:#fff;border-color:var(--line);box-shadow:0 24px 60px -40px rgba(20,40,90,.28)}

/* support — full-bleed blue band (matching the live matily.org donate section) */
.support-band{background:linear-gradient(135deg,#1d4ed8,#2563eb 55%,#3b82f6)}
.support-band .support{border:none;border-radius:0;background:none;padding:8px 20px;max-width:640px;margin:0 auto}
.support-band .kicker{color:rgba(255,255,255,.78)}
.support-band h2{color:#fff}
.support-band p{color:rgba(255,255,255,.82)}
.support-band .support-note{color:rgba(255,255,255,.72);font-size:14px;margin-top:20px}
.support-band .support-note a{color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:3px}

/* footer */
.site{background:#f6f9ff;border-color:var(--line)}
.fnav a:hover{color:#2563eb} .founder .fl a:hover{color:#2563eb}

/* support/section ghost + primary buttons on white */
.blk .btn.primary{color:#fff;background:linear-gradient(180deg,#3b82f6,#2563eb);border:none;
  box-shadow:0 12px 30px -12px rgba(37,99,235,.6)}
.blk .btn.primary .px{background:conic-gradient(#fff 0 25%,transparent 0 50%,#fff 0 75%,transparent 0);background-size:7px 7px}
.blk .btn.ghost{color:#0c142e;border:1px solid var(--line2);background:#fff}
.blk .btn.ghost:hover{border-color:#2563eb;color:#2563eb}

/* support-band buttons override the generic .blk button treatment above (same
   specificity — must come later in source order to win the cascade) */
.support-band .btn.primary{color:#1d4ed8;background:#fff;display:inline-flex;align-items:center;gap:8px;
  box-shadow:0 16px 36px -16px rgba(8,15,40,.5)}
.support-band .btn.primary:hover{box-shadow:0 20px 44px -16px rgba(8,15,40,.6);color:#1d4ed8}
.support-band .btn.primary .heart{width:16px;height:16px;fill:#e11d48}
.support-band .btn.ghost{color:#fff;border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.08)}
.support-band .btn.ghost:hover{background:rgba(255,255,255,.16);border-color:#fff;color:#fff}

/* =====================================================================
   FEATURED PROJECT — editorial split, dark terminal mockup with a
   scroll-triggered typing animation (js/sections.js:initFeaturedTyping).
   ===================================================================== */
.fp-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:44px;align-items:center}
@media(max-width:900px){.fp-grid{grid-template-columns:1fr}}

.fp-title{font-size:clamp(30px,4vw,44px);font-weight:800;letter-spacing:-1px;margin:10px 0 12px;color:var(--ink)}
.fp-quote{font-size:15.5px;font-style:italic;color:var(--ink-2);margin:0 0 14px;
  padding-left:14px;border-left:3px solid var(--line2)}
.fp-body{color:var(--muted);font-size:15px;line-height:1.6;margin:0 0 18px;max-width:520px}
.fp-checks{list-style:none;display:grid;gap:10px;margin:0 0 20px;padding:0}
.fp-checks li{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--ink-2)}
.fp-checks svg{width:17px;height:17px;flex:none;margin-top:1px;fill:none;stroke:#2563eb;
  stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.fp-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 22px}
.fp-chips-label{font-size:12.5px;color:var(--soft);margin-right:2px}
.fp-chip{font-family:var(--mono);font-size:11.5px;font-weight:600;padding:5px 11px;border-radius:999px;
  background:#eef3fc;border:1px solid var(--line);color:var(--ink-2)}

.fp-term-wrap{position:relative}
.fp-term{background:#0d1117;border-radius:12px;overflow:hidden;
  box-shadow:0 30px 70px -36px rgba(20,40,90,.4);border:1px solid rgba(255,255,255,.06)}
.fp-term-bar{display:flex;align-items:center;gap:7px;padding:11px 14px;background:#161b22;
  border-bottom:1px solid rgba(255,255,255,.05)}
.fp-term-bar span{width:10px;height:10px;border-radius:50%;flex:none}
.fp-term-bar .r{background:#ff5f56}.fp-term-bar .y{background:#ffbd2e}.fp-term-bar .g{background:#27c93f}
.fp-term-cmd{margin-left:10px;font-family:var(--mono);font-size:11px;color:#6e7681;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fp-term-body{padding:18px 20px 22px;font-family:var(--mono);font-size:12.5px;line-height:1.85;color:#8b949e}
.fp-term-line{white-space:pre-wrap;min-height:1.85em}
.fp-term-line.accent{color:#58a6ff}
.fp-term-line.file{color:#e6edf3}
.fp-term-line.warn{color:#d29922}
.fp-term-line.dim{color:#6e7681;font-size:11.5px}
.fp-term-line.good{color:#3fb950}
.fp-term-gap{height:.6em}
.fp-term-cursor{display:inline-block;width:7px;height:14px;background:#58a6ff;vertical-align:-2px;
  animation:fpBlink 1s step-end infinite}
@keyframes fpBlink{50%{opacity:0}}

/* =====================================================================
   MODAL — light sheet over the content.
   ===================================================================== */
.modal .backdrop{background:rgba(210,222,244,.55)}
.sheet{background:#fff;border:1px solid var(--line2);box-shadow:0 40px 100px -40px rgba(20,40,90,.4)}
.close{background:#eef3fc;color:#0c142e}
.mtl{color:var(--muted)} .feat li{color:var(--ink-2)}
.mlinks .pri{background:linear-gradient(180deg,#3b82f6,#2563eb);color:#fff}
.mlinks .sec{border-color:var(--line2);color:#0c142e}
.mlinks .sec:hover{border-color:#2563eb;color:#2563eb}

/* =====================================================================
   ROADMAP — vertical timeline (concept B) with scroll draw-in line.
   ===================================================================== */
.rs.dev{color:#0c447c;background:#e6f1fb}
.rs.concept{color:#3c3489;background:#eeedfe}
.rs.open{color:#27500a;background:#eaf3de}

.tl{position:relative;list-style:none;padding:0;margin:8px auto 0;max-width:660px}
.tl.reveal{opacity:1;transform:none}            /* container stays put; the line draws instead */

/* connector segment per item (last item has none) — all draw together on reveal */
.tl-item:not(:last-child)::before{content:"";position:absolute;left:17px;top:20px;bottom:-16px;width:2px;
  background:var(--line2);transform:scaleY(0);transform-origin:top;
  transition:transform .8s cubic-bezier(.4,0,.2,1)}
.tl.in .tl-item::before{transform:scaleY(1)}

.tl-item{position:relative;display:flex;gap:18px;align-items:flex-start;padding:0 0 30px}
.tl-item:last-child{padding-bottom:0}
.tl-node{position:relative;z-index:1;flex:none;width:37px;height:37px;border-radius:50%;
  display:grid;place-items:center;background:#fff;border:1px solid var(--line);
  box-shadow:0 5px 16px -7px rgba(20,40,90,.28)}
.tl-node svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.tl-item.dev .tl-node{background:#e6f1fb;border-color:#b5d4f4;color:#0c447c}
.tl-item.concept .tl-node{background:#eeedfe;border-color:#cecbf6;color:#3c3489}
.tl-item.open .tl-node{background:#eaf3de;border-color:#c0dd97;color:#27500a}
.tl-card{padding-top:1px}
.tl-card h4{font-size:18px;font-weight:700;margin:9px 0 5px;color:var(--ink)}
.tl-card p{color:var(--muted);font-size:14.5px;max-width:560px;line-height:1.55}

/* =====================================================================
   FOUNDER — editorial split, natural portrait in a gradient-glow frame.
   ===================================================================== */
.founder{gap:38px}
.fphoto{position:relative;width:210px;flex:none}
.fphoto::before{content:"";position:absolute;inset:-9px;border-radius:26px;z-index:0;
  background:linear-gradient(140deg,#2563eb,#6366f1 46%,#06b6d4);
  filter:blur(17px);opacity:.55;animation:fglow 6.5s ease-in-out infinite}
@keyframes fglow{50%{opacity:.82;filter:blur(22px)}}
.fphoto-crop{position:relative;z-index:1;width:100%;aspect-ratio:1/1.12;overflow:hidden;
  border-radius:18px;border:3px solid #fff;box-shadow:0 22px 54px -26px rgba(20,40,90,.55)}
/* source photo is already a tight headshot — plain cover, no zoom needed */
.fphoto-crop img{width:100%;height:100%;object-fit:cover;display:block}
.fphoto-fallback{display:none}
/* graceful fallback until img/founder.jpg exists */
.fphoto.noimg .fphoto-crop{display:none}
.fphoto.noimg{width:210px;height:236px}
.fphoto.noimg::after{content:"";position:absolute;inset:0;z-index:1;border-radius:18px;
  border:3px solid #fff;background:conic-gradient(from 200deg,#2563eb,#06b6d4,#6366f1,#2563eb)}
.fphoto.noimg .fphoto-fallback{display:grid;place-items:center;position:absolute;inset:0;z-index:2;
  color:#fff;font-weight:900;font-size:52px;letter-spacing:1px}

.fbody{min-width:0}
.fchips{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0 6px}
.fchip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;
  font-family:var(--mono);letter-spacing:.2px;padding:6px 12px;border-radius:999px}
.fchip svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.fchip.b{background:#e6f1fb;color:#0c447c}
.fchip.p{background:#eeedfe;color:#3c3489}
.fchip.t{background:#e1f5ee;color:#0f6e56}

/* =====================================================================
   ABOUT — 4-up value-prop grid.
   ===================================================================== */
.about-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-top:36px}
.about-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px 22px}
.about-ic{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;
  border-radius:12px;background:#e6f1fb;color:#0c447c;margin-bottom:14px}
.about-ic svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.about-card h4{font-size:16.5px;font-weight:700;color:var(--ink);margin-bottom:6px}
.about-card p{color:var(--muted);font-size:13.5px;line-height:1.55}

/* =====================================================================
   CONTACT — 3-up link cards.
   ===================================================================== */
.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:18px;margin-top:36px}
.contact-card{display:block;background:#fff;border:1px solid var(--line);border-radius:16px;
  padding:22px;text-align:left;transition:transform .2s cubic-bezier(.2,.7,.2,1),box-shadow .2s,border-color .2s}
.contact-card:hover{transform:translateY(-4px);border-color:#2563eb;
  box-shadow:0 20px 46px -30px rgba(37,99,235,.5)}
.contact-card h4{font-size:15.5px;font-weight:700;color:var(--ink);margin:4px 0 3px}
.contact-card p{color:var(--muted);font-size:13.5px}

/* =====================================================================
   JOIN OUR TEAM — apply panel (right side of the editorial split).
   ===================================================================== */
.join-panel{background:#f4f7fe;border:1px solid var(--line);border-radius:16px;padding:34px 28px;text-align:center}
.join-panel-kick{font-size:16px;font-weight:700;color:var(--ink);margin-bottom:8px}
.join-panel p{font-size:13.5px;color:var(--muted);line-height:1.55;margin-bottom:18px}
.join-email{background:#fff;border:1px solid var(--line);border-radius:9px;padding:11px;
  font-family:var(--mono);font-size:13px;color:#2563eb;margin-bottom:16px;word-break:break-all}
.join-btn{width:100%;justify-content:center}

@media(max-width:680px){.fphoto,.fphoto.noimg{width:190px;margin:0 auto}.fchips{justify-content:center}}
