:root{--bg: #0d1117;--panel: #161b22;--panel2: #1c2330;--border: #2d3646;--text: #e6edf3;--muted: #8b98a9;--accent: #4ea8ff;--ok: #3fb950;--warn: #d29922;--bad: #f85149;--severe: #ff2d55;font-family:Inter,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px}.app{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--panel);border-right:1px solid var(--border);padding:20px 12px;position:sticky;top:0;height:100vh}.logo{font-weight:700;font-size:16px;margin-bottom:24px;padding:0 8px}.logo span{color:var(--accent)}.nav-item{display:block;width:100%;text-align:left;padding:9px 12px;margin:2px 0;background:none;border:none;color:var(--muted);border-radius:8px;cursor:pointer;font-size:14px}.nav-item:hover{background:var(--panel2);color:var(--text)}.nav-item.active{background:var(--panel2);color:var(--accent);font-weight:600}.main{flex:1;padding:24px 32px;max-width:1400px}h1{font-size:20px;margin:0 0 4px}h2{font-size:15px;margin:0 0 12px;color:var(--text)}.sub{color:var(--muted);margin-bottom:24px;font-size:13px}.grid{display:grid;gap:16px}.cols-4{grid-template-columns:repeat(4,1fr)}.cols-3{grid-template-columns:repeat(3,1fr)}.cols-2{grid-template-columns:repeat(2,1fr)}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.metric-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.metric-value{font-size:26px;font-weight:700;margin-top:6px}.metric-note{color:var(--muted);font-size:12px;margin-top:4px}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge.NONE,.badge.LOW{background:#12351c;color:var(--ok)}.badge.MODERATE{background:#3a2e10;color:var(--warn)}.badge.HIGH{background:#3d1513;color:var(--bad)}.badge.SEVERE{background:#47101f;color:var(--severe)}.badge.measured{background:#10304a;color:var(--accent)}.badge.estimated{background:#3a2e10;color:var(--warn)}.dropzone{border:2px dashed var(--border);border-radius:12px;padding:48px;text-align:center;color:var(--muted);cursor:pointer;transition:.15s}.dropzone.drag{border-color:var(--accent);background:var(--panel2)}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:8px;border-bottom:1px solid var(--border)}td{padding:8px;border-bottom:1px solid var(--border)}tr.clickable{cursor:pointer}tr.clickable:hover{background:var(--panel2)}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.thumb-card{background:var(--panel2);border:1px solid var(--border);border-radius:10px;overflow:hidden;cursor:pointer}.thumb-card img{width:100%;height:120px;object-fit:cover;display:block}.thumb-card .info{padding:8px 10px;font-size:12px}.evidence{border-left:3px solid var(--accent);padding:8px 12px;margin:8px 0;background:var(--panel2);border-radius:0 8px 8px 0;font-size:13px}.evidence .src{color:var(--muted);font-size:11px}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;max-width:900px;width:92%;max-height:88vh;overflow-y:auto;padding:24px}select,button.btn{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:13px}button.btn.primary{background:var(--accent);color:#04121f;font-weight:600;border:none;cursor:pointer}.pipeline{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 20px}.step{background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:12px;color:var(--muted)}.step b{color:var(--text);display:block;font-size:12px}.muted{color:var(--muted)}.small{font-size:12px}.mt{margin-top:16px}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:spin .8s linear infinite;margin:24px auto}@keyframes spin{to{transform:rotate(360deg)}}
