/* ═══ LOG SECTION ═══ */
#log-section{background:linear-gradient(160deg,rgba(var(--cyan-rgb),.05) 0%,var(--bg2) 50%,rgba(var(--cyan-rgb),.03) 100%);border:1px solid rgba(var(--cyan-rgb),.12);border-radius:var(--r);margin:0;overflow:hidden;min-width:0;position:relative}
#log-section::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(var(--cyan-rgb),.6),rgba(var(--cyan-rgb),.5),rgba(var(--cyan-rgb),.6),transparent);border-radius:var(--r) var(--r) 0 0;animation:logBarPulse 3s ease-in-out infinite}
@keyframes logBarPulse{0%,100%{opacity:.7}50%{opacity:1}}
.log-wrap{overflow-x:auto;min-width:0}
.log-hdr{padding:10px 14px;border-bottom:1px solid rgba(var(--cyan-rgb),.12);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.log-title{font-family:'Orbitron','Heebo',sans-serif;font-size:14px;color:var(--cyan);letter-spacing:2px;text-transform:uppercase;margin-inline-end:auto;white-space:nowrap;font-weight:600;display:flex;align-items:center;gap:8px;text-shadow:0 0 12px rgba(var(--cyan-rgb),.3)}
.log-total-badge{font-family:'Orbitron',sans-serif;font-size:16px;color:var(--cyan);font-weight:900;background:rgba(var(--cyan-rgb),.2);border:1px solid rgba(var(--cyan-rgb),.4);padding:2px 12px;border-radius:6px;text-shadow:0 0 6px rgba(var(--hi-rgb),.3);margin-inline-start:6px;letter-spacing:0}
.log-update-dot{width:8px;height:8px;border-radius:50%;background:var(--t3);opacity:.3;transition:all .3s}
.log-update-dot.active{background:var(--green);opacity:1;box-shadow:0 0 8px var(--green);animation:log-dot-flash .6s ease}
.filter-tabs{display:flex;gap:3px;background:var(--bg1);border-radius:6px;padding:3px}
.ftab{padding:6px 13px;border-radius:4px;font-size:13px;font-family:var(--fb);font-weight:600;background:none;color:var(--t3);transition:all .2s;border:none;white-space:nowrap}
.ftab.active{background:rgba(var(--cyan-rgb),.18);color:var(--cyan);box-shadow:0 0 8px rgba(var(--cyan-rgb),.15)}
.ftab:hover:not(.active){color:var(--t2)}
.ftab-count{font-family:'Share Tech Mono',monospace;font-size:10px;font-weight:700;background:rgba(var(--hi-rgb),.08);padding:1px 5px;border-radius:8px;margin-inline-start:3px;min-width:16px;display:inline-block;text-align:center}
.ftab-count:empty{display:none}
/* ── Favorite Star ── */
.fav-star{background:none;border:none;color:var(--t3);font-size:14px;cursor:pointer;padding:0 3px;line-height:1;transition:color .15s,transform .15s;vertical-align:middle;margin-inline-start:4px}
.fav-star:hover{color:var(--yellow);transform:scale(1.25)}
.fav-star.active{color:var(--yellow);text-shadow:0 0 6px rgba(var(--yellow-rgb),.4)}
.ftab-fav{position:relative}
.ftab-fav.active{background:rgba(var(--yellow-rgb),.15)!important;color:var(--yellow)!important}
.ftab-fav .ftab-count{background:rgba(var(--yellow-rgb),.2)}
.ftab-fav.active .ftab-count{background:rgba(var(--yellow-rgb),.3)}
.ftab.active .ftab-count{background:rgba(var(--cyan-rgb),.25)}
.log-search{background:var(--bg1);border:1px solid var(--bd2);color:var(--t1);padding:7px 13px;border-radius:var(--r);font-size:13px;width:180px;transition:border-color .2s,box-shadow .2s;font-family:var(--fb);height:34px;line-height:1}
.log-search:focus{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(var(--cyan-rgb),.15)}
.log-search::placeholder{color:var(--t3)}
.exp-btn{background:rgba(var(--cyan-rgb),.08);border:1px solid var(--bd1);color:var(--t2);padding:7px 12px;border-radius:var(--r);font-size:13px;display:flex;align-items:center;gap:4px;transition:all .2s;font-family:var(--fb);height:34px}
.exp-btn:hover{border-color:var(--cyan);color:var(--cyan)}
.pdf-btn{background:rgba(var(--purple-rgb),.1);border:1px solid rgba(var(--purple-rgb),.3);color:var(--purple);padding:7px 12px;border-radius:var(--r);font-size:13px;display:flex;align-items:center;gap:4px;transition:all .2s;font-family:var(--fb);height:34px}
.pdf-btn:hover{background:rgba(var(--purple-rgb),.18)}

/* ── STATUS HELP BUTTON & POPUP ── */
.status-help-btn{display:flex;align-items:center;gap:5px;padding:5px 10px;border-radius:6px;background:rgba(var(--cyan-rgb),.1);border:1px solid rgba(var(--cyan-rgb),.35);color:var(--cyan);font-size:12px;font-weight:600;font-family:'Heebo',sans-serif;cursor:pointer;transition:all .2s;flex-shrink:0;white-space:nowrap}
.status-help-btn .shb-q{width:16px;height:16px;border-radius:50%;background:rgba(var(--cyan-rgb),.25);border:1.5px solid var(--cyan);display:inline-flex;align-items:center;justify-content:center;font-family:'Orbitron',sans-serif;font-size:10px;font-weight:700;flex-shrink:0}
.status-help-btn:hover{background:rgba(var(--cyan-rgb),.22);border-color:var(--cyan);box-shadow:0 0 10px rgba(var(--cyan-rgb),.3)}
.status-help-popup{position:fixed;z-index:600;background:var(--bg1);border:1px solid var(--bd2);border-radius:12px;padding:0;min-width:280px;max-width:340px;box-shadow:0 16px 50px rgba(0,0,0,.8),0 0 0 1px rgba(var(--cyan-rgb),.08);display:none;overflow:hidden;animation:ep-in .18s ease}
.status-help-popup.show{display:block}
.shp-header{padding:11px 16px;background:var(--bg2);border-bottom:1px solid var(--bd1);display:flex;align-items:center;justify-content:space-between}
.shp-title{font-family:'Orbitron','Heebo',sans-serif;font-size:10px;color:var(--cyan);letter-spacing:2px;text-transform:uppercase}
.shp-close{background:none;border:none;color:var(--t3);font-size:14px;cursor:pointer;padding:2px 4px;border-radius:3px;line-height:1;transition:color .15s}
.shp-close:hover{color:var(--t1)}
.shp-body{padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.shp-item{display:flex;align-items:flex-start;gap:11px;padding:9px 12px;border-radius:8px;border:1px solid transparent}
.shp-item-badge{flex-shrink:0;padding:3px 10px;border-radius:10px;font-family:'Orbitron','Heebo',sans-serif;font-size:9px;font-weight:700;letter-spacing:.8px;white-space:nowrap;margin-top:1px}
.shp-item-text{flex:1}
.shp-item-title{font-size:13px;font-weight:700;color:var(--t1);margin-bottom:3px;font-family:'Heebo',sans-serif}
.shp-item-desc{font-size:12px;color:var(--t2);line-height:1.6;font-family:'Heebo',sans-serif}
.shp-item.blocked{background:rgba(var(--red-rgb),.06);border-color:rgba(var(--red-rgb),.18)}
.shp-item.allowed{background:rgba(var(--green-rgb),.05);border-color:rgba(var(--green-rgb),.15)}
.shp-item.logged{background:rgba(var(--orange-rgb),.05);border-color:rgba(var(--orange-rgb),.15)}
.shp-item.bot{background:rgba(var(--blue-rgb),.05);border-color:rgba(var(--blue-rgb),.15)}
.flag-dd-wrap{position:relative;display:inline-block;min-width:160px;max-width:200px}
.flag-dd-trigger{display:flex;align-items:center;gap:6px;background:var(--bg1);border:1px solid var(--bd1);color:var(--t1);padding:5px 10px;border-radius:5px;font-size:13px;cursor:pointer;font-family:'Heebo',sans-serif;transition:border-color .2s;user-select:none;min-height:32px;direction:ltr;text-align:left}
.flag-dd-trigger:hover,.flag-dd-trigger:focus{border-color:var(--cyan);outline:none}
.flag-dd-trigger.open{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(var(--cyan-rgb),.15)}
.flag-dd-arrow{flex-shrink:0;margin-inline-start:auto;transition:transform .2s}
.flag-dd-trigger.open .flag-dd-arrow{transform:rotate(180deg)}
#flag-dd-selected-flag{flex-shrink:0;width:20px;height:15px;display:inline-flex;align-items:center;justify-content:center}
#flag-dd-selected-flag img,.flag-dd-trigger img{width:20px;height:15px;flex-shrink:0;border-radius:1px;object-fit:cover;display:block}
#flag-dd-selected-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;text-align:start;direction:inherit}
.flag-dd-menu{position:fixed;top:auto;left:auto;min-width:240px;max-width:300px;background:var(--bg1);border:1px solid var(--bd2);border-radius:8px;box-shadow:0 12px 40px rgba(0,0,0,.7);z-index:500;display:none;overflow:hidden;direction:ltr}
.flag-dd-menu.open{display:flex;flex-direction:column}
.flag-dd-search{padding:7px 10px;border-bottom:1px solid var(--bd1)}
.flag-dd-search input{width:100%;background:var(--bg2);border:1px solid var(--bd1);color:var(--t1);padding:5px 8px;border-radius:5px;font-size:12px;font-family:'Heebo',sans-serif;outline:none;transition:border-color .2s}
.flag-dd-search input:focus{border-color:var(--cyan)}
.flag-dd-search input::placeholder{color:var(--t3)}
.flag-dd-list{max-height:240px;overflow-y:auto;padding:4px 0}
.flag-dd-list::-webkit-scrollbar{width:4px}
.flag-dd-list::-webkit-scrollbar-thumb{background:var(--bd2);border-radius:2px}
.flag-dd-item{display:flex;align-items:center;gap:8px;padding:7px 12px;cursor:pointer;transition:background .12s;font-size:13px;color:var(--t2);font-family:'Heebo',sans-serif;white-space:nowrap}
.flag-dd-item:hover{background:rgba(var(--cyan-rgb),.08);color:var(--t1)}
.flag-dd-item.selected{background:rgba(var(--cyan-rgb),.14);color:var(--cyan)}
.flag-dd-item .fdi-flag{width:20px;height:15px;flex-shrink:0;border-radius:1px;object-fit:cover}
.flag-dd-item .fdi-flag-placeholder{width:20px;height:15px;flex-shrink:0;background:var(--bg3);border-radius:1px;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--t3)}
.flag-dd-item .fdi-name{flex:1;overflow:hidden;text-overflow:ellipsis}
.flag-dd-item .fdi-count{font-family:'Share Tech Mono',monospace;font-size:11px;color:var(--t3);margin-inline-start:auto;padding-inline-start:8px}
#adv-filters{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid var(--bd1);flex-wrap:wrap;background:rgba(0,0,0,.15)}
.adv-filter-label{font-family:var(--fd);font-size:9px;color:var(--t3);letter-spacing:1.5px;text-transform:uppercase;white-space:nowrap}
.adv-select{background:var(--bg1);border:1px solid var(--bd1);color:var(--t1);padding:5px 9px 5px 28px;border-radius:5px;font-size:13px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6'%3E%3Cpath d='M1 1l3.5 3.5L8 1' stroke='%233f6480' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 7px center;font-family:'Heebo',sans-serif;min-width:130px;transition:border-color .2s;text-align:left;direction:ltr;unicode-bidi:plaintext}
.adv-select:focus{border-color:var(--cyan)}
/* RTL variants (attack-type / module filters): Hebrew-first labels. Must
   out-specify .adv-select's direction:ltr above — that rule was silently
   overriding the dir="rtl" attribute, leaving each option to pick its own
   direction via unicode-bidi:plaintext (mixed-direction mess). */
.adv-select.rtl-r,.adv-select.rtl-r option{direction:inherit;text-align:start;unicode-bidi:isolate}
.adv-select.rtl-r{background-position:left 7px center}
.active-filter-chip{display:inline-flex;align-items:center;gap:5px;background:rgba(var(--cyan-rgb),.12);border:1px solid rgba(var(--cyan-rgb),.3);color:var(--cyan);padding:3px 9px;border-radius:20px;font-size:12px;font-family:var(--fb)}
.chip-remove{background:none;color:var(--cyan);font-size:14px;line-height:1;padding:0 0 0 3px;opacity:.7;cursor:pointer}
.chip-remove:hover{opacity:1}
#filter-chips{display:flex;gap:5px;flex-wrap:wrap;flex:1}

/* ── Hour Chart Button ── */
#hour-chart-btn:hover{background:rgba(var(--cyan-rgb),.18)!important;border-color:rgba(var(--cyan-rgb),.5)!important}
#hour-chart-popup .ftab{padding:4px 10px;font-size:11px}
/* ── AI Prompt Manager ── */
.apm-modal{position:fixed;z-index:820;display:none;background:linear-gradient(160deg,var(--bg1),rgba(10,15,30,.98));border:1px solid rgba(var(--cyan-rgb),.15);border-radius:14px;box-shadow:0 24px 80px rgba(0,0,0,.9),0 0 30px rgba(var(--cyan-rgb),.05);font-family:var(--fb);overflow:hidden}
.apm-header{position:absolute;top:0;left:0;right:0;height:48px;padding:0 16px;background:linear-gradient(135deg,rgba(0,120,255,.06),var(--bg2));border-bottom:1px solid rgba(var(--cyan-rgb),.15);display:flex;align-items:center;gap:10px;cursor:grab;border-radius:14px 14px 0 0;z-index:2}
.apm-header-title{font-family:var(--fd);font-size:11px;color:var(--cyan);letter-spacing:2px}
.apm-header-btn{border-radius:6px;cursor:pointer;font-family:var(--fb);transition:all .15s;border:1px solid}
.apm-save-btn{background:rgba(var(--green-rgb),.1);border-color:rgba(var(--green-rgb),.3);color:var(--green);font-size:12px;padding:5px 14px;font-weight:600}
.apm-save-btn:hover{background:rgba(var(--green-rgb),.2)}
.apm-close-btn{background:var(--bg3);border-color:var(--bd1);color:var(--t3);width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:12px}
.apm-close-btn:hover{border-color:var(--red);color:var(--red)}
.apm-body{overflow-y:scroll;overflow-x:hidden;padding:16px 20px;height:calc(100% - 48px);box-sizing:border-box}
.apm-body>*{margin-bottom:14px}
.apm-body::-webkit-scrollbar{width:10px;background:var(--bg2)}
.apm-body::-webkit-scrollbar-thumb{background:rgba(var(--cyan-rgb),.35);border-radius:5px;border:2px solid var(--bg2)}
.apm-body::-webkit-scrollbar-thumb:hover{background:rgba(var(--cyan-rgb),.6)}
@keyframes apm-in{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
.apm-section{background:var(--bg2);border:1px solid var(--bd1);border-radius:10px;overflow:hidden;transition:border-color .2s}
.apm-section:hover{border-color:rgba(var(--cyan-rgb),.2)}
.apm-sec-hdr{display:flex;align-items:center;gap:8px;padding:12px 14px;cursor:pointer;user-select:none;transition:background .15s}
.apm-sec-hdr:hover{background:rgba(var(--cyan-rgb),.04)}
.apm-sec-icon{font-size:18px;flex-shrink:0}
.apm-sec-title{font-family:var(--fb);font-size:14px;font-weight:700;color:var(--t1);flex:1}
.apm-sec-tip{width:20px;height:20px;border-radius:50%;background:rgba(var(--cyan-rgb),.12);border:1.5px solid rgba(var(--cyan-rgb),.3);color:var(--cyan);font-size:10px;font-family:var(--fd);display:grid;place-items:center;cursor:help;flex-shrink:0;transition:all .15s;position:relative}
.apm-sec-tip:hover{background:rgba(var(--cyan-rgb),.25);box-shadow:0 0 8px rgba(var(--cyan-rgb),.3);transform:scale(1.15)}
.apm-chevron{color:var(--t3);font-size:10px;transition:transform .2s}
.apm-collapsed .apm-chevron{transform:rotate(-90deg)}
.apm-collapsed .apm-sec-body{display:none}
.apm-sec-body{padding:12px 14px 14px;border-top:1px solid var(--bd1)}
.apm-textarea{width:100%;background:var(--bg1);border:1px solid var(--bd1);color:var(--t1);border-radius:8px;padding:10px 12px;font-family:var(--fb);font-size:13px;line-height:1.7;resize:vertical;transition:border-color .2s;box-sizing:border-box}
.apm-textarea:focus{border-color:rgba(var(--cyan-rgb),.5);outline:none;box-shadow:0 0 0 3px rgba(var(--cyan-rgb),.1)}
.apm-vars-bar{font-family:var(--fm);font-size:10px;color:var(--t3);margin-bottom:8px;line-height:2.2;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.apm-vars-bar code{background:rgba(var(--cyan-rgb),.08);border:1px solid rgba(var(--cyan-rgb),.18);color:var(--cyan);padding:2px 6px;border-radius:4px;font-size:10px;font-family:var(--fm);cursor:help;transition:all .1s;position:relative}
.apm-vars-bar code:hover{background:rgba(var(--cyan-rgb),.22);border-color:rgba(var(--cyan-rgb),.4);z-index:5}
.apm-vars-bar code[title]:hover::after{content:attr(title);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:rgba(5,15,30,.95);border:1px solid rgba(var(--cyan-rgb),.3);color:var(--t1);padding:6px 10px;border-radius:6px;font-size:11px;font-family:var(--fb);white-space:nowrap;box-shadow:0 4px 16px rgba(0,0,0,.5);pointer-events:none;z-index:10}
.apm-vars-bar code[title]:hover::before{content:'';position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:rgba(var(--cyan-rgb),.3);z-index:10}
.apm-vars-bar code[title]{pointer-events:auto}
.apm-num-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:linear-gradient(135deg,rgba(0,0,0,.2),rgba(0,10,20,.15));border-radius:10px;border:1px solid var(--bd1);transition:border-color .2s}
.apm-num-row:hover{border-color:rgba(var(--cyan-rgb),.2)}
.apm-num-row>div:first-child{flex:1;min-width:0}
.apm-num-row label{font-size:13px;color:var(--t1);font-family:var(--fb);font-weight:600;display:block}
.apm-num-row .apm-num-desc{font-size:11px;color:var(--t3);margin-top:3px;line-height:1.5}
.apm-num-wrap{display:flex;align-items:center;gap:0;flex-shrink:0;border:2px solid var(--bd2);border-radius:8px;overflow:hidden;transition:border-color .2s}
.apm-num-wrap:focus-within{border-color:rgba(var(--cyan-rgb),.5);box-shadow:0 0 0 3px rgba(var(--cyan-rgb),.1)}
.apm-num{width:56px;background:var(--bg1);border:none;color:var(--cyan);padding:8px 4px;font-family:var(--fm);font-size:16px;font-weight:700;text-align:center;-moz-appearance:textfield}
.apm-num::-webkit-inner-spin-button,.apm-num::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.apm-num:focus{outline:none}
.apm-num-btn{width:28px;background:var(--bg2);border:none;color:var(--t2);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .1s;font-family:var(--fm);padding:0}
.apm-num-btn:hover{background:rgba(var(--cyan-rgb),.15);color:var(--cyan)}
.apm-num-btn:active{background:rgba(var(--cyan-rgb),.25)}
.apm-num-minus{border-right:1px solid var(--bd1)}
.apm-num-plus{border-left:1px solid var(--bd1)}
.apm-select{width:100%;background:var(--bg1);border:1px solid var(--bd1);color:var(--t1);padding:7px 10px;border-radius:6px;font-family:var(--fb);font-size:12px;cursor:pointer;transition:border-color .2s}
.apm-select:focus{border-color:rgba(var(--cyan-rgb),.5);outline:none}
/* Tooltip popup for ? buttons */
.apm-tooltip{position:fixed;z-index:900;max-width:320px;background:linear-gradient(135deg,rgba(5,15,30,.97),rgba(10,20,40,.97));border:1px solid rgba(var(--cyan-rgb),.3);border-radius:10px;padding:14px 16px;box-shadow:0 12px 40px rgba(0,0,0,.7),0 0 15px rgba(var(--cyan-rgb),.08);font-family:var(--fb);font-size:13px;color:var(--t1);line-height:1.7;animation:apm-tip-in .15s ease;pointer-events:none}
.apm-tooltip::before{content:'';position:absolute;top:-6px;right:20px;width:12px;height:12px;background:rgba(5,15,30,.97);border-top:1px solid rgba(var(--cyan-rgb),.3);border-right:1px solid rgba(var(--cyan-rgb),.3);transform:rotate(-45deg)}
@keyframes apm-tip-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

/* ── AI Control Bar ── */
.ai-ctrl-group{display:flex;align-items:center;gap:8px}
.ai-ctrl-lbl{font-size:13px;flex-shrink:0;line-height:1;opacity:.75}
.ai-ctrl-segs{display:flex;border:1px solid var(--bd1);border-radius:6px;overflow:hidden}
.ai-ctrl-seg{background:var(--bg2);border:none;border-right:1px solid var(--bd1);color:var(--t3);font-size:11px;font-family:var(--fb);padding:4px 10px;cursor:pointer;transition:all .15s;white-space:nowrap}
.ai-ctrl-seg:last-child{border-right:none}
.ai-ctrl-seg:hover{background:rgba(var(--cyan-rgb),.08);color:var(--t1)}
.ai-ctrl-seg-active{background:rgba(var(--cyan-rgb),.13)!important;color:var(--cyan)!important;font-weight:700}
.ai-ctrl-sep{width:1px;height:26px;background:var(--bd1);flex-shrink:0;margin:0 2px}
.ai-bar-vis{display:flex;align-items:flex-end;gap:3px;height:18px;margin-inline-start:4px}
.ai-bar-pip{width:7px;border-radius:2px 2px 1px 1px;background:var(--bg3);border:1px solid var(--bd1);transition:all .35s ease}
.ai-bar-pip:nth-child(1){height:8px}
.ai-bar-pip:nth-child(2){height:12px}
.ai-bar-pip:nth-child(3){height:17px}

/* ── Log Timestamp ── */
.log-ts-time{display:block;font-size:12px;color:var(--t1);font-weight:600;letter-spacing:.5px}
.log-ts-date{display:block;font-size:12px;color:var(--t2);opacity:.85;margin-top:1px}
/* TABLE */
.log-wrap{overflow-x:auto}
.log-table{width:100%;border-collapse:collapse;font-family:var(--fb)}
/* ═══ LIVE STATUS INDICATOR ═══ */
#live-status{display:flex;align-items:center;gap:6px;padding:5px 12px;background:var(--bg2);border:1px solid var(--bd1);border-radius:20px;cursor:pointer;transition:all .3s}
#live-status:hover{border-color:var(--bd2);background:rgba(var(--cyan-rgb),.06)}
.ls-dot{width:7px;height:7px;border-radius:50%;transition:background .3s,box-shadow .3s}
.ls-dot.ok{background:var(--green);box-shadow:0 0 6px var(--green);animation:ls-pulse 2s infinite}
.ls-dot.err{background:var(--red);box-shadow:0 0 6px var(--red);animation:gred 1s infinite}
.ls-dot.loading{background:var(--cyan);box-shadow:0 0 6px var(--cyan);animation:spin .8s linear infinite}
.ls-dot.pulse{animation:ls-flash .5s ease;box-shadow:0 0 12px var(--green)}
@keyframes ls-flash{0%{transform:scale(1)}50%{transform:scale(1.8);box-shadow:0 0 16px var(--green)}100%{transform:scale(1)}}
@keyframes log-dot-flash{0%{transform:scale(1)}50%{transform:scale(2);box-shadow:0 0 14px var(--green)}100%{transform:scale(1)}}
@keyframes log-pause-blink{0%,100%{opacity:1;box-shadow:0 0 6px rgba(var(--orange-rgb),.3)}50%{opacity:.4;box-shadow:none}}
@keyframes ls-pulse{0%,100%{opacity:1}50%{opacity:.5}}
.ls-text{font-family:'Heebo',sans-serif;font-size:12px;font-weight:500;color:var(--t2);white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}

/* ═══ TABLE HEADERS ═══ */
.log-table th{padding:10px 6px;font-family:'Orbitron','Heebo',sans-serif;font-size:11px;color:var(--t2);letter-spacing:.8px;text-transform:uppercase;text-align:start;border-bottom:2px solid var(--bd2);background:var(--bg1);white-space:nowrap;cursor:pointer;user-select:none;position:sticky;top:0;z-index:1;transition:color .2s}
.log-table th:hover{color:var(--t1);background:rgba(var(--cyan-rgb),.06)}
/* ═══ SORT ARROWS ═══ */
.sort-arrow{margin-inline-start:5px;font-size:11px;display:inline-block;opacity:.35;transition:opacity .2s,color .2s}
.sort-arrow::after{content:'⇅'}
th.sort-asc .sort-arrow{opacity:1;color:var(--cyan)}
th.sort-asc .sort-arrow::after{content:'▲ '}
th.sort-desc .sort-arrow{opacity:1;color:var(--cyan)}
th.sort-desc .sort-arrow::after{content:'▼ '}
.log-table th.sorted{color:var(--cyan)}
.log-table th.sorted{color:var(--cyan)}

/* --log-row-pad: user-adjustable row spacing (slider in pagination bar,
   persisted in localStorage as clm_row_space). */
.log-table td{padding:var(--log-row-pad,9px) 6px;border-bottom:1px solid rgba(var(--hi-rgb),.032);vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--fb);font-size:13px;color:var(--t2)}
.log-table tr.data-row{cursor:pointer;transition:background .15s}
.log-table tr.data-row:hover td{background:rgba(var(--cyan-rgb),.06)}
.log-table tr.data-row.expanded td{background:rgba(var(--cyan-rgb),.12);border-bottom:none;animation:rowGlow 2s ease-in-out infinite}
@keyframes rowGlow{0%,100%{background:rgba(var(--cyan-rgb),.10)}50%{background:rgba(var(--cyan-rgb),.16)}}
.log-table tr.expand-detail td{padding:0;background:linear-gradient(180deg,rgba(var(--bg1-rgb),.97),rgba(var(--bg0-rgb),.99));border-bottom:3px solid var(--cyan);border-top:none}
.expand-chevron{display:inline-block;transition:transform .25s;font-size:11px;color:var(--t3)}
tr.expanded .expand-chevron{transform:rotate(90deg);color:var(--cyan)}
.my-ip-badge{font-size:12px;cursor:default;animation:myIpPulse 2s ease-in-out infinite}
/* text-overflow on the td does not reach nested block children — each line
   inside the URL cell must ellipsize itself or it visually overflows. */
.url-cell-wrap{display:flex;flex-direction:column;gap:1px;min-width:0;max-width:100%}
.url-path{font-family:'Share Tech Mono',monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.url-title-sub{font-size:9px;color:var(--t3);opacity:.7;white-space:nowrap;font-family:'Heebo',sans-serif;display:flex;align-items:center;gap:4px;min-width:0}
.url-title-text{overflow:hidden;text-overflow:ellipsis;max-width:100%}
.url-views{font-family:'Share Tech Mono',monospace;font-size:8px;color:var(--orange);background:rgba(var(--orange-rgb),.1);border:1px solid rgba(var(--orange-rgb),.2);border-radius:4px;padding:0 4px;flex-shrink:0;line-height:14px}
@keyframes myIpPulse{0%,100%{opacity:1}50%{opacity:.5}}
.ep{padding:20px 26px;animation:ep-in .22s ease;font-family:var(--fb);border-inline-start:5px solid var(--cyan);max-height:60vh;overflow-y:auto;word-wrap:break-word;overflow-wrap:break-word}
@keyframes ep-in{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}

/* ── EP HEADER ── */
.ep-head{display:flex;align-items:center;gap:14px;margin-bottom:16px;padding:14px 18px;background:linear-gradient(135deg,rgba(var(--cyan-rgb),.08),rgba(var(--cyan-rgb),.02));border:1px solid var(--bd2);border-radius:8px}
.ep-head-icon{font-size:32px;flex-shrink:0;line-height:1}
.ep-head-text{flex:1;min-width:0}
.ep-type-name{font-family:'Heebo',sans-serif;font-size:18px;font-weight:700;color:var(--t1);margin-bottom:5px}
.ep-type-sub{font-size:14px;color:var(--t2);line-height:1.65;font-family:'Heebo',sans-serif;white-space:normal;word-break:break-word;overflow-wrap:anywhere;min-width:0;max-width:100%}
.ep-head-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}
.ep-severity{padding:4px 14px;border-radius:20px;font-family:'Heebo',sans-serif;font-size:12px;font-weight:700;letter-spacing:.5px;white-space:nowrap}
.ep-sev-critical{background:rgba(var(--red-rgb),.18);color:var(--red);border:1px solid rgba(var(--red-rgb),.4)}
.ep-sev-high{background:rgba(var(--orange-rgb),.14);color:var(--orange);border:1px solid rgba(var(--orange-rgb),.4)}
.ep-sev-medium{background:rgba(var(--yellow-rgb),.1);color:var(--yellow);border:1px solid rgba(var(--yellow-rgb),.3)}
.ep-sev-low{background:rgba(var(--green-rgb),.1);color:var(--green);border:1px solid rgba(var(--green-rgb),.3)}
.ep-sev-info{background:rgba(var(--blue-rgb),.1);color:var(--blue);border:1px solid rgba(var(--blue-rgb),.3)}
.ep-occ-badge{background:rgba(var(--orange-rgb),.1);border:1px solid rgba(var(--orange-rgb),.3);color:var(--orange);padding:5px 12px;border-radius:10px;font-family:'Heebo',sans-serif;font-size:13px;font-weight:600;white-space:nowrap;direction:inherit}

/* ── EP BODY GRID ──
   auto-fit: cards reflow 3→2→1 columns by available width instead of forcing
   three squeezed columns on narrower desktops. Mobile/tablet overrides in
   mobile.css still apply. */
.ep-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;min-width:0}
.ep-card{background:rgba(var(--bg1-rgb),.9);border:1px solid var(--bd2);border-radius:8px;overflow:visible;min-width:0}
.ep-card-title{font-family:'Heebo',sans-serif;font-size:15px;font-weight:700;color:var(--cyan);padding:10px 14px;background:rgba(var(--cyan-rgb),.06);border-bottom:1px solid var(--bd1);display:flex;align-items:center;gap:6px;flex-wrap:wrap;white-space:normal;word-break:break-word;overflow-wrap:anywhere;min-width:0;max-width:100%}
.ep-card-body{padding:12px 14px;display:flex;flex-direction:column;gap:7px;word-wrap:break-word;overflow-wrap:break-word;min-width:0;font-family:'Heebo',sans-serif}
.ep-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid rgba(var(--hi-rgb),.04)}
.ep-row:last-child{border-bottom:none}
.ep-lbl{font-size:13px;color:var(--t3);white-space:nowrap;flex-shrink:0;font-family:'Heebo',sans-serif;font-weight:600}
.ep-val{font-size:14px;color:var(--t1);text-align:end;word-break:break-all;overflow:hidden;text-overflow:ellipsis;max-width:220px;font-family:'Heebo',sans-serif}
.ep-val.mono{font-family:'Share Tech Mono',monospace;font-size:14px}
.ep-val.wrap{white-space:normal;word-break:break-word;overflow-wrap:anywhere;overflow:visible;text-overflow:clip;max-width:100%;min-width:0;font-family:'Heebo',sans-serif;font-size:14px}

