:root{
  --paper:#F3F6FB; --ink:#14213A; --navy:#0F2B5E; --navy-deep:#0A1F45;
  --water:#1E88A8; --water-soft:#E4F0F6; --amber:#C06A2E; --green:#2E7D5B;
  --line:#DAE2EE; --mut:#5B6B85;
  --sans:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:ui-monospace,'SF Mono','JetBrains Mono',Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.6;-webkit-font-smoothing:antialiased}
.wrap{max-width:1040px;margin:0 auto;padding:0 22px}
section{padding:64px 0}
h1,h2,h3{text-wrap:balance;letter-spacing:-.02em;line-height:1.08;margin:0}
p{margin:0}
img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:2px solid var(--water);outline-offset:2px;border-radius:4px}

.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--water);font-weight:600}
.kicker{margin-bottom:10px}
h2{font-size:clamp(26px,3.6vw,38px);font-weight:800;color:var(--navy)}
.lead{font-size:clamp(17px,2.1vw,20px);color:var(--mut);max-width:60ch}
.sect-lead{margin-top:16px;font-size:16.5px;color:var(--mut)}
.rule{height:1px;background:var(--line);border:0;margin:0}
.fill{font-family:var(--mono);font-size:.82em;color:var(--amber);background:#FBEEE3;border:1px dashed #E4C3A6;border-radius:6px;padding:1px 7px;white-space:nowrap}

/* header */
.site-head{position:sticky;top:0;z-index:20;background:rgba(243,246,251,.9);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--navy);text-decoration:none;font-size:18px;letter-spacing:-.01em}
.brand img{width:30px;height:30px}
.nav{display:flex;gap:22px;align-items:center}
.nav a{text-decoration:none;color:var(--mut);font-size:14.5px;font-weight:500}
.nav a:hover{color:var(--navy)}
.nav .btn{padding:9px 16px}
@media(max-width:640px){.nav a:not(.btn){display:none}}

/* buttons */
.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.btn{font-family:var(--sans);font-weight:600;font-size:15px;text-decoration:none;border-radius:12px;padding:13px 22px;display:inline-flex;align-items:center;gap:9px;cursor:pointer;border:0}
.btn.primary{background:var(--navy);color:#fff}
.btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--line)}
.btn:hover{filter:brightness(1.04)}

/* hero */
.hero{padding-top:44px;padding-bottom:24px}
.hero .grid2{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:center}
.hero h1{font-size:clamp(32px,5.4vw,56px);font-weight:800;color:var(--navy);margin:14px 0 18px}
.hero .lead{font-size:clamp(17px,2.3vw,21px)}

