/* ── ID-specific styles extracted from index.html ── */
/* MAP panel */
#map-bots-btn{font-size:10px;width:32px;height:32px;color:var(--t3)}
#map-fullscreen-btn{font-size:12px}
#map-mode-btn{font-size:9px;font-weight:700;letter-spacing:.5px;width:46px;height:32px;padding:0 6px;color:var(--green);display:flex;align-items:center;justify-content:center}
#map-server-btn{font-size:11px;width:32px;height:32px}
#map-sound-btn{font-size:13px;width:32px;height:32px;color:var(--t3)}
#map-users-btn{font-size:10px;width:32px;height:32px;color:var(--t3)}
#map-widget-btn{font-size:10px;width:32px;height:32px;color:var(--green)}

/* LIVE LOG panel */
#log-hdr-btns{display:contents}
#log-history-btn{background:rgba(var(--cyan-rgb),.07);border:1px solid rgba(var(--cyan-rgb),.22);color:rgba(var(--cyan-rgb),.8);font-family:'Heebo',sans-serif;font-size:11px;padding:5px 9px;border-radius:4px;height:34px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all .15s;white-space:nowrap}
#log-pause-btn{background:rgba(var(--cyan-rgb),.1);border-color:rgba(var(--cyan-rgb),.3);color:var(--cyan);font-size:13px;min-width:32px;margin-inline-start:4px}
#log-reset-filters-btn{background:rgba(var(--orange-rgb),.1);border-color:rgba(var(--orange-rgb),.3);color:var(--orange);font-size:13px;min-width:32px;margin-inline-start:8px}
/* Uniform height/box for every LIVE LOG toolbar action button so a longer EN
   label (e.g. "Reset filters") can't wrap and make some taller than others.
   #cal-btn/#hour-chart-btn/#log-history-btn are already 34px flex; this brings
   the .ai-hist-btn (CSV/PDF/Reset/pause) and .status-help-btn into line. On
   mobile the min-height:36 rules still win (min-height takes precedence). */
#log-hdr-btns .ai-hist-btn,#log-hdr-btns .status-help-btn{height:34px;display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap}

/* AI panel */
#ai-hdr-btns{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}
#ai-hist-modal-hdr{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;background:linear-gradient(180deg,var(--bg2),var(--bg1));border-bottom:1px solid var(--bd1);cursor:move;user-select:none;flex-shrink:0}
#ai-hist-modal-pdf{background:rgba(var(--purple-rgb),.1);border:1px solid rgba(var(--purple-rgb),.25);color:var(--purple);padding:5px 14px;border-radius:6px;cursor:pointer;font-family:'Heebo',sans-serif;font-size:12px;font-weight:600;transition:all .2s}
#ai-progress-bar{height:100%;width:0%;background:linear-gradient(90deg,var(--cyan),var(--purple));border-radius:4px;transition:width .6s ease}
#ai-progress-pct{font-family:var(--fd);font-size:16px;color:var(--cyan);font-weight:700;min-width:42px;text-align:center}
#ai-progress-time{margin-top:6px;font-size:10px;color:var(--t3);font-family:var(--fm)}
#ai-prov-badge{background:rgba(var(--purple-rgb),.15);color:var(--purple);border:1px solid rgba(var(--purple-rgb),.3)}
#ai-toggle-btn{font-size:14px;padding:4px 8px;margin-inline-start:16px}
#ai-ctrl-bar{display:flex;align-items:center;gap:14px;padding:8px 14px;background:rgba(0,0,0,.18);border-bottom:1px solid rgba(var(--cyan-rgb),.1);flex-wrap:wrap}

/* ONLINE USERS panel */
#lu-empty-text{font-size:14px;color:var(--t3)}

