/* Hence — shared styles. Page-specific rules live in each page's <style> block. */

/* Self-hosted fonts (Google Fonts removed for GDPR/performance) */
@font-face{font-family:'Manrope';src:url('/assets/fonts/manrope-var.woff2') format('woff2');font-weight:200 800;font-style:normal;font-display:swap;}
@font-face{font-family:'IBM Plex Mono';src:url('/assets/fonts/ibmplexmono-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'IBM Plex Mono';src:url('/assets/fonts/ibmplexmono-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;}

:root{
  --navy:#020e2e; --navy-2:#04122f; --navy-deep:#010920; --navy-card:#0a1c44;
  --blue:#3954EE; --blue-soft:#56ABF0; --cyan:#40E2E2; --pink:#FF61FF;
  --white:#fff; --mute:rgba(255,255,255,.68); --mute-2:rgba(255,255,255,.4);
  --line:rgba(255,255,255,.09); --line-2:rgba(255,255,255,.16); --grid:rgba(86,171,240,.07);
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{background:var(--navy);color:var(--white);font-family:'Manrope',system-ui,sans-serif;font-size:17px;line-height:1.55;overflow-x:hidden;-webkit-font-smoothing:antialiased;}
.wrap{width:100%;max-width:1240px;margin:0 auto;padding:0 48px;}
.mono{font-family:'IBM Plex Mono',monospace;letter-spacing:.08em;}
h1,h2,h3,h4{font-family:'Manrope',sans-serif;letter-spacing:-.03em;}
.acc{color:var(--cyan);} .blue{color:var(--blue-soft);}
.reveal{opacity:0;transform:translateY(22px);transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1);}
.reveal.in{opacity:1;transform:none;}

/* NAV */
nav{position:fixed;top:0;left:0;right:0;z-index:100;padding:18px 48px;display:flex;justify-content:space-between;align-items:center;background:rgba(2,14,46,.72);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);}
.logo{display:flex;align-items:center;gap:11px;font-family:'Manrope',sans-serif;font-weight:700;font-size:20px;letter-spacing:-.02em;color:#fff;}
a.logo{text-decoration:none;}
.logo svg{width:25px;height:25px;display:block;}
nav .logo svg{width:32px;height:32px;}
nav .logo{font-size:22px;}
.nav-links{display:flex;gap:30px;align-items:center;}
.nav-links a{color:#fff;text-decoration:none;font-size:14px;font-weight:500;transition:color .2s;}
.nav-links a:hover{color:var(--cyan);}
.nav-links a.active{color:var(--cyan);}
.nav-cta{background:var(--blue);color:#fff!important;padding:10px 18px;border-radius:5px;font-weight:600;font-size:13.5px;transition:background .2s;}
.nav-cta:hover{background:#2a40c0;}

/* HERO — cinematic */
.hero{position:relative;height:100vh;min-height:660px;overflow:hidden;display:flex;align-items:flex-end;background:var(--navy-deep);}
#heroCanvas{position:absolute;inset:0;width:100%;height:100%;}
.hero-vig{position:absolute;inset:0;z-index:1;background:radial-gradient(ellipse at 66% 38%,transparent,rgba(1,9,32,.45) 78%),linear-gradient(to top,rgba(1,9,32,.96),rgba(1,9,32,.1) 52%);pointer-events:none;}
.hero-inner{position:relative;z-index:2;padding:0 0 72px;max-width:780px;}
.hero-ey{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--cyan);margin-bottom:22px;display:flex;align-items:center;gap:11px;opacity:0;animation:fade .8s .2s forwards;}
.hero-ey .dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 0 rgba(64,226,226,.6);animation:ping 2.4s ease-out infinite;}
.hero h1{font-size:clamp(2.5rem,5.8vw,5rem);font-weight:700;line-height:1.0;margin-bottom:22px;opacity:0;animation:rise .9s .35s forwards;}
.hero h1 .acc{color:var(--cyan);}
.hero-sub{font-size:clamp(1.05rem,1.6vw,1.28rem);color:var(--mute);max-width:520px;margin-bottom:32px;line-height:1.55;opacity:0;animation:rise .9s .5s forwards;}
.hero-acts{display:flex;gap:14px;flex-wrap:wrap;opacity:0;animation:rise .9s .65s forwards;}
@keyframes fade{to{opacity:1;}}
@keyframes rise{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(64,226,226,.5);}70%,100%{box-shadow:0 0 0 9px rgba(64,226,226,0);}}
.scroll-cue{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);z-index:2;font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute-2);display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;animation:fade 1s 1.1s forwards;}
.scroll-cue .ln{width:1px;height:30px;background:linear-gradient(var(--cyan),transparent);}