/* phone mockup */
.phone{position:relative;width:100%;max-width:360px;margin:0 auto;aspect-ratio:1170/2532;background:#0B1E40;border-radius:40px;padding:11px;box-shadow:0 30px 70px rgba(15,43,94,.28);border:1px solid #223a63}
.phone .screen img{image-rendering:auto}
.phone::before{content:"";position:absolute;top:16px;left:50%;transform:translateX(-50%);width:96px;height:26px;background:#0B1E40;border-radius:16px;z-index:3}
.phone .screen{position:relative;width:100%;height:100%;border-radius:28px;overflow:hidden;background:var(--water-soft)}
.phone .screen img{width:100%;height:100%;object-fit:cover;object-position:top}
.phone .ph-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:24px;color:var(--water);background:linear-gradient(180deg,#EAF3F7,#DCEBF1)}
.phone .ph-ph .mono{font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:#3E7C93}
.phone.noimg .screen img{display:none}
.phone:not(.noimg) .ph-ph{display:none}

/* lifecycle timeline */
.stage{margin:36px 0 0;background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px 24px;box-shadow:0 10px 30px rgba(15,43,94,.05)}
.stage .lab-top{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin-bottom:14px;display:flex;gap:8px;align-items:center}
.track-wrap{overflow-x:auto}
.track{display:flex;min-width:520px}
.stepc{flex:1;position:relative;padding-top:22px;text-align:center}
.stepc::before{content:"";position:absolute;top:7px;left:0;right:0;height:2px;background:var(--line)}
.stepc:first-child::before{left:50%}.stepc:last-child::before{right:50%}
.stepc .dot{position:absolute;top:2px;left:50%;transform:translateX(-50%);width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid var(--water)}
.stepc.warn .dot{border-color:var(--amber)}.stepc.done .dot{border-color:var(--green);background:var(--green)}
.stepc .l{font-family:var(--mono);font-size:11.5px;color:var(--ink)}
.stepc .s{font-size:11px;color:var(--mut);margin-top:1px}

/* two-col + specs */
.two{display:grid;grid-template-columns:1.1fr .9fr;gap:44px;align-items:center}
.specs{list-style:none;margin:22px 0 0;padding:0;display:flex;flex-direction:column;gap:12px}
.specs li{display:flex;gap:12px;align-items:flex-start;font-size:15px}
.specs .tick{flex:none;width:22px;height:22px;border-radius:7px;background:var(--water-soft);color:var(--water);display:grid;place-items:center;margin-top:1px}
.specs .tick svg{width:14px;height:14px}
.specs .todo{background:#FBEEE3;color:var(--amber);font-weight:700}

/* dark app band */
.band{background:linear-gradient(180deg,var(--navy),var(--navy-deep));color:#EAF1FA}
.band .eyebrow{color:#7FC4DC}.band h2{color:#fff}.band .sect-lead{color:#B9C8DE}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:34px}
.feat{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.10);border-radius:16px;padding:20px}
.feat .ic{width:38px;height:38px;border-radius:10px;background:rgba(126,196,220,.16);color:#9FD6EA;display:grid;place-items:center;margin-bottom:12px}
.feat .ic svg{width:20px;height:20px}
.feat h3{font-size:16px;color:#fff;letter-spacing:-.01em}
.feat p{font-size:13.5px;color:#B9C8DE;margin-top:6px;line-height:1.55}

/* value */
.vals{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:32px}
.val{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;border-left:3px solid var(--water)}
.val h3{font-size:17px;color:var(--navy)}
.val p{font-size:14.5px;color:var(--mut);margin-top:7px}
.aud{margin-top:26px;background:var(--water-soft);border:1px solid #CFE4EC;border-radius:16px;padding:22px 26px;font-size:16.5px;color:#1B3A46;max-width:72ch}
.aud b{color:var(--navy)}

/* final */
.final{text-align:center;padding-bottom:72px}
.final .cta{justify-content:center}
.foot{border-top:1px solid var(--line);padding:26px 0;color:var(--mut);font-size:13.5px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* demo lightbox */
.lightbox{position:fixed;inset:0;z-index:50;background:rgba(10,25,53,.62);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;padding:24px}
.lightbox.open{display:flex}
.lb-card{background:#fff;border-radius:22px;padding:22px;max-width:420px;width:100%;text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.4)}
.lb-card .cap{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--water);margin-bottom:4px}
.lb-card h3{font-size:19px;color:var(--navy);margin-bottom:14px}
.lb-phone{margin:0 auto 16px}
.lb-nav{display:flex;align-items:center;justify-content:center;gap:16px}
.lb-nav button{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:18px;cursor:pointer;display:grid;place-items:center}
.dots{display:flex;gap:7px;align-items:center}
.dots i{width:7px;height:7px;border-radius:50%;background:var(--line);display:block;transition:background .2s}
.dots i.on{background:var(--water)}
.lb-close{position:absolute;top:18px;right:20px;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.15);color:#fff;border:0;font-size:20px;cursor:pointer}

/* reveal — opacity only. A transform-based reveal promotes the element to a GPU
   layer that can rasterize images blurry on retina; fade avoids that entirely. */
.reveal{opacity:0;transition:opacity .6s ease}
.reveal.in{opacity:1}
@media (prefers-reduced-motion:reduce){.reveal,.reveal.in{opacity:1;transition:none}html{scroll-behavior:auto}}

@media(max-width:760px){
  .hero .grid2,.two{grid-template-columns:1fr;gap:28px}
  .grid,.vals{grid-template-columns:1fr}
  section{padding:48px 0}
  .hero .phone{order:-1}
}
