:root{--bg:#f4f6f8;--panel:#fff;--ink:#15202b;--muted:#5b6b7c;--line:#d7dee7;--blue:#1f4b99;--blue-soft:#e8f0ff;--danger:#9b1c1c;--warn:#8a5a00;--ok:#0f6a3f;color:var(--ink);background:var(--bg);font-family:Segoe UI,Helvetica Neue,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(1200px 500px at 10% -10%, #d9e7ff 0%, transparent 55%), radial-gradient(900px 400px at 100% 0%, #e8f7ef 0%, transparent 50%), var(--bg);min-height:100vh;margin:0}.centered{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--panel);border:1px solid var(--line);text-align:center;border-radius:16px;width:min(420px,100%);padding:32px}.field-label{color:var(--muted);margin:12px 0 6px;font-size:.85rem;font-weight:600;display:block}.text-input{box-sizing:border-box;border:1px solid var(--line);width:100%;font:inherit;background:#fff;border-radius:10px;padding:10px 12px}.actions{gap:10px;display:flex}.shell{min-height:100vh}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffd9;justify-content:space-between;gap:16px;padding:18px 28px;display:flex}.brand{letter-spacing:.02em;font-weight:700}.topbar-right{align-items:center;gap:12px;display:flex}.page{max-width:1100px;margin:0 auto;padding:28px 20px 64px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:24px}.muted{color:var(--muted);font-size:.92rem}.row-between{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.btn{cursor:pointer;border:1px solid #0000;border-radius:10px;padding:10px 14px;font-weight:600}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--blue);color:#fff}.btn.ghost{border-color:var(--line);color:var(--ink);background:0 0}.table{border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:12px;width:100%;overflow:hidden}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);padding:12px 14px;font-size:.92rem}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:var(--blue-soft)}.banner.error{color:var(--danger);background:#fde8e8;border:1px solid #f3c1c1;border-radius:10px;margin-bottom:16px;padding:12px 14px}.modal-backdrop{z-index:20;-webkit-overflow-scrolling:touch;background:#0f172073;place-items:start center;padding:20px;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{-webkit-overflow-scrolling:touch;background:var(--panel);border:1px solid var(--line);border-radius:16px;width:min(560px,100%);max-height:min(90vh,900px);margin:12px auto;padding:22px;overflow-y:auto}.modal.modal-wide{width:min(640px,100%)}.field{gap:6px;margin:14px 0;display:grid}.field select,.field input,.field textarea{border:1px solid var(--line);font:inherit;border-radius:8px;width:100%;padding:10px}.upload{border:1px dashed var(--line);cursor:pointer;border-radius:12px;place-items:center;gap:6px;margin:12px 0 18px;padding:28px 16px;display:grid}.upload input{display:none}.actions{justify-content:flex-end;gap:10px;display:flex}.progress-row{align-items:center;gap:10px;margin:16px 0 4px;display:flex}.progress-pct{font-variant-numeric:tabular-nums;min-width:3.2em}.progress{background:#e7edf5;border-radius:999px;flex:1;height:10px;margin:0;overflow:hidden}.progress-fill{background:var(--blue);height:100%;transition:width .25s}.progress-indeterminate .progress-fill{animation:1.2s ease-in-out infinite progress-pulse}@keyframes progress-pulse{0%{opacity:.65;transform:translate(-30%)}50%{opacity:1}to{opacity:.65;transform:translate(160%)}}.loading-block{border:1px solid var(--line);background:var(--blue-soft);text-align:left;border-radius:12px;margin:12px 0;padding:18px 20px}.loading-spinner{border:3px solid #c5d6f5;border-top-color:var(--blue);border-radius:50%;width:22px;height:22px;margin:0 0 12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-message{margin:0;font-weight:600}.loading-detail{margin:6px 0 0}.verdict{border:1px solid var(--line);border-radius:14px;margin:18px 0;padding:18px}.verdict.blocked{background:#fff1f1;border-color:#f0c2c2}.verdict.review{background:#fff8e8;border-color:#edd59a}.verdict.pass{background:#eefaf3;border-color:#b9e4cb}.verdict .tag{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.75rem}.block{margin-top:22px}.finding{border:1px solid var(--line);border-radius:12px;margin:10px 0;padding:12px 14px}.finding header{justify-content:space-between;gap:10px;margin-bottom:6px;display:flex}.finding.stop{border-left:4px solid var(--danger)}.finding.risk{border-left:4px solid var(--warn)}.finding.extra{border-left:4px solid var(--muted)}.finding.possible{border-left-style:dashed}.finding-meta{align-items:center;gap:8px;display:flex}.finding-maybe{letter-spacing:.02em;color:var(--warn);border:1px solid var(--warn);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:.72rem;font-weight:700}.finding-count{color:var(--muted);white-space:nowrap;font-size:.8rem}.finding-cluster+.finding-cluster{margin-top:12px}.finding-hits{margin:8px 0 0;padding:0;list-style:none}.finding-hits li{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.finding-hits li:first-child{border-top:none;margin-top:0;padding-top:0}.finding-hit-head{align-items:center;gap:8px;display:flex}.finding-clause{font-size:.9rem;font-weight:600}.finding-hits blockquote{margin:6px 0 0}.empty{text-align:center;color:var(--muted)}
