*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg-dark: #000;--bg-panel: rgba(2, 12, 6, .88);--bg-header: linear-gradient(180deg, #011a0a 0%, #000d04 100%);--border-main: rgba(0, 180, 60, .12);--border-active: rgba(0, 255, 80, .35);--text-primary: #00ff55;--text-secondary: #00aa33;--text-muted: #005522;--text-dim: #338844;--accent-green: #00ff55;--accent-cyan: #00e5ff;--accent-red: #ff3333;--accent-yellow: #ffcc00;--radius: 6px;--header-h: 44px;--stat-h: 36px;--tw-h: 22px;--filter-h: 28px;--bottom-h: 160px;--right-w: 260px;--transition: .2s ease}body{background:var(--bg-dark);color:var(--text-primary);font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",Consolas,SF Mono,Fira Code,monospace;overflow:hidden;height:100vh;-webkit-font-smoothing:antialiased}#app{display:grid;grid-template-rows:var(--header-h) var(--stat-h) var(--tw-h) var(--filter-h) 1fr var(--bottom-h);grid-template-columns:1fr var(--right-w);grid-template-areas:"header  header" "stats   stats" "typewriter typewriter" "filter  filter" "map     right" "bottom  bottom";height:100vh;gap:0}header{grid-area:header;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--bg-header);border-bottom:1px solid var(--border-main);z-index:100;gap:16px}.header-left{display:flex;align-items:center;gap:12px;flex-shrink:0}.header-brand{display:flex;align-items:center;gap:8px}.header-brand .brand-icon{width:22px;height:22px;border:1.5px solid var(--accent-green);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--accent-green)}.header-brand h1{font-size:11px;font-weight:600;letter-spacing:3px;color:var(--text-primary);text-transform:uppercase;white-space:nowrap}.header-brand .brand-sub{font-size:9px;color:var(--text-muted);letter-spacing:1px;margin-left:4px;white-space:nowrap}.header-nav{display:flex;align-items:center;gap:2px}.header-nav .nav-item{padding:6px 14px;font-size:10px;letter-spacing:1.5px;color:var(--text-secondary);cursor:pointer;border-radius:4px;transition:all var(--transition);text-transform:uppercase;-webkit-user-select:none;user-select:none;text-decoration:none}.header-nav .nav-item:hover{color:var(--text-primary);background:#00ff550d}.header-nav .nav-item.active{color:var(--text-primary);background:#00ff5514;border-bottom:2px solid var(--accent-green)}.header-controls{display:flex;align-items:center;gap:10px;flex-shrink:0}.header-stats{display:flex;align-items:center;gap:12px;font-size:10px;color:var(--text-secondary)}.header-stats .hs-item{display:flex;align-items:center;gap:5px}.header-stats .hs-val{color:var(--text-primary);font-weight:600}.header-stats .hs-sep{width:1px;height:14px;background:var(--border-main)}.live-badge{display:flex;align-items:center;gap:5px;font-size:9px;letter-spacing:1.5px;color:var(--text-primary);padding:3px 8px;border:1px solid var(--border-active);border-radius:3px;background:#00ff550d}.live-badge .live-dot{width:6px;height:6px;background:var(--accent-green);border-radius:50%;animation:livePulse 1.5s ease-in-out infinite}@keyframes livePulse{0%,to{opacity:1;box-shadow:0 0 4px var(--accent-green)}50%{opacity:.3;box-shadow:none}}.btn-export{background:transparent;border:1px solid var(--border-main);color:var(--text-secondary);padding:4px 10px;border-radius:4px;cursor:pointer;font-family:inherit;font-size:9px;letter-spacing:1px;transition:all var(--transition);text-transform:uppercase}.btn-export:hover{border-color:var(--accent-green);color:var(--text-primary);background:#00ff550d}#sparkline{display:block;vertical-align:middle}#stat-cards{grid-area:stats;display:flex;align-items:center;gap:3px;padding:0 12px;background:#000803e6;border-bottom:1px solid var(--border-main);overflow-x:auto}#stat-cards::-webkit-scrollbar{height:0}.sc-card{display:flex;align-items:center;gap:4px;padding:3px 8px;border-radius:3px;background:#00ff5508;border:1px solid rgba(0,255,85,.06);flex-shrink:0;transition:all var(--transition);cursor:default}.sc-card:hover{background:#00ff5514;border-color:var(--border-active)}.sc-card .sc-icon{font-size:10px}.sc-card .sc-val{font-size:11px;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums}.sc-card .sc-label{font-size:7px;letter-spacing:1px;color:var(--text-muted);text-transform:uppercase}.sc-card.sc-total{border-color:var(--border-active);background:#00ff550f}.sc-card.sc-total .sc-val{color:#fff}.sc-card[data-type=RCE]{border-left:2px solid #ff8800}.sc-card[data-type=SQLi],.sc-card[data-type=XSS]{border-left:2px solid #ff44ff}.sc-card[data-type="Path Traversal"]{border-left:2px solid #00ccff}.sc-card[data-type=Scanner]{border-left:2px solid #ffff00}.sc-card[data-type=Bruteforce]{border-left:2px solid #ff3333}.sc-card[data-type="Request Flood"]{border-left:2px solid #8B4513}.sc-card[data-type="Malicious Upload"]{border-left:2px solid #cc0000}#typewriter-bar{grid-area:typewriter;display:flex;align-items:center;gap:6px;padding:0 12px;background:#140000b3;border-bottom:1px solid rgba(255,50,50,.15);font-size:10px;color:var(--accent-red);overflow:hidden;white-space:nowrap}#typewriter-bar .tw-prefix{color:var(--accent-red);font-size:8px;flex-shrink:0;animation:twBlink 1s step-end infinite}#typewriter-bar #typewriter-text{color:var(--accent-red);letter-spacing:.3px}#typewriter-bar img.emoji{height:1em;width:1em}#typewriter-bar .tw-cursor{color:var(--accent-red);font-weight:700;animation:twBlink .7s step-end infinite}@keyframes twBlink{50%{opacity:0}}#filter-bar{grid-area:filter;display:flex;align-items:center;gap:6px;padding:0 12px;background:#000803d9;border-bottom:1px solid var(--border-main)}.filter-sel{background:transparent;border:1px solid var(--border-main);color:var(--text-secondary);font-size:8px;font-family:inherit;letter-spacing:1px;padding:2px 6px;border-radius:3px;cursor:pointer;transition:all var(--transition)}.filter-sel:hover,.filter-sel:focus{border-color:var(--border-active);color:var(--text-primary);outline:none}.filter-sel option{background:#001108;color:var(--text-secondary)}.filter-sel option[value=all]{color:var(--text-muted)}.filter-reset{background:transparent;border:1px solid rgba(255,50,50,.2);color:var(--accent-red);font-size:7px;font-family:inherit;letter-spacing:1px;padding:2px 6px;border-radius:3px;cursor:pointer;transition:all var(--transition)}.filter-reset:hover{border-color:var(--accent-red);background:#ff323214}.rp-donut-wrap{position:relative;width:80px;height:80px;margin:0 auto 8px}#donut-chart{display:block}.rp-donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.rp-donut-center #donut-total{font-size:14px;font-weight:700;color:var(--text-primary);line-height:1}.rp-donut-center .rp-donut-label{font-size:7px;color:var(--text-muted);letter-spacing:1px;text-transform:uppercase}#map-panel{grid-area:map;background:var(--bg-dark);border-right:1px solid var(--border-main);position:relative}#map-canvas{position:absolute;top:0;left:0;display:block;cursor:grab}.map-controls{position:absolute;bottom:12px;left:12px;display:flex;flex-direction:column;gap:2px;z-index:20}.map-controls .map-btn{width:28px;height:28px;background:var(--bg-panel);border:1px solid var(--border-main);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;transition:all var(--transition);font-family:inherit;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.map-controls .map-btn:first-child{border-radius:4px 4px 0 0}.map-controls .map-btn:last-child{border-radius:0 0 4px 4px}.map-controls .map-btn:not(:first-child):not(:last-child){border-radius:0}.map-controls #flyToTarget{font-size:10px;line-height:1;width:auto;padding:0 6px;letter-spacing:.5px}.map-controls #flyToTarget:hover{background:#ff323226;color:#f44;border-color:#f44}.map-controls .map-btn:hover{background:#00ff5514;color:var(--text-primary);border-color:var(--border-active)}.radar-mini{position:absolute;z-index:20;width:64px;height:64px;border-radius:50%;border:1px solid rgba(0,255,0,.5);background:#000a0459;overflow:hidden;box-shadow:0 0 10px #00ff0026,inset 0 0 8px #00ff000d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);transition:none}.radar-mini.radar-alert{animation:radarFlash .5s ease-in-out 6;border-color:#f33;box-shadow:0 0 30px #f336,inset 0 0 20px #ff33331a}@keyframes radarFlash{0%,to{border-color:#f33;box-shadow:0 0 30px #f336}50%{border-color:#ff0;box-shadow:0 0 50px #ffff0080}}.radar-mini .radar-ring{position:absolute;border-radius:50%;border:1px solid rgba(0,255,0,.2);top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none}.radar-mini .radar-ring.r1{width:25%;height:25%}.radar-mini .radar-ring.r2{width:50%;height:50%}.radar-mini .radar-ring.r3{width:75%;height:75%}.radar-mini .radar-cross{position:absolute;top:50%;left:50%;width:100%;height:100%;transform:translate(-50%,-50%);pointer-events:none}.radar-mini .radar-cross:before,.radar-mini .radar-cross:after{content:"";position:absolute;background:#00ff0026}.radar-mini .radar-cross:before{width:100%;height:1px;top:50%;left:0;transform:translateY(-50%)}.radar-mini .radar-cross:after{width:1px;height:100%;left:50%;top:0;transform:translate(-50%)}.radar-mini .radar-dot{position:absolute;top:50%;left:50%;width:4px;height:4px;border-radius:50%;background:#0f0;transform:translate(-50%,-50%);box-shadow:0 0 6px #0f0,0 0 12px #00ff004d;animation:rdPulse 2s ease-in-out infinite;z-index:2}@keyframes rdPulse{0%,to{opacity:1;box-shadow:0 0 8px #0f0,0 0 16px #00ff004d}50%{opacity:.5;box-shadow:none}}.radar-mini .radar-sweep{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:linear-gradient(0deg,transparent 48%,rgba(0,255,0,.15) 50%,transparent 52%);transform-origin:center center;animation:rdSpin 4s linear infinite;will-change:transform}@keyframes rdSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.radar-mini .radar-blips{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;overflow:hidden}.radar-mini .radar-blip{position:absolute;width:6px;height:6px;border-radius:50%;background:#f33;box-shadow:0 0 6px #f33,0 0 12px #ff333380;transform:translate(-50%,-50%);animation:rdBlink 6s ease-in-out forwards}@keyframes rdBlink{0%{opacity:1}60%{opacity:.9}85%{opacity:.4}to{opacity:0}}.radar-mini .radar-msg{position:absolute;bottom:3px;left:50%;transform:translate(-50%);width:60px;text-align:center;pointer-events:none}.radar-mini .radar-label{display:block;font-size:6px;letter-spacing:1px;text-transform:uppercase;color:#0f0;animation:rdBlinkLabel 1.5s step-end infinite}@keyframes rdBlinkLabel{50%{opacity:0}}.radar-mini .radar-target{display:block;font-size:7px;font-weight:600;color:#f33;min-height:10px;word-break:break-all;line-height:1.1;transition:opacity .3s}.radar-mini .radar-target img.emoji{height:8px;width:8px;vertical-align:-1px}#country-tooltip{position:fixed;display:none;background:var(--bg-panel);border:1px solid var(--border-active);border-radius:var(--radius);padding:8px 12px;font-size:10px;z-index:30;pointer-events:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 20px #0009;min-width:150px}#country-tooltip .ct-flag{font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif;font-variant-emoji:emoji;font-size:16px;margin-right:6px;vertical-align:middle;display:inline-flex;align-items:center;line-height:1}#country-tooltip .ct-flag img.emoji{height:16px;width:16px;vertical-align:-2px;margin-right:4px}#country-tooltip .ct-name{color:var(--text-primary);font-weight:600;letter-spacing:.5px}#country-tooltip .ct-count{display:block;color:#0f5;font-size:11px;font-weight:600;margin-top:3px;letter-spacing:.5px}#country-tooltip .ct-rank{display:block;color:#f90;font-size:11px;font-weight:600;margin-top:3px;letter-spacing:.5px;opacity:1;text-transform:uppercase}#right-panel{grid-area:right;background:var(--bg-panel);border-left:none;display:flex;flex-direction:column;overflow:hidden;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.rp-header{padding:10px 14px 8px;border-bottom:1px solid var(--border-main);flex-shrink:0}.rp-title{font-size:9px;letter-spacing:2px;color:var(--text-muted);text-transform:uppercase;margin-bottom:8px}.rp-tabs{display:flex;gap:2px}.rp-tab{flex:1;padding:5px 4px;text-align:center;font-size:8px;letter-spacing:1px;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;transition:all var(--transition);text-transform:uppercase;-webkit-user-select:none;user-select:none}.rp-tab:hover{color:var(--text-secondary)}.rp-tab.active{color:var(--text-primary);border-bottom-color:var(--accent-green)}.rp-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:4px 0}.rp-body::-webkit-scrollbar{width:3px}.rp-body::-webkit-scrollbar-thumb{background:#00ff5526;border-radius:2px}.rp-body::-webkit-scrollbar-track{background:transparent}.rp-panel{display:none}.rp-panel.active{display:block}.country-item{display:flex;align-items:center;gap:8px;padding:6px 14px;cursor:pointer;transition:background var(--transition);border-left:2px solid transparent}.country-item:hover{background:#00ff550a}.country-item.active{background:#00ff5514;border-left-color:var(--accent-green)}.country-item .ci-rank{font-size:8px;color:var(--text-muted);width:14px;text-align:right;flex-shrink:0}.country-item .ci-flag{font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif;font-variant-emoji:emoji;font-size:13px;flex-shrink:0;display:inline-flex;align-items:center;line-height:1}.country-item .ci-flag img.emoji{height:14px;width:14px;vertical-align:-1px}.country-item .ci-name{font-size:10px;color:var(--text-secondary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.country-item:hover .ci-name,.country-item.active .ci-name{color:var(--text-primary)}.country-item .ci-bar{width:40px;height:4px;background:#00ff551a;border-radius:2px;overflow:hidden;flex-shrink:0}.country-item .ci-bar-fill{height:100%;border-radius:2px;transition:width .5s ease}.country-item .ci-count{font-size:9px;color:var(--text-muted);min-width:30px;text-align:right;flex-shrink:0}.country-item:hover .ci-count,.country-item.active .ci-count{color:var(--text-primary)}.threat-item{display:flex;align-items:center;gap:8px;padding:6px 14px;transition:background var(--transition);border-left:2px solid transparent}.threat-item:hover{background:#00ff550a}.threat-item .ti-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;box-shadow:0 0 6px currentColor}.threat-item .ti-code{font-size:9px;font-weight:600;letter-spacing:1px;min-width:60px;flex-shrink:0}.threat-item .ti-name{font-size:9px;color:var(--text-secondary);flex:1}.threat-item .ti-bar{width:36px;height:4px;background:#ffffff0d;border-radius:2px;overflow:hidden;flex-shrink:0}.threat-item .ti-bar-fill{height:100%;border-radius:2px;transition:width .5s ease}.threat-item .ti-count{font-size:10px;font-weight:600;min-width:32px;text-align:right;flex-shrink:0}.sd-item{display:flex;align-items:center;gap:6px;padding:5px 14px;cursor:pointer;border-left:2px solid transparent;transition:all .12s;color:var(--text-secondary)}.sd-item:hover{background:#00ff550a;color:var(--text-primary)}.sd-item.active{background:#00ff5514;border-left-color:var(--accent-green);color:var(--text-primary)}.sd-item .sd-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}.sd-item .sd-name{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.sd-item .sd-count{font-size:9px;color:var(--text-muted);flex-shrink:0}.sd-item:hover .sd-count,.sd-item.active .sd-count{color:var(--text-primary)}.sd-item.incoming{animation:sdWarning .6s ease-in-out infinite}@keyframes sdWarning{0%,to{border-left-color:transparent;background:transparent}50%{border-left-color:#f33;background:#ff33330f}}.sd-item.flash{animation:sdFlash .35s ease-out forwards}@keyframes sdFlash{0%{background:#ffffff26;color:#fff;border-left-color:#fff}to{background:transparent;color:var(--text-secondary);border-left-color:transparent}}#bottom-bar{grid-area:bottom;background:var(--bg-panel);border-top:1px solid var(--border-main);display:flex;flex-direction:column;overflow:hidden;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.bb-timeline{display:flex;align-items:center;gap:8px;padding:4px 12px;border-bottom:1px solid var(--border-main);background:#000a0499;flex-shrink:0}.tl-btn{background:transparent;border:1px solid var(--border-main);color:var(--text-primary);height:24px;border-radius:3px;cursor:pointer;font-size:10px;padding:0 8px;white-space:nowrap;display:flex;align-items:center;justify-content:center;transition:all var(--transition);font-family:inherit;flex-shrink:0}.tl-btn:hover{border-color:var(--accent-green);background:#00ff5514}.tl-btn.playing{color:var(--accent-cyan);border-color:var(--accent-cyan)}#tl-slider{flex:1;height:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#00ff551f;border-radius:2px;outline:none;cursor:pointer}#tl-slider::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:10px;border-radius:50%;background:var(--accent-green);cursor:pointer;box-shadow:0 0 6px var(--accent-green)}#tl-slider::-moz-range-thumb{width:10px;height:10px;border-radius:50%;background:var(--accent-green);border:none;cursor:pointer}.tl-time{font-size:9px;color:var(--text-secondary);min-width:44px;text-align:center;font-variant-numeric:tabular-nums;flex-shrink:0}.tl-speed{background:transparent;border:1px solid var(--border-main);color:var(--text-secondary);font-size:9px;font-family:inherit;padding:2px 4px;border-radius:3px;cursor:pointer;flex-shrink:0}.tl-speed:focus{outline:none}.tl-speed option{background:#001108;color:var(--text-secondary)}.tl-label{font-size:8px;letter-spacing:1.5px;color:var(--accent-green);padding:2px 6px;border:1px solid var(--border-active);border-radius:3px;flex-shrink:0}.tl-label.replay{color:var(--accent-cyan);border-color:#00e5ff59}.bb-main{display:grid;grid-template-columns:220px 1fr;flex:1;overflow:hidden;min-width:0}.bb-stats{width:220px;min-width:220px;max-width:220px;padding:12px 16px;border-right:1px solid var(--border-main);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;overflow:hidden}.bb-stats .bb-detections{font-size:9px;letter-spacing:1.5px;color:var(--text-muted);text-transform:uppercase}.bb-stats .bb-counter{font-size:20px;font-weight:700;color:var(--text-primary);letter-spacing:1px;line-height:1;font-variant-numeric:tabular-nums}.bb-stats .bb-rate{font-size:10px;color:var(--accent-cyan);font-weight:600}.bb-stats .bb-time{font-size:10px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.bb-log{display:flex;flex-direction:column;overflow:hidden;min-width:0}.bb-log-header{padding:5px 12px;border-bottom:1px solid var(--border-main);font-size:9px;letter-spacing:1.5px;color:var(--text-muted);text-transform:uppercase;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.bb-log-header #bb-subname{color:var(--text-primary);font-weight:600;letter-spacing:0;text-transform:none}.bb-clear-btn{background:none;border:1px solid var(--accent-red);color:var(--accent-red);font-size:8px;padding:1px 6px;border-radius:3px;cursor:pointer;letter-spacing:0;text-transform:none;font-family:inherit;transition:background .2s}.bb-clear-btn:hover{background:var(--accent-red);color:#000}#bb-container{flex:1;overflow-y:auto;overflow-x:hidden;padding:2px 0;font-size:10px;min-width:0}#bb-container::-webkit-scrollbar{width:3px}#bb-container::-webkit-scrollbar-thumb{background:#0f53;border-radius:2px}#bb-container::-webkit-scrollbar-track{background:transparent}.dt-empty{color:var(--text-muted);font-style:italic;padding:16px;text-align:center;font-size:10px}.dt-entry{display:flex;align-items:center;gap:8px;padding:4px 12px;border-bottom:1px solid rgba(0,180,60,.04);animation:fadeIn .3s;transition:background .15s;min-width:0;overflow:hidden}.dt-entry:hover{background:#00ff5508}.dt-entry .dt-time{color:var(--text-muted);font-size:9px;flex-shrink:0;width:50px}.dt-entry .dt-flag{font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif;font-variant-emoji:emoji;font-size:11px;flex-shrink:0;display:inline-flex;align-items:center;line-height:1}.dt-entry .dt-flag img.emoji{height:12px;width:12px;vertical-align:-1px}.dt-entry .dt-country{color:var(--accent-cyan);font-size:9px;flex-shrink:0;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-entry .dt-type{font-size:8px;flex-shrink:0;padding:1px 6px;border-radius:3px;border:1px solid;white-space:nowrap;font-weight:600;letter-spacing:.5px}.dt-entry .dt-ip{color:var(--text-muted);font-size:8px;flex-shrink:0;font-family:Consolas,monospace;white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}.dt-entry .dt-url{color:#8af;font-size:7px;margin-left:auto;flex-shrink:1;font-family:Consolas,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;opacity:.7}.dt-entry.high{border-left:2px solid var(--accent-red)}.dt-entry.medium{border-left:2px solid var(--accent-yellow)}.dt-entry.low{border-left:2px solid var(--text-muted)}.dt-entry.dt-blocked{opacity:.65}.dt-badge-blocked{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.5px;color:#fff;background:var(--accent-red);border-radius:3px;padding:1px 6px;margin-left:2px;flex-shrink:0;line-height:1.4}#alert-toast{position:fixed;top:132px;right:280px;z-index:999;display:none;background:#280000eb;border:1px solid var(--accent-red);border-radius:var(--radius);padding:10px 18px;font-size:11px;color:var(--accent-red);box-shadow:0 0 40px #f003;max-width:340px;pointer-events:none;font-weight:600;letter-spacing:.5px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}#alert-toast.show{display:block;animation:alertPulse 1s ease-in-out 3}@keyframes alertPulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes fadeIn{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-thumb{background:#00ff551f;border-radius:2px}::-webkit-scrollbar-track{background:transparent}.rp-toggle{display:none;position:fixed;bottom:12px;right:12px;z-index:200;width:44px;height:44px;border-radius:50%;background:var(--bg-panel);border:1px solid var(--border-active);color:var(--text-primary);font-size:18px;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 2px 12px #00000080;align-items:center;justify-content:center;transition:all var(--transition)}.rp-toggle:hover{background:#00ff5526}.rp-toggle.active{background:#0f53;border-color:var(--accent-green)}@media(max-width:900px){:root{--header-h: 40px;--stat-h: 34px;--tw-h: 20px;--filter-h: 32px;--bottom-h: 180px;--right-w: 0px}.rp-toggle{display:flex}#app{grid-template-columns:1fr;grid-template-areas:"header" "stats" "typewriter" "filter" "map" "bottom"}#right-panel{position:fixed;top:0;right:-320px;width:300px;height:100vh;z-index:500;border-left:1px solid var(--border-active);box-shadow:-4px 0 30px #0009;transition:right .3s ease;display:flex;flex-direction:column}#right-panel.open{right:0}.rp-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:499}.rp-overlay.open{display:block}header{padding:0 10px;gap:8px}.header-brand h1{font-size:9px;letter-spacing:2px}.header-brand .brand-sub{display:none}.header-stats{gap:8px}.header-stats .hs-item{font-size:9px}#sparkline,.btn-export{display:none}#stat-cards{gap:2px;padding:0 8px}.sc-card{padding:2px 6px}.sc-card .sc-val{font-size:10px}.sc-card .sc-label{font-size:6px}#typewriter-bar{font-size:9px;padding:0 8px}#filter-bar{gap:4px;padding:0 8px}.filter-sel{font-size:8px;padding:3px 6px}.filter-reset{font-size:7px;padding:3px 6px}#bottom-bar{--bottom-h: 180px}.bb-main{grid-template-columns:140px 1fr}.bb-stats{width:140px;min-width:140px;max-width:140px;padding:8px 10px}.bb-stats .bb-counter{font-size:16px}.bb-stats .bb-detections{font-size:7px}.bb-timeline{gap:4px;padding:3px 8px}.tl-btn{height:22px;font-size:9px;padding:0 6px}.tl-time{font-size:8px;min-width:36px}.tl-speed{font-size:8px}.tl-label{font-size:7px}}@media(max-width:600px){:root{--header-h: 36px;--stat-h: 30px;--tw-h: 18px;--filter-h: 34px;--bottom-h: 200px}body{overflow:hidden}header{padding:0 8px;gap:6px}.header-brand h1{font-size:8px;letter-spacing:1.5px}.header-controls,.header-stats{gap:6px}.live-badge{padding:2px 5px;font-size:7px}.live-badge .live-dot{width:5px;height:5px}.hs-item{font-size:8px}#stat-cards{gap:2px;padding:0 6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}#stat-cards::-webkit-scrollbar{display:none}.sc-card{padding:3px 5px;min-width:56px}.sc-card .sc-val{font-size:11px}.sc-card .sc-label{font-size:6px;letter-spacing:.5px}.sc-card .sc-icon{font-size:9px}#typewriter-bar{font-size:8px;padding:0 6px;height:18px}#filter-bar{gap:3px;padding:4px 6px;flex-wrap:wrap}.filter-sel{font-size:9px;padding:5px 6px;min-height:34px;flex:1;min-width:0}.filter-reset{font-size:8px;padding:5px 8px;min-height:34px}#map-panel{border-right:none}.map-controls{bottom:8px;left:8px}.map-controls .map-btn{width:36px;height:36px;font-size:16px}.map-controls #flyToTarget{font-size:9px;padding:0 8px}.radar-mini{width:48px;height:48px}.radar-mini .radar-label{font-size:5px}.radar-mini .radar-target{font-size:6px}.radar-mini .radar-msg{width:44px;bottom:1px}#right-panel{width:85vw;max-width:300px}.rp-header{padding:8px 10px 6px}.rp-title{font-size:8px;margin-bottom:6px}.rp-tab{font-size:8px;padding:6px 4px}.country-item{padding:8px 10px;gap:6px}.country-item .ci-rank{font-size:9px;width:16px}.country-item .ci-flag{font-size:14px}.country-item .ci-name{font-size:11px}.country-item .ci-count{font-size:10px}#bottom-bar{--bottom-h: 200px}.bb-timeline{gap:3px;padding:3px 6px;flex-wrap:wrap}.tl-btn{height:28px;min-width:28px;font-size:10px;padding:0 6px}#tl-slider{min-width:0}.tl-time{font-size:8px;min-width:32px}.tl-speed{font-size:8px;min-height:28px}.tl-label{font-size:7px;padding:2px 5px}.bb-main{grid-template-columns:1fr;grid-template-rows:auto 1fr;overflow:hidden}.bb-stats{width:100%;min-width:100%;max-width:100%;flex-direction:row;gap:12px;padding:6px 12px;border-right:none;border-bottom:1px solid var(--border-main);justify-content:center}.bb-stats .bb-detections{font-size:8px}.bb-stats .bb-counter{font-size:18px}.bb-stats .bb-rate,.bb-stats .bb-time{font-size:9px}.bb-log-header{padding:4px 8px;font-size:8px}.dt-entry{padding:5px 8px;gap:6px}.dt-entry .dt-time{font-size:8px;width:42px}.dt-entry .dt-flag{font-size:12px}.dt-entry .dt-country{font-size:8px;max-width:50px}.dt-entry .dt-type{font-size:8px;padding:2px 5px}.dt-entry .dt-ip{font-size:8px;max-width:100px}.dt-entry .dt-url{display:none}#alert-toast{right:12px;top:auto;bottom:220px;max-width:calc(100vw - 24px);font-size:10px}#country-tooltip{font-size:11px;min-width:120px}}@media(max-width:400px){.header-brand h1{font-size:7px;letter-spacing:1px}.live-badge,.hs-sep{display:none}.hs-item{font-size:7px}.sc-card{min-width:48px;padding:2px 4px}.sc-card .sc-val{font-size:10px}.sc-card .sc-icon,#typewriter-bar,.tl-label,.bb-stats .bb-detections,.bb-stats .bb-rate,.dt-entry .dt-country{display:none}}@media(max-height:500px)and (orientation:landscape){:root{--header-h: 32px;--stat-h: 28px;--tw-h: 0px;--filter-h: 30px;--bottom-h: 120px}#typewriter-bar{display:none}.bb-main{grid-template-columns:120px 1fr}.bb-stats{padding:4px 8px}.bb-stats .bb-counter{font-size:14px}}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   MOBILE â€” BOTTOM SHEET DESIGN
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Bottom Sheet Container â”€â”€ */
.bottom-sheet {
  display: none;
}

