/* Detection rules page. Loaded from index.html; every rule is scoped under .rl-* so nothing else on the console changes. */

/* ---- filter bar and table */
.rl-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:0 22px 14px}
.rl-filters input[type=search]{flex:1;min-width:220px}
.rl-filters select{min-width:112px;max-width:190px}
.rl-table td{vertical-align:middle}
.rl-table td.rl-sw,.rl-table th:last-child{width:70px}
.rl-table td.rl-sw .rl-switch{display:flex}
.rl-table th,.rl-table td{padding-left:10px;padding-right:10px}
.rl-table th:first-child,.rl-table td:first-child{padding-left:18px}
.rl-table th:last-child,.rl-table td:last-child{padding-right:18px}
.rl-table td.check,.rl-table th.check{width:34px;padding-right:0}
.rl-table .rl-name{min-width:170px;max-width:340px}
.rl-table th.sortable{cursor:pointer;user-select:none}
.rl-table th.sortable:hover{color:#2556d3}
.rl-table th .arrow{margin-left:4px;color:#9aa6b8;font-size:10px}
.rl-id{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;color:#5d6e86;white-space:nowrap}
.rl-name{display:flex;flex-direction:column;gap:2px;min-width:170px;max-width:340px}
.rl-name strong{color:#1d2940;font-weight:650;font-size:13px}
.rl-name span{font-size:12px;color:var(--ink-3);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.rl-table tr.off td:not(.rl-sw){opacity:.5}
.rl-tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:6px;font-size:11.5px;font-weight:600;white-space:nowrap;background:#f1f4f9;color:#66768e}
.rl-tag.custom{background:#f1edfa;color:#6a55b5}
.rl-tag.builtin{background:#eef3ff;color:#3f63c0}
.rl-hits{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.rl-hits.zero{color:#b3bdcb}
.rl-open{color:var(--bad);font-weight:700}
.rl-switch{display:inline-flex;align-items:center;cursor:pointer}
.rl-switch input{position:absolute;opacity:0;width:0;height:0}
.rl-switch i{width:34px;height:20px;border-radius:10px;background:#cbd5e4;position:relative;transition:background .15s;display:block}
.rl-switch i:after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .15s}
.rl-switch input:checked+i{background:var(--accent)}
.rl-switch input:checked+i:after{transform:translateX(14px)}
.rl-switch input:focus-visible+i{outline:3px solid #cbd9ff;outline-offset:2px}
.rl-switch input:disabled+i{opacity:.5}
.rl-bulk{display:flex;align-items:center;gap:10px;padding:0 22px 12px;flex-wrap:wrap}
.rl-bulk .muted{margin-right:auto}
.rl-bulk .button{height:34px}
.rl-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 22px;border-top:1px solid var(--line-soft);font-size:12px;color:var(--ink-3)}
.rl-chips{display:flex;flex-wrap:wrap;gap:8px;padding:0 22px 12px;align-items:center}
.rl-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid #cddaf6;background:#f3f7ff;color:#2f56b8;border-radius:16px;padding:3px 6px 3px 11px;font-size:12px}
.rl-chip button{border:0;background:none;color:#8d9bb4;font-size:15px;line-height:1;padding:0 5px;border-radius:10px}
.rl-chip button:hover{color:var(--bad)}

/* ---- tool row above the table */
.rl-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rl-tools .button{height:34px}

/* ---- drawer */
.rl-drawer{display:grid;gap:18px}
.rl-drawer h3{margin:0 0 8px;font-size:13px;color:#1d2940}
.rl-head-tags{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.rl-actions{display:flex;gap:8px;flex-wrap:wrap}
.rl-state-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--line-soft);border-radius:10px;background:#fafbfe}
.rl-state-row>span{display:grid;gap:2px;font-size:13px}
.rl-actions .button{height:34px;padding:0 13px;font-size:13px}
.rl-actions .danger{color:var(--bad);border-color:#f1c9c9}
.rl-actions .danger:hover{background:var(--bad-soft)}
.rl-logic{display:grid;gap:6px;font-size:13px}
.rl-logic div{display:grid;grid-template-columns:84px minmax(0,1fr);gap:10px;padding:7px 10px;background:#f7f9fd;border-radius:8px}
.rl-logic span{color:var(--ink-3)}
.rl-logic b{font-weight:600;color:#26354c;word-break:break-word}
.rl-trend .area-chart svg{height:120px}
.rl-mini{display:grid;gap:2px}
.rl-mini button{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:8px 10px;border:0;background:none;border-radius:8px;text-align:left;font-size:13px;color:#33435b}
.rl-mini button:hover{background:#f4f7fd}
.rl-mini .t{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}

/* ---- editor */
.rl-editor{display:grid;gap:16px}
.rl-cols{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
@media(max-width:1280px){.rl-cols{grid-template-columns:1fr}}
.rl-section{padding:4px 22px 18px}
.rl-section h3{margin:16px 0 4px;font-size:13px;color:#1d2940}
.rl-section .sub{font-size:12px;color:var(--ink-3);margin:0 0 10px}
.rl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.rl-grid .wide{grid-column:1/-1}
.rl-field{display:grid;gap:5px;font-size:12px;color:#5d6e86;font-weight:600}
.rl-field>input,.rl-field>select,.rl-field>textarea{width:100%;font-weight:400;font-size:13px}
.rl-field .hint-line{font-weight:400;color:var(--ink-3);font-size:11.5px}
.rl-types{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.rl-type{border:1px solid var(--line);border-radius:10px;background:#fff;padding:11px 13px;text-align:left;display:grid;gap:3px}
.rl-type:hover{border-color:#b9cbf3;background:#f8faff}
.rl-type.active{border-color:#7195fa;background:#f2f6ff;box-shadow:0 0 0 2px #cbd9ff66}
.rl-type strong{font-size:13px;color:#1d2940}
.rl-type span{font-size:12px;color:var(--ink-3);line-height:1.5}
.rl-type:disabled{opacity:.5}
.rl-conds{display:grid;gap:8px}
.rl-cond-label{font-size:12px;font-weight:700;color:#5d6e86;margin:2px 0}
.rl-cond-label small{font-weight:400;color:var(--ink-3);margin-left:6px}
.rl-cond{display:grid;grid-template-columns:minmax(120px,1.1fr) minmax(100px,.8fr) minmax(0,1.6fr) 30px;gap:8px;align-items:center}
.rl-cond select,.rl-cond input{width:100%;font-size:13px}
.rl-cond .rm{border:0;background:none;font-size:20px;line-height:1;color:#9aa6b8;border-radius:8px;height:34px}
.rl-cond .rm:hover{color:var(--bad);background:var(--bad-soft)}
.rl-value{min-width:0}
.rl-multi{position:relative}
.rl-multi>summary{list-style:none;cursor:pointer;height:38px;display:flex;align-items:center;padding:0 12px;border:1px solid #d9e3f2;border-radius:9px;background:#fff;font-size:13px;color:#26354c;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.rl-multi>summary::-webkit-details-marker{display:none}
.rl-multi[open]>summary{border-color:#7195fa;outline:3px solid #cbd9ff}
.rl-multi-pop{position:absolute;left:0;right:0;top:42px;z-index:30;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 36px #15243b2e;padding:8px;display:grid;gap:6px;min-width:260px}
.rl-multi-pop input{width:100%;height:32px}
.rl-multi-list{max-height:240px;overflow:auto;display:grid;gap:1px}
.rl-multi-list label{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;padding:5px 7px;border-radius:7px;font-size:13px;cursor:pointer}
.rl-multi-list label:hover{background:#f4f7fd}
.rl-cond .empty-value{height:38px;display:flex;align-items:center;color:var(--ink-3);font-size:12px;padding-left:4px}
.rl-cond-add{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.rl-cond-add .button{height:32px;font-size:12.5px;padding:0 12px}
.rl-or{border-left:3px solid #cbd9ff;padding-left:12px;margin-left:2px;display:grid;gap:8px}
.rl-and-join{display:flex;align-items:center;gap:10px;color:#9aa6b8;font-size:11px;font-weight:700;letter-spacing:.08em}
.rl-and-join:before,.rl-and-join:after{content:"";flex:1;height:1px;background:var(--line-soft)}
.rl-checks{display:flex;gap:8px;flex-wrap:wrap}
.rl-check{display:inline-flex;align-items:center;gap:6px;border:1px solid #d9e3f2;border-radius:16px;padding:5px 12px;font-size:12.5px;color:#46566e;background:#fff;cursor:pointer}
.rl-check input{margin:0}
.rl-check.on{border-color:#7195fa;background:#f2f6ff;color:#2556d3;font-weight:600}
.rl-preview{background:#f7f9fd;border:1px solid var(--line-soft);border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.7;color:#33435b}
.rl-side{position:sticky;top:80px;display:grid;gap:16px}
.rl-form-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 22px;border-top:1px solid var(--line-soft);background:#fafbfe;flex-wrap:wrap}
.rl-form-bar .group{display:flex;gap:10px;flex-wrap:wrap}
.rl-error{color:var(--bad);font-size:13px;padding:0 22px 12px}

/* ---- back-test result */
.rl-test{display:grid;gap:14px}
.rl-test-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.rl-test-tiles div{background:#f7f9fd;border:1px solid var(--line-soft);border-radius:10px;padding:10px 12px}
.rl-test-tiles span{display:block;font-size:11.5px;color:var(--ink-3)}
.rl-test-tiles strong{display:block;font-size:20px;color:#18243b;margin-top:2px;font-variant-numeric:tabular-nums}
.rl-test-tiles .down strong{color:var(--good)}
.rl-test-sentence{font-size:13px;color:#26354c;font-weight:600;line-height:1.7}
.rl-test table{width:100%}
.rl-test .area-chart svg{height:110px}
.rl-test-note{font-size:12px;color:var(--ink-3);line-height:1.7}
.rl-test-note.warn{color:var(--warn)}

/* ---- ATT&CK matrix */
.rl-matrix{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px 8px;padding:0 22px 16px;align-items:start}
.rl-mcol{display:flex;flex-direction:column;gap:6px;min-width:0}
.rl-mcol h4{margin:0;padding:9px 10px;font-size:12.5px;background:#f6f8fc;border:1px solid var(--line-soft);border-radius:9px;display:flex;justify-content:space-between;gap:6px;color:#33435b}
.rl-mcol h4 small{font-weight:600;color:var(--ink-3)}
.rl-cell{display:grid;gap:3px;text-align:left;padding:8px 10px;border-radius:9px;border:1px solid transparent;background:#f4f6fa;color:#5a6a82;font-size:12px;line-height:1.4}
.rl-cell .t{display:flex;justify-content:space-between;gap:6px;align-items:baseline}
.rl-cell .t b{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11.5px}
.rl-cell .n{font-size:11.5px;color:inherit;opacity:.85;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.rl-cell .m{font-size:11px;opacity:.8}
.rl-cell:hover{border-color:#9db6f2}
.rl-cell.on{background:#e3ecff;color:#2556d3}
.rl-cell.on.two{background:#cfdfff}
.rl-cell.on.many{background:#b7cdfb}
.rl-cell.hit{background:#fff1e8;color:#b5541f}
.rl-cell.hit.two{background:#ffe4d3}
.rl-cell.off{background:#f4f6fa;color:#8a97ab;border-style:dashed;border-color:#d4dce8}
.rl-cell.gap{background:#fff;border:1px dashed #d4dce8;color:#a1acbb}
.rl-cell.picked{outline:3px solid #cbd9ff;border-color:#7195fa}
.rl-legend{display:flex;gap:16px;flex-wrap:wrap;padding:0 22px 12px;font-size:12px;color:var(--ink-3)}
.rl-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:5px}
.rl-legend .a{background:#cfdfff}.rl-legend .b{background:#ffe4d3}.rl-legend .c{background:#f4f6fa;border:1px dashed #b9c4d6}.rl-legend .d{background:#fff;border:1px dashed #d4dce8}
.rl-technique{display:grid;gap:10px;padding:0 22px 18px}
.rl-technique-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.rl-technique-head h3{margin:0;font-size:14px;color:#1d2940}

/* ---- exceptions */
.rl-exc-cond{display:flex;flex-wrap:wrap;gap:6px}
.rl-exc-cond span{background:#f1f4f9;border-radius:6px;padding:2px 8px;font-size:12px;color:#46566e}
.rl-state{display:inline-flex;padding:2px 9px;border-radius:12px;font-size:12px;font-weight:650;white-space:nowrap}
.rl-state.active{background:var(--good-soft);color:var(--good)}
.rl-state.expired{background:#f1f4f9;color:#8a97ab}
.rl-state.disabled{background:var(--warn-soft);color:var(--warn)}
.rl-exc-form{display:grid;gap:12px}
.rl-expiry{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rl-expiry input[type=number]{width:90px}
.rl-warnbox{background:var(--warn-soft);color:#8a5a14;border-radius:8px;padding:10px 12px;font-size:12.5px;line-height:1.6}
.modal.rl-modal{width:min(640px,calc(100vw - 32px))}
.modal.rl-modal .modal-body{max-height:calc(100vh - 140px);overflow:auto}

/* ---- import / export */
.rl-io{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media(max-width:1000px){.rl-io{grid-template-columns:1fr}}
.rl-report{display:grid;gap:8px;font-size:13px}
.rl-report ul{margin:4px 0 0;padding-left:18px;display:grid;gap:3px;color:var(--ink-2)}
.rl-report .ok{color:var(--good);font-weight:650}
.rl-report .bad{color:var(--bad);font-weight:650}
.rl-report .warn{color:var(--warn);font-weight:650}
.rl-file{display:grid;gap:10px;justify-items:start}
.rl-file input[type=file]{height:auto;padding:8px 10px;width:100%;max-width:420px;background:#f8faff;border-style:dashed;font-size:13px}
.rl-file input[type=file]::file-selector-button{margin-right:12px;border:1px solid #cddaf6;background:#fff;color:#2556d3;border-radius:8px;padding:6px 12px;font-weight:600;cursor:pointer}
.rl-file .rl-tools{margin-top:2px}
