.ed-header,.ed-footer{--ed-navy:#07182f;--ed-blue:#1464d8;--ed-cyan:#36b7ff;--ed-line:#dfe7f2;font-family:Inter,Segoe UI,Arial,sans-serif}.ed-header{position:sticky;top:0;z-index:1000;background:rgba(255,255,255,.97);border-bottom:1px solid rgba(20,100,216,.1);transition:box-shadow .25s,background .25s}.ed-header.scrolled{background:rgba(255,255,255,.92);box-shadow:0 12px 35px rgba(7,24,47,.09);backdrop-filter:blur(16px)}.ed-nav-wrap{width:min(1180px,calc(100% - 40px));height:76px;margin:auto;display:flex;align-items:center;gap:30px}.ed-brand img{width:190px;display:block}.ed-desktop-nav{display:flex;align-items:stretch;height:100%;gap:7px;margin-left:auto}.ed-nav-item{display:flex}.ed-nav-item button,.ed-flat-link{display:flex;align-items:center;gap:6px;padding:0 11px;border:0;background:none;color:#10203a;font:700 13px/1 inherit;cursor:pointer}.ed-nav-item svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:1.5;transition:transform .25s}.ed-nav-item.open button,.ed-nav-item button:hover,.ed-flat-link:hover{color:var(--ed-blue)}.ed-nav-item.open svg{transform:rotate(180deg)}.ed-nav-actions{display:flex;align-items:center;gap:9px}.ed-contact,.ed-demo{padding:11px 15px;border-radius:9px;font-size:13px;font-weight:800}.ed-contact{border:1px solid var(--ed-line)}.ed-demo{background:var(--ed-blue);color:#fff!important}.ed-burger{display:none;width:44px;height:44px;place-content:center;gap:5px;border:1px solid var(--ed-line);border-radius:10px;background:#fff}.ed-burger i{display:block;width:20px;height:2px;background:#10203a;transition:.25s}.ed-burger.open i:first-child{transform:translateY(7px) rotate(45deg)}.ed-burger.open i:nth-child(2){opacity:0}.ed-burger.open i:last-child{transform:translateY(-7px) rotate(-45deg)}
.ed-mega{position:absolute;left:0;right:0;top:76px;background:#fff;border-top:1px solid #edf2f8;border-bottom:1px solid var(--ed-line);box-shadow:0 28px 55px rgba(7,24,47,.14);opacity:0;transform:translateY(-12px);transition:opacity .24s,transform .35s cubic-bezier(.16,1,.3,1)}.ed-mega.open{opacity:1;transform:none}.ed-mega-inner{width:min(1180px,calc(100% - 40px));margin:auto;display:grid;grid-template-columns:1fr 310px;gap:45px;padding:34px 0 38px}.ed-mega-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:38px}.ed-mega-group>p{margin:0 0 14px;color:#708098;font-size:10px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.ed-mega-link{display:block;padding:10px 12px;margin-left:-12px;border-radius:10px;opacity:0;transform:translateY(8px);transition:background .2s,opacity .3s,transform .35s}.ed-mega.open .ed-mega-link{opacity:1;transform:none}.ed-mega.open .ed-mega-link:nth-of-type(2){transition-delay:.045s}.ed-mega.open .ed-mega-link:nth-of-type(3){transition-delay:.09s}.ed-mega-link:hover,.ed-mega-link:focus-visible{background:#f3f8ff}.ed-mega-link span{display:block;color:#10203a;font-size:14px;font-weight:850}.ed-mega-link small{display:block;margin-top:2px;color:#697891;font-size:11px;line-height:1.45}.ed-mega-promo{padding:25px;border-radius:17px;background:linear-gradient(145deg,#07182f,#0e4080);color:#fff}.ed-mega-promo>span{color:#73cfff;font-size:10px;font-weight:900;letter-spacing:.13em;text-transform:uppercase}.ed-mega-promo strong{display:block;margin:10px 0;font-size:22px;line-height:1.16}.ed-mega-promo p{margin:0;color:#bed0e5;font-size:12px}.ed-mega-promo a{display:inline-flex;margin-top:18px;color:#7bd5ff;font-size:12px;font-weight:900}.ed-mobile{display:none}
.ed-footer{background:#061326;color:#d7e4f5;padding:65px 0 25px}.ed-footer-wrap{width:min(1180px,calc(100% - 40px));margin:auto}.ed-footer-top{display:grid;grid-template-columns:1.15fr 2.85fr;gap:65px}.ed-footer-brand img{width:190px;filter:brightness(0) invert(1)}.ed-footer-brand p{max-width:280px;color:#9eb1ca;font-size:13px}.ed-footer-brand>a{display:inline-flex;margin-top:10px;color:#65cbff;font-size:13px;font-weight:850}.ed-footer-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:30px}.ed-footer h3{margin:0 0 17px;color:#fff;font-size:13px}.ed-footer-nav a{display:block;margin:9px 0;color:#9eb1ca;font-size:12px;transition:color .2s,transform .2s}.ed-footer-nav a:hover{color:#fff;transform:translateX(3px)}.ed-footer-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:45px;padding-top:21px;border-top:1px solid rgba(255,255,255,.1);color:#7f96b1;font-size:11px}
@media(max-width:1020px){.ed-desktop-nav,.ed-contact,.ed-demo{display:none}.ed-nav-wrap{height:70px}.ed-burger{display:grid;margin-left:auto}.ed-mega{display:none}.ed-mobile{position:fixed;display:block;inset:70px 0 0;overflow:auto;padding:14px 20px 30px;background:#fff}.ed-mobile[hidden]{display:none}.ed-mobile-section{border-bottom:1px solid var(--ed-line)}.ed-mobile-section summary,.ed-mobile-flat{display:flex;align-items:center;justify-content:space-between;padding:16px 2px;color:#10203a;font-size:15px;font-weight:850;cursor:pointer;list-style:none}.ed-mobile-section summary::-webkit-details-marker{display:none}.ed-mobile-section svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.5;transition:transform .25s}.ed-mobile-section[open] svg{transform:rotate(180deg)}.ed-mobile-section>div{display:grid;padding:0 0 13px 13px}.ed-mobile-section a{padding:9px;color:#5e6e86;font-size:13px}.ed-mobile-flat{border-bottom:1px solid var(--ed-line)}.ed-mobile-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}.ed-mobile-actions a{padding:13px;border:1px solid var(--ed-blue);border-radius:9px;text-align:center;color:var(--ed-blue);font-size:13px;font-weight:850}.ed-mobile-actions a:last-child{background:var(--ed-blue);color:#fff}.ed-menu-open{overflow:hidden}.ed-footer-top{grid-template-columns:1fr}.ed-footer-nav{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.ed-nav-wrap,.ed-footer-wrap{width:calc(100% - 28px)}.ed-brand img{width:160px}.ed-footer-nav{grid-template-columns:1fr 1fr;gap:28px 18px}.ed-footer-bottom{flex-direction:column}.ed-mobile-actions{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.ed-mega,.ed-mega-link,.ed-nav-item svg,.ed-burger i,.ed-footer-nav a{transition:none}}

/* Conceptual product scenes shared by submenu pages */
.ed-hero-with-concept{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(390px,.82fr);gap:55px;align-items:center}.ed-hero-with-concept>:not(.ed-concept){grid-column:1}.ed-concept{grid-column:2;grid-row:1/8;position:relative;min-height:350px;padding:20px;border:1px solid rgba(20,100,216,.16);border-radius:23px;background:linear-gradient(145deg,#092345,#07182f);box-shadow:0 30px 70px rgba(7,24,47,.2);overflow:hidden;color:#fff}.ed-concept-grid{position:absolute;inset:0;opacity:.18;background-image:linear-gradient(rgba(95,204,255,.15) 1px,transparent 1px),linear-gradient(90deg,rgba(95,204,255,.15) 1px,transparent 1px);background-size:31px 31px;mask-image:linear-gradient(#000,transparent)}.ed-concept-head,.ed-concept-foot{position:relative;z-index:5;display:flex;align-items:center;gap:8px;font-size:9px;font-weight:900;letter-spacing:.12em}.ed-concept-head i,.ed-concept-foot i{width:7px;height:7px;border-radius:50%;background:#55d5ff;box-shadow:0 0 12px #55d5ff}.ed-concept-head b{margin-left:auto;padding:3px 6px;border-radius:20px;background:rgba(75,211,166,.13);color:#61deb5;font-size:8px}.ed-concept-stage{position:relative;height:248px;margin-top:10px}.ed-concept-core{position:absolute;z-index:4;left:50%;top:50%;width:82px;height:82px;display:grid;place-content:center;transform:translate(-50%,-50%);border:1px solid rgba(110,213,255,.58);border-radius:50%;background:radial-gradient(circle at 35% 28%,#1b79ca,#0a315c 65%);box-shadow:0 0 30px rgba(65,190,255,.25),0 0 0 10px rgba(84,202,255,.04)}.ed-concept-core span{position:absolute;inset:-8px;border:1px dashed rgba(103,210,255,.35);border-radius:50%;animation:edConceptSpin 10s linear infinite}.ed-concept-core strong{font-size:20px}.ed-concept-ring{position:absolute;left:50%;top:50%;border:1px solid rgba(91,203,255,.13);border-radius:50%;transform:translate(-50%,-50%)}.ed-concept-ring.r1{width:175px;height:175px}.ed-concept-ring.r2{width:270px;height:220px}.ed-concept-beam{position:absolute;left:15%;right:15%;top:50%;height:1px;background:linear-gradient(90deg,transparent,#4cbfff,transparent)}.ed-concept-beam.b2{transform:rotate(90deg)}.ed-concept-node{position:absolute;z-index:3;width:105px;padding:9px 10px;border:1px solid rgba(255,255,255,.13);border-radius:10px;background:rgba(11,45,84,.9);box-shadow:0 10px 24px rgba(0,0,0,.2);animation:edNodeFloat 3.2s ease-in-out infinite}.ed-concept-node i{display:block;color:#64ceff;font-size:8px;font-style:normal}.ed-concept-node span{font-size:10px;font-weight:800}.ed-concept-node.n1{left:0;top:23px}.ed-concept-node.n2{right:0;top:23px;animation-delay:-.8s}.ed-concept-node.n3{left:0;bottom:15px;animation-delay:-1.6s}.ed-concept-node.n4{right:0;bottom:15px;animation-delay:-2.4s}.ed-concept-packet{position:absolute;z-index:5;width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 10px #55d5ff;animation:edPacketX 2.8s ease-in-out infinite}.ed-concept-packet.p1{left:17%;top:50%}.ed-concept-packet.p2{left:50%;top:14%;animation-name:edPacketY;animation-delay:-1.4s}.ed-concept-foot{justify-content:space-between;color:#9bbad5;letter-spacing:0}.ed-concept-foot b{color:#62dfb5;font-size:9px}.ed-concept-hash .ed-concept-core{border-radius:18px;background:linear-gradient(145deg,#1261ad,#0b315a)}.ed-concept-hash .ed-concept-core span{border-radius:23px}.ed-concept-private-ai .ed-concept-ring.r2,.ed-concept-boundary .ed-concept-ring.r2{border:1px solid rgba(91,223,180,.32);box-shadow:inset 0 0 35px rgba(53,195,151,.04)}.ed-concept-radar .ed-concept-stage{background:repeating-radial-gradient(circle at 50% 50%,rgba(79,201,255,.13) 0 1px,transparent 1px 39px)}.ed-concept-radar .ed-concept-stage::after{content:"";position:absolute;left:50%;top:50%;width:110px;height:110px;transform-origin:0 0;background:linear-gradient(45deg,transparent 48%,rgba(68,205,255,.18));animation:edRadar 4s linear infinite}.ed-concept-cockpit .ed-concept-node,.ed-concept-contact .ed-concept-node{border-left:3px solid #4fc8ff;border-radius:7px}.ed-concept-mission .ed-concept-core{background:linear-gradient(145deg,#1669bd,#12a2c8)}
@keyframes edConceptSpin{to{transform:rotate(360deg)}}@keyframes edNodeFloat{50%{transform:translateY(-6px);border-color:rgba(102,211,255,.38)}}@keyframes edPacketX{0%,100%{transform:translateX(0);opacity:0}15%,80%{opacity:1}50%{transform:translateX(220px)}}@keyframes edPacketY{0%,100%{transform:translateY(0);opacity:0}15%,80%{opacity:1}50%{transform:translateY(175px)}}@keyframes edRadar{to{transform:rotate(360deg)}}
@media(max-width:950px){.ed-hero-with-concept{grid-template-columns:1fr;gap:32px}.ed-concept{grid-column:1;grid-row:auto;width:min(580px,100%);margin-top:16px}}
@media(max-width:520px){.ed-concept{min-height:325px;padding:15px}.ed-concept-stage{height:225px}.ed-concept-node{width:89px;padding:7px}.ed-concept-node span{font-size:9px}.ed-concept-ring.r2{width:235px}.ed-concept-packet{display:none}}
@media(prefers-reduced-motion:reduce){.ed-concept-core span,.ed-concept-node,.ed-concept-packet,.ed-concept-radar .ed-concept-stage::after{animation:none}}

/* v2: genuinely distinct feature scenes for each interior page */
.ed-concept>div[class^="art-"]{position:relative;height:248px;margin-top:10px}.art-pipeline{display:flex;align-items:center;gap:5px}.art-pipeline>div{z-index:2;flex:1;padding:14px 7px;border:1px solid rgba(98,205,255,.22);border-radius:12px;background:#0b315b;text-align:center}.art-pipeline i,.art-pipeline b,.art-pipeline span{display:block}.art-pipeline i{color:#66d1ff;font-size:8px;font-style:normal}.art-pipeline b{font-size:11px}.art-pipeline span{color:#9bb9d2;font-size:8px}.art-pipeline em{flex:0 0 15px;height:1px;background:#57c9ff;position:relative}.art-pipeline em::after{content:"";position:absolute;width:5px;height:5px;top:-2px;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff;animation:pipeDot 1.8s linear infinite}.art-pipeline .done{border-color:#54dcae;background:#0b473d}.art-pipeline u{position:absolute;left:4%;right:4%;bottom:35px;height:3px;background:linear-gradient(90deg,#37a8e9,#58ddaf);transform-origin:left;animation:pipeGrow 3s ease-in-out infinite}
.art-ai{display:grid;place-items:center}.ai-boundary{position:relative;width:185px;height:185px;display:grid;place-content:center;text-align:center;border:1px solid #4fdaa9;border-radius:42% 58% 55% 45%;background:radial-gradient(circle,#15568b,#092947 67%);box-shadow:0 0 0 13px rgba(81,218,171,.035);animation:aiBreathe 4s ease-in-out infinite}.ai-boundary::before{content:"";position:absolute;inset:-15px;border:1px dashed rgba(88,221,176,.4);border-radius:50%;animation:edConceptSpin 14s linear infinite}.ai-boundary strong{font-size:25px;line-height:1}.ai-lock{color:#61e0b5;font-size:13px}.ai-boundary i{position:absolute;width:7px;height:7px;border-radius:50%;background:#59dcb1;box-shadow:0 0 11px #59dcb1}.ai-boundary i:nth-of-type(1){left:18px;top:42px}.ai-boundary i:nth-of-type(2){right:13px;top:88px}.ai-boundary i:nth-of-type(3){left:65px;bottom:10px}.ai-input,.ai-output{position:absolute;top:105px;padding:7px 9px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#0b3159;color:#bcd2e5;font-size:9px}.ai-input{left:0}.ai-output{right:0}.ai-seal{position:absolute;bottom:2px;padding:5px 10px;border-radius:20px;background:rgba(74,216,170,.1);color:#62dfb5;font-size:8px;font-weight:900;letter-spacing:.1em}
.art-hash{display:grid;grid-template-columns:1fr 1.2fr 1fr;align-items:center;gap:18px}.hash-file,.hash-result{z-index:2;padding:18px 8px;border:1px solid rgba(255,255,255,.14);border-radius:13px;background:#0b3159;text-align:center}.hash-file i{display:block;width:35px;height:43px;margin:auto;border:1px solid #65ceff;border-radius:5px;background:linear-gradient(135deg,transparent 72%,rgba(101,206,255,.35) 73%)}.hash-file b,.hash-file span,.hash-result b,.hash-result span{display:block}.hash-file b,.hash-result b{margin-top:7px;font-size:10px}.hash-file span,.hash-result span{color:#8eafc9;font-size:8px}.hash-machine{z-index:3;padding:21px 7px;border:1px solid #57dbaa;border-radius:14px;background:#0c493e;text-align:center;box-shadow:0 0 25px rgba(72,218,169,.12)}.hash-machine small,.hash-machine strong{display:block}.hash-machine small{color:#74e5bf;font-size:8px}.hash-machine strong{margin-top:5px;font:800 12px monospace}.hash-machine i{display:block;width:70%;height:2px;margin:11px auto 0;background:#5cdfb3;animation:hashScan 1.6s ease-in-out infinite}.hash-path{position:absolute;top:50%;height:1px;background:#56caff}.hash-path.a{left:20%;right:53%}.hash-path.b{left:53%;right:20%}.art-hash>u{position:absolute;inset:23px 21%;border:1px dashed rgba(81,219,172,.19);border-radius:18px}
.art-cockpit{display:grid;grid-template-columns:42px 1fr;gap:10px;padding:14px;border:1px solid rgba(255,255,255,.12);border-radius:15px;background:#081d38}.cockpit-side{display:grid;align-content:start;gap:11px;padding:10px;border-radius:9px;background:#0d3158}.cockpit-side i{height:8px;border-radius:3px;background:#345a7d}.cockpit-side i:first-child{background:#56caff;animation:navPulse 2s ease-in-out infinite}.cockpit-main{padding:8px}.cockpit-top{display:flex;justify-content:space-between;font-size:8px;color:#a9c1d7}.cockpit-top b{color:#ff9c7d}.cockpit-chart{height:88px;display:flex;align-items:end;gap:8px;padding:15px 8px 5px;border-bottom:1px solid rgba(255,255,255,.1)}.cockpit-chart i{flex:1;height:35%;border-radius:4px 4px 0 0;background:linear-gradient(#57caff,#176bb5);animation:chartRise 2.8s ease-in-out infinite}.cockpit-chart i:nth-child(2){height:62%;animation-delay:-.5s}.cockpit-chart i:nth-child(3){height:47%;animation-delay:-1s}.cockpit-chart i:nth-child(4){height:82%;animation-delay:-1.5s}.cockpit-chart i:nth-child(5){height:68%;animation-delay:-2s}.cockpit-evidence{display:flex;gap:6px;margin-top:11px}.cockpit-evidence span{padding:5px 8px;border-radius:15px;background:#0d3b68;color:#9dcced;font-size:8px}.cockpit-verdict{margin-top:12px;padding:8px;border-left:3px solid #55dfb1;background:rgba(85,223,177,.08);color:#6ce2bb;font-size:9px;font-weight:800}
.art-boundary{display:grid;place-items:center}.boundary-wall{position:relative;width:88%;height:205px;border:1px solid #55dbae;border-radius:20px;background:rgba(34,139,111,.055);box-shadow:inset 0 0 35px rgba(76,218,172,.05)}.boundary-wall>span{position:absolute;left:15px;top:10px;color:#63dcb4;font-size:8px;font-weight:900;letter-spacing:.1em}.boundary-node{position:absolute;width:82px;padding:9px;border:1px solid rgba(101,207,255,.3);border-radius:9px;background:#0b3159;text-align:center;font-size:9px;font-weight:800}.boundary-node.mail{left:15px;top:52px}.boundary-node.engine{left:50%;top:52px;transform:translateX(-50%)}.boundary-node.assessor{right:15px;top:52px}.boundary-node.zap{left:50%;bottom:18px;transform:translateX(-50%);border-color:#55dbae;background:#0c493e}.route{position:absolute;height:1px;background:#58caff}.route::after{content:"";position:absolute;width:5px;height:5px;top:-2px;border-radius:50%;background:#fff;animation:routeMove 2s linear infinite}.route.r1{left:97px;right:57%;top:69px}.route.r2{left:57%;right:97px;top:69px}.route.r3{left:50%;top:90px;width:1px;height:83px;background:#55dbae}.hash-gate{position:absolute;right:-5px;bottom:2px;display:flex;align-items:center;gap:6px;color:#8caec8;font-size:8px}.hash-gate i{display:grid;place-items:center;width:24px;height:24px;border:1px solid #55dbae;border-radius:50%;color:#65e0b7;font-style:normal}
.art-radar{display:grid;place-items:center}.radar-disc{position:relative;width:220px;height:220px;border:1px solid rgba(82,202,255,.3);border-radius:50%;overflow:hidden;background:repeating-radial-gradient(circle,rgba(80,201,255,.14) 0 1px,transparent 1px 36px)}.radar-disc::before,.radar-disc::after{content:"";position:absolute;background:rgba(83,204,255,.18)}.radar-disc::before{left:50%;top:0;bottom:0;width:1px}.radar-disc::after{top:50%;left:0;right:0;height:1px}.radar-disc .sweep{position:absolute;left:50%;top:50%;width:105px;height:105px;transform-origin:0 0;background:linear-gradient(45deg,transparent 48%,rgba(75,207,255,.35));animation:edRadar 3.6s linear infinite}.radar-disc strong{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:50px;height:50px;border-radius:50%;background:#145f9f;box-shadow:0 0 20px rgba(72,195,255,.3)}.blip{position:absolute;width:7px;height:7px;border-radius:50%;background:#ff7b53;box-shadow:0 0 0 5px rgba(255,123,83,.1),0 0 10px #ff7b53;animation:blip 1.8s ease-in-out infinite}.blip.b1{left:25%;top:31%}.blip.b2{right:20%;top:43%;animation-delay:-.6s}.blip.b3{left:42%;bottom:18%;animation-delay:-1.2s}.radar-label{position:absolute;padding:4px 7px;border-radius:10px;background:#0b3159;color:#b8d0e4;font-size:8px}.radar-label.l1{left:4px;top:30px}.radar-label.l2{right:0;top:52px}.radar-label.l3{left:0;bottom:32px}.radar-label.l4{right:0;bottom:15px}
.art-layers{perspective:700px;padding:15px 55px}.layer{position:absolute;left:12%;right:12%;height:62px;padding:10px 18px;border:1px solid rgba(99,208,255,.28);border-radius:12px;background:linear-gradient(90deg,#0b315b,#0d426f);box-shadow:0 15px 24px rgba(0,0,0,.18);transform:rotateX(55deg);animation:layerLift 4s ease-in-out infinite}.layer i{color:#61cfff;font-size:8px;font-style:normal}.layer b{margin-left:10px;font-size:11px}.layer span{float:right;color:#9ebbd3;font-size:8px}.layer.l1{top:0}.layer.l2{top:50px;animation-delay:-1s}.layer.l3{top:100px;animation-delay:-2s}.layer.l4{top:150px;border-color:#57dbad;background:linear-gradient(90deg,#0c423a,#0b5a4a);animation-delay:-3s}
.art-mission{position:relative}.mission-mark{position:absolute;left:50%;top:50%;width:100px;height:100px;display:grid;place-items:center;transform:translate(-50%,-50%);border:1px solid #63d0ff;border-radius:50%;background:radial-gradient(circle,#186eb6,#092b51);box-shadow:0 0 0 18px rgba(82,203,255,.035)}.mission-mark span{position:absolute;inset:-9px;border:1px dashed rgba(97,210,255,.4);border-radius:50%;animation:edConceptSpin 12s linear infinite}.mission-mark strong{font-size:24px}.star{position:absolute;padding:6px 9px;border:1px solid rgba(255,255,255,.14);border-radius:20px;background:#0b3159;color:#bdd3e6;font-size:9px;animation:starGlow 3s ease-in-out infinite}.star::before{content:"";display:inline-block;width:5px;height:5px;margin-right:5px;border-radius:50%;background:#58ceff;box-shadow:0 0 8px #58ceff}.star.s1{left:5%;top:20%;}.star.s2{right:7%;top:16%;animation-delay:-.7s}.star.s3{left:7%;bottom:17%;animation-delay:-1.4s}.star.s4{right:4%;bottom:20%;animation-delay:-2.1s}.art-mission>i{position:absolute;left:50%;top:50%;width:38%;height:1px;background:linear-gradient(90deg,#58ceff,transparent);transform-origin:left}.art-mission>i:nth-of-type(1){transform:rotate(205deg)}.art-mission>i:nth-of-type(2){transform:rotate(330deg)}.art-mission>i:nth-of-type(3){transform:rotate(145deg)}.art-mission>i:nth-of-type(4){transform:rotate(30deg)}
.art-contact{display:grid;align-content:center;gap:14px;padding-left:35px}.contact-line{position:absolute;left:17px;top:44px;bottom:44px;width:2px;background:rgba(87,204,255,.24)}.contact-step{position:relative;padding:12px 15px;border:1px solid rgba(255,255,255,.12);border-radius:11px;background:#0b3159}.contact-step i{position:absolute;left:-34px;top:50%;width:24px;height:24px;display:grid;place-items:center;transform:translateY(-50%);border:1px solid #59cbff;border-radius:50%;background:#092746;color:#73d7ff;font-size:9px;font-style:normal}.contact-step b,.contact-step span{display:block}.contact-step b{font-size:10px}.contact-step span{color:#99b5ce;font-size:8px}.contact-step.active{border-color:#5dcfff;animation:contactFocus 4.5s ease-in-out infinite}.art-contact>u{position:absolute;left:16px;top:44px;width:4px;height:35px;border-radius:5px;background:#fff;box-shadow:0 0 10px #59cbff;animation:contactTravel 4.5s ease-in-out infinite}
@keyframes pipeDot{to{transform:translateX(15px)}}@keyframes pipeGrow{0%,15%{transform:scaleX(0)}70%,100%{transform:scaleX(1)}}@keyframes aiBreathe{50%{transform:scale(1.035);box-shadow:0 0 35px rgba(80,220,174,.15)}}@keyframes hashScan{50%{transform:scaleX(.4);opacity:.45}}@keyframes navPulse{50%{box-shadow:0 0 10px #56caff}}@keyframes chartRise{50%{transform:scaleY(.65);transform-origin:bottom}}@keyframes routeMove{to{transform:translateX(70px)}}@keyframes blip{50%{transform:scale(1.5);opacity:.55}}@keyframes layerLift{50%{transform:rotateX(55deg) translateY(-6px)}}@keyframes starGlow{50%{border-color:rgba(91,210,255,.5);box-shadow:0 0 16px rgba(74,197,255,.12)}}@keyframes contactFocus{0%,30%,100%{border-color:rgba(255,255,255,.12)}15%{border-color:#5dcfff;transform:translateX(4px)}}@keyframes contactTravel{0%{transform:translateY(0)}100%{transform:translateY(159px)}}
@media(max-width:520px){.art-pipeline{gap:2px}.art-pipeline>div{padding:10px 3px}.art-pipeline em{flex-basis:7px}.art-pipeline span{display:none}.art-hash{gap:7px}.hash-path{display:none}.art-layers{padding-inline:25px}.layer{left:5%;right:5%}}
@media(prefers-reduced-motion:reduce){.art-pipeline *,.art-ai *,.art-hash *,.art-cockpit *,.art-boundary *,.art-radar *,.art-layers *,.art-mission *,.art-contact *{animation:none!important}}

/* Page identity: backgrounds and static artwork where motion adds no value */
.ed-page-platform .page-hero{background:linear-gradient(120deg,#eef6ff,#f8fbff 68%,#e7f3ff)}.ed-page-ai-engine .page-hero{background:radial-gradient(circle at 78% 45%,rgba(48,196,174,.12),transparent 28%),linear-gradient(120deg,#f1f8ff,#eefbf8)}.ed-page-threat-intelligence .page-hero{background-color:#f4f8fc;background-image:linear-gradient(rgba(20,100,216,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(20,100,216,.035) 1px,transparent 1px);background-size:32px 32px}.ed-page-analyst-dashboard .page-hero{background:linear-gradient(135deg,#eef3fb,#f8fbff 56%,#e7f4ff)}.ed-page-architecture .page-hero{background:linear-gradient(130deg,#f7f9fc,#eef7f6)}.ed-page-solutions .page-hero{background:radial-gradient(circle at 82% 50%,rgba(77,91,220,.10),transparent 30%),linear-gradient(120deg,#f7f8ff,#edf5ff)}.ed-page-why-eyriedefender .page-hero{background:linear-gradient(135deg,#07182f,#0d376b);color:#fff}.ed-page-why-eyriedefender .page-hero .lead{color:#c5d7e9}.ed-page-company .page-hero{background:linear-gradient(115deg,#f5f9ff,#eaf4ff)}.ed-page-contact .page-hero{background:linear-gradient(135deg,#f4f8ff 0 65%,#e5f3ff 65%);text-align:center}.ed-page-contact .page-hero .container{max-width:850px}.ed-concept-platform{background:linear-gradient(145deg,#071b35,#0a3768)}.ed-concept-private-ai{background:linear-gradient(145deg,#07283a,#093c42)}.ed-concept-hash{background:linear-gradient(145deg,#081b31,#0b2d3a)}.ed-concept-cockpit{background:#07172c}.ed-concept-boundary{background:linear-gradient(145deg,#08253d,#0b3d42)}.ed-concept-radar{background:linear-gradient(145deg,#101c48,#082d55)}
.ed-concept-mission-image{min-height:350px;padding:0;background:#06172d}.ed-static-art{position:absolute;inset:0}.ed-static-art::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,18,38,.18),transparent 50%),linear-gradient(0deg,rgba(4,18,38,.75),transparent 45%)}.ed-static-art img{width:100%;height:100%;display:block;object-fit:cover}.ed-static-art span{position:absolute;z-index:2;left:22px;bottom:18px;color:#fff;font-size:12px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
/* Motion is intentionally limited to Platform and its submenu destinations. */
.ed-page-solutions .ed-concept *{animation:none!important}
@media(max-width:950px){.ed-page-contact .page-hero .container{display:block!important}.ed-page-company .ed-concept{margin-inline:auto}}

/* v6: organized interior-page reading system; intentionally does not target the homepage */
body[class*="ed-page-"]{--ed-display:"Aptos Display","Segoe UI Variable Display","Segoe UI",Arial,sans-serif;--ed-body:"Aptos","Segoe UI Variable Text","Segoe UI",Arial,sans-serif;font-family:var(--ed-body);font-size:16px;line-height:1.68;color:#13223b}
body[class*="ed-page-"] :is(h1,h2,h3,.title){font-family:var(--ed-display);font-weight:760;letter-spacing:-.035em;text-wrap:balance}
body[class*="ed-page-"] .page-hero .title{max-width:760px;font-size:clamp(2.65rem,4.7vw,4.55rem);line-height:1.01}
body[class*="ed-page-"] .page-hero .lead{max-width:720px;font-size:clamp(1.04rem,1.35vw,1.2rem);line-height:1.7}
body[class*="ed-page-"] .section>.container>h2.title,body[class*="ed-page-"] .section-heading .title{font-size:clamp(2rem,3.5vw,3.15rem);line-height:1.08;max-width:850px}
body[class*="ed-page-"] .card h3{font-size:1.16rem;line-height:1.25}body[class*="ed-page-"] .card p{font-size:.96rem;line-height:1.7}
.ed-content-guide{position:relative;z-index:3;background:#fff;border-bottom:1px solid #dfe7f2;box-shadow:0 10px 24px rgba(10,34,70,.035)}.ed-content-guide-inner{width:min(1180px,92%);margin:auto;display:grid;grid-template-columns:repeat(3,1fr)}.ed-content-guide article{display:grid;grid-template-columns:32px 1fr;gap:11px;padding:23px 26px;border-right:1px solid #e5ebf3}.ed-content-guide article:first-child{padding-left:0}.ed-content-guide article:last-child{border-right:0;padding-right:0}.ed-content-guide i{color:#1464d8;font:850 10px/1 var(--ed-body);font-style:normal;letter-spacing:.08em;padding-top:5px}.ed-content-guide strong{display:block;color:#10203a;font:760 14px/1.25 var(--ed-display)}.ed-content-guide p{margin:5px 0 0;color:#69788e;font-size:11px;line-height:1.5}
body[class*="ed-page-"] .platform-subpage{background:linear-gradient(#fff,#f8fbff);padding-top:58px}.platform-subpage .platform-article{counter-reset:reading-section;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:none}.platform-subpage .content-section{counter-increment:reading-section;position:relative;margin:0;padding:27px 28px 28px;border:1px solid #dfe7f2;border-radius:18px;background:#fff;box-shadow:0 10px 28px rgba(12,39,88,.045)}.platform-subpage .content-section:first-child{grid-column:1/-1;padding-right:min(8vw,90px);background:linear-gradient(120deg,#fff,#f2f7ff)}.platform-subpage .content-section::before{content:counter(reading-section,decimal-leading-zero);display:block;margin-bottom:13px;color:#1464d8;font:850 10px/1 var(--ed-body);letter-spacing:.12em}.platform-subpage .content-section h2{margin-bottom:12px;font-size:clamp(1.4rem,2vw,1.85rem);line-height:1.16}.platform-subpage .content-section p{max-width:68ch;margin:10px 0;color:#5c6c83;font-size:.98rem;line-height:1.72}.platform-subpage .content-section p:last-child{margin-bottom:0}.platform-subpage .content-section .check-list{margin-top:17px}.platform-subpage .content-section:has(.check-list){grid-column:1/-1}.platform-subpage .inline-cta{position:sticky;top:110px;border-radius:20px;background:linear-gradient(145deg,#07182f,#0d417d);color:#fff;border:0;box-shadow:0 20px 45px rgba(7,24,47,.16)}.platform-subpage .inline-cta p{color:#c6d7e9}.platform-subpage .inline-cta .btn-secondary{color:#fff;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.25)}
body[class*="ed-page-"] .section{padding-block:clamp(68px,7vw,96px)}body[class*="ed-page-"] .section-heading{max-width:880px;margin-bottom:34px}body[class*="ed-page-"] :is(.grid-2,.grid-3,.grid-4,.grid-5){gap:20px}body[class*="ed-page-"] .card{height:100%;padding:27px;border-color:#dfe7f2;box-shadow:0 10px 28px rgba(12,39,88,.055)}body[class*="ed-page-"] .dark-section .card{box-shadow:none}
@media(max-width:900px){.platform-subpage .platform-article{grid-template-columns:1fr}.platform-subpage .content-section:first-child,.platform-subpage .content-section:has(.check-list){grid-column:auto}.ed-content-guide article{padding-inline:16px}}
@media(max-width:680px){.ed-content-guide-inner{grid-template-columns:1fr}.ed-content-guide article,.ed-content-guide article:first-child,.ed-content-guide article:last-child{padding:15px 0;border-right:0;border-bottom:1px solid #e5ebf3}.ed-content-guide article:last-child{border-bottom:0}.platform-subpage .content-section{padding:22px}body[class*="ed-page-"] .page-hero .title{font-size:clamp(2.35rem,12vw,3.2rem)}}

/* v7 — shared shell sizing for phone, tablet, desktop, and TV */
.ed-header,.ed-footer{max-width:100vw}.ed-nav-wrap,.ed-mega-inner,.ed-footer-wrap,.ed-content-guide-inner{min-width:0}.ed-mega-link,.ed-footer a{overflow-wrap:anywhere}
@media(min-width:1600px){.ed-nav-wrap,.ed-mega-inner,.ed-footer-wrap,.ed-content-guide-inner{width:min(1420px,calc(100% - 120px))}.ed-nav-wrap{height:84px}.ed-mega{top:84px}.ed-brand img{width:215px}.ed-desktop-nav{gap:13px}.ed-nav-item button,.ed-flat-link{font-size:14px;padding-inline:14px}.ed-mega-inner{grid-template-columns:1fr 350px;padding-block:42px}.ed-footer{padding-top:82px}.ed-footer-top{gap:90px}}
@media(min-width:2200px){.ed-nav-wrap,.ed-mega-inner,.ed-footer-wrap,.ed-content-guide-inner{width:min(1720px,calc(100% - 180px))}.ed-nav-wrap{height:96px}.ed-mega{top:96px}.ed-brand img{width:245px}.ed-nav-item button,.ed-flat-link{font-size:16px}.ed-contact,.ed-demo{font-size:15px;padding:14px 19px}.ed-mega-inner{grid-template-columns:1fr 420px;gap:70px}.ed-mega-link span{font-size:16px}.ed-mega-link small{font-size:13px}.ed-footer-nav a{font-size:14px}.ed-footer h3{font-size:15px}body[class*="ed-page-"] .page-hero{padding-block:120px}body[class*="ed-page-"] .page-hero .title{font-size:5.4rem}.ed-concept{min-height:420px}.ed-content-guide article{padding-block:30px}}
@media(min-width:701px) and (max-width:1100px){.ed-nav-wrap,.ed-footer-wrap,.ed-content-guide-inner{width:min(94%,920px)}.ed-footer-top{gap:45px}.ed-footer-nav{grid-template-columns:repeat(2,1fr)}.ed-hero-with-concept{grid-template-columns:1fr}.ed-concept{grid-column:1;grid-row:auto;width:min(620px,100%);margin-top:20px}}
@media(max-width:700px){.ed-nav-wrap,.ed-footer-wrap,.ed-content-guide-inner{width:calc(100% - 28px)}.ed-nav-wrap{height:68px}.ed-brand img{width:154px}.ed-burger{width:44px;height:44px}.ed-mobile{inset:68px 0 0;padding-inline:14px}.ed-footer{padding-block:52px 22px}.ed-footer-top{gap:40px}.ed-footer-nav{grid-template-columns:1fr 1fr;gap:28px 16px}.ed-footer-nav a{line-height:1.45}.ed-footer-bottom{margin-top:35px}.ed-hero-with-concept{display:block!important}.ed-concept{width:100%;min-height:325px;margin-top:30px}body[class*="ed-page-"] .page-hero{padding:62px 0 48px}body[class*="ed-page-"] .page-hero .lead{font-size:1rem}.ed-content-guide{box-shadow:none}}
@media(max-width:390px){.ed-nav-wrap,.ed-footer-wrap,.ed-content-guide-inner{width:calc(100% - 22px)}.ed-brand img{width:144px}.ed-footer-nav{grid-template-columns:1fr}.ed-mobile-actions{grid-template-columns:1fr}.ed-concept{padding:13px;min-height:310px}.ed-concept>div[class^="art-"]{height:225px}}
@media(max-height:650px) and (orientation:landscape) and (max-width:1020px){.ed-mobile{overflow-y:auto}.ed-mobile-section summary{padding-block:11px}.ed-mobile-section a{padding-block:6px}.ed-mobile-actions{margin-top:14px}}
@media(hover:none) and (pointer:coarse){.ed-nav-item button,.ed-flat-link,.ed-contact,.ed-demo,.ed-mobile a,.ed-mobile summary,.ed-footer a{min-height:44px}.ed-footer-nav a{display:flex;align-items:center}.ed-mega-link:hover,.ed-footer-nav a:hover{transform:none}}

/* Keep the shared header attached to the viewport even on pages with overflow containers. */
.ed-header{position:fixed;inset:0 0 auto;width:100%}
body.ed-shell-active{padding-top:76px}
.ed-scroll-progress{position:absolute;z-index:2;left:0;right:0;bottom:-1px;height:3px;background:linear-gradient(90deg,#1464d8,#36b7ff);box-shadow:0 0 8px rgba(54,183,255,.35);transform:scaleX(0);transform-origin:left center;will-change:transform}

/* The original brand artwork is rendered from a 4x source in both locations. */
.ed-brand img{height:auto;aspect-ratio:222/77;object-fit:contain}
.ed-footer-brand img{width:210px;height:auto;box-sizing:content-box;padding:8px 10px;background:#fff;border-radius:8px;filter:none!important;aspect-ratio:222/77;object-fit:contain}
.ed-footer-contacts{display:grid;gap:5px;margin-top:7px}.ed-footer-contacts a{margin:0;color:#9eb1ca;font-size:13px;font-weight:650}.ed-footer-contacts a:hover{color:#fff}

@media(max-width:1020px){body.ed-shell-active{padding-top:70px}}
@media(max-width:700px){body.ed-shell-active{padding-top:68px}}

/* ---------------------------------------------------------------
 * v8 - Accessibility + 2026 CSS enhancements
 * added by scripts/enhance-html.mjs companion pass
 * --------------------------------------------------------------- */

/* Skip-to-content link. Invisible until keyboard-focused so mouse
 * users never see it; assistive tech + Tab-nav users get an
 * immediate jump target above the sticky header. */
.ed-skip{position:absolute;left:0;top:-9999px;z-index:2000;padding:12px 18px;background:#1464d8;color:#fff;font:800 13px/1 Inter,system-ui,sans-serif;border-radius:0 0 8px 0;text-decoration:none;transition:top .18s ease}
.ed-skip:focus,.ed-skip:focus-visible{top:0;outline:2px solid #ffd94f;outline-offset:2px}

/* Text rendering — 2024+ browsers only, degrades safely elsewhere.
 * `pretty` avoids awkward last-line orphans in body copy; `balance`
 * keeps headline wraps visually symmetric. The base stylesheet
 * already applies `balance` to headings — here we cover paragraphs. */
main p, .lead, .card p, .platform-subpage .content-section p{text-wrap:pretty}

/* Focus rings — visible ONLY to keyboard users (mouse click doesn't
 * flash them). Ships a consistent brand-blue ring across every
 * interactive element the two style sheets don't already override. */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid #1464d8;
  outline-offset:2px;
  border-radius:4px;
}

/* Long-scroll perf. Tell the browser it can defer paint + layout
 * of below-fold sections until they enter the viewport. `auto` is
 * the safe default when we DON'T know intrinsic size ahead of time;
 * the browser measures on first paint and remembers.
 * Skips the hero + first section so above-the-fold LCP isn't
 * affected. */
.section:not(:first-of-type):not(.hero),.platform-subpage .content-section:not(:first-child){
  content-visibility:auto;
  contain-intrinsic-size:auto 900px;
}

/* View Transitions API — free cross-page animation when the browser
 * supports the multi-document flavour (Chrome 126+, Safari 18+).
 * Falls back gracefully to a hard swap where unsupported. */
@view-transition{navigation:auto}
@media(prefers-reduced-motion:reduce){
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}
/* Give the brand mark a stable transition name so it appears to
 * float across page changes instead of blinking. */
.ed-brand img,.brand img{view-transition-name:brand-mark}

/* Print. Marketing pages are shared as PDFs in RFPs — make sure the
 * text stays readable without the navy/blue backgrounds swallowing
 * ink. */
@media print{
  .ed-header,.ed-footer,.ed-skip,.mobilebtn,.showcase-controls,.cockpit-progress{display:none!important}
  body{color:#000;background:#fff}
  a{color:#000;text-decoration:underline}
  .section,.platform-subpage .content-section{page-break-inside:avoid}
  h1,h2,h3{page-break-after:avoid}
}

/* ---------------------------------------------------------------
 * v9 - Three.js scene canvas
 *   Home: full-bleed hero background.
 *   Interior: overlay inside the existing `.ed-concept` box.
 * --------------------------------------------------------------- */

/* Home hero: canvas sits behind the hero content. Content is
 * z-index:2, canvas is z-index:1, hero background gradient is 0. */
.hero{position:relative}
.hero > [data-scene]{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  overflow:hidden;
}
.hero > [data-scene] > canvas.hero-canvas{
  display:block;
  width:100%;
  height:100%;
  opacity:0;
  transition:opacity .8s ease;
}
.hero > [data-scene] > canvas.hero-canvas.hero-canvas--ready{opacity:.9}
.hero > .wrap.hero-grid{position:relative;z-index:2}

/* Interior pages: the existing `.ed-concept` box already has
 * padding, border-radius, gradient background. The canvas sits
 * absolutely inside so the CSS art (if we ever keep any) stays
 * behind, and the canvas fades in on top. */
.ed-concept > [data-scene]{
  position:absolute;
  inset:0;
  z-index:3;
  pointer-events:none;
  border-radius:inherit;
  overflow:hidden;
}
.ed-concept > [data-scene] > canvas.hero-canvas{
  display:block;
  width:100%;
  height:100%;
  opacity:0;
  transition:opacity .8s ease;
}
.ed-concept > [data-scene] > canvas.hero-canvas.hero-canvas--ready{opacity:1}

/* When the WebGL scene mounts on an interior page, dim the CSS
 * concept art beneath it so we don't have two visualisations
 * competing for attention. Applied via JS by adding
 * .ed-concept--scene-active — see page-scenes.js. But since we
 * hook the canvas ready-state anyway, use :has() (2023+ CSS) for a
 * pure-declarative version. Falls back gracefully in older
 * browsers (both layers just render together at full opacity). */
.ed-concept:has(canvas.hero-canvas--ready) > *:not([data-scene]){
  opacity:.18;
  transition:opacity .8s ease;
}

@media(prefers-reduced-motion:reduce){
  [data-scene]{display:none!important}
}

/* ---------------------------------------------------------------
 * v10 - Interior-page hero canvas overlay
 * Interior pages use .page-hero (title + lead on the left). We
 * float the WebGL scene in the top-right of the hero at desktop
 * widths so it feels like the interior visuals the CSS `.ed-concept`
 * boxes were designed for. On mobile the hero text needs the full
 * width — we hide the scene there.
 * --------------------------------------------------------------- */
.page-hero{position:relative;overflow:hidden}
.page-hero > .page-scene{
  position:absolute;
  top:16px;
  right:16px;
  width:min(46%,520px);
  height:min(60vh,420px);
  z-index:2;
  pointer-events:none;
  border-radius:22px;
  overflow:hidden;
  background:linear-gradient(145deg,#092345,#07182f);
  box-shadow:0 30px 70px rgba(7,24,47,.22),0 0 0 1px rgba(20,100,216,.16);
  contain:layout paint;
}
.page-hero > .page-scene > canvas.hero-canvas{
  display:block;
  width:100%;
  height:100%;
  opacity:0;
  transition:opacity .8s ease;
}
.page-hero > .page-scene > canvas.hero-canvas.hero-canvas--ready{opacity:1}
/* Keep the hero copy readable when a scene is layered next to it — the
 * default hero container is `.container`, add breathing room on
 * the right so the title doesn't collide with the panel. */
.page-hero > .container{position:relative;z-index:1;padding-right:min(50%,540px)}
/* Below 960 the scene stops being usable next to shrinking copy. */
@media(max-width:960px){
  .page-hero > .page-scene{display:none}
  .page-hero > .container{padding-right:inherit}
}
/* The `why-eyriedefender` page has a dark hero — soften the panel
 * border so it blends in. */
.ed-page-why-eyriedefender .page-hero > .page-scene{
  box-shadow:0 30px 70px rgba(0,0,0,.32),0 0 0 1px rgba(120,205,255,.24);
}

/* ---------------------------------------------------------------
 * v11 - HUD text overlays on the WebGL scenes
 * Adds semantic, product-relevant text overlaid on each canvas so
 * the animation communicates something concrete instead of reading
 * as pure decoration. Text is positioned absolutely inside the
 * `.page-scene` panel, always above the canvas (z-index 3).
 * --------------------------------------------------------------- */
.ed-hud{
  position:absolute;
  inset:0;
  z-index:3;
  padding:16px 18px;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  font-family:"JetBrains Mono","SF Mono",ui-monospace,Consolas,monospace;
  color:#e0efff;
  text-shadow:0 1px 3px rgba(0,0,0,.6);
  pointer-events:none;
  user-select:none;
  container-type:inline-size;
}
.ed-hud > *{opacity:0;transform:translateY(6px);animation:edHudIn .6s ease forwards;animation-delay:calc(var(--i,0) * 90ms + 200ms)}
@keyframes edHudIn{to{opacity:1;transform:none}}

.ed-hud-title{
  margin:0 0 10px 0;
  color:#6fdcff;
  font-size:9px;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
  display:flex;align-items:center;gap:6px;
}
.ed-hud-dot{
  width:6px;height:6px;border-radius:50%;
  background:#4bd3a6;
  box-shadow:0 0 8px #4bd3a6;
  animation:edHudPulse 2s ease-in-out infinite;
}
@keyframes edHudPulse{50%{opacity:.35;transform:scale(1.2)}}

.ed-hud-panel{
  background:rgba(6,20,44,.55);
  border:1px solid rgba(85,207,255,.18);
  border-radius:10px;
  padding:12px 14px;
  backdrop-filter:blur(6px);
  min-width:0;
  max-width:60%;
}
.ed-hud-side{
  background:rgba(6,20,44,.55);
  border:1px solid rgba(85,207,255,.18);
  border-radius:10px;
  padding:12px 14px;
  backdrop-filter:blur(6px);
  align-self:flex-end;
  max-width:38%;
}
.ed-hud-row{
  margin:0 0 6px 0;
  color:#a9c9e6;
  font-size:10px;
  line-height:1.4;
}

/* ---- Verdict feed (home) ---- */
.ed-hud-verdicts{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ed-hud-verdict{
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-rows:auto auto;
  column-gap:8px;
  padding:7px 9px;
  border-radius:8px;
  border:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.03);
  opacity:0;transform:translateX(-6px);
  animation:edHudInX .55s ease forwards;
  animation-delay:calc(var(--i,0) * 100ms + 400ms);
}
@keyframes edHudInX{to{opacity:1;transform:none}}
.ed-hud-verdict-from{
  color:#cfe4ff;
  font-size:10px;
  font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ed-hud-verdict-sub{
  grid-column:1;grid-row:2;
  color:#8fa9c9;
  font-size:9px;
  line-height:1.35;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ed-hud-pill{
  grid-column:2;grid-row:1/3;align-self:center;
  padding:3px 7px;border-radius:99px;
  font-size:8.5px;font-weight:900;letter-spacing:.05em;
  border:1px solid transparent;
}
.ed-hud-pill--malicious{background:rgba(255,80,90,.15);color:#ff7f8a;border-color:rgba(255,80,90,.35)}
.ed-hud-pill--suspicious{background:rgba(255,180,90,.15);color:#ffc580;border-color:rgba(255,180,90,.35)}
.ed-hud-pill--clean{background:rgba(75,211,166,.15);color:#7cddb5;border-color:rgba(75,211,166,.35)}

/* ---- Label chips (platform / ai / stack / mission / contact) ---- */
.ed-hud--labels{flex-direction:column;justify-content:flex-end}
.ed-hud--labels .ed-hud-chip{
  display:grid;
  grid-template-columns:32px 1fr;
  gap:10px;align-items:center;
  padding:8px 12px;
  border-radius:10px;
  background:rgba(6,20,44,.55);
  border:1px solid rgba(85,207,255,.18);
  backdrop-filter:blur(6px);
  margin-top:6px;
  opacity:0;transform:translateX(-6px);
  animation:edHudInX .55s ease forwards;
  animation-delay:calc(var(--i,0) * 110ms + 350ms);
}
.ed-hud-badge{
  display:grid;place-items:center;
  width:26px;height:26px;border-radius:8px;
  background:linear-gradient(145deg,#1464d8,#0d417d);
  color:#e6f2ff;font-size:10px;font-weight:900;letter-spacing:.05em;
  box-shadow:0 0 12px rgba(20,100,216,.35);
}
.ed-hud-chip-title{margin:0;color:#e0efff;font-size:11px;font-weight:800;letter-spacing:.05em}
.ed-hud-chip-sub{margin:2px 0 0 0;color:#8fa9c9;font-size:9.5px;line-height:1.35}

/* ---- Feeds (threat-intel / resources) ---- */
.ed-hud--feeds{flex-direction:column;justify-content:flex-end}
.ed-hud--feeds ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.ed-hud--feeds li{
  padding:6px 10px;border-radius:8px;
  background:rgba(6,20,44,.55);
  border:1px solid rgba(85,207,255,.18);
  backdrop-filter:blur(6px);
  color:#cfe4ff;font-size:10px;letter-spacing:.02em;
  opacity:0;transform:translateY(4px);
  animation:edHudIn .55s ease forwards;
  animation-delay:calc(var(--i,0) * 90ms + 400ms);
}
.ed-hud--feeds li::before{content:"▹  ";color:#4bd3a6}

/* ---- Chips (solutions) ---- */
.ed-hud--chips{flex-direction:column;justify-content:flex-end}
.ed-hud-chip-row{display:flex;flex-wrap:wrap;gap:6px}
.ed-hud-chip-tag{
  padding:5px 10px;border-radius:99px;
  background:rgba(85,207,255,.15);
  color:#c8e6ff;
  font-size:10px;font-weight:800;
  border:1px solid rgba(85,207,255,.30);
  opacity:0;transform:scale(.85);
  animation:edHudInScale .55s ease forwards;
  animation-delay:calc(var(--i,0) * 80ms + 400ms);
}
@keyframes edHudInScale{to{opacity:1;transform:scale(1)}}

/* ---- Cockpit HUD (analyst-dashboard) ---- */
.ed-hud--cockpit{
  flex-direction:column;justify-content:space-between;
  background:linear-gradient(180deg,transparent 40%,rgba(6,20,44,.5));
}
.ed-hud-cockpit-top{
  display:flex;justify-content:space-between;
  font-size:9px;letter-spacing:.14em;color:#6fdcff;font-weight:800;text-transform:uppercase;
}
.ed-hud-cockpit-case{
  margin:0;color:#e0efff;font-size:11px;font-weight:800;letter-spacing:.03em;
}
.ed-hud-cockpit-verdict{
  margin:2px 0 8px;color:#ff7f8a;font-size:14px;font-weight:900;letter-spacing:.06em;
}
.ed-hud-cockpit-reco{
  margin:0;padding:8px 10px;
  background:rgba(75,211,166,.14);border:1px solid rgba(75,211,166,.34);border-radius:8px;
  color:#cfe4ff;font-size:10px;line-height:1.4;
  display:flex;gap:6px;align-items:flex-start;
}

/* Home hero canvas is full-bleed behind the hero content — HUD would
 * collide with the marketing copy. Turn it off on home. */
.hero .ed-hud{display:none}

/* On narrow layouts we hide the parent panel anyway (v10 media
 * query). No extra rule needed here; the HUD goes with it. */

@media(max-width:1180px){
  .ed-hud-panel,.ed-hud-side{max-width:100%;}
  .ed-hud{flex-direction:column;align-items:stretch}
}

/* ---------------------------------------------------------------
 * v12 - Critique-driven fixes
 *   - Home hero: HUD moves to bottom-right (won't collide with H1),
 *     and the whole scene hides on ≤768 so mobile isn't a giant
 *     empty canvas.
 *   - Chip / cockpit HUD: explicit whitespace so screen-readers +
 *     text-extractors don't concat items.
 * --------------------------------------------------------------- */

/* Undo the display:none — home DOES want the HUD; just place it
 * so it doesn't fight the H1 (which sits on the left). */
.hero .ed-hud{display:flex}
.hero .ed-hud--verdicts{
  align-items:flex-end;
  justify-content:flex-end;
  padding:24px;
  pointer-events:none;
}
.hero .ed-hud--verdicts > .ed-hud-panel{
  width:min(360px,42vw);
  max-width:none;
  align-self:flex-end;
  margin-top:auto;
}
.hero .ed-hud--verdicts > .ed-hud-side{
  display:none;   /* keep the home hero minimal — verdict feed only */
}

/* Hide the home hero WebGL scene entirely on mobile so users don't
 * scroll past a 1400px empty canvas. Below 900 the hero is text-
 * only anyway. */
@media(max-width:900px){
  .hero > [data-scene]{display:none}
}

/* Interior page scenes: HUD chips (feeds / labels) need visible
 * separation even when the flex-gap CSS gets stripped by aggressive
 * text-extraction. Empty pseudo-element does no visual harm and
 * gives copy a real space. */
.ed-hud-chip-tag + .ed-hud-chip-tag::before,
.ed-hud-cockpit-top > span + span::before{
  content:" ";
}

/* v13 — cockpit separator, ensure the middle-dot is spaced */
.ed-hud-sep{
  display:inline-block;
  margin:0 8px;
  opacity:.55;
  font-style:normal;
  color:#6fdcff;
}
.ed-hud-cockpit-top{
  align-items:center;
}

/* v14 — hard spacing on cockpit separator (flex-gap wasn't hitting) */
.ed-hud-cockpit-top{gap:8px}
.ed-hud-cockpit-top .ed-hud-sep{
  margin-inline:6px;
  color:#6fdcff;
  opacity:.7;
}

/* ---------------------------------------------------------------
 * v15 - Home hero staged reveal ("Marvel beat")
 *   The old WebGL shield is stripped; we let the existing feature-
 *   showcase carousel carry the visual. Text enters in a choreo:
 *     kicker → H1 line 1 → subhead → H1 line 2 (emphasis) → CTAs
 *     → stackline
 *   All CSS — one paint on load, no JS orchestrator, no jank when
 *   navigating back to the page.
 * --------------------------------------------------------------- */

.hero .kicker,
.hero h1,
.hero h1 > span,
.hero > .wrap.hero-grid > div > p,
.hero .actions,
.hero .stackline{
  opacity:0;
  transform:translateY(10px);
  animation:heroRise .7s cubic-bezier(.16,1,.3,1) forwards;
  will-change:opacity,transform;
}
.hero .kicker                              { animation-delay: .05s }
.hero h1                                   { animation-delay: .25s }
.hero > .wrap.hero-grid > div > p          { animation-delay: 1.05s }
.hero h1 > span                            { animation-delay: 1.55s; }
.hero .actions                             { animation-delay: 1.95s }
.hero .stackline                           { animation-delay: 2.25s }

/* H1 second-line emphasis — the "we take it from here." moment.
 * Fires AFTER the sub-line so the reader lands on the recovery
 * beat, not on the setup. Same intro animation + a subtle color
 * saturation pulse. */
.hero h1 > span{
  display:inline-block;
  animation:heroRise .7s cubic-bezier(.16,1,.3,1) forwards,
            heroEmphasise 1.2s ease .8s;
}
@keyframes heroRise{
  to{opacity:1;transform:none}
}
@keyframes heroEmphasise{
  0%,100%{filter:none}
  50%{filter:brightness(1.15) saturate(1.15)}
}

/* Hero visual (feature-showcase carousel) fades in a beat later
 * than the H1 so the eye lands on text first. */
.hero .hero-visual{
  opacity:0;
  animation:heroRise .9s cubic-bezier(.16,1,.3,1) .55s forwards;
}

@media(prefers-reduced-motion:reduce){
  .hero .kicker,.hero h1,.hero h1 > span,
  .hero > .wrap.hero-grid > div > p,
  .hero .actions,.hero .stackline,
  .hero .hero-visual{
    opacity:1;transform:none;animation:none;
  }
}

/* ================================================================
 * v16 - PER-PAGE ART BLOCKS
 * Each interior page has a literal product-surface animation
 * (envelope through chambers, reasoning email, hash membrane,
 * blueprint, cockpit, threat-card deck, gateway, bridge, weekly
 * report, 3-arc clock). Shared frame + per-scene overrides.
 * ================================================================ */

.art{
  position:absolute;inset:0;padding:20px 22px;
  display:flex;flex-direction:column;gap:14px;
  font-family:"JetBrains Mono","SF Mono",ui-monospace,Consolas,monospace;
  color:#e0efff;overflow:hidden;
}
.art-title{
  color:#6fdcff;font-size:10px;font-weight:800;letter-spacing:.15em;
  text-transform:uppercase;
  opacity:0;transform:translateY(-4px);
  animation:artIn .6s ease .05s forwards;
}
.art-tick{
  margin-top:auto;font-size:10px;color:#6fdcff;letter-spacing:.05em;
  opacity:0;animation:artIn .6s ease 2.4s forwards;
}
@keyframes artIn{to{opacity:1;transform:none}}
@keyframes artRise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Platform — envelope traveling through 3 chambers */
.art-platform .art-ribbon{
  position:relative;display:grid;grid-template-columns:repeat(3,1fr);
  gap:8px;padding-top:24px;flex:1;
}
.art-chamber{
  padding:10px 8px;border:1px solid rgba(85,207,255,.22);border-radius:10px;
  background:linear-gradient(160deg,rgba(20,100,216,.12),rgba(6,20,44,.4));
  text-align:center;opacity:.55;
  transition:opacity .35s ease,border-color .35s ease,background .35s ease;
}
.art-chamber b{display:block;font-size:11px;color:#e0efff;font-weight:900;letter-spacing:.06em}
.art-chamber em{display:block;font-size:8.5px;color:#6fdcff;letter-spacing:.14em;margin-top:2px;font-style:normal}
.art-badge{
  display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;
  background:linear-gradient(145deg,#1464d8,#0d417d);
  color:#e6f2ff;font-size:9px;font-weight:900;letter-spacing:.05em;margin-bottom:6px;
}
.art-rail{
  position:absolute;left:8%;right:8%;top:34%;height:2px;
  background:linear-gradient(90deg,rgba(85,207,255,.55),rgba(75,211,166,.55),rgba(255,180,90,.55));
  border-radius:2px;opacity:.35;
}
.art-envelope{
  position:absolute;left:0;top:24%;width:44px;height:30px;
  background:linear-gradient(145deg,#f5f7ff,#c6d7e9);border-radius:4px;
  box-shadow:0 8px 18px rgba(20,100,216,.35);
  animation:envTravel 6s cubic-bezier(.65,.05,.35,1) infinite;
}
.art-envelope .env-flap{
  position:absolute;inset:0 0 55% 0;
  background:linear-gradient(145deg,#d9e4f3,#a8bacf);
  border-radius:4px 4px 0 0;clip-path:polygon(0 0,100% 0,50% 90%);
}
.art-envelope .env-verdict{
  position:absolute;right:-8px;top:-8px;padding:2px 6px;border-radius:99px;
  background:#dc2626;color:#fff;font-size:9px;font-weight:900;
  opacity:0;animation:envStamp 6s linear infinite;
}
@keyframes envTravel{
  0%   {left:6%;  transform:scale(1)}
  22%  {left:24%; transform:scale(1)}
  33%  {left:24%; transform:scale(1.15)}
  44%  {left:50%; transform:scale(1)}
  55%  {left:50%; transform:scale(1.15)}
  66%  {left:76%; transform:scale(1)}
  77%  {left:76%; transform:scale(1.15)}
  100% {left:94%; transform:scale(.9); opacity:.35}
}
@keyframes envStamp{0%,44%{opacity:0}55%,100%{opacity:1}}
.art-platform .c1{animation:chamberLight 6s 1s infinite}
.art-platform .c2{animation:chamberLight 6s 2.3s infinite}
.art-platform .c3{animation:chamberLight 6s 3.6s infinite}
@keyframes chamberLight{
  0%,10%,90%,100%{opacity:.55;border-color:rgba(85,207,255,.22)}
  20%,60%{opacity:1;border-color:rgba(85,207,255,.7);background:linear-gradient(160deg,rgba(20,100,216,.28),rgba(6,20,44,.55))}
}

/* AI Engine — reasoning email with rationale */
.art-ai-reason{gap:10px}
.ai-email{
  padding:12px 14px;border-radius:10px;
  background:rgba(6,20,44,.6);border:1px solid rgba(85,207,255,.16);
  font-family:Inter,system-ui,sans-serif;color:#e0efff;
  opacity:0;animation:artRise .6s ease .1s forwards;
}
.ai-email p{margin:0}
.ai-from{font-size:10px;color:#8fa9c9;letter-spacing:.02em}
.ai-subj{font-size:12px;font-weight:800;margin-top:3px !important}
.ai-body{margin-top:6px !important;font-size:12px;line-height:1.55;color:#cfe4ff}
.ai-body mark{background:none;color:inherit;border-bottom:2px solid transparent;padding-bottom:1px;transition:background .3s ease,border-color .3s ease}
.ai-body mark[data-tag="payment"]  {animation:markPay 8s infinite}
.ai-body mark[data-tag="authority"]{animation:markAuth 8s infinite}
.ai-body mark[data-tag="urgency"]  {animation:markUrg 8s infinite}
@keyframes markPay {0%,20%{background:transparent;border-color:transparent}30%,90%{background:rgba(255,80,90,.15);border-color:#ff7f8a}100%{background:transparent;border-color:transparent}}
@keyframes markAuth{0%,40%{background:transparent;border-color:transparent}50%,90%{background:rgba(255,180,90,.18);border-color:#ffc580}100%{background:transparent;border-color:transparent}}
@keyframes markUrg {0%,60%{background:transparent;border-color:transparent}70%,90%{background:rgba(200,120,255,.18);border-color:#d6a5ff}100%{background:transparent;border-color:transparent}}
.ai-rationale{
  padding:10px 12px;border-radius:10px;
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.16);
}
.ai-row{
  margin:5px 0;font-size:10.5px;color:#cfe4ff;letter-spacing:.02em;
  display:flex;align-items:center;gap:8px;
  opacity:0;transform:translateY(4px);
  animation:artRise .5s ease forwards;
  animation-delay:calc(2s + var(--i) * 700ms);
}
.ai-dot{display:inline-block;width:6px;height:6px;border-radius:50%}
.ai-dot.payment{background:#ff7f8a;box-shadow:0 0 6px #ff7f8a}
.ai-dot.authority{background:#ffc580;box-shadow:0 0 6px #ffc580}
.ai-dot.urgency{background:#d6a5ff;box-shadow:0 0 6px #d6a5ff}
.ai-score{
  margin-top:10px;height:20px;position:relative;
  background:rgba(255,255,255,.05);border-radius:99px;overflow:hidden;
}
.ai-score-fill{
  position:absolute;inset:0 auto 0 0;width:0;
  background:linear-gradient(90deg,#4bd3a6,#36b7ff,#ff7f8a);
  border-radius:99px;animation:scoreFill 1.6s ease 4.5s forwards;
}
@keyframes scoreFill{to{width:92%}}
.ai-score-value{
  position:absolute;inset:0;display:grid;place-items:center;
  font-size:10.5px;font-weight:900;letter-spacing:.06em;color:#0b1e3d;text-shadow:0 0 6px rgba(255,255,255,.6);
}

/* Threat Intel — hash crosses membrane */
.art-membrane{display:grid;grid-template-columns:1fr 8px 1fr;grid-template-rows:auto 1fr auto;gap:10px}
.art-membrane .art-title,.art-membrane .art-tick{grid-column:1/-1}
.mem-left,.mem-right{display:flex;flex-direction:column;gap:8px}
.mem-file,.mem-lib,.mem-src,.mem-rep{
  padding:8px 10px;border-radius:8px;
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.18);
  font-size:10px;color:#cfe4ff;
}
.mem-file em{display:block;font-style:normal;font-size:9px;color:#8fa9c9;margin-top:2px}
.mem-lib b{display:block;font-size:16px;color:#e0efff;font-weight:900;margin-top:2px}
.mem-rep{color:#7cddb5;border-color:rgba(75,211,166,.4);background:rgba(75,211,166,.12);text-align:center;font-weight:800}
.mem-line{
  position:relative;
  background:linear-gradient(180deg,transparent,#36b7ff,#4bd3a6,#36b7ff,transparent);
  opacity:.5;
}
.mem-hash{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  padding:6px 8px;border-radius:6px;background:#0d417d;border:1px solid #36b7ff;
  font-size:9px;line-height:1.2;text-align:center;font-weight:800;white-space:nowrap;color:#e0efff;
  animation:hashPulse 4s ease-in-out infinite;
}
@keyframes hashPulse{
  0%,100%{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 12px rgba(54,183,255,.3)}
  50%    {transform:translate(-50%,-50%) scale(1.1);box-shadow:0 0 24px rgba(54,183,255,.6)}
}

/* Architecture — cloud+onprem blueprint with shared rail */
.art-blueprint{gap:8px}
.bp-shape{
  padding:10px 12px;border-radius:10px;
  background:rgba(6,20,44,.5);border:1px solid rgba(85,207,255,.2);
  display:grid;grid-template-columns:repeat(5,1fr);gap:5px;align-items:end;
  position:relative;
}
.bp-shape.onprem{border-color:rgba(75,211,166,.3)}
.bp-label{position:absolute;top:-9px;left:12px;padding:2px 8px;background:#082f5e;font-size:9px;font-weight:800;letter-spacing:.08em;color:#6fdcff;border-radius:4px}
.bp-shape.onprem .bp-label{color:#7cddb5}
.bp-node{
  padding:8px 4px;background:rgba(85,207,255,.08);
  border:1px solid rgba(85,207,255,.2);border-radius:6px;
  font-size:9px;font-weight:800;color:#cfe4ff;text-align:center;letter-spacing:.02em;
}
.bp-rail{
  position:absolute;left:20px;right:20px;top:50%;height:2px;
  background:repeating-linear-gradient(90deg,#36b7ff 0 12px,transparent 12px 24px);
  opacity:.55;animation:railScan 3s linear infinite;
}
@keyframes railScan{0%{background-position:0 0}100%{background-position:24px 0}}

/* Analyst Dashboard — mini cockpit */
.art-cockpit-hero{padding:0;gap:0}
.cph-bar{
  display:flex;align-items:center;gap:8px;padding:8px 12px;
  background:#050f22;border-bottom:1px solid rgba(85,207,255,.15);
  font-size:9.5px;color:#8fa9c9;
}
.cph-bar i{width:8px;height:8px;border-radius:50%;background:#ff5e57}
.cph-bar i:nth-child(2){background:#ffbd2e}
.cph-bar i:nth-child(3){background:#28c840;margin-right:6px}
.cph-body{display:grid;grid-template-columns:130px 1fr;gap:6px;padding:8px;flex:1;overflow:hidden}
.cph-queue{
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.14);border-radius:8px;
  padding:6px;display:flex;flex-direction:column;gap:4px;font-size:9px;
}
.cph-queue-head{color:#6fdcff;font-weight:800;letter-spacing:.1em;font-size:8.5px;padding:2px 4px}
.cph-row{
  display:grid;grid-template-columns:8px 1fr auto;gap:6px;align-items:center;
  padding:6px;border-radius:5px;background:none;border:0;color:#cfe4ff;text-align:left;
  cursor:pointer;transition:background .2s;font-family:inherit;
}
.cph-row.active{background:rgba(20,100,216,.25);border:1px solid rgba(85,207,255,.35)}
.cph-mal{width:8px;height:8px;border-radius:2px;background:#ff5c3a}
.cph-safe{width:8px;height:8px;border-radius:2px;background:#4bd3a6}
.cph-row span{overflow:hidden;line-height:1.25}
.cph-row span em{display:block;font-style:normal;font-size:8px;color:#8fa9c9;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cph-row b{font-size:11px;color:#e0efff;font-weight:900}
.cph-case{
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.14);border-radius:8px;
  padding:8px 10px;display:flex;flex-direction:column;gap:6px;overflow:hidden;min-width:0;
}
.cph-case header{display:grid;grid-template-columns:1fr auto;gap:4px;align-items:flex-start}
.cph-from{margin:0;font-size:9px;color:#8fa9c9;grid-column:1;grid-row:1}
.cph-subj{margin:0;font-size:11px;font-weight:800;grid-column:1;grid-row:2;overflow:hidden;text-overflow:ellipsis}
.cph-verdict{grid-column:2;grid-row:1/3;align-self:center;padding:4px 8px;border-radius:99px;
  background:rgba(255,80,90,.16);color:#ff7f8a;font-size:9px;font-weight:900;
  border:1px solid rgba(255,80,90,.4);letter-spacing:.05em}
.cph-ev{display:grid;grid-template-columns:1fr;gap:3px;margin:0}
.cph-ev > div{display:grid;grid-template-columns:60px 1fr;gap:6px;padding:3px 4px;border-radius:4px;
  background:rgba(255,255,255,.02);
  opacity:0;transform:translateX(-4px);animation:artRise .4s ease forwards;
  animation-delay:calc(0.8s + var(--i) * 250ms)}
.cph-ev dt{margin:0;font-size:8px;color:#6fdcff;font-weight:800;letter-spacing:.06em;padding-top:1px}
.cph-ev dd{margin:0;font-size:9.5px;color:#cfe4ff}
.cph-signals{display:grid;gap:2px}
.cph-sig{display:grid;grid-template-columns:55px 1fr 30px;gap:6px;align-items:center;
  font-size:8.5px;color:#8fa9c9;
  opacity:0;animation:artIn .4s ease forwards;
  animation-delay:calc(2s + var(--i) * 150ms)}
.cph-sig i{position:relative;height:5px;background:rgba(255,255,255,.06);border-radius:3px;overflow:hidden}
.cph-sig b{display:block;height:100%;background:linear-gradient(90deg,#ff7f8a,#ffc580);border-radius:3px;transform-origin:left;
  animation:sigFill 1.4s ease forwards;
  animation-delay:calc(2.2s + var(--i) * 200ms);transform:scaleX(0)}
@keyframes sigFill{to{transform:scaleX(1)}}
.cph-sig em{color:#ff7f8a;font-style:normal;font-weight:800;text-align:right}
.cph-reco{
  margin-top:auto;padding:8px 10px;
  background:rgba(75,211,166,.12);border:1px solid rgba(75,211,166,.35);border-radius:6px;
  font-size:9.5px;color:#cfe4ff;
  opacity:0;animation:artIn .5s ease 3s forwards;
}

/* Solutions — 6-card threat deck cycling */
.art-threat-deck{gap:8px}
.td-stack{position:relative;flex:1;min-height:0}
.td-card{
  position:absolute;inset:8px;padding:12px 14px;border-radius:12px;
  background:linear-gradient(155deg,rgba(20,100,216,.18),rgba(6,20,44,.6));
  border:1px solid rgba(85,207,255,.22);
  box-shadow:0 12px 30px rgba(0,0,0,.35);color:#e0efff;opacity:0;
  animation:cardCycle 30s cubic-bezier(.4,0,.2,1) infinite;
  animation-delay:calc(var(--i) * 5s);
}
.td-tag{
  display:inline-block;padding:3px 10px;border-radius:99px;
  background:rgba(255,180,90,.15);color:#ffc580;border:1px solid rgba(255,180,90,.4);
  font-size:9px;font-weight:900;letter-spacing:.08em;margin-bottom:8px;
}
.td-bec .td-tag   {background:rgba(255,80,90,.15);color:#ff7f8a;border-color:rgba(255,80,90,.4)}
.td-qr .td-tag    {background:rgba(200,120,255,.15);color:#d6a5ff;border-color:rgba(200,120,255,.4)}
.td-oauth .td-tag {background:rgba(75,211,166,.15);color:#7cddb5;border-color:rgba(75,211,166,.4)}
.td-hijack .td-tag{background:rgba(54,183,255,.15);color:#77d9ff;border-color:rgba(54,183,255,.4)}
.td-exec .td-tag  {background:rgba(255,120,180,.15);color:#ffa0c8;border-color:rgba(255,120,180,.4)}
.td-zday .td-tag  {background:rgba(255,255,255,.15);color:#f5f7ff;border-color:rgba(255,255,255,.4)}
.td-from{margin:0;font-size:10px;color:#8fa9c9;letter-spacing:.02em;font-family:"JetBrains Mono",monospace}
.td-sub{margin:6px 0 0 0;font-size:12.5px;font-family:Inter,sans-serif;line-height:1.4;color:#e0efff}
.td-sub b{color:#ffd94f;font-weight:900}
@keyframes cardCycle{
  0%   {opacity:0;transform:translateY(20px) scale(.95)}
  3%   {opacity:1;transform:translateY(0) scale(1)}
  16%  {opacity:1;transform:translateY(0) scale(1)}
  20%  {opacity:0;transform:translateY(-20px) scale(.95)}
  100% {opacity:0}
}

/* Why — 100 dots stream into a gateway */
.art-gateway{padding:16px 18px;gap:8px;position:relative}
.gw-stream{
  position:relative;height:80px;
  display:grid;grid-template-columns:repeat(20,1fr);grid-auto-rows:14px;gap:2px;
}
.gw-dot{
  width:6px;height:6px;border-radius:50%;
  background:#77d9ff;justify-self:center;align-self:center;
  animation:dotStream 4s linear infinite;
  animation-delay:calc(var(--i) * 40ms);
}
.gw-dot:nth-child(20n+3),
.gw-dot:nth-child(20n+7),
.gw-dot:nth-child(20n+13),
.gw-dot:nth-child(20n+16),
.gw-dot:nth-child(20n+19){
  background:#ff7f8a;
  animation:dotCaught 4s linear infinite;
  animation-delay:calc(var(--i) * 40ms);
}
@keyframes dotStream{
  0%   {transform:translateX(-100%);opacity:0}
  10%  {opacity:1}
  90%  {opacity:1}
  100% {transform:translateX(200%);opacity:0}
}
@keyframes dotCaught{
  0%   {transform:translateX(-100%);opacity:0}
  10%  {opacity:1}
  55%  {transform:translateX(30%);opacity:1;background:#ff7f8a;box-shadow:0 0 8px #ff7f8a}
  100% {transform:translateX(30%);opacity:0}
}
.gw-gate{
  position:absolute;left:35%;top:22%;bottom:36%;
  width:2px;background:rgba(255,180,90,.35);
}
.gw-gate span{
  position:absolute;top:-14px;left:50%;transform:translateX(-50%);
  padding:2px 8px;border-radius:4px;background:#082f5e;
  font-size:8.5px;font-weight:800;letter-spacing:.1em;color:#ffc580;white-space:nowrap;
}
.gw-bracket{
  border-left:2px solid #ff7f8a;padding-left:12px;margin-left:auto;width:60%;
  display:flex;flex-direction:column;gap:3px;
}
.gw-reason{
  margin:0;font-size:10px;color:#cfe4ff;letter-spacing:.02em;
  opacity:0;transform:translateX(-4px);
  animation:artRise .5s ease forwards;
  animation-delay:calc(1.2s + var(--i) * 200ms);
}
.gw-reason::before{content:"\25B8  ";color:#ff7f8a}

/* Company — bridge across two shores */
.art-bridge{padding:18px 20px;gap:10px}
.br-shore{
  display:flex;flex-wrap:wrap;gap:4px;padding:10px;border-radius:8px;
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.18);
}
.br-shore.right{border-color:rgba(255,180,90,.3)}
.br-shore span{
  padding:3px 8px;border-radius:4px;background:rgba(85,207,255,.1);color:#77d9ff;
  font-size:9px;font-weight:800;letter-spacing:.05em;
}
.br-shore.right span{background:rgba(255,180,90,.1);color:#ffc580}
.br-label{width:100%;margin:0 0 4px 0;font-size:9px;font-weight:900;letter-spacing:.1em;color:#e0efff}
.br-span{
  position:relative;flex:1;display:flex;flex-direction:column;gap:5px;padding:8px 0;
  border-top:1px dashed rgba(85,207,255,.4);
  border-bottom:1px dashed rgba(75,211,166,.4);
}
.br-chip{
  align-self:center;padding:5px 10px;border-radius:99px;
  background:linear-gradient(145deg,rgba(54,183,255,.14),rgba(75,211,166,.14));
  border:1px solid rgba(85,207,255,.35);
  font-size:10px;font-weight:800;color:#cfe4ff;
  opacity:0;transform:translateY(4px);
  animation:artRise .55s ease forwards;
  animation-delay:calc(1.2s + var(--i) * 350ms);
}

/* Resources — self-writing weekly report */
.art-report{padding:16px 18px;gap:8px}
.rpt-doc{
  background:rgba(255,255,255,.96);border-radius:8px;
  padding:14px 16px;color:#0f172a;font-family:Inter,sans-serif;
  box-shadow:0 12px 30px rgba(0,0,0,.35);
  flex:1;display:flex;flex-direction:column;gap:5px;position:relative;
}
.rpt-head{margin:0 0 8px 0;font-size:11px;font-weight:900;letter-spacing:.08em;color:#1464d8;text-transform:uppercase}
.rpt-row{
  margin:0;font-size:10.5px;color:#334155;
  display:grid;grid-template-columns:110px 1fr;gap:8px;align-items:baseline;
  padding:5px 0;border-bottom:1px solid #e2e8f0;
  opacity:0;transform:translateX(-4px);
  animation:artRise .5s ease forwards;
  animation-delay:calc(0.8s + var(--i) * 500ms);
}
.rpt-row b{font-size:9px;color:#697891;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.rpt-row span{font-family:"JetBrains Mono",monospace;color:#0f172a}
.rpt-stamp{
  margin-top:auto;align-self:flex-end;
  padding:5px 10px;border:2px solid #dc2626;border-radius:5px;
  color:#dc2626;font-size:10px;font-weight:900;letter-spacing:.12em;
  transform:rotate(-4deg);opacity:0;
  animation:stampLand .5s cubic-bezier(.5,-.35,.5,1.4) 3.3s forwards;
}
@keyframes stampLand{0%{opacity:0;transform:rotate(-4deg) scale(2.5)}100%{opacity:1;transform:rotate(-4deg) scale(1)}}

/* Contact — 3-arc clock */
.art-clock{padding:16px 18px;align-items:center;justify-content:center;gap:12px}
.clock-svg{width:min(200px,60%);height:auto;display:block}
.clock-svg .arc{stroke-dasharray:0 565.5;transition:none;transform-origin:center}
.clock-svg .arc.a1{animation:arcDraw 1.4s cubic-bezier(.4,0,.2,1) .6s forwards}
.clock-svg .arc.a2{animation:arcDraw 1.4s cubic-bezier(.4,0,.2,1) 2s forwards}
.clock-svg .arc.a3{animation:arcDraw 1.4s cubic-bezier(.4,0,.2,1) 3.4s forwards}
@keyframes arcDraw{from{stroke-dasharray:0 565.5}to{stroke-dasharray:188.5 565.5}}
.clock-labels{display:flex;flex-direction:column;gap:5px;width:100%;align-items:center}
.cl{
  padding:4px 10px;border-radius:99px;
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.2);
  font-size:10px;color:#cfe4ff;font-weight:800;letter-spacing:.03em;
  opacity:0;transform:translateY(3px);
  animation:artRise .5s ease forwards;
  animation-delay:calc(1.8s + var(--i) * 1.4s);
}
.cl.a1{border-color:rgba(54,183,255,.5);color:#77d9ff}
.cl.a2{border-color:rgba(75,211,166,.5);color:#7cddb5}
.cl.a3{border-color:rgba(255,180,90,.5);color:#ffc580}

/* v17 — text-vs-panel breathing room + new page ART blocks + AI title bump */

/* Hero container needs MORE right-padding so the H1 doesn't hug the
 * top-right art panel. The v10 rule used min(50%,540px) which was
 * too tight on some pages. */
@media(min-width:961px){
  .page-hero > .container{padding-right:min(52%,560px)}
}

/* Integrations — Microsoft + Google side-by-side cards */
.art-integrations{gap:10px}
.int-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;flex:1;min-height:0}
.int-card{
  padding:10px 12px;border-radius:10px;
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.2);
  display:flex;flex-direction:column;gap:6px;
}
.int-card.ms{border-color:rgba(85,207,255,.35)}
.int-card.gg{border-color:rgba(255,180,90,.35)}
.int-brand{
  display:flex;align-items:center;gap:8px;
  font-size:11px;font-weight:900;color:#e0efff;letter-spacing:.03em;
}
.int-brand span{
  display:grid;place-items:center;width:22px;height:22px;border-radius:5px;
  font-family:Inter,sans-serif;font-size:12px;
  background:linear-gradient(145deg,#1464d8,#0d417d);color:#fff;
}
.int-card.gg .int-brand span{background:linear-gradient(145deg,#ff9d43,#c86816)}
.int-card ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:3px}
.int-card li{
  font-size:9.5px;color:#cfe4ff;letter-spacing:.02em;padding-left:10px;position:relative;
}
.int-card li::before{content:"";position:absolute;left:0;top:6px;width:4px;height:4px;border-radius:50%;background:#4bd3a6}

/* Pricing — 3 tier cards */
.art-pricing{gap:10px}
.pr-tiers{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;flex:1;min-height:0}
.pr-tier{
  padding:10px 8px;border-radius:9px;
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.18);
  display:flex;flex-direction:column;gap:4px;position:relative;
  opacity:0;transform:translateY(6px);
  animation:artRise .55s ease forwards;
}
.pr-tier:nth-child(1){animation-delay:.4s}
.pr-tier:nth-child(2){animation-delay:.65s}
.pr-tier:nth-child(3){animation-delay:.9s}
.pr-tier.pr-current{border-color:rgba(75,211,166,.5);background:rgba(75,211,166,.08)}
.pr-name{margin:0;font-size:10px;font-weight:900;letter-spacing:.05em;color:#e0efff}
.pr-line{margin:0;font-size:9px;color:#8fa9c9;line-height:1.35}
.pr-badge{
  position:absolute;top:6px;right:6px;
  padding:1px 6px;border-radius:99px;
  background:#4bd3a6;color:#052b1e;font-size:7.5px;font-weight:900;letter-spacing:.06em;
}

/* Legal (privacy + terms) — 4 stacked bold claims */
.art-legal{gap:10px}
.lg-lines{display:flex;flex-direction:column;gap:8px;justify-content:center;flex:1}
.lg-line{
  margin:0;padding:9px 12px;border-radius:8px;
  background:rgba(6,20,44,.55);border-left:3px solid #4bd3a6;
  font-size:11px;color:#cfe4ff;line-height:1.4;
  opacity:0;transform:translateX(-6px);
  animation:artRise .5s ease forwards;
  animation-delay:calc(.7s + var(--i) * .35s);
}
.lg-line b{color:#e0efff;font-weight:800}

/* Support — 4 contact rows */
.art-support{gap:10px}
.sp-rows{display:flex;flex-direction:column;gap:6px;justify-content:center;flex:1}
.sp-row{
  margin:0;display:grid;grid-template-columns:90px 1fr;gap:10px;align-items:baseline;
  padding:6px 10px;border-radius:6px;
  background:rgba(6,20,44,.55);border:1px solid rgba(85,207,255,.15);
  opacity:0;transform:translateY(4px);
  animation:artRise .5s ease forwards;
  animation-delay:calc(.7s + var(--i) * .3s);
}
.sp-row b{font-size:10.5px;color:#6fdcff;font-weight:900;letter-spacing:.03em;font-family:"JetBrains Mono",monospace}
.sp-row span{font-size:9.5px;color:#cfe4ff;line-height:1.35}

/* v18 — panel height fix + broken-logo fallback */
@media(min-width:961px){
  .page-hero > .page-scene{
    /* Grow with content instead of clipping the tick line. */
    height:auto;
    min-height:420px;
    max-height:min(76vh,600px);
  }
  /* Also give the hero enough vertical room. */
  .page-hero{min-height:calc(min(76vh,600px) + 96px)}
}
/* Brand logo — if it fails to load, show alt-text sized down. */
.ed-brand img[alt="EyrieDefender"]{max-width:220px}

/* v19 (reverted) — user preferred the previous full-size panel;
 * only the JS dropdown fix from this batch survived. */
/* v19 shrink block reverted — art keeps its original size. */