.btn-p{background:var(--blue);color:#fff;padding:15px 28px;border-radius:5px;text-decoration:none;font-weight:600;font-size:15px;display:inline-flex;align-items:center;gap:10px;transition:all .2s;}
.btn-p:hover{background:#2a40c0;transform:translateY(-2px);}
.btn-g{color:#fff;padding:15px 28px;border:1px solid var(--line-2);border-radius:5px;text-decoration:none;font-weight:500;font-size:15px;transition:all .2s;}
.btn-g:hover{border-color:var(--cyan);color:var(--cyan);}

/* SECTION SCAFFOLD */
section{position:relative;}
.sec{padding:120px 0;}
.sec-top{border-top:1px solid var(--line-2);}
.gridbg{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:46px 46px;}
.sec-index{display:flex;align-items:center;gap:14px;font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-bottom:38px;}
.sec-index .n{color:var(--mute-2);} .sec-index .bar{flex:1;height:1px;background:var(--line);}

/* MISSION */
.mission .big{font-family:'Manrope',sans-serif;font-weight:500;font-size:clamp(1.7rem,3.5vw,3.3rem);line-height:1.14;letter-spacing:-.02em;max-width:1000px;}
.mission .big .ul{background:linear-gradient(transparent 62%,rgba(57,84,238,.4) 62%);}
.mission .big .hl{color:var(--cyan);}
.mission-foot{margin-top:48px;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-2);border:1px solid var(--line-2);}
.mf-cell{background:var(--navy);padding:30px 32px;}
.mf-cell strong{font-family:'Manrope',sans-serif;font-weight:600;color:#fff;display:block;margin-bottom:7px;font-size:1.1rem;}
.mf-cell span{color:var(--mute);font-size:14.5px;line-height:1.55;}

/* MODEL — diagram is the hero of this section */
.model{background:var(--navy-2);}
.model-head{max-width:760px;margin-bottom:64px;}
.model-head h2{font-size:clamp(2.1rem,4.4vw,3.6rem);font-weight:700;line-height:1.04;}
.model-head p{color:var(--mute);font-size:1.1rem;margin-top:20px;line-height:1.6;max-width:600px;}
.model-stage{display:grid;grid-template-columns:0.85fr 1.15fr;gap:64px;align-items:center;}
.oar-list{display:flex;flex-direction:column;gap:0;}
.oar-item{padding:26px 0;border-top:1px solid var(--line);display:flex;gap:22px;align-items:flex-start;cursor:default;transition:padding-left .25s;}
.oar-item:last-child{border-bottom:1px solid var(--line);}
.oar-item:hover{padding-left:10px;}
.oar-ic{flex:none;width:46px;height:46px;}
.oar-tx h3{font-size:1.35rem;font-weight:600;margin-bottom:6px;}
.oar-tx .tag{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--blue-soft);}
.oar-tx p{color:var(--mute);font-size:14.5px;line-height:1.55;margin-top:9px;max-width:330px;}
.schematic{position:relative;border:1px solid var(--line-2);background:rgba(1,9,32,.45);border-radius:6px;padding:20px;}
.schematic .cap{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute-2);display:flex;justify-content:space-between;margin-bottom:8px;}
.schematic canvas{width:100%;display:block;border-radius:4px;}
.corner{position:absolute;width:9px;height:9px;border-color:var(--blue-soft);opacity:.5;}
.c-tl{top:9px;left:9px;border-top:1px solid;border-left:1px solid;} .c-tr{top:9px;right:9px;border-top:1px solid;border-right:1px solid;}
.c-bl{bottom:9px;left:9px;border-bottom:1px solid;border-left:1px solid;} .c-br{bottom:9px;right:9px;border-bottom:1px solid;border-right:1px solid;}

/* FOUNDRY — three modes as visual diagram */
.foundry{background:var(--navy-deep);}
.foundry-head{max-width:820px;margin-bottom:18px;}
.foundry-head .statement{font-family:'Manrope',sans-serif;font-weight:600;font-size:clamp(2rem,4.2vw,3.3rem);line-height:1.06;letter-spacing:-.03em;}
.foundry-head .statement .acc{color:var(--cyan);}
.foundry-head .sub{color:var(--mute);font-size:1.08rem;max-width:620px;margin-top:20px;line-height:1.55;}
.modes{margin-top:60px;display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.mode{position:relative;border:1px solid var(--line-2);border-radius:6px;padding:32px 28px 30px;background:linear-gradient(160deg,rgba(57,84,238,.07),transparent 60%);overflow:hidden;transition:transform .25s,border-color .25s;}
.mode:hover{transform:translateY(-4px);border-color:rgba(64,226,226,.4);}
.mode .mviz{height:80px;margin-bottom:22px;}
.mode .mtag{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--blue-soft);margin-bottom:10px;}
.mode h4{font-size:1.3rem;font-weight:600;margin-bottom:11px;}
.mode p{color:var(--mute);font-size:14px;line-height:1.55;}

/* ARC — visual timeline */
.arc-head{max-width:720px;margin-bottom:20px;}
.arc-head h2{font-size:clamp(2.1rem,4.4vw,3.6rem);font-weight:700;line-height:1.04;}
.arc-head p{color:var(--mute);font-size:1.08rem;margin-top:20px;line-height:1.6;max-width:600px;}
.timeline{margin-top:64px;position:relative;}
.tl-track{position:absolute;top:46px;left:8%;right:8%;height:2px;background:linear-gradient(90deg,var(--blue),var(--blue-soft),var(--cyan));opacity:.4;}
.tl-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;position:relative;}
.tl-step{text-align:left;}
.tl-node{width:18px;height:18px;border-radius:50%;background:var(--cyan);margin-bottom:42px;position:relative;box-shadow:0 0 0 6px rgba(64,226,226,.12);}
.tl-step:nth-child(2) .tl-node{background:var(--blue-soft);box-shadow:0 0 0 6px rgba(86,171,240,.12);}
.tl-step:nth-child(3) .tl-node{background:var(--blue);box-shadow:0 0 0 6px rgba(57,84,238,.12);}
.tl-week{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.1em;color:var(--blue-soft);margin-bottom:8px;}
.tl-step h3{font-size:1.55rem;font-weight:600;margin-bottom:16px;}
.tl-step ul{list-style:none;display:flex;flex-direction:column;gap:10px;}
.tl-step li{font-size:14px;line-height:1.5;color:var(--mute);padding-left:18px;position:relative;}
.tl-step li::before{content:"";position:absolute;left:0;top:9px;width:7px;height:1px;background:var(--cyan);}
.arc-link{display:inline-flex;align-items:center;gap:8px;margin-top:52px;color:var(--cyan);text-decoration:none;font-weight:600;font-size:15px;border-bottom:1px solid transparent;padding-bottom:2px;transition:border-color .2s;}
.arc-link:hover{border-color:var(--cyan);}