/* Settings / Filter form */
#sf-color{height:38px;padding:3px 5px;cursor:pointer}
#sf-detect-banner{background:rgba(var(--green-rgb),.06);border:1px solid rgba(var(--green-rgb),.2);border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:12px;color:var(--green);display:flex;align-items:center;gap:8px}
#sf-detect-btn{white-space:nowrap;padding:10px 18px;font-size:14px;display:none}
#sf-detect-status{margin-top:10px;font-size:12px;color:var(--t3);text-align:center;min-height:20px}
#sf-detect-url{flex:1;font-size:15px;padding:10px 14px}
#sf-test-result{font-size:11px;min-width:16px}
#sf-token{flex:1;text-align:start;font-family:'Heebo',sans-serif !important;font-size:14px !important}
#sf-token-copy{padding:7px 8px}

/* Smart Learning dialog */
#sl-bar{height:100%;width:0%;background:linear-gradient(90deg,var(--cyan),var(--purple));border-radius:4px;transition:width .4s ease}
#sl-body{overflow-y:auto;padding:18px 22px;height:calc(100% - 56px);font-family:'Heebo',sans-serif}
#sl-handle{padding:14px 18px;background:linear-gradient(135deg,var(--bg2),rgba(var(--red-rgb),.06));border-bottom:1px solid var(--bd1);display:flex;align-items:center;gap:12px;cursor:grab}
#sl-handle .drag-close{margin-inline-start: -10px;}
#sl-icon{position:absolute;inset:18px;display:flex;align-items:center;justify-content:center;font-size:24px}
#sl-progress-bar{height:100%;width:0%;background:linear-gradient(90deg,var(--cyan),var(--green));border-radius:4px;transition:width .3s}
#sl-sub{font-family:'Heebo',sans-serif;font-size:13px;color:var(--cyan);margin-bottom:16px}
#sl-summary{font-family:'Share Tech Mono','Heebo',sans-serif;font-size:12px;color:var(--t3);white-space:nowrap}
#sl-text{font-family:'Heebo',sans-serif;font-size:18px;font-weight:700;color:var(--t1);text-align:center;margin-bottom:6px}

/* Setup Wizard */
#wiz-logurl{font-family:'Share Tech Mono',monospace;font-size:12px}
#wiz-notes{resize:vertical;min-height:60px}

/* SHP dialog */
#shp-body{max-height:500px;overflow-y:auto}
#shp-handle{padding:11px 16px;background:var(--bg2);border-bottom:1px solid var(--bd1);display:flex;align-items:center;justify-content:space-between;cursor:grab}
#shp-title{font-family:'Orbitron','Heebo',sans-serif;font-size:10px;color:var(--cyan);letter-spacing:2px;text-transform:uppercase}

/* IP detail widget */
#muw-ip-addr{font-family:'Share Tech Mono',monospace;font-size:18px;font-weight:700;color:var(--cyan)}
#muw-ip-body{padding:14px 20px;display:flex;flex-direction:column;gap:10px;max-height:70vh;overflow-y:auto}
#muw-ip-detail{position:fixed;z-index:10002;background:linear-gradient(160deg,rgba(5,16,30,.97),rgba(8,22,42,.97));border:1px solid rgba(var(--cyan-rgb),.2);border-radius:14px;box-shadow:0 16px 48px rgba(0,0,0,.7),0 0 20px rgba(var(--cyan-rgb),.06);display:none;width:420px;max-width:90vw;font-family:'Heebo',sans-serif;overflow:hidden}
#muw-ip-hdr{padding:16px 20px;background:rgba(var(--cyan-rgb),.04);border-bottom:1px solid rgba(var(--cyan-rgb),.1);display:flex;align-items:center;gap:10px;cursor:grab;user-select:none}

/* URL Explorer */
#ux-body{overflow-y:auto;padding:12px 14px;height:calc(100% - 46px)}
#ux-count{font-family:var(--fm);font-size:10px;color:var(--t3);white-space:nowrap}
#ux-handle{padding:10px 14px;background:var(--bg2);border-bottom:1px solid var(--bd1);display:flex;align-items:center;gap:8px;cursor:grab}
#ux-search{background:var(--bg3);border:1px solid var(--bd1);color:var(--t1);font-family:'Heebo',sans-serif;font-size:11px;padding:4px 8px;border-radius:4px;width:160px;outline:none}
#ux-sort{background:var(--bg3);border:1px solid var(--bd1);color:var(--t1);font-family:'Heebo',sans-serif;font-size:10px;padding:4px 6px;border-radius:4px;cursor:pointer}

