/* ============================================================
   RSMS — light editorial theme, mesh threaded throughout
   Fraunces / Space Grotesk / IBM Plex Mono
   One dark moment: the closing contact band.
   ============================================================ */

:root{
  --paper:#EFF4FB;
  --paper-2:#E5EDF8;
  --card:#FBFDFF;
  --ink:#0B1D33;
  --ink-2:#33506F;
  --ink-3:#6A809A;
  --blue:#1E6FE0;
  --blue-deep:#0D3F86;
  --signal:#00BEF5;
  --line:rgba(11,29,51,0.12);
  --line-soft:rgba(11,29,51,0.07);
  --serif:'Fraunces',Georgia,serif;
  --body:'Space Grotesk',-apple-system,BlinkMacSystemFont,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,monospace;
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;}
body{font-family:var(--body);background:var(--paper);color:var(--ink);line-height:1.65;overflow-x:hidden;font-size:17px;}
a{color:inherit;text-decoration:none;}
.wrap{max-width:1160px;margin:0 auto;padding:0 32px;}

/* reveal */
.reveal{opacity:0;transform:translateY(20px);transition:opacity .8s ease,transform .8s ease;}
.reveal.in{opacity:1;transform:none;}

/* type utilities */
.mono-label{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-2);display:inline-flex;align-items:center;gap:9px;}
.node-dot{width:7px;height:7px;border-radius:50%;background:var(--blue);display:inline-block;flex-shrink:0;}
.node-dot-cyan{background:var(--signal);box-shadow:0 0 9px rgba(0,190,245,0.8);}
.big-serif{font-family:var(--serif);font-weight:600;font-size:clamp(38px,5.2vw,64px);line-height:1.03;letter-spacing:-0.02em;color:var(--ink);}
.muted-serif{color:var(--ink-3);}
.mid-serif{font-family:var(--serif);font-weight:600;font-size:clamp(23px,2.5vw,30px);line-height:1.12;letter-spacing:-0.01em;color:var(--ink);}

/* nav */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;padding:22px 0;transition:all .3s ease;}
.nav.scrolled{background:rgba(239,244,251,0.82);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);padding:13px 0;border-bottom:1px solid var(--line-soft);}
.nav-inner{max-width:1160px;margin:0 auto;padding:0 32px;display:flex;align-items:center;justify-content:space-between;}
.nav-logo-img{height:30px;display:block;}
.nav-links{display:flex;align-items:center;gap:34px;}
.nav-links a{font-size:14px;font-weight:500;color:var(--ink-2);transition:color .2s;}
.nav-links a:hover{color:var(--ink);}
.nav-cta{color:var(--blue) !important;font-weight:600 !important;}
.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:4px;}
.nav-toggle span{width:24px;height:2px;background:var(--ink);border-radius:2px;transition:all .3s;}
.nav-toggle.active span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle.active span:nth-child(2){opacity:0;}
.nav-toggle.active span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
.mobile-menu{display:none;position:fixed;inset:0;background:var(--paper);z-index:99;flex-direction:column;align-items:center;justify-content:center;gap:28px;opacity:0;pointer-events:none;transition:opacity .3s;}
.mobile-menu.open{opacity:1;pointer-events:all;}
.mobile-menu a{font-family:var(--serif);font-size:26px;color:var(--ink);}

/* buttons */
.btn{display:inline-flex;align-items:center;font-family:var(--body);font-size:15px;font-weight:600;padding:14px 28px;border-radius:2px;transition:all .2s;cursor:pointer;border:1px solid transparent;}
.btn-solid{background:var(--ink);color:var(--paper);}
.btn-solid:hover{background:var(--blue-deep);}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line);}
.btn-ghost:hover{border-color:var(--ink);}
.btn-light{background:var(--signal);color:var(--ink);}
.btn-light:hover{background:#fff;}
.btn-lg{padding:17px 38px;font-size:16px;}

/* hero */
.hero{padding:150px 0 96px;position:relative;overflow:hidden;}
.hero-grid{max-width:1160px;margin:0 auto;padding:0 32px;display:grid;grid-template-columns:1.05fr 0.95fr;gap:36px;align-items:center;}
.hero-copy{max-width:560px;}
.hero-head{font-family:var(--serif);font-weight:900;font-size:clamp(52px,8vw,102px);line-height:0.94;letter-spacing:-0.035em;color:var(--ink);margin:26px 0 30px;}
.hero-head em{font-style:italic;font-weight:600;color:var(--blue);}
.hero-sub{font-size:18px;line-height:1.6;color:var(--ink-2);max-width:440px;margin-bottom:36px;}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;}

