:root{--paper:#f2f5f8;--paper-2:#e8edf1;--sea:#dbe6ed;--land:#fbfcfd;--grid:#bfd0da;--border:#d2dce3;--border-strong:#b2c2cc;--line:#101e2a17;--ink:#0e1c28;--ink-2:#384b59;--muted:#586a77;--rule:#d5dee4;--signal:#d62839;--signal-fill:#d62839;--signal-soft:#f9dcdd;--home:#1f5fbf;--home-fill:#1f5fbf;--panel:#fff;--panel-2:#f6f9fb;--heat-0:#e7edf0;--heat-1:#f8d6d5;--heat-2:#f0a7a4;--heat-3:#e46b6c;--heat-4:#d62839;--heat-5:#93172a;--wash-a:#d628391a;--wash-b:#1f5fbf1a;--spot:#d628390d;--spot-edge:#101e2a57;--edge:#fffc;--shadow:0 1px 2px #101e2a0d, 0 16px 36px -22px #101e2a52;--shadow-lift:0 2px 4px #101e2a0f, 0 28px 54px -26px #101e2a6b;--shade-1:#fbeceb;--shade-2:#f8dbd9;--shade-3:#f3c4c1;--shade-4:#edaaa6;--shade-5:#e58e89;--display:"Archivo", system-ui, sans-serif;--sans:"Geist", "Archivo", system-ui, sans-serif;--mono:"Geist Mono", ui-monospace, monospace;--measure:64ch;--gutter:clamp(18px, 4.2vw, 44px);--wrap:1240px;--r-xl:20px;--r-lg:14px;--r-md:10px;--r-sm:6px;--ease:cubic-bezier(.22, .8, .24, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#05090e;--paper-2:#09111a;--sea:#070f17;--land:#14263a;--grid:#0f2030;--border:#1a2b3c;--border-strong:#2a4259;--line:#82aad21f;--ink:#ecf2f7;--ink-2:#b4c3ce;--muted:#7d92a1;--rule:#14222f;--signal:#ff4d5e;--signal-soft:#3a1823;--home:#5aa2ff;--panel:#0a1118;--panel-2:#0e1822;--heat-0:#101f2d;--heat-1:#3a1f2c;--heat-2:#6c2634;--heat-3:#b0344a;--heat-4:#ff4d5e;--heat-5:#ffa0a8;--wash-a:#ff4d5e21;--wash-b:#5aa2ff1f;--spot:#ffffff0b;--spot-edge:#ffffff4d;--edge:#ffffff0d;--shadow:0 1px 2px #00000080, 0 20px 44px -24px #000000f2;--shadow-lift:0 2px 4px #00000080, 0 32px 60px -26px #000;--shade-1:#15283a;--shade-2:#1b2a3c;--shade-3:#242b3e;--shade-4:#302a3c;--shade-5:#402a39;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper);scroll-padding-top:96px;overflow-x:clip}body{color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16.5px;line-height:1.65;overflow-x:clip}::selection{background:color-mix(in srgb, var(--signal) 35%, transparent)}a{color:inherit;-webkit-text-decoration-color:color-mix(in srgb, var(--signal) 70%, transparent);text-decoration-color:color-mix(in srgb, var(--signal) 70%, transparent);text-underline-offset:4px;transition:color .2s var(--ease), text-decoration-color .2s var(--ease);text-decoration-thickness:1px}a:hover{color:var(--signal);text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--home);outline-offset:3px;border-radius:4px}code{font-family:var(--mono);font-size:.86em}.muted{color:var(--muted)}.small{font-size:.86rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}body:before,body:after{content:"";z-index:-1;pointer-events:none;position:fixed;inset:0}body:before{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.045'/%3E%3C/svg%3E"), radial-gradient(70% 60% at 15% 0%, var(--wash-a), transparent 70%)}body:after{background:radial-gradient(70% 60% at 85% 100%, var(--wash-b), transparent 70%);opacity:0}.masthead{z-index:50;padding:0 var(--gutter);pointer-events:none;position:fixed;top:14px;left:0;right:0}.masthead-inner{pointer-events:auto;max-width:var(--wrap);background:color-mix(in srgb, var(--paper) 62%, transparent);-webkit-backdrop-filter:saturate(160%)blur(16px);backdrop-filter:saturate(160%)blur(16px);border:1px solid var(--border);box-shadow:inset 0 1px 0 var(--edge);transition:background .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);border-radius:999px;justify-content:space-between;align-items:center;gap:12px 28px;margin:0 auto;padding:7px 8px 7px 18px;display:flex;position:relative}.masthead.is-scrolled .masthead-inner{background:color-mix(in srgb, var(--paper) 86%, transparent);border-color:var(--border-strong);box-shadow:inset 0 1px 0 var(--edge), var(--shadow)}.wordmark{font-family:var(--display);letter-spacing:-.01em;font-variation-settings:"wdth" 116;flex:none;align-items:center;gap:10px;font-size:1.08rem;font-weight:800;text-decoration:none;display:inline-flex}.wordmark:hover{color:var(--ink)}.wordmark-mark{width:24px;height:24px;color:var(--signal);flex:none}.wordmark-mark .ring{transform-origin:16px 16px;animation:3.2s ease-out infinite ping}.masthead nav{align-items:center;gap:2px;font-size:.9rem;display:flex}.masthead nav a{color:var(--ink-2);white-space:nowrap;transition:background .25s var(--ease), color .25s var(--ease);border-radius:999px;padding:8px 14px;text-decoration:none;position:relative}.masthead nav a:hover{color:var(--ink);background:var(--panel-2)}.masthead nav a[aria-current]{color:var(--ink);background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--border)}.masthead nav a[aria-current]:before{content:"";background:var(--signal);border-radius:50%;width:6px;height:6px;margin:0 8px 1px -2px;display:inline-block}.masthead nav a:last-child{background:var(--ink);color:var(--paper);margin-left:6px;font-weight:500}.masthead nav a:last-child:hover{background:color-mix(in srgb, var(--ink) 86%, var(--signal));color:var(--paper)}.masthead nav a:last-child[aria-current]{box-shadow:0 0 0 2px color-mix(in srgb, var(--signal) 60%, transparent)}.menu-toggle{display:none}.scroll-progress{z-index:60;pointer-events:none;background:linear-gradient(90deg, var(--home), var(--signal));transform-origin:0;height:2px;position:fixed;top:0;left:0;right:0;transform:scaleX(0)}@supports (animation-timeline:scroll()){.scroll-progress{animation:linear both progress;animation-timeline:scroll(root)}@keyframes progress{to{transform:scaleX(1)}}}main{max-width:var(--wrap);padding:0 var(--gutter);margin:0 auto}.hero{padding:clamp(112px,17vh,168px) 0 24px;position:relative}.hero-bg{z-index:-1;pointer-events:none;width:100vw;position:absolute;top:0;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)}.hero-grid{background:linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 64px 64px, linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 64px 64px;transform:translate3d(calc(var(--px,0) * -16px), calc(var(--py,0) * -10px), 0);transition:transform .5s var(--ease);position:absolute;inset:-60px;-webkit-mask-image:radial-gradient(75% 70% at 50% 30%,#000 0%,#0000 78%);mask-image:radial-gradient(75% 70% at 50% 30%,#000 0%,#0000 78%)}.hero-grid:after{content:"";background:linear-gradient(var(--spot-edge) 1px, transparent 1px) 0 0 / 64px 64px, linear-gradient(90deg, var(--spot-edge) 1px, transparent 1px) 0 0 / 64px 64px;-webkit-mask-image:radial-gradient(260px circle at calc(50% + var(--px,0) * 50% + 60px) calc(36% + var(--py,0) * 36% + 60px), #000, transparent 100%);-webkit-mask-image:radial-gradient(260px circle at calc(50% + var(--px,0) * 50% + 60px) calc(36% + var(--py,0) * 36% + 60px), #000, transparent 100%);mask-image:radial-gradient(260px circle at calc(50% + var(--px,0) * 50% + 60px) calc(36% + var(--py,0) * 36% + 60px), #000, transparent 100%);opacity:.55;position:absolute;inset:0}.hero-beam{background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--signal) 9%, transparent) 70%, color-mix(in srgb, var(--signal) 38%, transparent) 99%, transparent 100%);opacity:.35;height:160px;animation:11s linear infinite sweep;position:absolute;top:0;left:0;right:0;-webkit-mask-image:linear-gradient(90deg,#0000,#000 30% 70%,#0000);mask-image:linear-gradient(90deg,#0000,#000 30% 70%,#0000)}@keyframes sweep{0%{transform:translateY(-180px)}to{transform:translateY(640px)}}.hero-text{gap:26px 56px;display:grid}@media (width>=1000px){.hero-text{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start}.hero-text h1{grid-column:1/-1}}.hero h1{font-family:var(--display);letter-spacing:-.04em;font-variation-settings:"wdth" 90;text-wrap:balance;transform:translate3d(calc(var(--px,0) * 5px), calc(var(--py,0) * 3px), 0);margin:0;font-size:clamp(2.3rem,.9rem + 4.4vw,4.9rem);font-weight:560;line-height:1}.hero h1 b{font-variation-settings:"wdth" 120;font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:var(--signal);font-weight:800}.lede{max-width:var(--measure);color:var(--ink-2);margin:0;font-size:1.1rem;line-height:1.62}.hero-meta{color:var(--muted);border:1px solid var(--border);border-radius:var(--r-md);background:color-mix(in srgb, var(--panel) 70%, transparent);max-width:62ch;margin:0;padding:10px 14px;font-size:.88rem}.hero-meta code{color:var(--ink);background:var(--paper-2);border:1px solid var(--rule);border-radius:5px;padding:1px 7px}.hero-board{grid-template-columns:minmax(0,1fr);gap:14px;margin-top:clamp(32px,4.5vw,56px);display:grid}@media (width>=1000px){.hero-board{grid-template-columns:minmax(0,2.2fr) minmax(320px,1fr);align-items:stretch}}@keyframes wipe{0%{opacity:0;filter:blur(10px);-webkit-mask-position:100% 0;mask-position:100% 0}to{opacity:1;filter:blur();-webkit-mask-position:0 0;mask-position:0 0}}@keyframes rise{0%{opacity:0;translate:0 18px}to{opacity:1;translate:0}}.hero h1{animation:wipe 1.15s var(--ease) both;-webkit-mask-image:linear-gradient(90deg,#000 45%,#0000 55%);mask-image:linear-gradient(90deg,#000 45%,#0000 55%);-webkit-mask-position:0 0;mask-position:0 0;-webkit-mask-size:260% 100%;mask-size:260% 100%}.hero .lede,.hero-meta,.hero-board,.try{animation:rise .8s var(--ease) both}.hero .lede{animation-delay:.25s}.hero-meta{animation-delay:.35s}.hero-board{animation-delay:.45s}.try{animation-delay:.55s}.map{background:radial-gradient(120% 90% at 50% 30%, color-mix(in srgb, var(--sea) 78%, var(--home) 10%), var(--sea));border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow), inset 0 1px 0 var(--edge);margin:0;position:relative;overflow:hidden}.map:after{content:"";z-index:1;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 90px 10px color-mix(in srgb, var(--paper) 55%, transparent);position:absolute;inset:0}.map svg{width:100%;height:auto;display:block}.map-sea{fill:#0000}.map-grid{fill:none;stroke:var(--grid);stroke-width:.6px}.map-land{fill:var(--land)}.map-border{fill:none;stroke:var(--border);stroke-width:.5px}.map-point{fill:var(--signal);fill-opacity:.62;stroke:color-mix(in srgb, var(--signal) 40%, var(--land));stroke-width:1.2px;cursor:pointer;transition:fill-opacity .15s}.map-point:hover,.map-point:focus-visible{fill-opacity:1;stroke:var(--ink);outline:none}.map-home{fill:var(--home)}.map-home-ring{fill:none;stroke:var(--home);stroke-width:2px;transform-box:fill-box;transform-origin:50%;animation:2.4s ease-out infinite ping}@keyframes ping{0%{opacity:.9;transform:scale(.5)}to{opacity:0;transform:scale(1.6)}}.map-home-label{z-index:2;color:var(--home);background:color-mix(in srgb, var(--panel) 88%, transparent);border:1px solid color-mix(in srgb, var(--home) 40%, transparent);pointer-events:none;white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:.78rem;font-weight:500;position:absolute;transform:translate(14px,-50%)}.map-arc path{fill:none;stroke:var(--signal);stroke-width:1.7px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:1.1s cubic-bezier(.3,.6,.3,1) forwards draw,3.2s ease-in forwards fade}.map-arc circle{fill:var(--signal);animation:3.2s ease-in forwards fade}@keyframes draw{to{stroke-dashoffset:0}}@keyframes fade{0%,55%{opacity:1}to{opacity:0}}.map-tip{z-index:2;background:var(--panel);color:var(--ink);border:1px solid var(--border-strong);border-radius:var(--r-sm);box-shadow:var(--shadow-lift);pointer-events:none;white-space:nowrap;gap:1px;padding:8px 11px;font-size:.82rem;line-height:1.35;display:grid;position:absolute;transform:translate(14px,-50%)}.map-tip[data-side=left]{transform:translate(calc(-100% - 14px),-50%)}.map-tip strong{font-family:var(--mono);font-weight:500}.map-tip span{color:var(--ink-2)}.log{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow), inset 0 1px 0 var(--edge);flex-direction:column;min-height:0;max-height:520px;display:flex;overflow:hidden}@media (width>=1000px){.log{height:0;min-height:100%;max-height:none}}.log-head{border-bottom:1px solid var(--rule);background:var(--panel-2);justify-content:space-between;align-items:center;gap:12px;padding:13px 16px;display:flex}.log-head h2{letter-spacing:-.005em;margin:0;font-size:.98rem;font-weight:600}.live{color:var(--muted);border:1px solid var(--border);border-radius:999px;align-items:center;gap:8px;padding:2px 10px 2px 8px;font-size:.8rem;display:inline-flex}.live-dot{background:var(--muted);border-radius:50%;width:8px;height:8px}.live-live{color:var(--ink);border-color:color-mix(in srgb, var(--signal) 45%, var(--border))}.live-live .live-dot{background:var(--signal);box-shadow:0 0 0 0 var(--signal);animation:2s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--signal) 60%, transparent)}to{box-shadow:0 0 0 8px #0000}}.log-empty{color:var(--muted);margin:0;padding:16px;font-size:.95rem}.log-list{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex:1;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.log-list li{animation:.6s ease-out arrive}@keyframes arrive{0%{background:var(--signal-soft)}to{background:0 0}}.log-row{all:unset;box-sizing:border-box;cursor:pointer;width:100%;transition:background .15s var(--ease);grid-template-columns:auto 1fr;gap:0 12px;padding:7px 16px;font-size:.86rem;line-height:1.45;display:grid}.log-row:hover{background:var(--panel-2)}.log-row:focus-visible{outline:2px solid var(--home);outline-offset:-2px}.log-row time{color:var(--muted);font-variant-numeric:tabular-nums;font-family:var(--mono);padding-top:1px;font-size:.76rem}.log-ip{font-family:var(--mono);color:var(--ink-2);text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.log-cred{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;grid-column:2;overflow:hidden}.log-sep{color:var(--signal);margin:0 .4em}.log-cred em{color:var(--muted);font-style:normal;font-family:var(--sans)}.band{margin-top:16px;padding:clamp(72px,9vw,132px) 0 8px;scroll-margin-top:80px;position:relative}.band:before{content:"";background:linear-gradient(90deg, color-mix(in srgb, var(--signal) 70%, transparent) 0, var(--line) 24%, var(--line) 100%);height:1px;position:absolute;top:0;left:0;right:0}.band:after{content:"";background:var(--paper);border:1px solid var(--signal);width:11px;height:11px;box-shadow:0 0 0 4px var(--paper);border-radius:50%;position:absolute;top:-5px;left:0}.band h2{font-family:var(--display);letter-spacing:-.036em;font-variation-settings:"wdth" 96;text-wrap:balance;max-width:22ch;margin:0;font-size:clamp(2rem,1.2rem + 3vw,3.7rem);font-weight:620;line-height:1.02}.band-intro{max-width:var(--measure);color:var(--ink-2);margin:20px 0 48px;font-size:1.06rem}.rank,.campaign,.insight-list li,.project,.try,.heat,.daybars,.report-botnets li{background:linear-gradient(180deg, var(--panel-2), var(--panel) 38%);border:1px solid var(--border);box-shadow:var(--shadow), inset 0 1px 0 var(--edge)}@media (hover:hover){.rank:hover,.campaign:hover,.insight-list li:hover,.project:hover,.try:hover,.heat:hover,.daybars:hover,.report-botnets li:hover{background:radial-gradient(520px circle at var(--mx,50%) var(--my,0%), var(--spot), transparent 60%) padding-box, linear-gradient(var(--panel), var(--panel)) padding-box, radial-gradient(280px circle at var(--mx,50%) var(--my,0%), var(--spot-edge), var(--border) 72%) border-box;background-origin:border-box;border-color:#0000}}.ranks{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}@media (width>=720px){.ranks{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1080px){.ranks:not(.ranks-2){grid-template-columns:repeat(3,minmax(0,1fr))}}.rank{border-radius:var(--r-xl);padding:22px 24px 14px}.rank h3{letter-spacing:-.01em;margin:0;font-size:1.05rem;font-weight:600}.rank-caption{color:var(--muted);margin:2px 0 16px;font-size:.84rem}.rank table{border-collapse:collapse;width:100%}.rank tr{border-top:1px solid var(--rule)}.rank th{text-align:left;max-width:0;padding:8px;font-weight:400;position:relative}.rank td{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--mono);color:var(--ink-2);white-space:nowrap;width:1%;padding:8px 0 8px 12px;font-size:.82rem}.rank-bar{background:linear-gradient(90deg, color-mix(in srgb, var(--signal) 24%, transparent), color-mix(in srgb, var(--signal) 6%, transparent));border-right:2px solid var(--signal);transition:width .7s var(--ease);border-radius:4px 2px 2px 4px;position:absolute;top:4px;bottom:4px;left:0}.rank-label{text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;overflow:hidden}.rank tbody tr{transition:background .15s var(--ease)}.rank tbody tr:hover td{color:var(--ink)}.heat-title{letter-spacing:-.015em;margin:64px 0 16px;font-size:1.25rem;font-weight:600}.heat{border-radius:var(--r-xl);padding:20px 22px 8px;overflow-x:auto}.heat-grid{border-collapse:separate;border-spacing:3px;margin-top:4px}.heat-grid th{color:var(--muted);text-align:left;font-size:.74rem;font-weight:400;font-family:var(--mono);padding:0 8px 0 0}.heat-grid thead th{text-align:left;height:18px;padding:0}.heat-cell{width:clamp(14px,3vw,34px);height:24px;transition:transform .14s var(--ease);border-radius:4px}.heat-cell.s0{background:var(--heat-0)}.heat-cell.s1{background:var(--heat-1)}.heat-cell.s2{background:var(--heat-2)}.heat-cell.s3{background:var(--heat-3)}.heat-cell.s4{background:var(--heat-4)}.heat-cell.s5{background:var(--heat-5)}.heat-cell:hover{outline:2px solid var(--ink);outline-offset:1px;z-index:1;position:relative;transform:scale(1.14)}.heat-readout{color:var(--muted);min-height:1.5em;font-size:.88rem}.how{counter-reset:step;max-width:1040px;margin:0;padding:0;list-style:none;position:relative}.how:before,.how:after{content:"";width:1px;position:absolute;top:20px;bottom:28px;left:19px}.how:before{background:var(--line)}.how:after{background:linear-gradient(var(--signal), color-mix(in srgb, var(--signal) 20%, transparent));transform-origin:0 0;transform:scaleY(0)}@supports (animation-timeline:view()){.how:after{animation:linear both fillrail;animation-timeline:view();animation-range:entry 35% cover 70%}@keyframes fillrail{to{transform:scaleY(1)}}}@supports not (animation-timeline:view()){.how:after{transform:scaleY(1)}}.band h2+.how{margin-top:52px}.how li{counter-increment:step;padding:0 0 44px 68px;position:relative}.how li:last-child{padding-bottom:0}.how li:before{content:counter(step);background:var(--paper);border:1px solid var(--border-strong);width:40px;height:40px;color:var(--ink-2);font-family:var(--mono);box-shadow:0 0 0 6px var(--paper);transition:border-color .25s var(--ease), color .25s var(--ease), background .25s var(--ease);border-radius:50%;place-items:center;font-size:.82rem;font-weight:500;display:grid;position:absolute;top:0;left:0}.how li:hover:before{border-color:var(--signal);color:var(--signal)}.how h3{letter-spacing:-.02em;margin:0 0 8px;padding-top:6px;font-size:1.28rem;font-weight:600;line-height:1.25}.how p{color:var(--ink-2);max-width:62ch;margin:0}@media (width>=900px){.how li{grid-template-columns:250px minmax(0,1fr);align-items:start;gap:0 32px;display:grid}.how h3{margin:0}.how p{padding-top:6px}}.panel{border:1px solid var(--border-strong);border-radius:var(--r-xl);background:var(--panel);width:min(680px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--ink);box-shadow:var(--shadow-lift);padding:0}.panel[open]{animation:pop .26s var(--ease)}@keyframes pop{0%{opacity:0;transform:translateY(10px)scale(.985)}to{opacity:1;transform:none}}.panel::backdrop{background:color-mix(in srgb, var(--paper) 72%, #000 28%);opacity:.85}.panel>:not(.panel-head){margin-left:24px;margin-right:24px}.panel-head{border-bottom:1px solid var(--rule);background:var(--panel-2);z-index:1;justify-content:space-between;align-items:center;gap:12px;padding:16px 24px;display:flex;position:sticky;top:0}.panel-head h2{font-family:var(--mono);overflow-wrap:anywhere;letter-spacing:0;max-width:none;margin:0;font-size:1.05rem;font-weight:500}.panel-close,.try-copy{font:inherit;cursor:pointer;color:var(--ink);border:1px solid var(--border-strong);transition:background .18s var(--ease), border-color .18s var(--ease), color .18s var(--ease), transform .12s var(--ease);background:0 0;border-radius:999px;padding:6px 15px;font-size:.88rem}.panel-close:hover,.try-copy:hover{background:var(--panel-2);border-color:var(--ink-2)}.panel-close:active,.try-copy:active{transform:scale(.97)}.panel-error{color:var(--signal)}.panel-facts{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px 20px;margin-top:22px;margin-bottom:0;display:grid}.panel-facts dt{color:var(--muted);font-size:.8rem}.panel-facts dd{overflow-wrap:anywhere;margin:0}.panel-intel{background:var(--panel-2);border:1px solid var(--rule);border-radius:var(--r-md);padding:12px 14px}.panel h3{margin-top:26px;margin-bottom:8px;font-size:1rem;font-weight:600}.panel-creds{border-collapse:collapse;width:calc(100% - 48px);font-size:.9rem}.panel-creds th{text-align:left;color:var(--muted);border-bottom:1px solid var(--rule);padding:4px 8px 4px 0;font-size:.8rem;font-weight:600}.panel-creds td{border-bottom:1px solid var(--rule);overflow-wrap:anywhere;padding:6px 8px 6px 0}.panel-creds td:last-child,.panel-creds th:last-child{text-align:right;padding-right:0}.panel .small{margin-bottom:24px}.foot{max-width:var(--wrap);padding:28px var(--gutter) 56px;border-top:1px solid var(--line);margin:96px auto 0}.foot p{max-width:var(--measure);margin:0 0 4px}.try{border-radius:var(--r-xl);grid-template-columns:minmax(0,1fr);align-items:end;gap:18px 40px;margin-top:14px;padding:28px 30px;display:grid;position:relative;overflow:hidden}.try:before{content:"";background:var(--signal);border-radius:2px;width:2px;position:absolute;top:18px;bottom:18px;left:0}@media (width>=1000px){.try{grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr)}.try-result,.try-cli{grid-column:1/-1}}.try-intro h2{max-width:none;font-family:var(--display);font-variation-settings:"wdth" 104;letter-spacing:-.025em;margin:0;font-size:1.5rem;font-weight:640;line-height:1.15}.try-intro p{color:var(--ink-2);max-width:56ch;margin:8px 0 0;font-size:.95rem}.try-form{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.try-form label{color:var(--muted);flex:150px;gap:6px;font-size:.82rem;font-weight:500;display:grid}.try-form input{font:inherit;font-family:var(--mono);color:var(--ink);background:var(--paper);border:1px solid var(--border-strong);border-radius:var(--r-md);min-width:0;transition:border-color .18s var(--ease), box-shadow .18s var(--ease);padding:12px 14px;font-size:.92rem}.try-form input::placeholder{color:var(--muted);opacity:.8}.try-form input:hover{border-color:var(--ink-2)}.try-form input:focus-visible{border-color:var(--home);box-shadow:0 0 0 3px color-mix(in srgb, var(--home) 30%, transparent);outline:none}.try-form button{font:inherit;cursor:pointer;background:var(--signal-fill);color:#fff;border-radius:var(--r-md);box-shadow:0 1px 0 #ffffff38 inset, 0 10px 24px -10px color-mix(in srgb, var(--signal-fill) 90%, transparent);transition:transform .18s var(--ease), box-shadow .18s var(--ease), filter .18s var(--ease);border:0;flex:none;padding:13px 24px;font-weight:600}.try-form button:hover{filter:brightness(1.08);transform:translateY(-1px)}.try-form button:active{transform:translateY(0)scale(.985)}.try-form button:disabled{opacity:.6;cursor:progress;transform:none}.try-result p{margin:0}.try-result:empty{display:none}.try-result strong,.try-error{color:var(--signal)}.try-cli{color:var(--muted);margin:0;font-size:.9rem}.try-cli code{color:var(--ink);background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--r-sm);padding:3px 8px}.try-copy{margin-left:4px;padding:2px 11px;font-size:.8rem}.tag{font-family:var(--sans);background:var(--paper-2);border:1px solid var(--rule);color:var(--ink-2);vertical-align:1px;border-radius:999px;margin-left:6px;padding:0 7px;font-size:.7rem;font-weight:500;line-height:1.6;display:inline-block}.tag-you{background:var(--home-fill);border-color:var(--home-fill);color:#fff}.log-list li.is-mine{background:color-mix(in srgb, var(--home) 12%, transparent);box-shadow:inset 2px 0 0 var(--home)}.map-arc-mine path{stroke:var(--home);stroke-width:2.4px}.map-arc-mine circle{fill:var(--home)}.map-arc-mine text{fill:var(--home);font:700 13px var(--sans);paint-order:stroke;stroke:var(--land);stroke-width:3px;animation:5.2s ease-in forwards fade}.map-land.shade-1{fill:var(--shade-1)}.map-land.shade-2{fill:var(--shade-2)}.map-land.shade-3{fill:var(--shade-3)}.map-land.shade-4{fill:var(--shade-4)}.map-land.shade-5{fill:var(--shade-5)}.map-land[class*=shade-]{transition:fill .6s}.insight-list{grid-template-columns:minmax(0,1fr);gap:14px;margin:0;padding:0;list-style:none;display:grid}@media (width>=760px){.insight-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1180px){.insight-list{grid-template-columns:repeat(3,minmax(0,1fr))}}.insight-list li{border-radius:var(--r-xl);grid-template-columns:minmax(3.4ch,max-content) minmax(0,1fr);align-items:center;gap:0 20px;padding:22px 24px;display:grid}.insight-stat{font-family:var(--display);color:var(--signal);font-variation-settings:"wdth" 112;font-variant-numeric:tabular-nums;letter-spacing:-.03em;white-space:nowrap;font-size:2.3rem;font-weight:780;line-height:1}.insight-list p{color:var(--ink-2);margin:0;font-size:.95rem;line-height:1.5}.about{grid-template-columns:minmax(0,1fr);gap:clamp(40px,6vw,72px);display:grid}@media (width>=960px){.about-intro{grid-template-columns:minmax(0,1fr) minmax(0,.95fr);align-items:start;gap:0 64px;display:grid}.about-intro h2{grid-row:1/span 4;position:sticky;top:110px}.about-intro>:not(h2){grid-column:2}}.about-intro p{color:var(--ink-2);max-width:58ch;margin:0 0 18px;font-size:1.06rem}.about-links{flex-wrap:wrap;gap:10px;font-weight:500;display:flex;margin-top:26px!important}.about-links a{color:var(--ink);border:1px solid var(--border-strong);transition:background .22s var(--ease), border-color .22s var(--ease), color .22s var(--ease), transform .15s var(--ease);border-radius:999px;padding:9px 20px;text-decoration:none}.about-links a:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}.about-links a:active{transform:scale(.97)}.projects{grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.project{border-radius:var(--r-xl);transition:transform .35s var(--ease), box-shadow .35s var(--ease);flex-direction:column;grid-column:1/-1;align-items:flex-start;padding:30px 30px 28px;display:flex;position:relative;overflow:hidden}@media (width>=960px){.project:not(.project-main){grid-column:span 6}.project:nth-child(3){margin-top:56px}}@media (hover:hover){.project:hover{box-shadow:var(--shadow-lift), inset 0 1px 0 var(--edge);transform:translateY(-4px)}}.project h3{font-family:var(--display);letter-spacing:-.03em;font-variation-settings:"wdth" 100;margin:0 0 12px;font-size:1.5rem;font-weight:640;line-height:1.12}.project p{color:var(--ink-2);max-width:60ch;margin:0 0 22px;font-size:.99rem}.project>a{transition:background-size .35s var(--ease), color .2s var(--ease);background:linear-gradient(currentColor,currentColor) 0 100%/0% 1px no-repeat;margin-top:auto;padding-bottom:3px;font-size:.93rem;font-weight:500;text-decoration:none}.project>a:hover{background-size:100% 1px}.stack{flex-wrap:wrap;gap:6px;margin:0 0 24px;padding:0;list-style:none;display:flex}.stack li{font-family:var(--mono);color:var(--ink-2);border:1px solid var(--border-strong);background:var(--paper-2);transition:color .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease), transform .2s var(--ease);border-radius:999px;padding:3px 11px;font-size:.76rem}.stack li:hover{color:var(--ink);border-color:var(--ink-2);transform:translateY(-1px)}.project-main{grid-template-rows:auto auto 1fr;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:start;gap:0 56px;padding:clamp(28px,4vw,52px);display:grid}.project-main h3{letter-spacing:-.04em;grid-column:1;margin-bottom:18px;font-size:clamp(1.9rem,1.2rem + 2vw,3rem);line-height:1.04}.project-main p{grid-column:1;font-size:1.05rem}.project-main>a{grid-column:1;place-self:start;margin-top:4px}.project-main .stack{flex-flow:column;grid-area:1/2/span 3;align-self:center;gap:0;margin:0;position:relative}.project-main .stack:before{content:"";background:var(--border-strong);width:1px;position:absolute;top:18px;bottom:18px;left:4px}.project-main .stack li{background:0 0;border:0;border-radius:0;align-items:center;padding:9px 0 9px 30px;font-size:.9rem;display:flex;position:relative}.project-main .stack li:before{content:"";background:var(--panel);border:1px solid var(--border-strong);width:9px;height:9px;transition:background .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);border-radius:50%;margin-top:-4.5px;position:absolute;top:50%;left:0}.project-main .stack li:hover{transform:translate(4px)}.project-main .stack li:hover:before{background:var(--signal);border-color:var(--signal);transform:scale(1.25)}@media (width<=959px){.project-main{grid-template-columns:minmax(0,1fr)}.project-main .stack{flex-flow:wrap;grid-area:auto/1;gap:6px;margin:0 0 24px}.project-main .stack:before,.project-main .stack li:before{display:none}.project-main .stack li{border:1px solid var(--border-strong);background:var(--paper-2);border-radius:999px;padding:3px 11px;font-size:.76rem}.project-main .stack li:hover{transform:translateY(-1px)}}.domains{border-top:1px solid var(--line);margin:30px 0 0;padding:0;list-style:none}.domains li{border-bottom:1px solid var(--line);font-family:var(--display);letter-spacing:-.025em;font-variation-settings:"wdth" 100;color:var(--ink-2);transition:color .25s var(--ease), padding-left .25s var(--ease);justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0;font-size:1.35rem;font-weight:600;display:flex}.domains li:after{content:"";border:1px solid var(--border-strong);height:8px;transition:background .25s var(--ease), border-color .25s var(--ease);border-radius:50%;flex:0 0 8px}.domains li:hover{color:var(--ink);padding-left:8px}.domains li:hover:after{background:var(--signal);border-color:var(--signal)}.report{max-width:1080px;padding-top:clamp(120px,18vh,168px)}.report h1{font-family:var(--display);letter-spacing:-.04em;font-variation-settings:"wdth" 96;text-wrap:balance;margin:8px 0 0;font-size:clamp(2.4rem,1.2rem + 4.6vw,4.6rem);font-weight:620;line-height:1}.report-dates{color:var(--muted);font-family:var(--mono);margin:0;font-size:.86rem}.report-lede{margin-top:22px;font-size:1.22rem}.report-lede b{color:var(--signal);font-variant-numeric:tabular-nums;font-weight:600}.report-share{margin:8px 0 0;padding:7px 16px}.report-block{margin-top:80px;padding-top:28px;position:relative}.report-block:before{content:"";background:linear-gradient(90deg, color-mix(in srgb, var(--signal) 70%, transparent), var(--line) 24%);height:1px;position:absolute;top:0;left:0;right:0}.report-block h2{font-family:var(--display);font-variation-settings:"wdth" 98;letter-spacing:-.03em;margin:0 0 22px;font-size:clamp(1.6rem,1.2rem + 1.4vw,2.2rem);font-weight:620}.report-attacker{font-size:1.1rem}.report-attacker code{font-size:1rem}.daybars{border-radius:var(--r-xl);margin:0;padding:18px 20px 8px}.report-botnets{gap:12px;margin:0;padding:0;list-style:none;display:grid}.report-botnets li{color:var(--ink-2);border-radius:var(--r-lg);max-width:80ch;padding:18px 22px}.report-botnets b{color:var(--signal)}.report-botnets code{color:var(--ink);background:var(--paper-2);border:1px solid var(--rule);border-radius:5px;padding:1px 6px}.daybars svg{width:100%;height:auto;display:block}.daybars-base{stroke:var(--rule);stroke-width:1px}.daybars-bar{fill:var(--signal);opacity:.85}.daybars-bar.is-hover{opacity:1}.daybars-value{fill:var(--ink);font:600 13px var(--sans);font-variant-numeric:tabular-nums}.daybars-label{fill:var(--muted);font:12px var(--sans)}.inside-stats{color:var(--ink-2);margin:-20px 0 28px}.inside-stats b{color:var(--signal);font-variant-numeric:tabular-nums;font-weight:600}.inside{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}@media (width>=1000px){.inside{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}}.inside-side{align-content:start;gap:16px;display:grid}.session-tabs{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.session-tab{font:inherit;cursor:pointer;color:var(--ink-2);background:var(--panel);border:1px solid var(--border);transition:background .18s var(--ease), border-color .18s var(--ease), color .18s var(--ease);border-radius:999px;padding:5px 13px;font-size:.84rem}.session-tab:hover{border-color:var(--ink-2);color:var(--ink)}.session-tab[aria-selected=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.session-head{color:var(--ink-2);overflow-wrap:anywhere;margin:0 0 10px;font-size:.95rem}.session-head code{color:var(--ink);background:var(--paper-2);border:1px solid var(--rule);border-radius:5px;padding:1px 7px}.linkish{font:inherit;font-family:var(--mono);cursor:pointer;color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal);text-underline-offset:4px;background:0 0;border:0;padding:0;font-size:.92em}.linkish:hover{color:var(--signal)}.term{--t-bg:#04080c;--t-ink:#d9e4e9;--t-dim:#7f95a1;--t-prompt:#ff6b76;background:linear-gradient(180deg, #091119, var(--t-bg) 40%);color:var(--t-ink);border-radius:var(--r-xl);font-family:var(--mono);max-height:440px;box-shadow:var(--shadow), inset 0 1px 0 #ffffff0d;scrollbar-width:thin;scrollbar-color:#2a4259 transparent;border:1px solid #1a2b3c;padding:20px 22px;font-size:.82rem;line-height:1.7;position:relative;overflow:auto}.term-lines{margin:0;padding:0;list-style:none}.term-lines li{white-space:pre-wrap;overflow-wrap:anywhere;animation:.35s ease-out arrive}.term-lines code{font-size:1em}.term-prompt{color:var(--t-prompt)}.term-tunnel{color:var(--t-dim);font-style:italic}.term-more{color:var(--t-dim);margin:10px 0 0}.term-cursor{vertical-align:-.2em;background:var(--t-ink);width:.6em;height:1.1em;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.downloads{margin:0;padding:0;list-style:none}.downloads li{border-top:1px solid var(--rule);gap:2px;padding:10px 0;display:grid}.downloads code{overflow-wrap:anywhere;color:var(--signal)}.tag-in,.tag-live{background:var(--signal-fill);border-color:var(--signal-fill);color:#fff}.panel-session{margin-bottom:14px}.panel-session .term{max-height:260px}.campaigns{grid-template-columns:minmax(0,1fr);gap:14px;margin:0;padding:0;list-style:none;display:grid}@media (width>=900px){.campaigns{grid-template-columns:repeat(2,minmax(0,1fr))}}.campaign{border-radius:var(--r-xl);padding:26px 28px}.campaign header{border-bottom:1px solid var(--rule);gap:4px;margin-bottom:18px;padding-bottom:16px;display:grid}.campaign h3{font-family:var(--display);letter-spacing:-.025em;font-variation-settings:"wdth" 100;margin:0;font-size:1.45rem;font-weight:600}.campaign h3 b{color:var(--signal);font-variant-numeric:tabular-nums;font-weight:780}.campaign-facts{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px 18px;margin:0 0 14px;display:grid}.campaign-facts dt{color:var(--muted);font-size:.78rem}.campaign-facts dd{overflow-wrap:anywhere;margin:0}.campaign-label{color:var(--muted);margin:18px 0 8px;font-size:.8rem;font-weight:500}.campaign-where{letter-spacing:2px;margin:12px 0 0;font-size:1.1rem}.campaign-where .small{letter-spacing:normal;margin-left:6px}.chips{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.chips li>code,.chips button{font-family:var(--mono);background:var(--paper-2);color:var(--ink);border:1px solid var(--rule);border-radius:999px;padding:3px 10px;font-size:.76rem;display:inline-block}.chips button{cursor:pointer;transition:background .18s var(--ease), border-color .18s var(--ease), color .18s var(--ease), transform .12s var(--ease)}.chips button:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}.chips button:active{transform:scale(.96)}.chips li.small{align-self:center}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){@keyframes reveal{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}@keyframes drift{0%{translate:0 22px}to{translate:0 -22px}}@keyframes node{0%{background:var(--paper);border-color:var(--border-strong)}to{background:var(--signal);border-color:var(--signal)}}.band h2,.band-intro,.rank,.campaign,.insight-list li,.project,.heat,.heat-title,.how li,.inside-stats,.inside-term,.report-block h2,.daybars,.report-botnets li,.domains{animation:linear both reveal;animation-timeline:view();animation-range:entry entry 38%}.band h2{animation-name:reveal,drift;animation-range:entry entry 38%,cover}.band:after{animation:linear both node;animation-timeline:view();animation-range:entry entry 30%}}}@media (width<=759px){body{font-size:16px}.masthead{top:10px}.masthead-inner{padding:6px 6px 6px 16px}.menu-toggle{background:var(--panel-2);border:1px solid var(--border);cursor:pointer;width:42px;height:42px;transition:background .2s var(--ease);border-radius:50%;place-content:center;gap:5px;padding:0;display:inline-grid}.menu-toggle span{background:var(--ink);width:16px;height:1.5px;transition:transform .3s var(--ease);border-radius:2px;display:block}.is-open .menu-toggle span:first-child{transform:translateY(3.25px)rotate(45deg)}.is-open .menu-toggle span:last-child{transform:translateY(-3.25px)rotate(-45deg)}.masthead nav{background:color-mix(in srgb, var(--panel) 98%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--border-strong);box-shadow:var(--shadow-lift);opacity:0;visibility:hidden;transform-origin:50% 0;transition:opacity .25s var(--ease), transform .3s var(--ease), visibility 0s linear .3s;pointer-events:auto;border-radius:22px;flex-direction:column;align-items:stretch;gap:0;padding:8px;position:absolute;top:calc(100% + 8px);left:0;right:0;transform:translateY(-8px)scale(.98)}.is-open nav{opacity:1;visibility:visible;transition-delay:0s;transform:none}.masthead nav a{border-radius:14px;padding:15px 16px;font-size:1.05rem}.masthead nav a:last-child{text-align:center;border-radius:999px;margin:6px 0 0}.hero{padding-top:104px}.hero h1{letter-spacing:-.035em}.log{max-height:400px}.map-home-label{padding:0 7px;font-size:.7rem}.band{padding-top:64px}.band h2{max-width:none}.insight-stat{font-size:1.8rem}.rank,.campaign,.try,.project,.insight-list li{padding-left:20px;padding-right:20px}.try:before{top:14px;bottom:14px}.try-form button{flex:100%}.how li{padding-bottom:36px;padding-left:58px}.how:before,.how:after{left:17px}.how li:before{width:36px;height:36px}.project:nth-child(3){margin-top:0}.domains li{font-size:1.2rem}.heat{padding-left:14px;padding-right:14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.hero-beam,.hero-grid:after{display:none}.hero h1,.hero-grid{transform:none}.scroll-progress{display:none}.how:after{animation:none;transform:scaleY(1)}.band:after{background:var(--signal)}}@media print{.masthead,.report-share,.try,.hero-bg,.scroll-progress{display:none}body{background:#fff}body:before,body:after{display:none}.hero,.report{padding-top:24px}}
