:root{--bg:#0d1117;--surface:#161b22;--surface2:#21262d;--border:#30363d;
--text:#e6edf3;--muted:#8b949e;--muted2:#6e7681;
--accent:#58a6ff;--green:#3fb950;--red:#f85149;
--yellow:#d29922;--orange:#db6d28;--purple:#bc8cff;--teal:#39d353;}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;background:var(--bg);color:var(--text);font-family:'Segoe UI',system-ui,sans-serif;font-size:14px;}
a{color:var(--accent);text-decoration:none;}a:hover{text-decoration:underline;}

/* ── Header ── */
.header{background:linear-gradient(135deg,#161b22 0%,#0d1117 100%);border-bottom:1px solid var(--border);
  padding:10px 20px;display:flex;align-items:center;gap:0;height:54px;}
.logo{display:flex;align-items:center;flex-shrink:0;}
.logo-f8{font-size:1.3rem;font-weight:800;letter-spacing:-.5px;color:#c9a84c;}
.logo-sift{font-size:1.3rem;font-weight:800;letter-spacing:.5px;}
.logo-sift .s{color:#58a6ff;}.logo-sift .i{color:#3fb950;}
.logo-sift .f{color:#db6d28;}.logo-sift .t{color:#bc8cff;}
.logo-sub{font-size:9.5px;color:var(--muted);margin-top:1px;letter-spacing:.04em;}
.header-center{flex:1;display:flex;align-items:center;justify-content:center;gap:14px;}
.header-status{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);}
.btn-refresh{background:transparent;border:1px solid var(--border);color:var(--muted);
  width:26px;height:26px;border-radius:6px;cursor:pointer;font-size:13px;display:flex;
  align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;}
.btn-refresh:hover{border-color:var(--accent);color:var(--accent);}
.header-attr{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0;}
.attr-title{font-size:11px;font-weight:700;color:#58a6ff;letter-spacing:.06em;text-transform:uppercase;}
.attr-credits{font-size:10px;color:var(--muted);white-space:nowrap;}
.attr-credits .sift-c{color:#58a6ff;font-weight:600;}
.attr-credits .remnux-c{color:#3fb950;font-weight:600;}

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;border:1px solid;
  font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;}
.btn-primary{background:rgba(31,111,235,.15);border-color:rgba(31,111,235,.4);color:var(--accent);}
.btn-primary:hover{background:rgba(31,111,235,.25);}
.btn-ghost{background:transparent;border-color:var(--border);color:var(--muted);}
.btn-ghost:hover{border-color:var(--text);color:var(--text);}
.btn-red{background:rgba(248,81,73,.12);border-color:rgba(248,81,73,.4);color:var(--red);}
.btn-red:hover{background:rgba(248,81,73,.22);}
.btn-green{background:rgba(63,185,80,.12);border-color:rgba(63,185,80,.4);color:var(--green);}
.btn-green:hover{background:rgba(63,185,80,.22);}
.btn-sm{padding:4px 11px;font-size:11px;}
.btn-xs{padding:3px 8px;font-size:10px;}

/* ── Layout ── */
.app-layout{display:grid;grid-template-columns:1fr 300px;height:calc(100vh - 54px);transition:grid-template-columns .25s;}
body.sp-hidden .app-layout{grid-template-columns:1fr 0;}
.main-col{overflow-y:auto;display:flex;flex-direction:column;}

/* ── Side panel ── */
#side-panel{border-left:1px solid var(--border);overflow-y:auto;overflow-x:hidden;
  display:flex;flex-direction:column;background:var(--surface);min-width:0;}
body.sp-hidden #side-panel{width:0;border-left:none;}
#sp-toggle{position:fixed;top:50%;right:0;transform:translateY(-50%);z-index:200;
  background:rgba(10,15,12,.92);border:1px solid rgba(88,166,255,.15);
  border-right:none;border-radius:4px 0 0 4px;padding:.5rem .25rem;
  cursor:pointer;writing-mode:vertical-rl;font-size:.58rem;color:var(--muted);
  letter-spacing:1px;text-transform:uppercase;transition:color .15s,border-color .15s;}
#sp-toggle:hover{color:var(--accent);border-color:rgba(88,166,255,.4);}

/* Side panel header */
.sp-head{display:flex;align-items:center;justify-content:space-between;
  padding:8px 10px;border-bottom:1px solid var(--border);flex-shrink:0;}
.sp-head-title{font-size:.6rem;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);}
.sp-close{background:none;border:none;color:var(--muted);cursor:pointer;font-size:.7rem;line-height:1;padding:0;}
.sp-close:hover{color:var(--accent);}

/* sp-group: <details> sections inside side panel */
.sp-group{border-bottom:1px solid var(--border);}
.sp-group > summary{display:flex;align-items:center;justify-content:space-between;
  padding:.45rem .75rem;cursor:pointer;user-select:none;
  font-size:.6rem;letter-spacing:1.5px;text-transform:uppercase;
  list-style:none;transition:background .12s;}
.sp-group > summary::-webkit-details-marker{display:none;}
.sp-group > summary:hover{background:rgba(255,255,255,.04);}
.sp-group[open] > summary{border-bottom:1px solid var(--border);}
.sp-group > summary .sg-arrow{font-size:.5rem;transition:transform .15s;margin-left:4px;flex-shrink:0;}
.sp-group[open] > summary .sg-arrow{transform:rotate(90deg);}
.sp-group > .sg-body{padding:.6rem .75rem;}
.sg-upload > summary{color:var(--accent);}
.sg-cases > summary{color:var(--yellow);}

/* Upload zone */
.upload-zone{border:2px dashed var(--border);border-radius:8px;padding:16px 10px;
  text-align:center;cursor:pointer;transition:all .2s;position:relative;margin-bottom:.5rem;}
.upload-zone.drag{border-color:var(--accent);background:rgba(88,166,255,.05);}
.upload-zone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}
.upload-zone .icon{font-size:22px;margin-bottom:4px;}
.upload-zone p{color:var(--muted);font-size:11px;line-height:1.4;}
.upload-zone strong{color:var(--text);font-size:11px;}
.sp-lbl{font-size:10px;color:var(--muted);font-weight:600;text-transform:uppercase;
  letter-spacing:.05em;margin-bottom:3px;}
.input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:5px;
  padding:7px 10px;color:var(--text);font-size:12px;outline:none;transition:border-color .15s;}
.input:focus{border-color:var(--accent);}
textarea.input{resize:vertical;line-height:1.4;}

/* Case list — two-line glass card.
   Row 1: filename + action buttons (Stop / Teach).
   Row 2: a SINGLE pill carrying "pass · status · verdict · iocs · rules · age".
   No <span> wrappers — JS sets textContent + data-verdict; CSS does the glass. */
.case-item{padding:7px 10px;border-bottom:1px solid var(--border);cursor:pointer;
  transition:background .1s;display:flex;flex-direction:column;gap:4px;}
.case-item:hover{background:rgba(88,166,255,.04);}
.case-item.active{background:rgba(88,166,255,.08);border-left:3px solid var(--accent);}
.case-head{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0;}
.case-name{font-size:11.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;}
.case-actions{display:flex;gap:4px;flex-shrink:0;}

/* Single-element glass pill carrying the summary text. Verdict tint comes
   from data-verdict on the same element — no wrapper, no span. */
.case-pills{
  display:inline-flex;align-items:center;align-self:flex-start;
  padding:2px 8px;border-radius:8px;font-size:10px;font-weight:600;
  letter-spacing:.02em;line-height:1.4;color:var(--muted);
  background:rgba(139,148,158,.08);border:1px solid rgba(139,148,158,.22);
  backdrop-filter:blur(4px);max-width:100%;
}
.case-pills:empty{display:none}
.case-pills[data-verdict="MAL"]{color:var(--red);background:rgba(248,81,73,.10);border-color:rgba(248,81,73,.30);}
.case-pills[data-verdict="SUS"]{color:var(--yellow);background:rgba(210,153,34,.10);border-color:rgba(210,153,34,.30);}
.case-pills[data-verdict="BEN"]{color:var(--green);background:rgba(63,185,80,.10);border-color:rgba(63,185,80,.30);}
.case-pills[data-verdict="UNK"]{color:var(--accent);background:rgba(88,166,255,.10);border-color:rgba(88,166,255,.30);}

/* Action chips for Stop / Teach — buttons, not spans. */
.case-act{background:rgba(139,148,158,.10);border:1px solid rgba(139,148,158,.28);
  border-radius:6px;padding:1px 6px;font-size:11px;cursor:pointer;line-height:1.3;
  backdrop-filter:blur(2px);color:var(--text);}
.case-act:hover{background:rgba(139,148,158,.22);}
.case-act-stop{background:rgba(248,81,73,.12);border-color:rgba(248,81,73,.35);color:var(--red);}
.case-act-teach{background:rgba(63,185,80,.10);border-color:rgba(63,185,80,.30);}
.case-disclose{background:transparent;border:1px solid transparent;color:var(--muted);
  padding:0 4px;font-size:11px;}
.case-disclose:hover{background:rgba(88,166,255,.08);border-color:rgba(88,166,255,.20);color:var(--accent);}

/* Pass-count chip — attached to filename when >1 pass exists.
   Inline text suffix; pure CSS attribute styling, no wrapper element. */
.case-passcount{display:inline-block;margin-left:6px;padding:0 5px;font-size:9.5px;
  font-weight:600;color:var(--muted);background:rgba(88,166,255,.08);
  border:1px solid rgba(88,166,255,.20);border-radius:8px;vertical-align:1px;}

/* History rows — nested under the artifact parent, indented + muted.
   Use the existing .case-pills styling so the visual language is consistent.
   Explicit [hidden] override: the .case-history{display:flex} rule below
   would otherwise win over the UA stylesheet's [hidden]{display:none}. */
.case-history[hidden]{display:none}
.case-history{display:flex;flex-direction:column;gap:3px;
  margin:4px 0 0 14px;padding-left:8px;
  border-left:2px solid rgba(88,166,255,.18);}
.case-pass{padding:4px 0 4px 4px;cursor:pointer;display:flex;flex-direction:column;gap:3px;
  border-radius:4px;transition:background .1s;}
.case-pass:hover{background:rgba(88,166,255,.04);}
.case-pass-name{font-size:10.5px;font-weight:500;color:var(--muted);font-family:'JetBrains Mono','Courier New',monospace;}
.case-pass .case-pills{font-size:9.5px;padding:1px 7px;}

/* Legacy badge classes retained for other UI surfaces (intel grid, etc.). */
.badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:9px;font-size:9.5px;font-weight:600;}
.badge-red{background:rgba(248,81,73,.15);color:var(--red);border:1px solid rgba(248,81,73,.3);}
.badge-green{background:rgba(63,185,80,.15);color:var(--green);border:1px solid rgba(63,185,80,.3);}
.badge-yellow{background:rgba(210,153,34,.15);color:var(--yellow);border:1px solid rgba(210,153,34,.3);}
.badge-blue{background:rgba(88,166,255,.15);color:var(--accent);border:1px solid rgba(88,166,255,.3);}
.badge-purple{background:rgba(188,140,255,.15);color:var(--purple);border:1px solid rgba(188,140,255,.3);}
.badge-muted{background:rgba(139,148,158,.1);color:var(--muted);border:1px solid rgba(139,148,158,.2);}

