:root{
  --bg:#0e0c09; --panel:#1a1610; --panel2:#221c13;
  --trim:#6f5a2e; --gold:#d8b458; --ink:#e6dcc4; --muted:#988a6a;
  --bar:#6e5f45; --bar-self:#a1874f; --evoker:#2f9e83; --evoker-dim:#1c5f50;
  --kill:#7dc46a; --wipe:#c2554a;
  --sev-major:#c2554a; --sev-minor:#d8b458; --sev-good:#7dc46a; --sev-context:#7fa3c4;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
     font:15px/1.5 "Palatino Linotype",Palatino,Georgia,serif}
.num{font-family:Consolas,ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums}
header{border-bottom:2px solid var(--trim);padding:22px 28px;display:flex;align-items:baseline;gap:16px}
header h1{margin:0;font-size:22px;letter-spacing:.14em;color:var(--gold);font-weight:600}
header>span{color:var(--muted);font-size:13px}

/* AI status light */
.ai-status{margin-left:auto;align-self:center;display:inline-flex;align-items:center;gap:7px;
  font-size:12px;letter-spacing:.06em;color:var(--muted);
  border:1px solid #2c2517;border-radius:20px;padding:4px 12px;white-space:nowrap}
.ai-status i{width:9px;height:9px;border-radius:50%;background:var(--muted);flex:none}
.ai-status.checking{color:var(--gold);border-color:var(--trim)}
.ai-status.checking i{background:var(--gold);animation:aipulse 1s ease-in-out infinite}
.ai-status.ok{color:var(--kill);border-color:var(--kill)}
.ai-status.ok i{background:var(--kill)}
.ai-status.err{color:var(--wipe);border-color:var(--wipe)}
.ai-status.err i{background:var(--wipe)}
.ai-status.off{color:var(--muted)}
@keyframes aipulse{0%,100%{opacity:1}50%{opacity:.25}}
main{max-width:880px;margin:0 auto;padding:28px 20px 80px}

/* upload */
.drop{margin-top:32px;border:2px dashed var(--trim);border-radius:6px;background:var(--panel);
      padding:64px 24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;
      display:flex;flex-direction:column;align-items:center;justify-content:center}
.drop.hover{border-color:var(--gold);background:var(--panel2)}
.drop strong{display:block;font-size:19px;color:var(--gold);margin-bottom:6px}
.drop em{color:var(--muted);font-style:normal;font-size:13px}
.drop input{display:none}
.hint{margin-top:18px;color:var(--muted);font-size:13px;text-align:center}
.hint code{color:var(--ink)}
.busy{display:none;margin-top:24px;text-align:center;color:var(--gold);letter-spacing:.08em}
.busy.on{display:block}

.warn{margin:24px 0;border:1px solid var(--wipe);border-radius:4px;background:#241412;
      padding:14px 18px;color:#e8b0a8}

/* dungeon grouping */
.dungeon{margin-top:40px;display:flex;align-items:baseline;gap:14px;
         padding:0 4px 8px;border-bottom:2px solid var(--trim)}
.dungeon .dn{font-size:20px;letter-spacing:.06em;color:var(--gold);font-weight:600}
.dungeon .dbosses{color:var(--muted);font-size:12px;letter-spacing:.05em}
.dungeon+.warn,.dungeon+section{margin-top:18px}

/* segments */
section{margin-top:34px;background:var(--panel);border:1px solid #2c2517;border-radius:6px;overflow:hidden}
section>h2{margin:0;padding:12px 18px;background:var(--panel2);border-bottom:1px solid #2c2517;
           font-size:16px;font-weight:600;color:var(--gold);display:flex;gap:12px;align-items:baseline}
section>h2 .dur{color:var(--muted);font-size:12px;font-weight:400;letter-spacing:.05em}
.tag{font-size:11px;letter-spacing:.1em;padding:1px 8px;border-radius:3px;border:1px solid}
.tag.kill{color:var(--kill);border-color:var(--kill)}
.tag.wipe{color:var(--wipe);border-color:var(--wipe)}

.cols{display:grid;grid-template-columns:1fr 92px 92px;gap:0 14px;
      padding:8px 18px 2px;color:var(--muted);font-size:11px;letter-spacing:.09em;text-transform:uppercase}
.cols div:nth-child(n+2){text-align:right}
.row{display:grid;grid-template-columns:1fr 92px 92px;gap:0 14px;align-items:center;padding:7px 18px}
.row+.row{border-top:1px solid #241e13}
.who{display:flex;flex-direction:column;gap:4px;min-width:0}
.who .nm{display:flex;gap:8px;align-items:baseline}
.who .nm b{font-weight:600}
.who .nm .aug{color:var(--evoker);font-size:11px;letter-spacing:.09em}
.meter{height:12px;border-radius:2px;background:#12100b;overflow:hidden;display:flex}
.meter i{display:block;height:100%}
.meter .p{background:var(--bar)}
.row.sup .meter .p{background:var(--bar-self)}
.meter .b{background:var(--evoker)}
.dps{text-align:right;font-size:14px}
.dps small{display:block;color:var(--muted);font-size:10px;letter-spacing:.06em}
.dps.adj{color:var(--gold)}
.row.sup .dps.adj{color:var(--evoker);font-weight:700}
.breakdown{grid-column:1/-1;margin:2px 0 4px;color:var(--muted);font-size:12px}
.breakdown b{color:var(--evoker);font-weight:600}
.legend{padding:10px 18px 14px;color:var(--muted);font-size:12px;display:flex;gap:18px;flex-wrap:wrap}
.sw{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:-1px;margin-right:6px}

/* AI review */
.review{grid-column:1/-1;margin:6px 0 2px}
.btn{background:transparent;border:1px solid var(--evoker);color:var(--evoker);
     font:12px/1 inherit;letter-spacing:.08em;padding:6px 12px;border-radius:3px;cursor:pointer}
.btn:hover{background:var(--evoker-dim)}
.btn:disabled{opacity:.5;cursor:default}
.aibox{margin-top:10px;border:1px solid #2c2517;border-radius:4px;background:var(--panel2);
       padding:4px 18px 14px;font-size:13px;line-height:1.55}
.aibox.pre,.aibox.err{white-space:pre-wrap;padding:14px 16px}
.aibox.err{border-color:var(--wipe);color:#e8b0a8}
.aibox .copy{float:right;margin:-4px 0 8px 8px}
/* rendered AI review */
.aibox.md h3,.aibox.md h4,.aibox.md h5,.aibox.md h6{
  color:var(--gold);font-size:12px;letter-spacing:.09em;text-transform:uppercase;
  font-weight:600;margin:14px 0 4px}
.aibox.md h3:first-child,.aibox.md h4:first-child{margin-top:8px}
.aibox.md p{margin:6px 0}
.aibox.md ul{margin:4px 0 8px;padding-left:20px}
.aibox.md ul ul{margin:2px 0}
.aibox.md li{margin:3px 0}
.aibox.md li::marker{color:var(--trim)}
.aibox.md b{color:var(--ink);font-weight:600}

/* findings */
.findings{list-style:none;margin:0;padding:6px 18px 14px}
.findings li{display:flex;gap:10px;align-items:baseline;padding:4px 0;font-size:13px}
.findings .sev{font-size:10px;letter-spacing:.1em;text-transform:uppercase;
               padding:1px 7px;border-radius:3px;border:1px solid;min-width:64px;text-align:center}
.sev-major{color:var(--sev-major);border-color:var(--sev-major)}
.sev-minor{color:var(--sev-minor);border-color:var(--sev-minor)}
.sev-good{color:var(--sev-good);border-color:var(--sev-good)}
.sev-context{color:var(--sev-context);border-color:var(--sev-context)}

footer{margin-top:40px;color:var(--muted);font-size:12px;line-height:1.7}
a{color:var(--gold);cursor:pointer}