/* OWN — icon cards */
.own{background:var(--navy-2);}
.own-head{max-width:760px;margin-bottom:18px;}
.own-head h2{font-size:clamp(2.1rem,4.4vw,3.6rem);font-weight:700;line-height:1.04;}
.own-head p{color:var(--mute);font-size:1.08rem;margin-top:20px;line-height:1.6;max-width:640px;}
.own-grid{margin-top:56px;display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.own-card{border:1px solid var(--line-2);border-radius:6px;padding:30px 28px;background:var(--navy);transition:transform .25s,border-color .25s;}
.own-card:hover{transform:translateY(-4px);border-color:rgba(64,226,226,.35);}
.own-ic{width:40px;height:40px;margin-bottom:20px;}
.own-card h3{font-size:1.25rem;font-weight:600;margin-bottom:10px;}
.own-card p{color:var(--mute);font-size:14px;line-height:1.55;}

/* PROOF — visual cluster */
.proof{background:var(--navy-deep);}
.proof-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:64px;align-items:start;}
.proof-quote{font-family:'Manrope',sans-serif;font-weight:500;font-size:clamp(1.5rem,2.8vw,2.4rem);line-height:1.2;letter-spacing:-.02em;}
.proof-quote .mk{color:var(--blue);}
.proof-cite{display:flex;align-items:center;gap:13px;margin-top:26px;}
.proof-cite .nm{font-family:'Manrope',sans-serif;font-weight:600;font-size:1.02rem;}
.proof-cite .ro{font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.06em;color:var(--blue-soft);}
.badges{display:flex;flex-direction:column;gap:14px;}
.badge{border:1px solid var(--line-2);border-radius:6px;padding:20px 22px;background:linear-gradient(150deg,rgba(57,84,238,.08),transparent);display:flex;align-items:center;gap:18px;transition:border-color .25s;}
.badge:hover{border-color:rgba(64,226,226,.4);}
.badge .bic{flex:none;width:36px;height:36px;}
.badge .btx strong{display:block;font-family:'Manrope',sans-serif;font-weight:600;font-size:1rem;margin-bottom:3px;}
.badge .btx span{font-size:13px;color:var(--mute);line-height:1.4;}
.stats{margin-top:64px;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line-2);}
.stat{padding:32px 26px 0;border-right:1px solid var(--line);}
.stat:last-child{border-right:none;}
.stat .sn{font-family:'Manrope',sans-serif;font-weight:700;font-size:2.3rem;letter-spacing:-.03em;line-height:1;margin-bottom:12px;}
.stat .sn .u{color:var(--cyan);}
.stat .sn .pk{color:var(--pink);}
.stat .sl{font-size:13px;line-height:1.45;color:var(--mute);}
.press{margin-top:60px;padding-top:34px;border-top:1px solid var(--line);}
.press-lab{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute-2);margin-bottom:20px;}
.press-row{display:flex;gap:38px;flex-wrap:wrap;align-items:center;}
.press-row span{font-family:'Manrope',sans-serif;font-weight:600;font-size:1.15rem;color:rgba(255,255,255,.5);transition:color .2s;}
.press-row span:hover{color:#fff;}
.press-row img.press-logo,.press-row svg.press-logo{height:23px;width:auto;opacity:.5;transition:opacity .25s;}
.press-row .press-logo:hover{opacity:1;}

/* CTA */
.cta{text-align:center;position:relative;overflow:hidden;}
.cta::before{content:"";position:absolute;top:50%;left:50%;width:780px;height:780px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(57,84,238,.17),transparent 60%);pointer-events:none;}
.cta-inner{position:relative;z-index:2;max-width:780px;margin:0 auto;}
.cta h2{font-size:clamp(2.3rem,4.8vw,4rem);font-weight:700;line-height:1.02;margin-bottom:22px;}
.cta p{color:var(--mute);font-size:1.12rem;line-height:1.6;max-width:560px;margin:0 auto 36px;}