/* ── Auth gate ── */
#authGate{display:flex;align-items:center;justify-content:center;height:calc(100vh - 54px);}
.auth-box{background:var(--surface);border:1px solid var(--border);border-radius:10px;
  padding:28px;width:360px;text-align:center;}
.auth-box h2{margin-bottom:6px;font-size:1rem;}
.auth-box p{color:var(--muted);font-size:12px;margin-bottom:14px;}
.auth-err{color:var(--red);font-size:11px;margin-top:6px;display:none;}
.auth-tabs{display:flex;gap:0;margin-bottom:12px;border:1px solid var(--border);border-radius:6px;overflow:hidden;}
.auth-tab{flex:1;padding:7px;font-size:11px;font-weight:600;cursor:pointer;border:none;
  background:transparent;color:var(--muted);transition:all .15s;}
.auth-tab.active{background:rgba(88,166,255,.15);color:var(--accent);}
.auth-pane{display:none;}.auth-pane.active{display:block;}

/* ── Main welcome content ── */
#welcome{display:flex;flex-direction:column;}
.hero{text-align:center;padding:22px 24px 14px;border-bottom:1px solid var(--border);}
.hero .big-icon{font-size:42px;margin-bottom:8px;}
.hero h2{font-size:1.1rem;font-weight:700;margin-bottom:6px;}
.hero p{color:var(--muted);max-width:520px;margin:0 auto;line-height:1.6;font-size:12px;}
.supported{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;margin-top:8px;}
.main-sections{padding:16px 20px;display:flex;flex-direction:column;gap:14px;}

