/* page overrides */
header { gap: 12px; }
.hero-grid { background-size: 40px 40px; }

/* ── HEADER ── */

    /* ── HERO ── */
    .hero {
      text-align:center; padding:80px 20px 50px;
      position:relative; overflow:hidden;
    }
    .hero-sub { font-size:10px; letter-spacing:5px; color:var(--purple-light); text-transform:uppercase; display:block; margin-bottom:20px; animation:subBlink 2s ease-in-out infinite; }
    @keyframes subBlink{ 0%,100%{opacity:.5} 50%{opacity:1} }
    .hero-title::before,.hero-title::after{ content:attr(data-t); position:absolute; inset:0; }
    .hero-title::before{ color:var(--purple-light); clip-path:polygon(0 0,100% 0,100% 38%,0 38%); animation:gt 7s infinite; }
    .hero-title::after { color:var(--gold);         clip-path:polygon(0 62%,100% 62%,100% 100%,0 100%); animation:gb 7s infinite; }
    @keyframes glitch{ 0%,90%,100%{transform:translate(0)} 92%{transform:translate(-3px,1px)} 94%{transform:translate(3px,-1px)} }
    @keyframes gt{ 0%,90%,100%{transform:translate(0);opacity:0} 92%{transform:translate(-8px,0);opacity:.9} 95%{transform:translate(5px,0);opacity:.9} }
    @keyframes gb{ 0%,90%,100%{transform:translate(0);opacity:0} 93%{transform:translate(8px,0);opacity:.9} 96%{transform:translate(-5px,0);opacity:.9} }
    .hero-caption { font-size:11px; letter-spacing:3px; color:rgba(255,255,255,.35); margin-top:16px; position:relative; z-index:2; }

    /* ── MAIN ── */
    .lab { max-width:1100px; margin:0 auto; padding:40px 40px 100px; }

    /* ── METER SECTION ── */
    .meter-wrap { display:grid; grid-template-columns:1fr 1fr; gap:60px; align-items:center; margin-bottom:60px; }
    .gauge-outer { position:relative; display:flex; align-items:center; justify-content:center; }
    .gauge-svg { width:300px; height:300px; filter:drop-shadow(0 0 40px rgba(107,33,212,.5)); }
    .g-track { fill:none; stroke:rgba(107,33,212,.15); stroke-width:14; stroke-linecap:round; }
    .g-fill  { fill:none; stroke:url(#gGrad); stroke-width:14; stroke-linecap:round; stroke-dasharray:534; stroke-dashoffset:534; transition:stroke-dashoffset 1.2s cubic-bezier(.25,1,.5,1); }
    .g-ring  { fill:none; stroke:rgba(107,33,212,.08); stroke-width:1; animation:ringPulse 3s ease-in-out infinite; }
    @keyframes ringPulse{ 0%,100%{opacity:.3;transform-origin:center;transform:scale(1)} 50%{opacity:.8;transform:scale(1.03)} }
    .gauge-inner { position:absolute; text-align:center; }
    .g-num { font-family:'Bebas Neue',sans-serif; font-size:88px; line-height:1; background:linear-gradient(135deg,var(--purple-light),var(--gold)); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
    .g-unit { font-size:9px; letter-spacing:4px; color:rgba(255,255,255,.3); text-transform:uppercase; }

    .meter-side {}
    .meter-heading { font-family:'Bebas Neue',sans-serif; font-size:clamp(40px,5vw,72px); color:var(--white); margin-bottom:14px; }
    .meter-heading span { color:var(--purple-light); }
    .meter-desc { font-size:11px; line-height:2; color:rgba(255,255,255,.45); margin-bottom:32px; }
    .btn-icon { font-size:30px; display:inline-block; animation:btnSpin 3s linear infinite; }
    @keyframes btnSpin{ to{transform:rotate(360deg)} }

    /* ── STATS ROW ── */
    .stats { display:grid; grid-template-columns:repeat(4,1fr); gap:2px; background:rgba(107,33,212,.2); margin-bottom:60px; }
    .stat { background:rgba(6,6,8,.9); padding:28px 16px; text-align:center; position:relative; overflow:hidden; transition:background .3s; }
    .stat::after { content:''; position:absolute; top:0; left:0; right:0; height:2px; background:linear-gradient(90deg,transparent,var(--purple-light),transparent); transform:translateX(-100%); animation:scan 3s linear infinite; }
    .stat:nth-child(2)::after{ animation-delay:-.75s }
    .stat:nth-child(3)::after{ animation-delay:-1.5s }
    .stat:nth-child(4)::after{ animation-delay:-2.25s }
    @keyframes scan{ to{transform:translateX(100%)} }
    .stat:hover{ background:rgba(107,33,212,.1) }
    .stat-n { font-family:'Bebas Neue',sans-serif; font-size:clamp(28px,4vw,48px); color:var(--purple-light); display:block; }
    .stat-l { font-size:8px; letter-spacing:3px; color:rgba(255,255,255,.3); text-transform:uppercase; display:block; margin-top:4px; }

    /* ── OSCILLOSCOPE ── */
    .osc-wrap { margin-bottom:60px; padding:32px; background:rgba(255,255,255,.02); border:1px solid rgba(107,33,212,.2); }
    .osc-lbl { font-size:9px; letter-spacing:4px; color:var(--purple-light); text-transform:uppercase; margin-bottom:16px; display:block; }
    .osc-screen { height:100px; background:rgba(0,255,80,.02); border:1px solid rgba(0,255,80,.1); position:relative; overflow:hidden; }
    #oscCv { position:absolute; inset:0; width:100%; height:100%; }

    /* ── ANALYSIS ── */
    .analysis-wrap { margin-bottom:60px; }
    .a-title { font-family:'Bebas Neue',sans-serif; font-size:48px; letter-spacing:3px; color:var(--white); margin-bottom:32px; }
    .a-title span { color:var(--purple-light); }
    .a-row { display:flex; align-items:center; gap:20px; margin-bottom:18px; }
    .a-name { font-size:9px; letter-spacing:2px; text-transform:uppercase; color:rgba(255,255,255,.4); width:130px; flex-shrink:0; }
    .a-track { flex:1; height:5px; background:rgba(255,255,255,.05); position:relative; overflow:hidden; }
    .a-fill { height:100%; background:linear-gradient(90deg,var(--purple),var(--purple-light)); width:0; transition:width 2s cubic-bezier(.25,1,.5,1); position:relative; }
    .a-fill::after { content:''; position:absolute; right:0; top:-5px; bottom:-5px; width:3px; background:var(--white); box-shadow:0 0 12px var(--purple-light); }
    .a-val { font-family:'Bebas Neue',sans-serif; font-size:22px; color:var(--purple-light); width:48px; text-align:right; flex-shrink:0; }

    /* ── LOG ── */
    .log-wrap { padding:28px; background:rgba(0,0,0,.6); border:1px solid rgba(107,33,212,.15); font-size:11px; max-height:180px; overflow-y:auto; }
    .log-head { color:var(--purple-light); letter-spacing:3px; text-transform:uppercase; font-size:9px; margin-bottom:12px; }
    .log-line { color:rgba(255,255,255,.45); line-height:2.2; opacity:0; animation:lFade .4s ease forwards; }
    @keyframes lFade{ to{opacity:1} }
    .ts { color:rgba(107,33,212,.9); }
    .ok { color:#4eff91; }
    .warn { color:var(--gold); }

    /* ── PARTICLES ── */
    #pcv { position:fixed; inset:0; pointer-events:none; z-index:50; }