/* Server tooltip */
#svt-ip{color:var(--cyan)}
#svt-name{font-family:'Orbitron',sans-serif;font-size:13px;color:var(--cyan);letter-spacing:1.5px;font-weight:700}
#svt-notes{font-family:'Heebo',sans-serif;font-size:12px;white-space:normal}
#svt-status{font-size:11px;color:var(--t2);font-family:'Share Tech Mono',monospace}
#svt-url{font-size:11px}

/* Viewer tooltip */
#vwt-ip{color:var(--green)}
#vwt-title{font-family:'Orbitron',sans-serif;font-size:13px;color:var(--green);letter-spacing:1.5px;font-weight:700}

/* MCS badges */
#mcs-attacks-badge{background:rgba(var(--red-rgb),.1);color:var(--red);font-family:'Orbitron',sans-serif;font-size:9px;padding:2px 7px;border-radius:8px;margin-inline-start:6px}
#mcs-modules-badge{background:rgba(var(--cyan-rgb),.1);color:var(--cyan);font-family:'Orbitron',sans-serif;font-size:9px;padding:2px 7px;border-radius:8px;margin-inline-start:6px}
#mcs-reputation-badge{background:rgba(var(--purple-rgb),.12);color:var(--purple);font-family:'Orbitron',sans-serif;font-size:9px;padding:2px 7px;border-radius:8px;margin-inline-start:6px}

/* Bots tooltip */
#bt-bots{color:var(--cyan);font-size:16px;font-weight:700}
#bt-title{font-family:'Heebo',sans-serif;font-size:14px;color:var(--cyan);font-weight:700}

/* Chart panel */
#chart-body{position:relative;width:100%;max-height:140px}
#chart-range-tabs{display:flex;gap:4px;background:var(--bg1);border-radius:5px;padding:2px}
#chart-toggle-btn{background:var(--bg3);border:1px solid var(--bd1);color:var(--t3);padding:4px 8px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s;position:absolute;top:50%;transform:translateY(-50%);inset-inline-end:8px;margin:0;min-width:30px;min-height:30px}

/* Threat card */
#threat-card-blockrate{color:var(--green);font-weight:700;font-size:15px}
#threat-card-gauge{width:100%;max-width:250px;display:flex;justify-content:center;filter:drop-shadow(0 0 40px rgba(var(--cyan-rgb),.6))}
#threat-card-info{width:100%;display:flex;flex-direction:column;gap:8px;font-size:14px;font-family:'Heebo',sans-serif;background:rgba(var(--hi-rgb),.03);padding:16px;border-radius:8px;border-left:3px solid var(--cyan)}
#threat-card-ips{color:var(--red);font-weight:700;font-size:15px}
#threat-card-level{color:var(--t1);font-weight:700;font-size:18px;font-family:var(--fd);letter-spacing:1px}
#threat-card-recent{color:var(--orange);font-weight:700;font-size:15px}
#threat-intel-body{font-family:'Heebo',sans-serif;padding:4px 2px 2px}
#threat-level-card{grid-column:span 2;background:linear-gradient(135deg,rgba(var(--cyan-rgb),.08) 0%,rgba(var(--red-rgb),.06) 100%);border:2px solid rgba(var(--cyan-rgb),.25);box-shadow:0 0 24px rgba(var(--cyan-rgb),.15),inset 0 0 24px rgba(var(--cyan-rgb),.04)}

/* Defense gauge */
#defense-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}
#defense-icon{font-size:32px;line-height:1;filter:drop-shadow(0 0 12px rgba(var(--green-rgb),.5))}
#defense-panel{position:relative;overflow:visible}
#defense-pct{color:var(--green);font-size:28px;margin-top:2px}
#defense-shield-wrap{position:relative;width:200px;height:200px;cursor:pointer}