/* ── Section blocks 01/02/03 (collapsible details) ── */
.sec-block{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface);}
.sec-block > summary{
  display:flex;align-items:flex-start;gap:10px;padding:12px 14px;
  cursor:pointer;user-select:none;list-style:none;transition:background .12s;
}
.sec-block > summary::-webkit-details-marker{display:none;}
.sec-block > summary:hover{background:rgba(255,255,255,.035);}
.sec-block[open] > summary{border-bottom:1px solid var(--border);}
.sec-arrow{font-size:.5rem;color:var(--muted);transition:transform .15s;flex-shrink:0;margin-top:6px;align-self:center;}
.sec-block[open] > summary .sec-arrow{transform:rotate(90deg);}
.sec-num{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:800;flex-shrink:0;margin-top:1px;}
.n01{background:rgba(219,109,40,.15);color:var(--orange);border:1px solid rgba(219,109,40,.3);}
.n02{background:rgba(88,166,255,.12);color:var(--accent);border:1px solid rgba(88,166,255,.3);}
.n03{background:rgba(63,185,80,.12);color:var(--green);border:1px solid rgba(63,185,80,.3);}
.n04{background:rgba(188,140,255,.12);color:var(--purple);border:1px solid rgba(188,140,255,.3);}
.sec-icon{font-size:1.4rem;flex-shrink:0;line-height:1;margin-top:0px;}
.sec-info{flex:1;min-width:0;}
.sec-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px;}
.st-01{color:var(--orange);}
.st-02{color:var(--accent);}
.st-03{color:var(--green);}
.st-04{color:var(--purple);}
.sec-desc{font-size:11px;color:var(--muted);line-height:1.45;}
.sec-body{padding:10px 14px;}
.sec-hdr-action{flex-shrink:0;margin-top:1px;}

