:root{--void:#1a1024;--panel:rgba(26,15,40,.86);--panel-solid:#1c1229;--edge:rgba(168,132,255,.2);--edge-hot:rgba(255,46,136,.55);--mag:#ff2e88;--cyan:#2ee6ff;--lime:#c6ff2e;--amber:#ffb02e;--ink:#f4eeff;--dim:#a99bc7;--dim2:#7d709c;--dim3:#5b5178;--panel-w:330px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--void);color:var(--ink);overflow:hidden;font-family:Space Grotesk,system-ui,sans-serif;-webkit-font-smoothing:antialiased}#app{position:fixed;inset:0}#stage{position:absolute;inset:0}#stage canvas{display:block;width:100%;height:100%}b,strong{font-weight:600}#boot{position:fixed;inset:0;z-index:60;background:var(--void);display:grid;place-items:center;transition:opacity .45s ease}#boot.gone{opacity:0;pointer-events:none}.bootinner{text-align:center;width:250px}.bootinner .fly{font-size:60px;animation:buzz .45s infinite alternate ease-in-out}.bootinner p{margin:14px 0 12px;color:var(--dim);font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.07em}.bootbar{height:2px;background:#ffffff1a;border-radius:2px;overflow:hidden}#bootfill{height:100%;width:0;background:linear-gradient(90deg,var(--mag),var(--amber));transition:width .25s ease}@keyframes buzz{0%{transform:translate(-3px,-2px) rotate(-6deg)}to{transform:translate(3px,2px) rotate(6deg)}}#intro{position:fixed;inset:0;z-index:55;display:grid;place-items:center;background:#0c0714c7;backdrop-filter:blur(7px);padding:22px;transition:opacity .3s ease}#intro.hidden{opacity:0;pointer-events:none}.introcard{max-width:560px;background:var(--panel-solid);border:1px solid var(--edge);border-radius:15px;padding:28px 30px;box-shadow:0 30px 70px -22px #000000d9}.introtag{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--mag);display:block;margin-bottom:10px}.introcard h2{margin:0 0 18px;font-size:25px;line-height:1.22;font-weight:600;letter-spacing:-.015em;text-wrap:balance}.protocol{margin:0;padding:0;list-style:none;counter-reset:s}.protocol li{counter-increment:s;position:relative;padding-left:32px;margin-bottom:13px;font-size:14px;line-height:1.55;color:var(--dim)}.protocol li:before{content:counter(s);position:absolute;left:0;top:1px;width:20px;height:20px;border-radius:50%;border:1px solid var(--edge);font-family:IBM Plex Mono,monospace;font-size:10.5px;color:var(--dim2);display:grid;place-items:center}.protocol li b{color:var(--ink)}.introctl{margin:16px 0 0;padding:13px 15px;border-radius:9px;background:#c6ff2e12;border:1px solid rgba(198,255,46,.28);font-size:13.5px;line-height:1.55;color:var(--dim)}.introctl .ctlword{color:var(--lime);font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.09em;text-transform:uppercase}.introctl em{color:var(--ink);font-style:italic}#introgo{margin-top:20px;width:100%;padding:13px;font-size:13.5px;font-weight:600;font-family:Space Grotesk,sans-serif;letter-spacing:.02em;background:var(--mag);color:#1a0a12;border:0;border-radius:9px;cursor:pointer;transition:filter .15s,transform .1s}#introgo:hover{filter:brightness(1.12)}#introgo:active{transform:translateY(1px)}#topbar{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:14px 16px;pointer-events:none}.brand{display:flex;gap:11px;align-items:center;pointer-events:auto;background:var(--panel);backdrop-filter:blur(16px);border:1px solid var(--edge);border-radius:12px;padding:9px 15px}.brand .bug{font-size:25px;animation:buzz .45s infinite alternate ease-in-out}.brand h1{margin:0;font-size:17px;font-weight:700;letter-spacing:.13em;color:var(--ink)}.brand p{margin:2px 0 0;font-size:11px;color:var(--dim2);font-family:IBM Plex Mono,monospace}.brand p b{color:var(--mag);font-weight:600}.controls{display:flex;gap:7px;pointer-events:auto;flex-wrap:wrap;justify-content:flex-end}button{font-family:IBM Plex Mono,monospace;font-size:11.5px;letter-spacing:.04em;color:var(--dim);background:var(--panel);backdrop-filter:blur(16px);border:1px solid var(--edge);border-radius:9px;padding:9px 12px;cursor:pointer;transition:border-color .15s,color .15s,transform .1s}button:hover{border-color:var(--mag);color:var(--ink)}button:active{transform:translateY(1px)}button:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}#help{width:34px;padding:9px 0;text-align:center}#panel{position:absolute;top:70px;right:13px;bottom:13px;width:var(--panel-w);z-index:10;display:flex;flex-direction:column;gap:9px;overflow-y:auto;padding-right:2px;scrollbar-width:thin;scrollbar-color:var(--edge) transparent}#panel::-webkit-scrollbar{width:5px}#panel::-webkit-scrollbar-thumb{background:var(--edge);border-radius:3px}.card{background:var(--panel);backdrop-filter:blur(16px);border:1px solid var(--edge);border-radius:12px;padding:12px 14px}.cardhead{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:11px}.cardhead h2{margin:0;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim2);font-weight:600;font-family:IBM Plex Mono,monospace}.instrument{border-color:#a884ff4d}.instrument.hot{border-color:var(--edge-hot);background:#300e22e0}.verdict{font-family:IBM Plex Mono,monospace;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;padding:2.5px 7px;border-radius:3px;color:var(--dim2);background:#ffffff0f;transition:all .2s}.instrument.hot .verdict{color:#1a0a12;background:var(--mag)}.gauge{margin-bottom:11px}.gaugeval{display:flex;align-items:baseline;gap:4px;margin-bottom:7px}.gaugeval b{font-family:IBM Plex Mono,monospace;font-size:40px;font-weight:600;line-height:1;letter-spacing:-.03em;color:var(--dim);font-variant-numeric:tabular-nums;transition:color .2s}.instrument.hot .gaugeval b{color:var(--mag)}.gaugeval i{font-style:normal;font-size:12px;color:var(--dim3);font-family:IBM Plex Mono,monospace}.gaugetrack{position:relative;height:9px;border-radius:5px;background:#ffffff12;overflow:visible}.gaugefill{height:100%;width:0;border-radius:5px;background:linear-gradient(90deg,#6b4a8a,var(--mag) 55%,var(--amber));transition:width .09s linear}.gaugethresh{position:absolute;top:-4px;bottom:-4px;left:15%;width:2px;background:var(--ink);opacity:.6}.gaugethresh span{position:absolute;top:-14px;left:50%;transform:translate(-50%);font-family:IBM Plex Mono,monospace;font-size:8.5px;color:var(--dim2)}.gaugefoot{display:flex;justify-content:space-between;margin-top:6px;font-family:IBM Plex Mono,monospace;font-size:8.5px;color:var(--dim3)}.gaugefoot span:nth-child(2){color:var(--dim2)}.readout{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 0 9px;border-top:1px solid rgba(255,255,255,.07)}.readout div{display:flex;flex-direction:column;gap:2px;min-width:0}.readout span{font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:var(--dim3)}.readout b{font-family:IBM Plex Mono,monospace;font-size:12.5px;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar{position:relative;height:6px;border-radius:4px;background:#ffffff12;overflow:hidden;margin-top:5px}.bar.thin{height:5px}.fill{height:100%;width:0;border-radius:4px;transition:width .09s linear}.fill.mag{background:linear-gradient(90deg,#8a3a63,var(--mag))}.fill.lime{background:linear-gradient(90deg,#7a9430,var(--lime))}.stimrow{display:flex;align-items:center;gap:7px;margin-top:9px;font-size:12px;color:var(--dim)}.stimrow:first-child{margin-top:0}.stimname{flex:1}.stimval{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink);font-variant-numeric:tabular-nums}.stimrow em{font-style:normal;color:var(--lime);font-size:9px;letter-spacing:.08em;text-transform:uppercase;border:1px solid rgba(198,255,46,.35);border-radius:3px;padding:1px 4px;margin-left:5px}.sw{width:8px;height:8px;border-radius:2px;display:inline-block;flex:0 0 auto}.sw.mag{background:var(--mag)}.sw.lime{background:var(--lime)}.live{display:flex;align-items:center;gap:5px;font-family:IBM Plex Mono,monospace;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim2)}.live i{width:5px;height:5px;border-radius:50%;background:var(--mag);animation:pulse 1.4s infinite ease-in-out}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}.rasterrow{display:flex;gap:7px;height:152px}.rasterlabels{position:relative;width:74px;flex:0 0 auto}.rasterlabels span{position:absolute;right:0;font-family:IBM Plex Mono,monospace;font-size:8px;letter-spacing:.02em;color:var(--c);opacity:.95;line-height:1.15;text-align:right;display:flex;align-items:center;justify-content:flex-end}.rasterwrap{flex:1;border-radius:7px;overflow:hidden;border:1px solid rgba(168,132,255,.16);background:#120a1c;min-width:0}#raster{width:100%;height:100%;display:block}.rateGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;margin-top:10px}.rateGrid div{display:flex;justify-content:space-between;align-items:baseline;gap:6px;font-size:10px;color:var(--dim3);border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:3px}.rateGrid b{font-family:IBM Plex Mono,monospace;font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}.tallyinline{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--dim3)}.tallyinline b{color:var(--ink)}.log{list-style:none;margin:0;padding:0;max-height:124px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--edge) transparent}.log::-webkit-scrollbar{width:4px}.log::-webkit-scrollbar-thumb{background:var(--edge);border-radius:2px}.log li{display:flex;align-items:baseline;gap:7px;padding:5px 0;font-size:11.5px;color:var(--dim);border-bottom:1px solid rgba(255,255,255,.05);animation:slidein .25s ease}.log li:last-child{border-bottom:0}.log li .em{font-size:13px;line-height:1}.log li .verb{font-family:IBM Plex Mono,monospace;font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:1.5px 5px;border-radius:3px;flex:0 0 auto}.log li.fed .verb{color:#1a0a12;background:var(--mag)}.log li.refused .verb{color:#12180a;background:var(--lime)}.log li .why{color:var(--dim3);font-size:10.5px;margin-left:auto;font-family:IBM Plex Mono,monospace;white-space:nowrap}.log li.empty{color:var(--dim3);font-style:italic;font-size:11px;border:0}@keyframes slidein{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.prov p{margin:0 0 8px;font-size:10.5px;line-height:1.55;color:var(--dim2)}.prov p:last-of-type{margin-bottom:0}.prov>p>b:first-child{font-family:IBM Plex Mono,monospace;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;padding:1.5px 5px;border-radius:3px;margin-right:5px;font-weight:600}.prov b.con{color:#0b1a1a;background:var(--cyan)}.prov b.warn{color:#1a1206;background:var(--amber)}.prov b.scr{color:var(--ink);background:#a884ff47}.prov p b:not(.con):not(.warn):not(.scr){color:var(--dim);font-size:10.5px;letter-spacing:0}.prov em{color:var(--mag);font-style:italic}.prov .link{margin-top:10px}.prov .link a{color:var(--cyan);text-decoration:none;font-size:11px;border-bottom:1px solid rgba(46,230,255,.3)}.prov .link a:hover{color:var(--lime);border-color:var(--lime)}.credit{margin-top:8px!important;font-size:9px;color:var(--dim3);opacity:.8}#toast{position:absolute;left:calc(50% - var(--panel-w)/2);bottom:30px;transform:translate(-50%,12px);z-index:20;background:var(--panel-solid);border:1px solid var(--edge);border-radius:10px;padding:9px 16px;font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;white-space:nowrap;box-shadow:0 12px 30px -12px #000000b3}#toast.show{opacity:1;transform:translate(-50%)}#toast.refused{border-color:#c6ff2e80;color:var(--lime)}#toast.fed{border-color:var(--edge-hot);color:var(--mag)}#status{position:absolute;left:16px;bottom:14px;z-index:20;font-family:IBM Plex Mono,monospace;font-size:11.5px;color:var(--dim3)}#status.err{color:var(--mag)}@media (max-width:1000px){:root{--panel-w:296px}.gaugeval b{font-size:34px}}@media (max-width:820px){#panel{position:absolute;inset:auto 0 0;width:auto;max-height:46vh;flex-direction:row;overflow-x:auto;overflow-y:hidden;padding:9px;gap:8px;scroll-snap-type:x mandatory}.card{min-width:265px;flex:0 0 auto;scroll-snap-align:start;overflow-y:auto}.rasterrow{height:120px}.log{max-height:96px}#topbar{flex-direction:column;gap:8px}.controls{justify-content:flex-start}#toast{left:50%;bottom:auto;top:112px}#status{display:none}}@media (prefers-reduced-motion:reduce){.brand .bug,.bootinner .fly,.live i{animation:none}.fill,.gaugefill{transition:none}.log li{animation:none}}