/* â”€â”€ Backdrop â”€â”€ */
.bs-backdrop {
  position: fixed;
  inset: 0;
  z-index: 195;
  background: rgba(0, 0, 0, 0.55);
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
}
.bs-backdrop.show {
  opacity: 1;
  pointer-events: auto;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   TABLET â‰¤ 768px
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
@media (max-width: 768px) {

  body {
    overflow: auto;
    height: auto;
  }

  #app {
    grid-template-rows: auto auto auto auto 1fr;
    grid-template-columns: 1fr;
    grid-template-areas:
      "header"
      "stats"
      "typewriter"
      "filter"
      "map";
    height: auto;
    min-height: 100vh;
  }

  /* â”€â”€ Hide desktop bottom bar â”€â”€ */
  #bottom-bar {
    display: none;
  }

  /* â”€â”€ Header â”€â”€ */
  header {
    padding: 0 10px;
    gap: 8px;
  }

  .brand-sub { display: none; }
  .header-nav { display: none; }
  .header-stats { display: none; }
  .btn-export { display: none; }

  /* â”€â”€ Stat Cards â”€â”€ */
  #stat-cards {
    padding: 0 8px;
    gap: 2px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .sc-card {
    padding: 2px 6px;
    min-width: 60px;
  }

  .sc-card .sc-val { font-size: 10px; }
  .sc-card .sc-label { font-size: 6px; letter-spacing: 0.5px; }

  /* â”€â”€ Typewriter â”€â”€ */
  #typewriter-bar {
    padding: 0 8px;
    font-size: 9px;
  }

  /* â”€â”€ Filter â”€â”€ */
  #filter-bar {
    padding: 4px 8px;
    gap: 4px;
    flex-wrap: wrap;
  }

  .filter-sel {
    min-height: 36px;
    font-size: 11px;
    padding: 4px 8px;
    flex: 1;
    min-width: 0;
  }

  .filter-reset {
    min-height: 36px;
    font-size: 10px;
    padding: 4px 10px;
  }

  /* â”€â”€ Map â”€â”€ */
  #map-panel {
    border-right: none;
    min-height: 60vh;
  }

  /* â”€â”€ Radar â”€â”€ */
  .radar-mini {
    width: 48px;
    height: 48px;
  }

  .radar-mini .radar-msg {
    width: 50px;
    bottom: 2px;
  }

  .radar-mini .radar-label {
    font-size: 5px;
    letter-spacing: 0.5px;
  }

  .radar-mini .radar-target {
    font-size: 6px;
    min-height: 8px;
  }

  .radar-mini .radar-dot {
    width: 3px;
    height: 3px;
  }

  /* â”€â”€ Map Controls â”€â”€ */
  .map-controls {
    bottom: 8px;
    left: 8px;
  }

  .map-controls .map-btn {
    width: 36px;
    height: 36px;
    font-size: 16px;
  }

  .map-controls #flyToTarget {
    font-size: 9px;
    padding: 0 6px;
  }

  /* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
     BOTTOM SHEET â€” Core
     â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
  .bottom-sheet {
    display: block;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 200;
    background: var(--bg-panel);
    border-top: 1px solid var(--border-active);
    border-radius: 16px 16px 0 0;
    transform: translateY(calc(100% - 72px));
    transition: transform 0.45s cubic-bezier(0.32, 0.72, 0, 1);
    max-height: 85vh;
    overflow: hidden;
    box-shadow: 0 -8px 40px rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
  }

  .bottom-sheet.no-transition {
    transition: none !important;
  }

  .bottom-sheet.snap-peek {
    transform: translateY(calc(100% - 72px));
  }

  .bottom-sheet.snap-half {
    transform: translateY(50vh);
  }

  .bottom-sheet.snap-full {
    transform: translateY(15vh);
  }

  /* â”€â”€ Drag Handle â”€â”€ */
  .bs-handle {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px 0 6px;
    cursor: grab;
    touch-action: none;
  }

  .bs-handle:active { cursor: grabbing; }

  .bs-handle-bar {
    width: 36px;
    height: 4px;
    background: rgba(0, 255, 85, 0.3);
    border-radius: 2px;
    transition: background 0.2s;
  }

  .bottom-sheet:hover .bs-handle-bar,
  .bottom-sheet.dragging .bs-handle-bar {
    background: rgba(0, 255, 85, 0.5);
  }

  /* â”€â”€ Peek Summary â”€â”€ */
  .bs-peek {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 4px 16px 10px;
    gap: 12px;
  }

  .bs-peek-total {
    display: flex;
    align-items: center;
    gap: 8px;
  }

  .bs-peek-total .bs-peek-num {
    font-size: 20px;
    font-weight: 700;
    color: var(--text-primary);
    letter-spacing: 1px;
    font-variant-numeric: tabular-nums;
  }

  .bs-peek-total .bs-peek-label {
    font-size: 8px;
    letter-spacing: 1.5px;
    color: var(--text-muted);
    text-transform: uppercase;
    line-height: 1.2;
  }

  .bs-peek-countries {
    display: flex;
    gap: 8px;
    font-size: 10px;
    color: var(--text-secondary);
  }

  .bs-peek-country {
    display: flex;
    align-items: center;
    gap: 3px;
    white-space: nowrap;
  }

  .bs-peek-country .bs-peek-flag {
    font-size: 12px;
  }

  .bs-peek-country .bs-peek-ct {
    color: var(--text-muted);
    font-size: 9px;
  }

  /* â”€â”€ Tabs â”€â”€ */
  .bs-tabs {
    display: flex;
    border-bottom: 1px solid var(--border-main);
    background: rgba(0, 10, 4, 0.5);
    padding: 0 8px;
  }

  .bs-tab {
    flex: 1;
    padding: 10px 4px;
    text-align: center;
    font-size: 9px;
    letter-spacing: 1.5px;
    color: var(--text-muted);
    cursor: pointer;
    border-bottom: 2px solid transparent;
    transition: all 0.2s ease;
    text-transform: uppercase;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
  }

  .bs-tab:active {
    background: rgba(0, 255, 85, 0.05);
  }

  .bs-tab.active {
    color: var(--text-primary);
    border-bottom-color: var(--accent-green);
  }

  /* â”€â”€ Tab Panels â”€â”€ */
  .bs-body {
    overflow-y: auto;
    overflow-x: hidden;
    max-height: calc(85vh - 140px);
    -webkit-overflow-scrolling: touch;
  }

  .bs-body::-webkit-scrollbar { width: 3px; }
  .bs-body::-webkit-scrollbar-thumb {
    background: rgba(0, 255, 85, 0.15);
    border-radius: 2px;
  }

  .bs-panel {
    display: none;
    padding: 4px 0;
  }

  .bs-panel.active { display: block; }

  /* â”€â”€ Country Items (reuse right panel styles) â”€â”€ */
  .bs-panel .country-item {
    padding: 10px 16px;
  }

  .bs-panel .country-item .ci-name {
    font-size: 12px;
  }

  .bs-panel .country-item .ci-count {
    font-size: 11px;
  }

  .bs-panel .country-item .ci-bar {
    width: 50px;
    height: 5px;
  }

  /* â”€â”€ Threat Items â”€â”€ */
  .bs-panel .threat-item {
    padding: 10px 16px;
  }

  .bs-panel .threat-item .ti-code {
    font-size: 11px;
    min-width: 70px;
  }

  .bs-panel .threat-item .ti-name {
    font-size: 11px;
  }

  .bs-panel .threat-item .ti-count {
    font-size: 12px;
  }

  /* â”€â”€ Subdomain Items â”€â”€ */
  .bs-panel .sd-item {
    padding: 10px 16px;
  }

  .bs-panel .sd-item .sd-name {
    font-size: 12px;
  }

  /* â”€â”€ Donut in peek â”€â”€ */
  .bs-peek-donut {
    flex-shrink: 0;
  }

  /* â”€â”€ Alert Toast â”€â”€ */
  #alert-toast {
    right: 12px;
    top: 100px;
    max-width: 75vw;
    font-size: 10px;
  }

  /* â”€â”€ Country Tooltip â”€â”€ */
  #country-tooltip {
    font-size: 9px;
    min-width: 120px;
  }

  /* â”€â”€ Right Panel hidden on tablet â”€â”€ */
  #right-panel {
    display: none;
  }
  /* Override minified CSS responsive rules */
  .rp-toggle { display: none !important; }
  .rp-overlay { display: none !important; }
  .bb-main { grid-template-columns: 1fr !important; }
  .bb-stats { width: 100% !important; min-width: 100% !important; max-width: 100% !important; }

}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   PHONE â‰¤ 480px
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
@media (max-width: 480px) {

  /* â”€â”€ Header â”€â”€ */
  header {
    padding: 0 8px;
    gap: 6px;
  }

  .header-brand h1 {
    font-size: 9px;
    letter-spacing: 1.5px;
  }

  .brand-icon {
    width: 18px;
    height: 18px;
  }

  .brand-icon img {
    height: 20px !important;
  }

  /* â”€â”€ Stat Cards: 2 columns â”€â”€ */
  #stat-cards {
    flex-wrap: wrap;
    padding: 4px 8px;
    gap: 2px;
  }

  .sc-card {
    min-width: calc(50% - 3px);
    flex: 0 0 calc(50% - 3px);
    padding: 3px 6px;
    justify-content: center;
  }

  .sc-card .sc-icon { font-size: 9px; }
  .sc-card .sc-val { font-size: 11px; }
  .sc-card .sc-label { font-size: 7px; }

  /* â”€â”€ Typewriter: hide â”€â”€ */
  #typewriter-bar { display: none; }

  /* â”€â”€ Filter: bigger touch targets â”€â”€ */
  .filter-sel {
    font-size: 13px;
    padding: 6px 10px;
    min-height: 40px;
  }

  .filter-reset {
    font-size: 12px;
    padding: 6px 14px;
    min-height: 40px;
  }

  /* â”€â”€ Radar: smallest â”€â”€ */
  .radar-mini {
    width: 36px;
    height: 36px;
  }

  .radar-mini .radar-msg { display: none; }
  .radar-mini .radar-dot { width: 3px; height: 3px; }

  /* â”€â”€ Map Controls: bigger â”€â”€ */
  .map-controls .map-btn {
    width: 40px;
    height: 40px;
    font-size: 18px;
  }

  /* â”€â”€ Bottom Sheet: phone tweaks â”€â”€ */
  .bottom-sheet {
    transform: translateY(calc(100% - 64px));
  }

  .bottom-sheet.snap-peek {
    transform: translateY(calc(100% - 64px));
  }

  .bs-peek {
    padding: 2px 12px 8px;
    gap: 8px;
  }

  .bs-peek-total .bs-peek-num {
    font-size: 18px;
  }

  .bs-peek-countries {
    gap: 6px;
    font-size: 9px;
  }

  .bs-peek-country .bs-peek-flag { font-size: 11px; }
  .bs-peek-country .bs-peek-ct { font-size: 8px; }

  .bs-tab {
    font-size: 8px;
    letter-spacing: 1px;
    padding: 8px 2px;
  }

  .bs-panel .country-item {
    padding: 8px 12px;
  }

  .bs-panel .country-item .ci-name { font-size: 11px; }
  .bs-panel .country-item .ci-count { font-size: 10px; }

  .bs-panel .threat-item { padding: 8px 12px; }
  .bs-panel .threat-item .ti-code { font-size: 10px; }
  .bs-panel .threat-item .ti-name { font-size: 10px; }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   LANDSCAPE PHONE
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
@media (max-height: 500px) and (orientation: landscape) {

  #app {
    grid-template-rows: auto auto 1fr;
    grid-template-areas:
      "header"
      "stats"
      "map";
  }

  #typewriter-bar,
  #filter-bar { display: none; }

  .bottom-sheet {
    transform: translateY(calc(100% - 56px));
  }

  .bottom-sheet.snap-peek {
    transform: translateY(calc(100% - 56px));
  }

  .bottom-sheet.snap-half { transform: translateY(40vh); }
  .bottom-sheet.snap-full { transform: translateY(10vh); }

  .radar-mini {
    width: 40px;
    height: 40px;
  }

  .bs-peek {
    padding: 2px 12px 6px;
  }

  .bs-peek-total .bs-peek-num { font-size: 16px; }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