/* ── Artifact rows (section 01) ── */
.artifact-row{display:flex;align-items:flex-start;gap:10px;padding:9px 10px;border-radius:8px;
  transition:background .15s;cursor:pointer;}
.artifact-row:hover{background:rgba(255,255,255,.04);}
.ar-type-icon{font-size:1.6rem;flex-shrink:0;width:32px;text-align:center;line-height:1.2;margin-top:1px;}
.ar-body{flex:1;min-width:0;}
.ar-name{font-size:12px;font-weight:600;margin-bottom:2px;color:var(--text);}
.ar-desc{font-size:11px;color:var(--muted);margin-bottom:4px;line-height:1.4;}
.ar-meta{font-family:'Courier New',monospace;font-size:9.5px;color:var(--muted2);margin-bottom:3px;word-break:break-all;}
.ar-tags{display:flex;gap:3px;flex-wrap:wrap;}
.ar-action{flex-shrink:0;display:flex;flex-direction:column;gap:4px;align-items:flex-end;padding-top:2px;}
.btn-ar-load{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:5px;
  border:1px solid rgba(88,166,255,.35);background:rgba(88,166,255,.08);color:var(--accent);
  font-size:10px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;}
.btn-ar-load:hover{background:rgba(88,166,255,.18);}
.btn-ar-view{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:5px;
  border:1px solid rgba(63,185,80,.35);background:rgba(63,185,80,.08);color:var(--green);
  font-size:10px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;}