/* ── EP TIPS ── */
.ep-tips{list-style:none;display:flex;flex-direction:column;gap:5px;padding:12px 14px}
.ep-tip-item{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border-radius:6px;background:rgba(var(--cyan-rgb),.05);border:1px solid rgba(var(--cyan-rgb),.1);font-size:13px;color:var(--t2);line-height:1.65;font-family:'Heebo',sans-serif}
.ep-tip-item>span:not(.ep-tip-arrow){flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word;white-space:normal}
.ep-tip-arrow{color:var(--cyan);font-weight:700;font-size:14px;flex-shrink:0;margin-top:1px}
.ep-ip-occ{font-family:'Heebo',sans-serif;font-size:13px;font-weight:600;color:var(--orange);margin-top:4px;direction:inherit}

/* ── CUSTOM CONFIRM DIALOG ── */
#confirm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:1000;display:none;align-items:center;justify-content:center;backdrop-filter:blur(8px)}
#confirm-overlay.show{display:flex}
.confirm-box{background:var(--bg1);border:1px solid var(--bd2);border-radius:12px;padding:26px 30px;max-width:380px;width:90%;box-shadow:0 24px 64px rgba(0,0,0,.8);text-align:center;font-family:var(--fb)}
.confirm-icon{font-size:40px;margin-bottom:14px}
.confirm-title{font-family:var(--fd);font-size:14px;color:var(--t1);margin-bottom:8px;letter-spacing:.5px}
.confirm-msg{font-size:13px;color:var(--t2);line-height:1.65;margin-bottom:22px}
.confirm-btns{display:flex;gap:10px;justify-content:center}
.confirm-yes{background:rgba(var(--red-rgb),.18);border:1px solid rgba(var(--red-rgb),.5);color:var(--red);padding:9px 22px;border-radius:var(--r);font-family:var(--fd);font-size:10px;letter-spacing:1px;cursor:pointer;transition:all .2s}
.confirm-yes:hover{background:rgba(var(--red-rgb),.32)}
.confirm-no{background:var(--bg3);border:1px solid var(--bd1);color:var(--t2);padding:9px 22px;border-radius:var(--r);font-family:var(--fb);font-size:13px;cursor:pointer;transition:all .2s}
.confirm-no:hover{border-color:var(--bd2);color:var(--t1)}

