:root{--navy:#0F2747;--navy2:#23406A;--blue:#1F4FD1;--yellow:#FFC425;--ground:#F3F5F8;--line:#D5DCE6;--muted:#4A5D78;--soft:#C9D6EA;--good:#15803D}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--ground);color:var(--navy);font-family:"IBM Plex Sans",system-ui,sans-serif;font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--blue)}a:hover{color:var(--navy)}
:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
svg{max-width:100%}
.wrap{max-width:1240px;margin:0 auto;padding:0 24px}
.skip{position:absolute;left:-999px;top:8px;background:var(--yellow);color:var(--navy);padding:10px 14px;z-index:99}.skip:focus{left:8px}
h1,h2{margin:0;font-weight:600;letter-spacing:-.02em;line-height:1.06}
h1{font-size:clamp(38px,5vw,58px)}
h2{font-size:clamp(28px,3.4vw,40px)}
p{margin:0}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:15px;letter-spacing:.06em;color:var(--blue);margin:0 0 12px}
.lede{font-size:20px;line-height:1.6;color:var(--muted);margin-top:20px;max-width:640px}
.body{color:var(--muted);margin-top:16px}
.small{font-size:16px;color:var(--muted)}
.mono{font-family:"IBM Plex Mono",monospace;font-size:14px;color:var(--muted);letter-spacing:.04em}
.btn{display:inline-block;font:inherit;font-weight:600;font-size:17px;padding:15px 24px;text-decoration:none;border:1.5px solid transparent;cursor:pointer;text-align:center}
.btn-blue{background:var(--blue);color:#fff}.btn-blue:hover{background:#1A43B3;color:#fff}
.btn-navy{background:var(--navy);color:#fff;padding:12px 18px}.btn-navy:hover{background:var(--navy2);color:#fff}
.btn-line{border-color:var(--navy);color:var(--navy)}.btn-line:hover{background:var(--navy);color:#fff}
.btn-yellow{background:var(--yellow);color:var(--navy)}.btn-yellow:hover{background:#FFD45C;color:var(--navy)}
.btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.ghost-btn{font:inherit;font-family:"IBM Plex Mono",monospace;font-size:14px;color:#fff;background:transparent;border:1px solid #4A6A96;padding:8px 14px;min-height:42px;cursor:pointer}
.ghost-btn:hover{border-color:#fff}

/* header */
.hdr{background:#fff;border-bottom:1px solid var(--line);position:relative;z-index:20}
.hdr-in{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between;padding-top:14px;padding-bottom:14px}
.brand{display:flex;gap:12px;align-items:center;color:var(--navy);text-decoration:none}
.brand span{display:flex;flex-direction:column;line-height:1}
.brand b{font-weight:700;font-size:18px;letter-spacing:.14em}
.brand small{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.1em;color:var(--muted);margin-top:5px}
.nav{display:flex;flex-wrap:wrap;gap:4px 26px;align-items:center;font-size:16px;font-weight:500}
.nav a.nl,.nav summary{color:var(--navy);text-decoration:none;padding:10px 0;cursor:pointer}
.nav a[aria-current=page]{color:var(--blue)}
.dd{position:relative}.dd summary{list-style:none}.dd summary::-webkit-details-marker{display:none}.dd summary::after{content:" ▾";font-size:12px}
.menu{position:absolute;top:100%;left:-14px;background:#fff;border:1px solid var(--line);box-shadow:0 18px 40px rgba(15,39,71,.14);padding:8px;min-width:280px;display:grid}
.menu a{color:var(--navy);text-decoration:none;padding:11px 12px}.menu a:hover,.menu a[aria-current=page]{background:var(--ground)}
@media (max-width:700px){.nav .nl{display:none}.menu{position:absolute;right:0;left:auto}}

/* hero */
.hero{padding:56px 0 72px}
.hero-text{padding:72px 0 64px}
.hero-in{display:flex;flex-wrap:wrap;gap:44px;align-items:flex-start}
.hero-copy{flex:1 1 400px;min-width:0}
.hero-stage{flex:1.4 1 560px;min-width:0}
.pick{margin:30px 0 8px;font-size:16px;font-weight:600}
.tabs{display:grid;border-top:1px solid var(--line)}
.tab{font:inherit;font-size:18px;font-weight:500;text-align:left;padding:13px 12px;min-height:50px;cursor:pointer;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--navy)}
.tab .n{font-family:"IBM Plex Mono",monospace;font-size:14px;color:var(--muted);display:inline-block;width:36px}
.tab[aria-selected=true]{background:var(--yellow);font-weight:600}
.tab:hover{background:#FFF3CC}
.trust{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:6px;font-size:16px;color:var(--muted)}
.trust li::before{content:"— "}

/* stage */
.stage-ctrl{display:flex;justify-content:flex-end;margin-bottom:8px}
.stage-ctrl .ghost-btn{color:var(--navy);border-color:var(--line);background:#fff}
.stage{background-color:var(--navy);background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:24px 24px;padding:18px}
.stage[hidden]{display:none}
.stage-top{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;font-family:"IBM Plex Mono",monospace;font-size:14px;letter-spacing:.06em;color:var(--soft);padding:0 4px 10px;min-height:42px}
.stage svg{display:block;width:100%;height:auto}
.cap{border-top:1px solid #2B4A75;margin-top:12px;padding:14px 4px 2px;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:18px}
.cap s{color:#9FB3D1}.cap span{color:#fff;font-weight:600}

/* sections */
.sec{padding:72px 0}
.white{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-top:32px}
.cards.three{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.cards.two{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}
.card{display:flex;flex-direction:column;gap:10px;background:#fff;padding:26px;color:var(--navy);text-decoration:none}
a.card:hover{background:#FFFBEB}
.card .ct{font-size:21px;font-weight:600;line-height:1.25}
.card .cd{font-size:17px;line-height:1.55;color:var(--muted)}
.card .more{margin-top:auto;font-weight:600;color:var(--blue)}
.card-dash{background:var(--ground)}
.card.navy{background:var(--navy);color:#fff}.card.navy .cd,.card.navy .mono{color:var(--soft)}
.steps{list-style:none;padding:0;margin:36px 0 0;display:grid;gap:32px;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.steps li{display:flex;flex-direction:column;gap:8px;border-top:3px solid var(--navy);padding-top:18px}
.steps b{font-size:21px;font-weight:600}.steps li>span:last-child{color:var(--muted);font-size:17px}
.steps .mono{color:var(--blue)}
.split{display:flex;flex-wrap:wrap;gap:44px;align-items:flex-start}.split>*{flex:1 1 440px;min-width:0}
.lbl{font-size:15px;font-weight:600;color:var(--muted);margin:0 0 10px}
.chips{display:flex;flex-wrap:wrap;gap:8px}.chips span{border:1px solid var(--line);background:var(--ground);padding:8px 14px;font-size:15px}
.chips .hi{background:var(--yellow);border-color:var(--yellow);font-weight:600}
.mods{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:8px}.mods span{background:var(--navy);color:#fff;padding:13px 14px;font-weight:500;font-size:15px}
.links{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px;font-weight:600}
.checks{list-style:none;padding:0;margin:0;display:grid;gap:14px}
.checks li{padding-left:36px;position:relative;font-size:18px}
.checks li::before{content:"";position:absolute;left:0;top:2px;width:24px;height:24px;background:var(--good) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.5 12.5l3.5 3.5 7.5-8' stroke='white' stroke-width='2.4' fill='none'/%3E%3C/svg%3E") center no-repeat}
.price-band{background:var(--navy);color:#fff;padding:40px;display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between}
.price-band>div{flex:1 1 440px}.price-band p{color:var(--soft);margin-top:10px}
.faq{display:grid;gap:10px;margin-top:28px;max-width:880px}
.faq details{background:var(--ground);border:1px solid var(--line);padding:18px 22px}
.faq summary{cursor:pointer;font-weight:600;font-size:18px}.faq details p{margin-top:12px;color:var(--muted)}
.prose{max-width:780px}.prose h1{margin-bottom:8px}.prose h2{font-size:26px;margin:36px 0 10px}.prose p{color:var(--muted)}

/* demo form */
.demo{background:var(--navy);color:#fff;padding:72px 0}
.demo-in{display:flex;flex-wrap:wrap;gap:44px}
.demo-copy{flex:1 1 360px}.demo-copy .eyebrow{color:var(--yellow)}.demo-copy p{color:var(--soft);margin-top:16px}.demo-copy a{color:var(--yellow)}
.form{flex:1.2 1 440px;min-width:0;display:grid;gap:14px;background:#fff;color:var(--navy);padding:28px}
.form label{display:grid;gap:6px;font-size:15px;font-weight:600}
.form .opt{font-weight:400;color:var(--muted)}
.form input,.form select,.form textarea{font:inherit;font-size:17px;font-weight:400;padding:12px 14px;border:1.5px solid #AAB6C6;background:#fff;color:var(--navy);width:100%}
.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px rgba(31,79,209,.18)}
.row2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:14px}
.hp{position:absolute!important;left:-9999px}
.form-msg{font-weight:600;min-height:1.6em}.form-msg.ok{color:var(--good)}.form-msg.err{color:#B42318}

/* footer */
.ftr{background:#0A1C34;color:#9FB3D1;font-size:16px}
.ftr .wrap{padding-top:52px;padding-bottom:28px}
.fgrid{display:grid;gap:32px;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}
.brand-inv{color:#fff}.brand-inv small{color:#9FB3D1}
.fnote{margin-top:14px}.ftr a{color:#C9D6EA;text-decoration:none}.ftr a:hover{color:var(--yellow)}
.ftr h2{font-size:14px;font-family:"IBM Plex Mono",monospace;font-weight:500;letter-spacing:.08em;color:#fff;margin-bottom:12px}
.ftr ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.fbase{border-top:1px solid #1F3655;margin-top:40px;padding-top:20px;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;font-family:"IBM Plex Mono",monospace;font-size:13px}

/* scene animations (9s, play once per showing) */
@keyframes painOut{0%,33%{opacity:1}42%,100%{opacity:0}}
@keyframes fixIn{0%,36%{opacity:0;transform:translateY(14px)}44%,100%{opacity:1;transform:none}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes drain{0%{transform:scaleX(1);fill:#5BE3A0}14%{fill:#FFC425}26%,100%{transform:scaleX(.06);fill:#FF6B5B}}
@keyframes alarm{0%,18%{opacity:0}21%,26%,31%{opacity:1}23.5%,28.5%{opacity:.2}}
@keyframes blink{0%,49%{opacity:1}50%,100%{opacity:0}}
@keyframes errpop{0%,16%{opacity:0;transform:scale(.5)}20%,100%{opacity:1;transform:none}}
@keyframes sc1{to{transform:translate(-40px,30px) rotate(-12deg)}}
@keyframes sc2{to{transform:translate(50px,40px) rotate(10deg)}}
@keyframes sc3{to{transform:translate(10px,70px) rotate(22deg)}}
@keyframes fall{0%,8%{transform:none}26%,100%{transform:translate(18px,130px) rotate(36deg);opacity:.4}}
@keyframes pop1{0%,4%{opacity:0;transform:translateY(8px)}8%,100%{opacity:1;transform:none}}
@keyframes pop2{0%,12%{opacity:0;transform:translateY(8px)}16%,100%{opacity:1;transform:none}}
@keyframes pop3{0%,20%{opacity:0;transform:translateY(8px)}24%,100%{opacity:1;transform:none}}
@keyframes bar{0%,42%{transform:scaleX(0)}60%,100%{transform:scaleX(1)}}
.p-out{animation:painOut 9s ease forwards}
.f-in{opacity:0;animation:fixIn 9s ease forwards}
.spin{animation:spin 1.4s linear infinite;transform-origin:center;transform-box:fill-box}
.drain{animation:drain 9s linear forwards;transform-origin:left center;transform-box:fill-box}
.alarm{opacity:0;animation:alarm 9s linear forwards}
.blink{animation:blink 1s step-end infinite}
.errpop{opacity:0;animation:errpop 9s ease forwards;transform-origin:center;transform-box:fill-box}
.sc1{animation:sc1 2.5s ease forwards;transform-box:fill-box}
.sc2{animation:sc2 2.5s ease forwards;transform-box:fill-box}
.sc3{animation:sc3 2.5s ease forwards;transform-box:fill-box}
.fall{animation:fall 9s ease-in forwards;transform-origin:center;transform-box:fill-box}
.pop1{opacity:0;animation:pop1 9s ease forwards}
.pop2{opacity:0;animation:pop2 9s ease forwards}
.pop3{opacity:0;animation:pop3 9s ease forwards}
.bar{animation:bar 9s ease forwards;transform-origin:left center;transform-box:fill-box}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.p-out{display:none}.f-in,.pop1,.pop2,.pop3,.alarm,.errpop{opacity:1!important;animation:none!important}.spin,.drain,.sc1,.sc2,.sc3,.fall,.bar,.blink{animation:none!important}}

/* about + security */
h3{margin:0;font-size:22px;font-weight:600;letter-spacing:-.01em}
.prose-wide>*{max-width:820px}.prose-wide h2{margin-bottom:4px}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-top:32px}
.fact{background:#fff;padding:24px 22px;display:flex;flex-direction:column;gap:6px}
.fact b{font-size:clamp(34px,4vw,46px);font-weight:600;letter-spacing:-.02em;line-height:1;color:var(--navy)}
.fact span{font-size:16px;color:var(--muted);line-height:1.45}
.fn{font-size:12px;font-weight:600;vertical-align:super;line-height:0;margin-left:2px;text-decoration:none;color:var(--blue)}
.sources{margin:12px 0 0;padding-left:22px;display:grid;gap:8px;font-size:15px;color:var(--muted)}
.sources a{color:var(--muted)}.sources a:hover{color:var(--blue)}
.plain-list li::before{background:var(--line) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 12h10' stroke='%230F2747' stroke-width='2.4'/%3E%3C/svg%3E") center no-repeat}