.btn-ar-view:hover{background:rgba(63,185,80,.18);}
.artifact-divider{border:none;border-top:1px solid rgba(48,54,61,.5);margin:2px 0;}

/* ── Tria.ge load button ── */
.btn-load{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:5px;
  border:1px solid rgba(88,166,255,.35);background:rgba(88,166,255,.08);color:var(--accent);
  font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;}
.btn-load:hover{background:rgba(88,166,255,.18);}
.btn-load:disabled{opacity:.4;cursor:default;}

/* ── Tria.ge grid ── */
.triaje-grid{display:flex;flex-direction:column;gap:6px;}
.triaje-card{background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.07);
  border-radius:9px;padding:10px 12px;display:grid;grid-template-columns:1fr auto;gap:8px;
  align-items:start;transition:opacity .3s,border-color .3s,box-shadow .3s,background .3s;}
.triaje-card:hover{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12);}
.triaje-card.selected{border-color:rgba(88,166,255,.6)!important;background:rgba(88,166,255,.07)!important;
  box-shadow:0 0 18px rgba(88,166,255,.15);opacity:1!important;}
.triaje-card.dimmed{opacity:.18;filter:brightness(.45);pointer-events:none;}
.tc-left{display:flex;flex-direction:column;gap:3px;min-width:0;}
.tc-family{display:flex;align-items:center;gap:4px;flex-wrap:wrap;}
.tc-name{font-weight:700;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tc-meta{font-size:10px;color:var(--muted);}
.tc-tags{display:flex;gap:3px;flex-wrap:wrap;margin-top:1px;}
.tc-hash{font-family:'Courier New',monospace;font-size:9.5px;color:rgba(139,148,158,.6);
  cursor:pointer;user-select:all;word-break:break-all;line-height:1.3;}
.tc-hash:hover{color:var(--accent);}
.tc-hash .copy-hint{font-size:9px;opacity:.5;margin-left:3px;font-style:normal;}
.tc-right{display:flex;flex-direction:column;gap:4px;align-items:flex-end;flex-shrink:0;}
.tc-score{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:800;border:2px solid;}
.s10{border-color:var(--red);color:var(--red);background:rgba(248,81,73,.1);}
.s7{border-color:var(--yellow);color:var(--yellow);background:rgba(210,153,34,.1);}
.s0{border-color:var(--border);color:var(--muted);}
.tc-actions{display:flex;gap:3px;}
.tc-status{font-size:10px;margin-top:2px;min-height:11px;color:var(--muted);display:none;}
.tc-status.show{display:block;}
.btn-pull{display:inline-flex;align-items:center;gap:2px;padding:3px 8px;border-radius:5px;
  font-size:10px;font-weight:600;cursor:pointer;transition:all .15s;border:1px solid;white-space:nowrap;}
.btn-pull-s{background:rgba(63,185,80,.1);border-color:rgba(63,185,80,.35);color:var(--green);}
.btn-pull-s:hover{background:rgba(63,185,80,.22);}
.btn-pull-p{background:rgba(88,166,255,.1);border-color:rgba(88,166,255,.35);color:var(--accent);}
.btn-pull-p:hover{background:rgba(88,166,255,.22);}
.btn-pull.pulling{animation:ppulse 1s ease-in-out infinite;cursor:default;}
@keyframes ppulse{0%,100%{opacity:.35}50%{opacity:.9}}
.btn-pull.done{border-color:rgba(63,185,80,.6);color:var(--green);background:rgba(63,185,80,.15);}
.btn-pull.err{border-color:rgba(248,81,73,.5);color:var(--red);background:rgba(248,81,73,.1);}
.fam-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:8px;font-size:9.5px;font-weight:600;}
.fc-orange{background:rgba(219,109,40,.15);color:var(--orange);border:1px solid rgba(219,109,40,.3);}
.fc-red{background:rgba(248,81,73,.15);color:var(--red);border:1px solid rgba(248,81,73,.3);}
.fc-purple{background:rgba(188,140,255,.15);color:var(--purple);border:1px solid rgba(188,140,255,.3);}
.fc-yellow{background:rgba(210,153,34,.15);color:var(--yellow);border:1px solid rgba(210,153,34,.3);}
.fc-teal{background:rgba(57,211,83,.15);color:var(--teal);border:1px solid rgba(57,211,83,.3);}
.fc-blue{background:rgba(88,166,255,.15);color:var(--accent);border:1px solid rgba(88,166,255,.3);}