/* STATUS PILLS */
.spill{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-family:var(--fd);font-weight:600;letter-spacing:.3px;white-space:nowrap}
.sp-allowed{background:rgba(var(--green-rgb),.1);color:var(--green);border:1px solid rgba(var(--green-rgb),.25)}
.sp-blocked{background:rgba(var(--red-rgb),.1);color:var(--red);border:1px solid rgba(var(--red-rgb),.25)}
/* MCS DRY = would-have-been-blocked. Purple to distinguish from real blocks. */
.sp-dry{background:rgba(var(--purple-rgb),.1);color:var(--purple);border:1px solid rgba(var(--purple-rgb),.25)}
/* MCS DETECT = reputation signal. Cyan to mark "warning, not yet blocked". */
.sp-detect{background:rgba(var(--cyan-rgb),.1);color:var(--cyan);border:1px solid rgba(var(--cyan-rgb),.25)}
.sp-bot{background:rgba(var(--blue-rgb),.1);color:var(--blue);border:1px solid rgba(var(--blue-rgb),.25)}
/* INFO/ERROR = silent firewall messages, hidden from main view by default. */
.sp-info{background:rgba(150,150,150,.1);color:#999;border:1px solid rgba(150,150,150,.25)}
.sp-error{background:rgba(var(--red-rgb),.08);color:var(--red);border:1px solid rgba(var(--red-rgb),.25)}
/* Legacy alias — no longer produced by parseMCS but kept so any cached state still renders. */
.sp-logged{background:rgba(var(--orange-rgb),.1);color:var(--orange);border:1px solid rgba(var(--orange-rgb),.25)}
/* inline-block (not flex) so text-overflow can actually ellipsize the label
   when the column is at its minimum. */
.atype-pill{display:inline-block;padding:2px 7px;border-radius:10px;font-size:11px;background:rgba(var(--hi-rgb),.04);border:1px solid rgba(var(--hi-rgb),.08);white-space:nowrap;font-family:var(--fb);max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;line-height:1.7}
.status-help-mini{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:rgba(var(--hi-rgb),.05);border:1px solid rgba(var(--hi-rgb),.12);color:var(--t3);font-size:8px;font-weight:700;font-family:var(--fd);cursor:pointer;margin-inline-start:8px;vertical-align:middle;transition:all .15s;padding:0;line-height:1}
.status-help-mini:hover{border-color:var(--cyan);color:var(--cyan);background:rgba(var(--cyan-rgb),.1)}
.status-explain{position:fixed;z-index:9000;width:340px;background:linear-gradient(160deg,rgba(5,16,30,.98),rgba(8,22,42,.98));border:1px solid rgba(var(--cyan-rgb),.2);border-radius:12px;padding:16px 18px;box-shadow:0 12px 40px rgba(0,0,0,.7),0 0 20px rgba(var(--cyan-rgb),.06);font-family:'Heebo',sans-serif;animation:stTipIn .15s ease}
.risk-badge{font-family:'Orbitron',sans-serif;font-size:9px;font-weight:700;padding:1px 5px;border-radius:4px;margin-inline-start:4px}
.risk-crit{background:rgba(var(--red-rgb),.15);color:var(--red);border:1px solid rgba(var(--red-rgb),.3)}
.risk-med{background:rgba(var(--yellow-rgb),.12);color:var(--yellow);border:1px solid rgba(var(--yellow-rgb),.25)}
.risk-low{background:rgba(var(--green-rgb),.1);color:var(--green);border:1px solid rgba(var(--green-rgb),.2)}
.ua-chip{display:inline-flex;align-items:center;gap:3px;font-size:13px;color:var(--t2);white-space:nowrap;font-family:var(--fb)}
.flag-img{width:16px;height:12px;border-radius:1px;vertical-align:middle;object-fit:cover}
.flag-fallback{font-family:var(--fm);font-size:9px;color:var(--t3);background:var(--bg3);padding:1px 4px;border-radius:2px;display:inline-block;vertical-align:middle}
.country-cell{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.ref-link{color:var(--blue);text-decoration:none;font-size:12px;font-family:var(--fb)}
.ref-link:hover{color:var(--cyan);text-decoration:underline}
.ref-direct{color:var(--t3);font-size:12px;font-family:var(--fb)}

/* PAGINATION */
#pagination-wrap{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;border-top:1px solid var(--bd1);flex-wrap:wrap;gap:8px}
.page-info-text{font-family:'Heebo',sans-serif;font-size:13px;color:var(--t2)}
.page-btns{display:flex;align-items:center;gap:3px}
.page-btn{min-width:32px;height:32px;padding:0 8px;border-radius:5px;font-size:13px;font-family:'Heebo',sans-serif;background:var(--bg1);border:1px solid var(--bd1);color:var(--t3);transition:all .2s;display:flex;align-items:center;justify-content:center}
.page-btn:hover:not(:disabled){background:rgba(var(--cyan-rgb),.1);border-color:var(--cyan);color:var(--cyan)}
.page-btn.active{background:rgba(var(--cyan-rgb),.2);border-color:var(--cyan);color:var(--cyan);font-weight:700}
.page-btn:disabled{opacity:.3;cursor:not-allowed}
.page-btn.ellipsis{cursor:default;background:none;border-color:transparent;color:var(--t3)}
.page-size-sel{background:var(--bg1);border:1px solid var(--bd1);color:var(--t2);padding:4px 22px 4px 8px;border-radius:5px;font-size:12px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='6'%3E%3Cpath d='M1 1l3 3 3-3' stroke='%233f6480' stroke-width='1.3' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:left 6px center;font-family:var(--fb)}

/* ── Uniform panel toggle button alignment (all panels) ── */
.ai-hdr{padding-inline-end:44px}
.log-hdr{position:relative;padding-inline-end:44px}
.lu-inline-hdr{position:relative;padding-inline-end:44px!important}
#ai-toggle-btn,#lu-inline-toggle{position:absolute;top:50%;transform:translateY(-50%);inset-inline-end:8px;margin:0!important}
#log-toggle-btn{position:absolute;top:10px;transform:none;inset-inline-end:8px;margin:0!important}
[dir=ltr] .page-size-sel{background-position:right 6px center;padding:4px 8px 4px 22px}
/* Mobile compact pagination: "עמוד [select] / N" between the prev/next arrows */
.page-jump{display:inline-flex;align-items:center;gap:6px;font-family:'Heebo',sans-serif;font-size:13px;color:var(--t2);white-space:nowrap}
.page-jump-sel{background:var(--bg1);border:1px solid var(--bd1);color:var(--cyan);font-weight:700;padding:4px 10px;border-radius:6px;font-size:14px;font-family:'Heebo',sans-serif;min-height:36px;text-align:center;cursor:pointer}
.page-jump-total{color:var(--t3)}

/* ── log-table column widths ──
   table-layout:fixed + width:100% pins the table to EXACTLY its container
   width, so long URLs/referers can never blow it past the viewport (fields
   used to get silently cut behind a hidden horizontal scroll on ~1440-1800px
   screens, both for closed rows and the expanded detail panel). The URL
   column (8) deliberately has NO width hint — in fixed layout it absorbs all
   remaining space; every cell already ellipsizes. min-width keeps a floor
   below which .log-wrap falls back to horizontal scrolling.
   Mobile (≤760) overrides all of this in mobile.css with its own fixed
   percentage layout. */
table.log-table{table-layout:fixed;min-width:1240px}
/* Width hints sized to the WIDEST real cell content so nothing clips
   mid-badge: col1 = chevron + favorite star (two controls), col3 = status
   pill + "?" mini-help, col4 = compressed IPv6 + copy button (+👁️),
   col9 = icon + label + risk score chip, col10 = referer domain. Col 8 (URL)
   stays width-less and takes whatever remains; cell text is no longer
   JS-truncated — CSS ellipsis trims it to the real column width. */
table.log-table col:nth-child(1){width:40px}
table.log-table col:nth-child(2){width:78px}
table.log-table col:nth-child(3){width:100px}
table.log-table col:nth-child(4){width:190px}
table.log-table col:nth-child(5){width:60px}
table.log-table col:nth-child(6){width:90px}
table.log-table col:nth-child(7){width:108px}
table.log-table col:nth-child(9){width:180px}
table.log-table col:nth-child(10){width:130px}
/* Status column: pin the pill to the line start (right edge in RTL) so the
   pill edges align row-to-row regardless of pill width. */
table.log-table th:nth-child(3),table.log-table td:nth-child(3){text-align:start}
/* LTR data (IP, URL, referer) inside an RTL table: force LTR so the bidi
   ellipsis trims the END of the value, not its start ("…001:4860:7:1717"
   becomes "2001:4860:7:17…"). Keep the text hugging the column's right edge
   in RTL so it stays visually attached to the neighbouring columns. */
.log-table td:nth-child(4),.log-table td:nth-child(10),.url-path{direction:ltr}
[dir=rtl] .log-table td:nth-child(4),[dir=rtl] .log-table td:nth-child(10),[dir=rtl] .url-path{text-align:right}
/* Nested cell blocks must ellipsize themselves — the td's text-overflow
   does not reach block/flex children. */
.log-table td .ua-chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}

/* ── Responsive column stages (desktop-narrow) ──
   min-width:1240px alone meant that on narrow windows the middle column
   clipped the table (page-level overflow-x is hidden) and the only escape
   was an easy-to-miss horizontal scrollbar. #log-body-wrap is an
   inline-size container; as it narrows, low-priority columns collapse and
   the remaining width hints shrink in stages, so the table always FITS the
   panel. Columns collapse via col width:0!important rather than
   display:none — table-layout:fixed maps colgroup cols to columns by
   INDEX, and !important also beats the inline widths saved by the
   column-resize feature (user-dragged widths only apply at full width).
   Every collapsed field stays available in the row's expand-detail panel.
   Desktop-only (mobile.css owns ≤760 with its own percentage layout);
   browsers without container-query support keep the .log-wrap horizontal
   scroll fallback. */
#log-body-wrap{container:logbody/inline-size}
@media(min-width:761px){
  /* ≤1239: drop source/referer (col 10), slim IP + attack-type */
  @container logbody (max-width:1239px){
    table.log-table{min-width:1060px}
    table.log-table col:nth-child(4){width:170px!important}
    table.log-table col:nth-child(9){width:160px!important}
    table.log-table col:nth-child(10){width:0!important}
    .log-table>thead>tr>th:nth-child(10),
    .log-table>tbody>tr.data-row>td:nth-child(10){padding:0!important;border:none!important;overflow:hidden;font-size:0}
    .log-table>thead>tr>th:nth-child(10)>*{display:none}
  }
  /* ≤1059: drop browser (col 7) */
  @container logbody (max-width:1059px){
    table.log-table{min-width:900px}
    table.log-table col:nth-child(3){width:92px!important}
    table.log-table col:nth-child(7){width:0!important}
    .log-table>thead>tr>th:nth-child(7),
    .log-table>tbody>tr.data-row>td:nth-child(7){padding:0!important;border:none!important;overflow:hidden;font-size:0}
    .log-table>thead>tr>th:nth-child(7)>*{display:none}
  }
  /* ≤899: drop device (col 6), tighten time/country/IP/attack-type */
  @container logbody (max-width:899px){
    table.log-table{min-width:750px}
    table.log-table col:nth-child(2){width:72px!important}
    table.log-table col:nth-child(4){width:160px!important}
    table.log-table col:nth-child(5){width:52px!important}
    table.log-table col:nth-child(9){width:140px!important}
    table.log-table col:nth-child(6){width:0!important}
    .log-table>thead>tr>th:nth-child(6),
    .log-table>tbody>tr.data-row>td:nth-child(6){padding:0!important;border:none!important;overflow:hidden;font-size:0}
    .log-table>thead>tr>th:nth-child(6)>*{display:none}
  }
  /* ≤749: no more floor — fixed layout squeezes, URL keeps the remainder */
  @container logbody (max-width:749px){
    table.log-table{min-width:0}
    table.log-table col:nth-child(3){width:86px!important}
    table.log-table col:nth-child(4){width:144px!important}
    table.log-table col:nth-child(9){width:124px!important}
  }
  /* ≤559 (3-column layout on a small screen): drop country flag +
     attack-type too — the essentials (time, status, IP, URL) survive */
  @container logbody (max-width:559px){
    table.log-table col:nth-child(4){width:130px!important}
    table.log-table col:nth-child(5){width:0!important}
    table.log-table col:nth-child(9){width:0!important}
    .log-table>thead>tr>th:nth-child(5),
    .log-table>tbody>tr.data-row>td:nth-child(5),
    .log-table>thead>tr>th:nth-child(9),
    .log-table>tbody>tr.data-row>td:nth-child(9){padding:0!important;border:none!important;overflow:hidden;font-size:0}
    .log-table>thead>tr>th:nth-child(5)>*,
    .log-table>thead>tr>th:nth-child(9)>*{display:none}
  }
}
/* Row-spacing slider (pagination bar) */
.row-space-ctl{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--t3);user-select:none}
.row-space-ctl input[type=range]{width:90px;accent-color:var(--cyan);cursor:pointer}
/* Column-resize drag handles: straddle the boundary at each header's
   inline-end edge. The th is position:sticky, so absolute anchors to it.
   A thin divider is always visible so the grab point is discoverable;
   hover/drag turns it cyan with a glow. */
.col-resize-handle{position:absolute;top:0;bottom:0;inset-inline-end:-5px;width:10px;cursor:col-resize;z-index:2;display:flex;align-items:center;justify-content:center}
.col-resize-handle::after{content:'';width:2px;height:55%;background:rgba(var(--hi-rgb),.09);border-radius:2px;transition:background .15s,height .15s,box-shadow .15s}
.col-resize-handle:hover::after,.col-resize-handle.dragging::after{background:var(--cyan);height:100%;box-shadow:0 0 8px rgba(var(--cyan-rgb),.55)}
@media(max-width:760px){.col-resize-handle{display:none}}
table.lu-table th:first-child{width:32px}
