/* V8 home page only */
.h8-hero{position:relative;text-align:center;padding:56px 16px 0;display:flex;flex-direction:column;align-items:center;gap:20px;max-width:1120px;margin:0 auto}
.h8-pill{font:600 12px 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--v8-emerald);
  padding:7px 14px;border:1px solid rgba(24,226,162,.35);border-radius:999px;background:rgba(24,226,162,.07)}
.h8-hero h1{font-size:clamp(30px,6.4vw,66px);line-height:1.08;max-width:17ch;margin:0}
.h8-hero h1 .cs{display:block;font-size:.5em;letter-spacing:.14em;text-transform:uppercase;color:var(--v8-emerald);margin-bottom:.5em;font-weight:600}
.h8-glow{font-family:var(--v8-serif);font-style:italic;font-weight:400;letter-spacing:0;font-size:1.1em;
  background:linear-gradient(110deg,#7ff5d2,#18e2a2 45%,#4d7cff);-webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 0 14px rgba(24,226,162,.75)) drop-shadow(0 0 34px rgba(24,226,162,.45));
  animation:h8pulse 4.5s ease-in-out infinite}
@keyframes h8pulse{0%,100%{filter:drop-shadow(0 0 12px rgba(24,226,162,.65)) drop-shadow(0 0 28px rgba(24,226,162,.35))}
  50%{filter:drop-shadow(0 0 20px rgba(24,226,162,.95)) drop-shadow(0 0 48px rgba(24,226,162,.6))}}
.h8-lede{max-width:58ch;color:var(--v8-muted);font-size:clamp(16px,2vw,19px);line-height:1.65;margin:0}
.h8-cta{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.h8-btn{display:inline-flex;align-items:center;gap:8px;font:700 14.5px var(--v8-body);padding:13px 24px;border-radius:999px;text-decoration:none;
  border:1px solid transparent;cursor:pointer;transition:transform .2s,box-shadow .2s}
.h8-btn.primary{background:var(--v8-emerald);color:#04110d;box-shadow:0 0 26px rgba(24,226,162,.45)}
.h8-btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px rgba(24,226,162,.75)}
.h8-btn.ghost{background:var(--v8-glass);color:var(--v8-text);border-color:var(--v8-glass-line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.h8-btn.ghost:hover{border-color:var(--v8-emerald)}
.h8-stage{position:relative;width:100%;max-width:760px;aspect-ratio:1.25;margin-top:4px}
.h8-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
#h8-gl{z-index:1}
#h8-shield{z-index:2;pointer-events:none}
.h8-orb{position:absolute;inset:14% 24%;border-radius:50%;display:none;
  background:radial-gradient(circle at 35% 30%,#fff,#6fd9bd 25%,#0b4a3b 60%,#020807)}
.h8-chip{position:absolute;z-index:3;display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:14px;text-align:left;text-decoration:none;
  border:1px solid var(--v8-glass-line);background:rgba(12,22,24,.58);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  font-size:13px;color:var(--v8-text);animation:h8float 7s ease-in-out infinite;transition:border-color .2s}
.h8-chip:hover{border-color:var(--v8-emerald)}
.h8-chip i{width:9px;height:9px;border-radius:50%;background:var(--v8-emerald);box-shadow:0 0 12px var(--v8-emerald);flex:none}
.h8-chip small{display:block;color:var(--v8-muted);font-size:11px}
.h8-c1{left:0;top:18%}.h8-c2{right:0;top:30%;animation-delay:-2s}.h8-c3{left:5%;bottom:12%;animation-delay:-4s}.h8-c4{right:3%;bottom:6%;animation-delay:-1s}
.h8-c2 i{background:var(--v8-pink);box-shadow:0 0 12px var(--v8-pink)}.h8-c3 i{background:var(--v8-blue);box-shadow:0 0 12px var(--v8-blue)}.h8-c4 i{background:var(--v8-purple);box-shadow:0 0 12px var(--v8-purple)}
@keyframes h8float{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@media(max-width:700px){.h8-stage{aspect-ratio:1}.h8-chip{display:none}}

/* shared section frame */
.h8-sec{max-width:1120px;margin:96px auto 0;padding:0 16px}
.h8-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:26px}
.h8-head h2{max-width:20ch;margin:0}
.h8-head p{max-width:44ch;color:var(--v8-muted);margin:0}
.h8-serif{font-family:var(--v8-serif);font-style:italic;font-weight:400;letter-spacing:0;font-size:1.1em;
  background:var(--v8-holo);-webkit-background-clip:text;background-clip:text;color:transparent}

/* quick check terminal */
.h8-scan{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:20px;align-items:stretch}
@media(max-width:820px){.h8-scan{grid-template-columns:minmax(0,1fr)}}
.h8-scan-copy{display:flex;flex-direction:column;gap:14px;justify-content:center}
.h8-scan-copy p{color:var(--v8-muted);max-width:46ch;margin:0}
.h8-term{border:1px solid var(--v8-glass-line);border-radius:20px;background:rgba(6,12,13,.74);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.45),0 0 40px rgba(24,226,162,.07)}
.h8-term-head{display:flex;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--v8-glass-line);
  font:500 12px ui-monospace,Menlo,Consolas,monospace;color:var(--v8-muted)}
.h8-term-head span:last-child{color:var(--v8-emerald)}
.h8-term-screen{min-height:210px;padding:16px;font:13.5px/1.7 ui-monospace,Menlo,Consolas,monospace;color:#b8cfc9}
.h8-term-screen div{overflow-wrap:anywhere}
.h8-ok{color:var(--v8-emerald)}.h8-warn{color:#ffc15a}.h8-dim{color:var(--v8-muted)}
.h8-term-foot{padding:14px 16px;border-top:1px solid var(--v8-glass-line);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.h8-score{margin-left:auto;font:700 22px var(--v8-display);letter-spacing:-.03em}
.h8-btn:disabled{opacity:.55;cursor:default;transform:none}

/* latest threats */
.h8-news{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}
.h8-news a{display:flex;flex-direction:column;gap:10px;padding:22px;border-radius:20px;text-decoration:none;color:var(--v8-text);
  border:1px solid var(--v8-glass-line);background:var(--v8-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  transition:transform .25s,border-color .25s,box-shadow .25s}
.h8-news a:hover{transform:translateY(-5px);border-color:var(--v8-emerald);box-shadow:0 14px 40px rgba(0,0,0,.35),0 0 24px rgba(24,226,162,.14)}
.h8-tag{align-self:flex-start;font:600 11px 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;padding:4px 10px;border-radius:999px;
  border:1px solid rgba(255,79,163,.45);color:var(--v8-pink)}
.h8-news h3{font-size:17px;margin:0}
.h8-news p{color:var(--v8-muted);font-size:14.5px;line-height:1.55;margin:0}
.h8-news small{margin-top:auto;color:var(--v8-muted);font-size:12.5px}
.h8-more{margin-top:18px}

/* V9 home: stronger matrix */
#v8-matrix{opacity:.24!important}
/* V9 home: web of traffic */
#w8-web{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
.w8-n{z-index:3}
.h8-stage #h8-gl{inset:21.72% 24.75%!important;width:50.5%!important;height:56.56%!important}
/* 6 labels in an even ring, clockwise from the top; text 4% bigger than before (13px -> 13.52px) */
.h8-chip.w8-n{font-size:13.52px;translate:-50% -50%;white-space:nowrap}
.h8-chip.w8-n small{white-space:normal;width:22ch;margin-top:2px;line-height:1.35}
.w8-n1{left:50%;top:7%}.w8-n2{left:84%;top:28%;animation-delay:-2s}
.w8-n3{left:84%;top:72%;animation-delay:-4s}.w8-n4{left:50%;top:93%;animation-delay:-1s}
.w8-n5{left:16%;top:72%;animation-delay:-3s}.w8-n6{left:16%;top:28%;animation-delay:-5s}
.w8-n2 i,.w8-n5 i{background:var(--v8-pink);box-shadow:0 0 12px var(--v8-pink)}
.w8-n3 i,.w8-n6 i{background:var(--v8-blue);box-shadow:0 0 12px var(--v8-blue)}
.w8-n4 i{background:var(--v8-purple);box-shadow:0 0 12px var(--v8-purple)}
@media(max-width:700px){
  .h8-stage{aspect-ratio:.6!important}
  .h8-chip.w8-n{display:flex!important;padding:6px 9px;font-size:11.96px;gap:6px;border-radius:10px}
  .h8-chip.w8-n small{display:block;font-size:9.5px;width:16ch}
  .h8-chip.w8-n i{width:7px;height:7px}
  .h8-stage #h8-gl{inset:32.325% 17.68%!important;width:64.64%!important;height:35.35%!important}
  .w8-n1{left:50%;top:8%}.w8-n2{left:76%;top:28%}.w8-n3{left:76%;top:72%}
  .w8-n4{left:50%;top:92%}.w8-n5{left:24%;top:72%}.w8-n6{left:24%;top:28%}
}

.h8-btn.help{background:#ffb02e;color:#1a1000;box-shadow:0 0 26px rgba(255,176,46,.45)}
.h8-btn.help:hover{transform:translateY(-2px);box-shadow:0 0 40px rgba(255,176,46,.75)}
@media(max-width:700px){.h8-btn.help{width:100%;max-width:340px;justify-content:center}}