/* ── Section 03 Teach controls ── */
.teach-controls{display:flex;flex-direction:column;gap:8px;}
.level-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}
.level-row label{display:flex;align-items:center;gap:5px;font-size:12px;cursor:pointer;}
.lbl-sm{font-size:11px;color:var(--muted);font-weight:600;margin-bottom:3px;}
.teach-btn-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px;}

/* ── Progress panel ── */
#progressPanel{display:none;padding:20px 24px;}
.progress-header{display:flex;align-items:center;gap:12px;margin-bottom:18px;}
.progress-header h2{font-size:.95rem;font-weight:700;}
.spinner{width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--accent);
  border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0;}
@keyframes spin{to{transform:rotate(360deg);}}
.progress-steps{display:flex;flex-direction:column;gap:7px;}
.step{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;border-radius:8px;
  background:var(--surface);border:1px solid var(--border);}
.step.active{border-color:rgba(88,166,255,.4);background:rgba(88,166,255,.05);}
.step.done{border-color:rgba(63,185,80,.3);background:rgba(63,185,80,.04);}
.step.error{border-color:rgba(248,81,73,.4);background:rgba(248,81,73,.04);}
.step-icon{font-size:15px;flex-shrink:0;margin-top:1px;}
.step-body{flex:1;}
.step-label{font-weight:600;font-size:12px;}
.tc-row{display:flex;align-items:center;gap:6px;padding:2px 5px;border-radius:4px;transition:background .2s;}
.tc-row.tc-running{background:rgba(88,166,255,.06);color:var(--accent);}
.tc-row.tc-done{color:var(--green);}
.tc-row.tc-done .tc-name{color:rgba(139,148,158,.7);}
.tc-spin{display:inline-block;animation:spin .8s linear infinite;font-size:10px;}
.tc-elapsed{color:var(--muted);font-size:9.5px;flex-shrink:0;}
.intel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:12px 0;}
.intel-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px;text-align:center;}
.intel-val{font-size:1.4rem;font-weight:700;margin-bottom:2px;}
.intel-val.red{color:var(--red);}.intel-val.green{color:var(--green);}
.intel-val.blue{color:var(--accent);}.intel-val.yellow{color:var(--yellow);}
.intel-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);}

/* ── Report panel ── */
#reportPanel{display:none;flex-direction:column;}
.report-toolbar{display:flex;align-items:center;gap:8px;padding:16px 20px 12px;flex-wrap:wrap;
  border-bottom:1px solid var(--border);}
.report-toolbar h2{font-size:13px;font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#reportFrame{flex:1;border:none;border-top:1px solid var(--border);min-height:600px;background:var(--surface);}

/* ── Teach panel ── */
#teachPanel{display:none;flex-direction:column;gap:12px;padding:20px 24px;}
.teach-header{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--border);}
.teach-header h2{font-size:.95rem;font-weight:700;flex:1;}
.teach-log{font-family:'Courier New',monospace;font-size:11px;background:rgba(13,17,23,.7);
  border:1px solid var(--border);border-radius:6px;padding:10px;height:320px;overflow-y:auto;
  display:flex;flex-direction:column;gap:2px;}
.teach-line{display:flex;gap:7px;line-height:1.5;}
.teach-ts{color:rgba(139,148,158,.6);flex-shrink:0;font-size:9.5px;padding-top:2px;}
.teach-prog{color:var(--text);}
.teach-tool-start{color:var(--accent);font-weight:600;}
.teach-tool-mcp{font-size:9px;color:rgba(88,166,255,.6);background:rgba(88,166,255,.08);
  padding:1px 4px;border-radius:3px;border:1px solid rgba(88,166,255,.2);margin-left:3px;}