/* Stat cards */
#stat-card-live-atk{cursor:pointer;--acc:var(--red)}
#stat-live-atk{color:var(--t3);font-family:'Orbitron',sans-serif;font-size:24px;font-weight:900}
#stat-top-country{font-size:11px;display:flex;align-items:center;gap:4px}

/* Threat Intel */
#ti-coverage-badge{background:rgba(var(--green-rgb),.1);color:var(--green);font-family:'Orbitron',sans-serif;font-size:9px;padding:2px 7px;border-radius:8px;margin-inline-start:6px;letter-spacing:.5px}

/* Calendar */
#cal-body{padding:14px}
#cal-btn{background:rgba(var(--purple-rgb),.08);border:1px solid rgba(var(--purple-rgb),.25);color:var(--purple);font-family:'Heebo',sans-serif;font-size:12px;padding:5px 10px;border-radius:4px;height:34px;cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .15s}
#cal-wrap{display:inline-flex;align-items:center;gap:4px;position:relative}

/* Misc */
#bots-tooltip{position:fixed;z-index:800;background:rgba(3,14,32,.98);border:1px solid rgba(var(--cyan-rgb),.35);border-radius:10px;padding:14px 16px;min-width:240px;max-width:320px;pointer-events:none;display:none;box-shadow:0 12px 40px rgba(0,0,0,.8),0 0 14px rgba(var(--cyan-rgb),.15);font-family:'Heebo',sans-serif}
#cdp-body{padding:14px 16px;max-height:500px;overflow-y:auto}
#country-detail-panel{position:fixed;z-index:700;background:var(--bg1);border:1px solid var(--bd2);border-radius:10px;box-shadow:0 12px 44px rgba(0,0,0,.7);display:none;width:340px;max-width:90vw;font-family:'Heebo',sans-serif;overflow:hidden}
#def-scan-btn{background:rgba(var(--red-rgb),.08);border:1px solid rgba(var(--red-rgb),.2);color:var(--red);font-family:'Heebo',sans-serif;font-size:12px;font-weight:600;padding:6px 16px;border-radius:6px;cursor:pointer;transition:all .15s;width:100%}
#def-scan-count{font-family:'Share Tech Mono',monospace}
#def-timespan{font-family:'Heebo',sans-serif;font-size:11px;color:var(--t2);letter-spacing:0;text-transform:none;font-weight:600}
#fdp-content{padding:14px 16px;max-height:500px;overflow-y:auto}
#feed-detail{position:fixed;z-index:700;background:var(--bg1);border:1px solid var(--bd2);border-radius:10px;box-shadow:0 12px 44px rgba(0,0,0,.7);display:none;width:340px;max-width:90vw;font-family:'Heebo',sans-serif;overflow:hidden}
#geo-prov-desc{font-size:11px;color:var(--t3);margin:6px 0 10px;padding:8px;background:var(--bg2);border-radius:5px;line-height:1.6;font-family:'Heebo',sans-serif}
#hm-new-count{font-family:var(--fb);font-size:12px;color:var(--cyan)}
#hour-bar-labels{display:flex;justify-content:space-between;margin-top:4px;font-family:'Share Tech Mono',monospace;font-size:9px;color:var(--t3)}
#hour-chart-btn{background:rgba(var(--cyan-rgb),.08);border:1px solid rgba(var(--cyan-rgb),.25);color:var(--cyan);font-family:'Heebo',sans-serif;font-size:12px;padding:5px 10px;border-radius:4px;height:34px;cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .15s}
#hour-chart-range-tabs{display:flex;gap:3px;margin-bottom:8px}
#hour-chart-subtitle{font-size:10px;color:var(--t3)}
#insight-popup{position:fixed;z-index:700;background:var(--bg1);border:1px solid var(--bd2);border-radius:10px;box-shadow:0 12px 44px rgba(0,0,0,.7);display:none;width:420px;min-width:200px;min-height:100px;font-family:'Heebo',sans-serif;overflow:hidden}
#insp-body{padding:14px 16px;height:calc(100% - 44px);max-height:560px;overflow-y:auto;box-sizing:border-box}
#leg-server-dot{background:var(--cyan)}
#mtt-status{margin-inline-start:auto;display:inline-block;padding:3px 9px;border-radius:10px;font-size:10px;font-family:'Orbitron','Heebo',sans-serif;font-weight:700;letter-spacing:.8px;white-space:nowrap}
#preset-save-name{flex:1;background:var(--bg2);border:1px solid var(--bd1);color:var(--t1);padding:4px 8px;border-radius:4px;font-family:'Heebo',sans-serif;font-size:11px}
#preset-wrap{position:relative;display:inline-block}
#s-devlog-open-btn{font-size:11px;padding:4px 10px}
#s-rules-count{font-size:11px;color:var(--t3);font-family:'Heebo',sans-serif}
#s-sound-type{width:auto;min-width:100px;font-size:11px;padding:5px 8px}
#server-tooltip{position:fixed;z-index:800;background:rgba(3,14,32,.98);border:1px solid rgba(var(--cyan-rgb),.4);border-radius:10px;padding:14px 16px;min-width:260px;max-width:340px;pointer-events:none;display:none;box-shadow:0 12px 40px rgba(0,0,0,.8),0 0 16px rgba(var(--cyan-rgb),.2);font-family:'Heebo',sans-serif}
#smart-learning{position:fixed;z-index:810;background:var(--bg1);border:1px solid var(--bd2);border-radius:12px;box-shadow:0 16px 60px rgba(0,0,0,.8);display:none;width:780px;height:680px;min-width:480px;min-height:380px;font-family:'Heebo',sans-serif;overflow:hidden}
#st-reset-desc{font-size:12px;color:var(--t3);margin-bottom:8px;line-height:1.7;font-family:'Heebo',sans-serif}
#status-help-popup{position:fixed;z-index:800;background:var(--bg1);border:1px solid var(--bd2);border-radius:12px;box-shadow:0 16px 50px rgba(0,0,0,.8),0 0 0 1px rgba(var(--cyan-rgb),.08);display:none;width:360px;max-width:90vw;overflow:hidden;font-family:'Heebo',sans-serif}
#ttl-threat-card{font-size:14px;letter-spacing:2.5px}
#url-explorer{position:fixed;z-index:800;background:var(--bg1);border:1px solid var(--bd2);border-radius:10px;box-shadow:0 16px 60px rgba(0,0,0,.8);display:none;width:680px;height:600px;min-width:400px;min-height:300px;font-family:'Heebo',sans-serif;overflow:hidden}
#users-tooltip{position:fixed;z-index:800;background:rgba(3,14,32,.98);border:1px solid rgba(var(--green-rgb),.35);border-radius:10px;padding:14px 16px;min-width:260px;max-width:340px;pointer-events:none;display:none;box-shadow:0 12px 40px rgba(0,0,0,.8),0 0 14px rgba(var(--green-rgb),.15);font-family:'Heebo',sans-serif}
#ut-title{font-family:'Heebo',sans-serif;font-size:14px;color:var(--green);font-weight:700}
#ut-users{color:var(--green);font-size:16px;font-weight:700}
#viewer-tooltip{position:fixed;z-index:800;background:rgba(3,14,32,.98);border:1px solid rgba(var(--green-rgb),.4);border-radius:10px;padding:14px 16px;min-width:240px;max-width:320px;pointer-events:none;display:none;box-shadow:0 12px 40px rgba(0,0,0,.8),0 0 16px rgba(var(--green-rgb),.2);font-family:'Heebo',sans-serif}


/* ── Class-level single-instance rules ── */
.chart-hdr{cursor:pointer;position:relative;padding-inline-end:44px}
.lang-toggle{width:fit-content}
.atk-det-arr{font-size:9px;color:var(--t3);flex-shrink:0}
.cp-ok{font-size:10px;color:var(--green);opacity:0;transition:opacity .3s}
.wiz-srv-card-hdr--cyan{border-color:rgba(var(--cyan-rgb),.2)}
.wiz-srv-card-hdr--green{border-color:rgba(var(--green-rgb),.2)}
.wiz-srv-card-hdr--purple{border-color:rgba(var(--purple-rgb),.2)}