/* mesh */
.hero-mesh{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.mesh{width:100%;max-width:560px;height:auto;overflow:visible;}
.mesh-group{opacity:0;animation:meshIn 1.5s ease .2s forwards;transform-origin:center;}
.mesh-float{animation:floatY 9s ease-in-out infinite;transform-origin:center;}
.mesh .edges line{stroke:var(--blue);stroke-width:1;opacity:0.30;}
.mesh .edge-live{stroke:var(--signal);opacity:0.55;stroke-width:1.4;}
.mesh .nodes circle{fill:var(--ink);}
.mesh .node-live{fill:var(--signal);}
.mesh .node-hub{filter:drop-shadow(0 0 5px rgba(0,190,245,0.7));animation:hubPulse 2.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
.mesh .bg-nodes circle{fill:var(--ink);opacity:0.13;}
.mesh .pulses .pulse{fill:var(--signal);filter:drop-shadow(0 0 5px rgba(0,190,245,0.9));}
.mesh .pulses .pulse-b{fill:var(--blue);filter:drop-shadow(0 0 4px rgba(30,111,224,0.8));}
.mesh .rings .ring{fill:none;stroke:var(--signal);stroke-width:1.4;opacity:0;transform-origin:522px 82px;animation:ringOut 3.2s ease-out infinite;}
.mesh .rings .ring2{animation-delay:1.05s;}
.mesh .rings .ring3{animation-delay:2.1s;}
.mesh-caption{margin-top:12px;color:var(--ink-3);letter-spacing:0.2em;}

@keyframes meshIn{from{opacity:0;transform:translateY(14px) scale(.985);}to{opacity:1;transform:none;}}
@keyframes floatY{0%,100%{transform:translateY(0);}50%{transform:translateY(-12px);}}
@keyframes hubPulse{0%,100%{transform:scale(1);}50%{transform:scale(1.18);}}
@keyframes ringOut{0%{transform:scale(0.5);opacity:0.6;}100%{transform:scale(3.6);opacity:0;}}

/* bands */
.band{padding:106px 0;position:relative;}
.band-tint{background:var(--paper-2);}
.section-label{margin-bottom:46px;}

/* thesis */
.thesis-row{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;}
.thesis-body p{font-size:17px;line-height:1.75;color:var(--ink-2);margin-bottom:18px;}
.thesis-body p:last-child{margin-bottom:0;}

/* what we build */
.build-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:28px;align-items:end;}
.build-item{border-top:1px solid var(--line);padding-top:26px;}
.build-index{color:var(--blue);margin-bottom:20px;display:block;}
.build-item h3{margin-bottom:16px;}
.build-item p{font-size:16px;line-height:1.7;color:var(--ink-2);}
.build-item-lead p{font-size:18px;}

/* products / flagship (light card) */
.flagship{display:grid;grid-template-columns:1.35fr 0.65fr;gap:32px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:48px 46px;margin-bottom:16px;transition:transform .25s ease,box-shadow .25s ease;box-shadow:0 2px 0 rgba(11,29,51,0.03);}
.flagship:hover{transform:translateY(-3px);box-shadow:0 22px 50px rgba(11,29,51,0.10);}
.flagship-tag{color:var(--ink-2) !important;margin-bottom:20px;}
.flagship-name{font-family:var(--serif);font-weight:600;font-size:clamp(40px,5vw,58px);line-height:1;letter-spacing:-0.02em;color:var(--ink);margin-bottom:14px;}
.flagship-lead{font-size:19px;color:var(--blue);margin-bottom:16px;font-weight:500;}
.flagship-body{font-size:16px;line-height:1.7;color:var(--ink-2);max-width:520px;margin-bottom:26px;}
.flagship-link{display:inline-flex;align-items:center;font-family:var(--mono);font-size:14px;letter-spacing:0.06em;color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:3px;transition:color .2s,border-color .2s;}
.flagship:hover .flagship-link{color:var(--blue);border-color:var(--blue);}
.flagship-node{display:flex;align-items:center;justify-content:center;}
.minimesh{width:100%;max-width:260px;height:auto;overflow:visible;}
.minimesh .mm-edges line{stroke:var(--blue);stroke-width:1;opacity:0.30;}
.minimesh .mm-nodes circle{fill:var(--ink);opacity:0.65;}
.minimesh .mm-hub{fill:var(--signal);filter:drop-shadow(0 0 6px rgba(0,190,245,0.7));animation:hubPulse 2.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
.minimesh .mm-ring{fill:none;stroke:var(--signal);stroke-width:1.4;opacity:0;transform-origin:150px 110px;animation:ringOut 3.2s ease-out infinite;}

/* roadmap — nodes in the network */
.roadmap{list-style:none;}
.roadmap-row{display:grid;grid-template-columns:auto 0.85fr 1.5fr auto;gap:22px;align-items:baseline;padding:26px 4px;border-top:1px solid var(--line);}
.roadmap-row:last-child{border-bottom:1px solid var(--line);}
.roadmap-node{width:11px;height:11px;border-radius:50%;align-self:center;flex-shrink:0;}
.status-dev{background:var(--blue);box-shadow:0 0 10px rgba(30,111,224,0.5);}
.status-research{background:var(--blue);opacity:0.5;}
.status-vision{background:transparent;border:1.5px solid var(--ink-3);}
.roadmap-desc{font-size:15px;color:var(--ink-2);line-height:1.55;}
.roadmap-status{color:var(--ink-3);white-space:nowrap;}

/* approach (light) */
.principles{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);}
.principle{background:var(--paper-2);padding:38px 36px;}
.principle-mark{color:var(--blue);margin-bottom:16px;display:block;font-size:11px;}
.principle-head{font-family:var(--serif);font-weight:600;font-size:26px;letter-spacing:-0.01em;color:var(--ink);margin-bottom:12px;}
.principle p{font-size:16px;line-height:1.7;color:var(--ink-2);}

/* contact — the single dark moment */
.contact{position:relative;background:var(--ink);color:var(--paper);padding:132px 0;text-align:center;overflow:hidden;}
.contact-mesh{position:absolute;inset:0;opacity:0.5;}
.cmesh{width:100%;height:100%;}
.cmesh-edges line{stroke:#4E9BFF;stroke-width:1;opacity:0.28;}
.cmesh-nodes circle{fill:#8FC4FF;opacity:0.55;}
.cnode-live{fill:var(--signal) !important;opacity:1 !important;filter:drop-shadow(0 0 6px rgba(0,190,245,0.9));animation:hubPulse 2.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
.contact-wrap{position:relative;max-width:760px;}
.contact-head{font-family:var(--serif);font-weight:600;font-size:clamp(40px,6vw,72px);line-height:1.0;letter-spacing:-0.025em;color:#fff;margin-bottom:24px;}
.contact-head em{font-style:italic;color:var(--signal);}
.contact-sub{font-size:18px;line-height:1.7;color:rgba(255,255,255,0.72);max-width:520px;margin:0 auto 36px;}

/* footer */
.footer{border-top:1px solid var(--line);padding:44px 0;background:var(--paper);}
.footer-inner{display:flex;align-items:flex-start;justify-content:space-between;gap:28px;flex-wrap:wrap;}
.footer-left{display:flex;align-items:flex-start;gap:16px;max-width:600px;}
.footer-logo{height:26px;opacity:0.75;flex-shrink:0;}
.footer-tag{font-size:13px;color:var(--ink-3);line-height:1.55;}
.footer-right{text-align:right;}
.footer-link{font-family:var(--mono);font-size:14px;color:var(--blue);display:block;margin-bottom:8px;}
.footer-copy{font-family:var(--mono);font-size:12px;color:var(--ink-3);}

/* responsive */
@media(max-width:880px){
  .nav-links{display:none;}
  .nav-toggle{display:flex;}
  .mobile-menu{display:flex;}
  .hero{padding:128px 0 72px;}
  .hero-grid{grid-template-columns:1fr;gap:16px;}
  .hero-mesh{order:-1;margin-bottom:6px;}
  .mesh{max-width:330px;}
  .hero-head{font-size:clamp(52px,15vw,86px);}
  .thesis-row{grid-template-columns:1fr;gap:26px;}
  .build-grid{grid-template-columns:1fr;gap:30px;}
  .flagship{grid-template-columns:1fr;padding:38px 30px;}
  .flagship-node{display:none;}
  .roadmap-row{grid-template-columns:auto 1fr;gap:6px 16px;padding:22px 4px;}
  .roadmap-desc{grid-column:2;}
  .roadmap-status{grid-column:2;justify-self:start;}
  .principles{grid-template-columns:1fr;}
  .band{padding:74px 0;}
  .contact{padding:98px 0;}
  .footer-inner{flex-direction:column;}
  .footer-right{text-align:left;}
}
@media(max-width:460px){
  .wrap,.nav-inner,.hero-grid{padding-left:22px;padding-right:22px;}
  .hero-actions{flex-direction:column;}
  .btn{width:100%;justify-content:center;}
}

/* reduced motion */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .reveal{opacity:1 !important;transform:none !important;transition:none !important;}
  .mesh-group{opacity:1 !important;animation:none !important;}
  .mesh-float{animation:none !important;}
  .mesh .node-hub,.minimesh .mm-hub,.cnode-live{animation:none !important;}
  .mesh .rings .ring,.minimesh .mm-ring{display:none !important;}
  .mesh .pulses .pulse{display:none !important;}
  .flagship:hover{transform:none;}
}