.teach-cmd{color:#7ee787;font-size:10.5px;}
.teach-done{color:var(--green);}.teach-err{color:var(--red);}
.teach-complete{color:var(--green);font-weight:700;}
.teach-student-step{background:rgba(63,185,80,.08);border:1px solid rgba(63,185,80,.35);
  border-radius:5px;padding:7px 10px;margin:3px 0;color:var(--green);font-weight:600;font-size:11px;}
#stopTeachBtn{display:none;}

/* ── SIFT Terminal ── */
#sift-terminal-wrap{display:none;margin-top:10px;border:1px solid var(--border);border-radius:8px;overflow:hidden;}
.terminal-header{display:flex;align-items:center;gap:8px;padding:7px 10px;
  background:var(--surface);border-bottom:1px solid var(--border);}
.terminal-header span{font-size:11px;font-weight:600;color:var(--muted);flex:1;}
#sift-shell-frame{width:100%;height:480px;border:none;background:#000;}
#shell-ready-btn{display:none;margin:10px 0;padding:11px;width:100%;font-size:12px;font-weight:700;
  background:rgba(63,185,80,.15);border:2px solid rgba(63,185,80,.5);border-radius:7px;
  color:var(--green);cursor:pointer;letter-spacing:.04em;}
#shell-ready-btn:hover{background:rgba(63,185,80,.25);}
#shell-loading-msg{display:none;font-size:11px;color:var(--muted);margin:5px 0;text-align:center;}

/* ── Hash result ── */
#hashResult{margin-top:6px;padding:9px;background:var(--surface2);border:1px solid var(--border);
  border-radius:6px;display:none;font-size:11px;}

/* ── Toast ── */
#toast{position:fixed;bottom:18px;right:18px;padding:9px 14px;background:var(--surface2);
  border:1px solid var(--border);border-radius:8px;font-size:12px;z-index:9999;
  transition:opacity .3s;opacity:0;pointer-events:none;}
#toast.show{opacity:1;}

@media(max-width:800px){
  .app-layout{grid-template-columns:1fr;}
  #side-panel,#sp-toggle{display:none;}
}

/* ── auto-generated inline-style utility classes ── */
.s-01a194{font-size:9.5px;padding:2px 7px;border-radius:0 4px 4px 0;border:1px solid var(--border);
              background:transparent;color:var(--muted);cursor:pointer;font-weight:600}