/* FOOTER */
footer{background:var(--navy-deep);padding:66px 48px 32px;border-top:1px solid var(--line);}
.foot-grid{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:56px;margin-bottom:56px;}
.foot-brand p{color:var(--mute);font-size:14.5px;max-width:340px;margin-top:16px;line-height:1.5;}
.foot-col h4{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin-bottom:18px;font-weight:500;}
.foot-col a{display:block;color:#fff;text-decoration:none;font-size:14.5px;margin-bottom:9px;opacity:.85;transition:opacity .2s;}
.foot-col a:hover{opacity:1;color:var(--cyan);}
.foot-bottom{max-width:1240px;margin:0 auto;display:flex;justify-content:space-between;padding-top:26px;border-top:1px solid var(--line);font-size:13px;color:var(--mute-2);}

/* LIGHT BAND — light relief sections between the navy. A 2px spectrum
   hairline (blue→cyan→pink) marks the transition; add .no-spec to omit it. */
.light-band{position:relative;background:linear-gradient(180deg,#fdfeff,#e9f3fe);color:var(--navy);}
.light-band::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--blue),var(--cyan) 52%,var(--pink));}
.light-band.no-spec::before{display:none;}
.light-band.gridbg{background-image:linear-gradient(rgba(57,84,238,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(57,84,238,.05) 1px,transparent 1px),linear-gradient(180deg,#fdfeff,#e9f3fe);}
.light-band h2,.light-band h3{color:var(--navy);}
.light-band .acc{color:#0428BC;}
.light-band .sec-index{color:#0428BC;}
.light-band .sec-index .n{color:rgba(2,14,46,.35);}
.light-band .sec-index .bar{background:rgba(2,14,46,.12);}
/* shared components restyled for light backgrounds */
.light-band .big{color:var(--navy);}
.light-band .big .hl{color:#0428BC;}
.light-band .mission-foot{background:rgba(2,14,46,.12);border-color:rgba(2,14,46,.12);}
.light-band .mf-cell{background:#fff;}
.light-band .mf-cell strong{color:var(--navy);}
.light-band .mf-cell span{color:rgba(2,14,46,.64);}
.light-band .own-head p{color:rgba(2,14,46,.64);}
.light-band .own-card{background:#fff;border-color:rgba(2,14,46,.12);box-shadow:0 1px 2px rgba(2,14,46,.04);}
.light-band .own-card:hover{border-color:rgba(57,84,238,.45);}
.light-band .own-card p{color:rgba(2,14,46,.64);}

/* Respect the OS "reduce motion" accessibility setting */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
  .reveal{opacity:1;transform:none;}
}

@media(max-width:920px){
  nav{padding:14px 20px;} .nav-links a:not(.nav-cta){display:none;}
  .wrap{padding:0 22px;} .sec{padding:80px 0;}
  .hero-inner{padding:0 0 56px;} .hero{min-height:600px;}
  .mission-foot{grid-template-columns:1fr;}
  .model-stage{grid-template-columns:1fr;gap:40px;}
  .modes,.own-grid{grid-template-columns:1fr;}
  .tl-track{display:none;} .tl-steps{grid-template-columns:1fr;gap:40px;}
  .tl-node{margin-bottom:20px;}
  .proof-grid{grid-template-columns:1fr;gap:40px;}
  .stats{grid-template-columns:1fr 1fr;} .stat{border-bottom:1px solid var(--line);padding-bottom:24px;}
  .foot-grid{grid-template-columns:1fr 1fr;gap:36px;}
  .scroll-cue{display:none;}
}
