:root{--bg:#15171c;--panel:#1d2027;--panel2:#252933;--line:#343a46;--text:#e4e0d6;--muted:#8d8a83;--accent:#d9a441;--red:#c0392b;--ok:#4caf7a;--paper:#f3ecd9;--ink:#2a2620;--mono:"Courier Prime", "Courier New", Courier, monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 var(--sans);overflow:hidden}button{white-space:nowrap;font:inherit;background:var(--panel2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:4px;padding:4px 9px;font-size:12.5px}button:hover{border-color:var(--accent);color:#fff}button.primary{background:var(--accent);color:#1a1408;border-color:var(--accent);padding:7px 14px;font-weight:600}button.primary:hover{filter:brightness(1.1);color:#000}button.ghost{background:0 0}button.danger:hover{border-color:var(--red);color:#ff8a7d}input,select,textarea{font:inherit;color:var(--text);border:1px solid var(--line);background:#111318;border-radius:4px;width:100%;padding:6px 8px}textarea{resize:vertical;min-height:70px}h2{font:700 19px/1.25 var(--mono);letter-spacing:.3px;margin:4px 0 6px}h3{font:700 16px/1.3 var(--mono);margin:6px 0}h4{text-transform:uppercase;letter-spacing:1.2px;color:var(--accent);margin:14px 0 6px;font-size:12px}.muted{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;display:flex}.spacer{flex:1}.kicker{text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);font-size:11px}.badge{font:700 10.5px var(--sans);background:var(--panel2);border:1px solid var(--line);letter-spacing:1px;vertical-align:middle;border-radius:3px;margin-left:6px;padding:1px 6px}.badge.red{background:var(--red);color:#fff;border-color:var(--red)}.badge.ok{background:var(--ok);color:#08140d;border-color:var(--ok)}#topbar{border-bottom:1px solid var(--line);background:#0f1014;align-items:center;gap:16px;height:44px;padding:0 14px;display:flex}.brand{font:700 18px var(--mono);letter-spacing:4px;color:var(--accent)}#caseTitle{font-family:var(--mono);white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;overflow:hidden}#main{height:calc(100% - 44px);display:flex}#left{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;width:400px;min-width:320px;display:flex}.tabs{border-bottom:1px solid var(--line);display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;flex:1;padding:10px 4px}.tabs button.on{color:var(--text);border-bottom-color:var(--accent)}.tab{flex:1;padding:12px 14px 40px;overflow-y:auto}.tab label{color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin:12px 0 4px;font-size:12px;display:block}.loc-h{border-bottom:1px solid var(--line);margin-bottom:10px;padding-bottom:6px}.loc-h .sub{font-family:var(--mono);color:var(--muted)}.spot{background:var(--panel2);border:1px solid var(--line);border-radius:6px;margin-bottom:8px;padding:8px 10px}.spot-h{justify-content:space-between;align-items:center;gap:6px;margin-bottom:2px;display:flex}.spot-h b{font-family:var(--mono)}.li{border-top:1px dashed #3a404c;justify-content:space-between;align-items:center;gap:8px;padding:4px 0;display:flex}.spot .li:first-of-type{border-top:0}.li>span:last-child{white-space:nowrap}.hot{color:#ff9b8f;font-weight:600}.sec{margin-top:14px}.prints{flex-wrap:wrap;gap:5px;margin-top:6px;display:flex}.chip{font:600 11.5px var(--mono);color:#e2d4ff;cursor:pointer;background:#3b2f4f;border:1px solid #5d4a7e;border-radius:12px;padding:2px 9px;display:inline-block}.chip:hover{background:#4d3c68}.dir{border-bottom:1px solid var(--line);justify-content:space-between;gap:8px;padding:8px 0;display:flex}.dir .btns{flex-direction:column;gap:4px;display:flex}#dirQuery{margin-bottom:8px}.evlist{border:1px solid var(--line);background:#111318;border-radius:4px;margin-bottom:6px;padding:4px 8px}.box{background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:4px;margin-top:14px;padding:8px 10px;font-size:13px}.box ul{margin:6px 0 0;padding-left:18px}.box.warn{border-left-color:var(--red)}.closed{text-align:center;padding:30px 10px}.log{font-size:12.5px}.log div{border-bottom:1px dotted #333;padding:2px 0}#boardWrap{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}#boardToolbar{background:var(--panel);border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:6px 10px;display:flex}#boardToolbar .hint{color:var(--muted);margin-left:8px;font-size:11.5px}#board{cursor:grab;touch-action:none;background-color:#a87b4f;background-image:radial-gradient(#3c230a59 1px,#0000 1.5px),radial-gradient(#ffe6be2e 1px,#0000 1.5px);background-size:7px 7px,11px 11px;flex:1;position:relative;overflow:hidden;box-shadow:inset 0 0 80px #0000008c}#board.panning{cursor:grabbing}#boardInner{transform-origin:0 0;position:absolute;top:0;left:0}#links{pointer-events:none;z-index:0;position:absolute;top:-5000px;left:-5000px;overflow:visible}#links .str{fill:none;stroke:#b3121f;stroke-width:2.2px;filter:drop-shadow(1px 2px 1px #00000073)}#links .hit{fill:none;stroke:#0000;stroke-width:12px;pointer-events:stroke;cursor:pointer}#links g:hover .str{stroke:#ff3b3b;stroke-width:3px}.card{background:var(--paper);width:170px;color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;z-index:1;border-radius:2px;padding:16px 10px 9px;font-size:11.5px;line-height:1.3;position:absolute;box-shadow:2px 4px 10px #00000073}.card .pin{z-index:3;background:radial-gradient(circle at 35% 35%,#ff6b6b,#8c0f0f);border-radius:50%;width:12px;height:12px;margin-left:-6px;position:absolute;top:3px;left:50%;box-shadow:1px 2px 2px #00000080}.card .ctype{font:700 9.5px var(--sans);text-transform:uppercase;letter-spacing:1.1px;opacity:.65}.card .ctitle{font:700 13px/1.2 var(--mono);word-wrap:break-word;margin:2px 0 3px}.card .cline{opacity:.82;word-wrap:break-word}.card.sel{outline:3px solid var(--accent)}.card.linking{outline:3px dashed #ff3b3b}.card.dragging{z-index:5;box-shadow:6px 10px 20px #00000080}.card.t-person{background:#e8eef5;border-top:5px solid #3d6a99}.card.t-address{background:#e9f1e4;border-top:5px solid #4b7d3a}.card.t-address.flag{border-top-color:var(--red);background:#f6e1dd}.card.t-weapon{background:#f5e0dc;border-top:5px solid #8f1d12}.card.t-body{background:#e4e0e0;border-top:5px solid #222}.card.t-print{background:#ece4f6;border-top:5px solid #6a4b9a}.card.t-statement{background:#fbf3c4;border-top:5px solid #b39124}.card.t-note{background:#fffbe8;transform:rotate(-1deg)}.card.t-unknown{background:#e8eef5;border-top:5px dashed #3d6a99}.card.t-person.flag{border-top-color:#222}#inspector{background:var(--panel);border:1px solid var(--line);z-index:10;border-radius:8px;width:330px;padding:10px 12px 14px;position:absolute;top:52px;bottom:10px;right:10px;overflow-y:auto;box-shadow:0 8px 30px #00000080}#inspector[hidden]{display:none}.insp-h{justify-content:space-between;align-items:center;display:flex}.insp-h .ctype{text-transform:uppercase;letter-spacing:1.3px;color:var(--accent);font-size:11px}.insp-h .x{background:0 0;border:0;padding:0 4px;font-size:18px}#inspector dl{grid-template-columns:62px 1fr;gap:5px 8px;margin:8px 0;font-size:13px;display:grid}#inspector dt{color:var(--muted)}#inspector dd{margin:0}#inspector label{color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin:12px 0 4px;font-size:11px;display:block}#inspector .btns{flex-wrap:wrap;gap:5px;margin-top:10px;display:flex}.title-in{font:700 15px var(--mono);margin:6px 0}#inspector .q{color:var(--muted);font-style:italic}.doc{background:var(--paper);color:var(--ink);font:13.5px/1.55 var(--mono);white-space:normal;border-radius:2px;max-height:55vh;padding:14px 16px;overflow-y:auto;box-shadow:inset 0 0 30px #785a282e}.doc.small{max-height:260px;padding:9px 11px;font-size:12px}.ent{cursor:pointer;border-bottom:1.5px solid;font-weight:700}.ent-p{color:#1f4f80}.ent-a{color:#2f6b23}.ent-n{color:#8a2c0e}#inspector .ent-p,.a .ent-p,.box .ent-p{color:#8fbbea}#inspector .ent-a,.a .ent-a{color:#9fd38d}#inspector .ent-n,.a .ent-n{color:#f0a080}#inspector .doc .ent-p{color:#1f4f80}#inspector .doc .ent-a{color:#2f6b23}#inspector .doc .ent-n{color:#8a2c0e}.ent:hover{background:#d9a44140}#modal{z-index:100;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#modal[hidden]{display:none}.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:8px;width:min(640px,100vw - 32px);max-height:calc(100vh - 40px);padding:18px 22px;position:relative;overflow-y:auto;box-shadow:0 20px 60px #0009}.modal-box .close{background:0 0;border:0;font-size:22px;position:absolute;top:8px;right:10px}.qa .q{color:var(--accent);margin-top:12px;font-style:italic}.qa .a{border-left:2px solid var(--line);font-family:var(--mono);margin:4px 0 4px 12px;padding-left:10px;font-size:13.5px}.pillars{grid-template-columns:1fr 1fr;gap:8px;margin:10px 0;display:grid}.pillar{border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-size:12.5px}.pillar b{margin-bottom:3px;display:block}.pillar.yes{border-color:var(--ok);background:#4caf7a1a}.pillar.no{opacity:.8}h2.ok{color:var(--ok)}h2.bad{color:#ff7b6b}.notes{padding-left:18px;font-size:13px}#toast{border:1px solid var(--accent);color:var(--text);opacity:0;pointer-events:none;z-index:200;background:#0d0e11;border-radius:20px;padding:8px 16px;font-size:13px;transition:all .2s;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(20px)}#toast.show{opacity:1;transform:translate(-50%)}@media (width<=1100px){#boardToolbar .hint{display:none}}@media (width<=820px){#main{flex-direction:column}#left{border-right:0;border-bottom:1px solid var(--line);width:100%;min-width:0;height:48%}#boardToolbar .hint{display:none}#inspector{width:auto;left:10px}.pillars{grid-template-columns:1fr}}.badge.diff-easy{color:#dff5e8;background:#2f5d43;border-color:#4caf7a}.badge.diff-normal{border-color:var(--accent);color:#fbecc7;background:#6b5320}.badge.diff-hard{border-color:var(--red);color:#ffd9d3;background:#6e1f17}.chip.blood{color:#ffd2cb;background:#5a1a14;border-color:#b33a2c}.card.t-print.flag{border-top-color:var(--red);background:#f3dcdc}.card.t-statement.flag{border-top-color:var(--red)}.tag{letter-spacing:.8px;text-transform:uppercase;color:var(--accent);margin-left:4px;font-size:9.5px;font-weight:600}.qa .q.follow{color:#ff9b8f}.a-actions{flex-wrap:wrap;align-items:center;gap:6px;margin:2px 0 2px 22px;display:flex}.confront{align-items:center;gap:4px;display:inline-flex}.confront select{width:auto;max-width:260px;padding:3px 6px;font-size:12px}.reply{border-left:3px solid var(--red);font-family:var(--mono);background:#2b1f1f;margin:6px 0 4px 22px;padding:6px 10px;font-size:13px}.checklist{border:1px solid var(--line);background:#111318;border-radius:4px;max-height:40vh;padding:6px 10px;overflow-y:auto}.check{cursor:pointer;align-items:center;gap:8px;padding:3px 0;font-size:13px;display:flex}.check input{width:auto}.diffs{gap:10px;margin-top:12px;display:grid}.diff{text-align:left;border-left-width:4px;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 14px;font-size:13px;display:flex}.diff b{font:700 16px var(--mono)}.diff span{color:var(--muted)}.diff-easy{border-left-color:var(--ok)}.diff-normal{border-left-color:var(--accent)}.diff-hard{border-left-color:var(--red)}.pillar .tree{margin-top:4px;font-size:12.5px;line-height:1.4}.pillar .tree ul{border-left:1px dashed var(--line);margin:2px 0 2px 4px;padding-left:12px;list-style:none}.pillar .tree li{margin:2px 0}.pillar .tree .leaf{color:var(--muted)}details.proof{background:var(--panel2);border:1px solid var(--line);border-radius:6px;margin-top:12px;padding:8px 10px}details.proof summary{cursor:pointer;color:var(--accent);font-weight:600}details.proof .lines{font:12px/1.45 var(--mono);margin-top:6px}