.s-06b5d6{display:flex;gap:0.4rem;margin-top:0.4rem}
.s-097ae6{color:var(--accent)}
.s-0b0d45{font-size:10px;color:var(--muted);margin-top:3px}
.s-1001c7{flex:1;font-family:'Courier New',monospace;font-size:11px}
.s-1717b5{font-size:9.5px;color:var(--muted);display:block;margin-top:2px}
.s-1fb26c{border-color:rgba(122,168,255,0.4);color:#7aa8ff}
.s-21c0e2{color:var(--muted);font-size:0.62rem}
.s-28fa48{display:none;margin-top:12px}
.s-2ee5d0{margin-top:0.35rem;display:flex;align-items:center;gap:0.5rem}
.s-30c101{width:100%;margin-bottom:4px}
.s-37124d{width:100%;height:380px;border:1px solid rgba(0,255,157,0.2);border-radius:6px;background:#000}
.s-39c68d{display:flex;gap:8px;align-items:center}
.s-59f2e8{font-family:'Courier New',monospace;font-size:11px;margin-bottom:3px}
.s-611a40{color:var(--muted);font-size:12px}
.s-63278c{width:100%;padding:9px;font-size:12px;opacity:.4;cursor:not-allowed}
.s-6a6830{color:var(--muted);font-size:0.6rem}
.s-6aa34d{display:none}
.s-6f9fa9{flex:1;background:rgba(0,10,5,0.85);border:1px solid rgba(0,255,157,0.3);border-radius:4px;
                     color:var(--text);font-size:0.68rem;padding:0.35rem 0.5rem;outline:none;font-family:inherit}
.s-727ff0{padding:16px;text-align:center;color:var(--muted);font-size:11px}
.s-72e5bd{width:100%;margin-top:6px}
.s-73cb25{color:var(--red)}
.s-7743f3{font-size:36px;margin-bottom:10px}
.s-7cb94b{color:var(--muted);font-size:12px;padding:4px 0}
.s-84c17a{display:flex}
.s-867764{flex-shrink:0}
.s-877c6f{color:#00ff9d;font-size:0.65rem;letter-spacing:1px}
.s-8a1611{display:none;margin-top:0.3rem}
.s-8e183c{font-size:12px;padding:6px 10px;background:var(--surface2);color:var(--text);border:1px solid var(--border)}
.s-8e5861{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}
.s-8eb53b{display:flex;align-items:center;gap:0.5rem;margin-bottom:0.4rem}
.s-900cf1{font-size:0.58rem;color:var(--muted)}
.s-97f46a{color:var(--muted2);font-weight:400}
.s-9e66a1{font-size:11px;margin-bottom:.5rem}
.s-9fde7b{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}
.s-a4f5b5{max-height:420px;overflow-y:auto;padding:0.5rem;
            background:rgba(0,10,5,0.85);border:1px solid rgba(0,255,157,0.2);border-radius:6px;
            font-size:0.7rem;line-height:1.55;display:flex;flex-direction:column;gap:0.5rem}
.s-a9244a{font-size:11px;color:var(--muted);text-align:center;padding:2px 0}
.s-a9a3fd{font-size:0.6rem;padding:0.2rem 0.55rem;background:transparent;border:1px solid rgba(0,255,157,0.25);border-radius:4px;color:var(--muted);cursor:pointer;letter-spacing:.04em}
.s-ac0192{flex:1;overflow-y:auto;max-height:420px}
.s-ada31c{display:flex;flex-direction:column}
.s-b44fa3{font-size:11px;padding:2px 8px;border:1px solid var(--border);border-radius:4px;cursor:pointer;color:var(--muted);background:transparent}
.s-b599e0{display:flex;align-items:center;gap:14px}
.s-b6e174{font-size:0.6rem;color:var(--muted);padding:3px 0}
.s-b84df2{display:flex;gap:5px;margin-bottom:4px}
.s-c29e11{border-color:rgba(0,255,157,0.3);color:#00ff9d;margin-left:auto}
.s-c6ac9d{display:flex;align-items:center;gap:5px}
.s-c73b93{display:none;background:rgba(10,14,20,0.95);border:1px solid rgba(122,168,255,0.3);border-radius:8px;padding:10px 14px;margin:8px 0;flex-direction:column;gap:6px}
.s-ca51e0{display:none;font-size:9.5px;padding:2px 6px;border-radius:4px;
              border:1px solid rgba(248,81,73,.35);background:rgba(248,81,73,.1);
              color:var(--red);cursor:pointer;font-weight:600}
.s-cab86a{display:flex;align-items:baseline;gap:2px}
.s-cbd432{border-color:rgba(0,255,157,0.3);color:#00ff9d}
.s-d64e10{display:none;margin-top:0.75rem}
.s-e17756{font-family:'Courier New',monospace;font-size:11px;display:flex;flex-direction:column;gap:2px}
.s-e2f84b{margin-top:.5rem}
.s-e5cdc2{font-size:9.5px;padding:2px 7px;border-radius:4px 0 0 4px;border:1px solid var(--accent);
              background:rgba(88,166,255,.2);color:var(--accent);cursor:pointer;font-weight:600}
.s-ed0085{font-size:12px;padding:7px 10px}
.s-ed8260{font-size:10px;min-height:14px;margin-bottom:.4rem}
.s-f85c70{margin-bottom:6px}
.s-feaa11{height:1px;background:var(--border);margin:.75rem 0}
