:root{color-scheme:light;--bg: #f7f8fb;--surface: #ffffff;--border: #e2e6ee;--text: #131722;--muted: #6b7385;--accent: #2962ff;--long: #22a06b;--short: #d33646;--neutral: #8b8e97;--warn-bg: #fff7e0}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;font-size:14px;min-height:100vh}.app{max-width:1700px;margin:0 auto;padding:16px 24px 80px;min-height:100vh;display:flex;flex-direction:column;gap:16px}.topbar{display:flex;align-items:center;gap:24px;padding:14px 18px;background:var(--surface);border:1px solid var(--border);border-radius:10px;position:sticky;top:0;z-index:20}.brand{font-weight:700;font-size:16px;letter-spacing:-.01em}.brand span{color:var(--accent)}.tabs{display:flex;gap:10px;flex:1}.tab{text-decoration:none;color:var(--muted);padding:6px 12px;border-radius:8px;border:1px solid transparent;font-weight:500;cursor:pointer;background:none;font-size:14px;font-family:inherit}.tab:hover{background:#eef1f8;color:var(--text)}.tab.active{background:#eef3ff;color:var(--accent);border-color:#cfdcff}.health{display:flex;gap:10px;align-items:center}.pill{padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.pill-ok{background:#e8f6ee;color:#1f7a4a}.pill-bad{background:#fde6e8;color:#9c2230}.pill-warn{background:#fff3e0;color:#b45309}.muted{color:var(--muted)}.small{font-size:12px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px}.panel-tight{padding:0;overflow:hidden}.panel h3{margin:0 0 10px;font-size:14px;font-weight:600}.event-item.mine{border-left:3px solid var(--accent);padding-left:9px}.pill-mine{background:#eaf0ff;color:var(--accent);margin-left:6px}.note-line{font-style:italic;margin-top:2px}.link-sym{background:none;border:none;padding:0;font:inherit;font-weight:700;color:var(--text);cursor:pointer;text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:2px}.link-sym:hover{color:var(--accent);text-decoration-color:var(--accent)}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#13172273;display:flex;align-items:flex-start;justify-content:center;padding:32px 16px;overflow-y:auto;animation:modal-fade .12s ease-out}.modal-dialog{background:var(--bg);border:1px solid var(--border);border-radius:12px;width:min(1080px,100%);margin:auto;box-shadow:0 18px 48px #13172238;outline:none;animation:modal-rise .14s ease-out}.modal-head{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface);border-radius:12px 12px 0 0;position:sticky;top:0;z-index:2}.modal-title{display:flex;align-items:baseline;gap:8px;flex:1;min-width:0}.modal-title strong{font-size:15px;letter-spacing:-.01em}.modal-title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-close{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:8px;width:30px;height:30px;flex:none;font-size:20px;line-height:1;cursor:pointer}.modal-close:hover{color:var(--text);border-color:var(--muted)}.modal-body{padding:16px}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.modal-scrim,.modal-dialog{animation:none}}table.dash{width:100%;border-collapse:separate;border-spacing:0}table.dash th,table.dash td{padding:8px 10px;text-align:right;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}table.dash th{font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0;background:var(--surface);z-index:5;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}table.dash th:hover{color:var(--text)}table.dash th:first-child,table.dash td:first-child,table.dash th.l,table.dash td.l{text-align:left}table.dash tbody tr{cursor:pointer}table.dash tbody tr:hover{background:#f1f4fb}table.dash tbody tr.selected{background:#eef3ff}table.dash td.bar{width:90px;padding-right:4px}.barwrap{display:inline-flex;height:8px;width:80px;background:#f0f1f5;border-radius:4px;overflow:hidden;vertical-align:middle}.barwrap .bar-long{background:var(--long)}.barwrap .bar-short{background:var(--short)}.barwrap .bar-neut{background:#d8dbe2}.delta-up{color:var(--long)}.delta-down{color:var(--short)}.kpi-row{display:flex;gap:18px;flex-wrap:wrap}.kpi{padding:10px 14px;background:#f3f5fb;border-radius:8px;min-width:120px}.kpi .label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.kpi .value{font-size:18px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums}.events-list,.audit-list{display:flex;flex-direction:column;gap:8px;max-height:360px;overflow-y:auto}.event-item,.audit-item{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:#fafbfe}.event-item .when,.audit-item .when{font-size:11px;color:var(--muted)}.event-item .head{font-weight:600;margin-bottom:4px}.event-item .pill-cat{background:#eef3ff;color:var(--accent);padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600}.event-item .pill-sev{padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600}.sev-0,.sev-1,.sev-2{background:#ecedf3;color:var(--muted)}.sev-3{background:#fff3e0;color:#b45309}.sev-4{background:#fde6e8;color:#9c2230}.sev-5{background:#fbd7dc;color:#7f1727}.banner-warn{background:var(--warn-bg);border:1px solid #f1d27a;padding:10px 14px;border-radius:10px}.banner-info{background:#eef3ff;border:1px solid #cfdcff;padding:10px 14px;border-radius:10px}.btn{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:10px 16px;font-weight:600;cursor:pointer;font-family:inherit}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{background:none;color:var(--muted);border:1px solid var(--border);padding:6px 12px;border-radius:8px;font-weight:600;cursor:pointer;font-size:12px;font-family:inherit}.btn-ghost:hover{background:#eef1f8;color:var(--text)}.btn-ghost.on{background:#eef3ff;color:var(--accent);border-color:#cfdcff}.input,.select,.textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px;background:#fff;font-family:inherit}.textarea{min-height:120px;resize:vertical}label.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);font-weight:600}.mf-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}@media (max-width: 700px){.mf-strip{grid-template-columns:repeat(3,1fr)}}.mf-cell{background:#f3f5fb;border-radius:8px;padding:8px 10px}.mf-cell .label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.mf-cell .value{font-size:16px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums}.keypoints{margin:0;padding-left:18px;line-height:1.55}.keypoints li{margin-bottom:4px}.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.filters .grow{flex:1;min-width:180px}.filters .search{max-width:260px}.sig{padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.03em;white-space:nowrap}.sig-ACCUMULATE{background:#e8f6ee;color:#1f7a4a}.sig-HOLD{background:#eef3ff;color:var(--accent)}.sig-WATCH{background:#ecedf3;color:var(--muted)}.sig-TRIM{background:#fff3e0;color:#b45309}.sig-EXIT{background:#fde6e8;color:#9c2230}.sig-DISQUALIFIED{background:#f3f4f7;color:#9aa0ad;text-decoration:line-through}.scorecell{display:flex;align-items:center;gap:8px;justify-content:flex-end}.scorenum{font-weight:700;font-variant-numeric:tabular-nums;min-width:32px;text-align:right}.pillars{display:inline-flex;gap:2px;vertical-align:middle}.pillars i{display:block;width:7px;border-radius:2px;background:#d8dbe2;height:16px;position:relative;overflow:hidden}.pillars i b{position:absolute;bottom:0;left:0;right:0;display:block}.pq b{background:#2962ff}.pt b{background:#22a06b}.pv b{background:#b45309}.pn b{background:#8b5cf6}.gate-fail{color:var(--short);font-size:11px}.flag{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--short);margin-right:5px;vertical-align:middle}.detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.detail-head h2{margin:0;font-size:18px}.detail-head .sub{color:var(--muted);font-size:12px;margin-top:2px}.tag{display:inline-block;background:#f3f5fb;color:var(--muted);padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600;margin-right:4px}.reason-list{margin:8px 0 0;padding-left:16px;font-size:12px;line-height:1.6}.reason-list li{margin-bottom:2px}.driver-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--border)}.driver-row:last-child{border-bottom:none}.dir{font-weight:700;font-variant-numeric:tabular-nums;min-width:24px;text-align:center;border-radius:4px;padding:1px 4px}.dir-2{background:#d7f0e2;color:#14603a}.dir-1{background:#e8f6ee;color:#1f7a4a}.dir0{background:#ecedf3;color:var(--muted)}.dirm1{background:#fde6e8;color:#9c2230}.dirm2{background:#fbd7dc;color:#7f1727}.table-scroll{max-height:calc(100vh - 58px);overflow:auto}.newsitem{padding:8px 0;border-bottom:1px solid var(--border)}.newsitem:last-child{border-bottom:none}.newsitem a{color:var(--text);text-decoration:none;font-weight:500}.newsitem a:hover{color:var(--accent)}.empty,.spinner{padding:40px;text-align:center;color:var(--muted)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.login-card{display:flex;width:100%;max-width:760px;min-height:400px;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:0 20px 60px #1317221a}.login-left{position:relative;flex:1 1 52%;background:var(--text);color:#fff;display:flex;align-items:flex-end;padding:32px;overflow:hidden}.login-wave{position:absolute;inset:auto 0 0 0;width:100%;height:62%;pointer-events:none}.login-wave-line{stroke-dasharray:1200;stroke-dashoffset:1200;animation:login-draw 1.6s ease-out .2s forwards}@keyframes login-draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion: reduce){.login-wave-line{animation:none;stroke-dashoffset:0}}.login-left-body{position:relative}.login-brand{font-weight:700;font-size:30px;letter-spacing:-.02em}.login-brand span{color:var(--accent)}.login-tagline{margin:10px 0 26px;font-size:14px;line-height:1.55;color:#ffffffb8;max-width:300px}.login-stats{display:flex;gap:28px}.login-stat-n{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.login-stat-l{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#ffffff8c;margin-top:2px;white-space:nowrap}.login-right{flex:1 1 48%;padding:40px 36px;display:flex;flex-direction:column;justify-content:center}.login-right h1{margin:0 0 8px;font-size:20px;letter-spacing:-.01em}.login-sub{margin:0 0 24px;color:var(--muted);font-size:13px;line-height:1.55}.login-btn{min-height:44px}.login-err{margin-top:16px;padding:10px 12px;border-radius:8px;background:var(--warn-bg);border:1px solid #e8d9a0;font-size:13px}.login-foot{margin:28px 0 0;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}@media (max-width: 640px){.login-card{flex-direction:column;min-height:0}.login-left{min-height:220px}}.userchip{display:inline-flex;align-items:center;gap:8px;margin-left:8px;padding:4px 6px 4px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface)}.userchip img{width:22px;height:22px;border-radius:50%;display:block}.note-stack{margin-top:16px;border-top:1px solid var(--border);display:flex;flex-direction:column}.note-entry{padding:10px 0;border-bottom:1px solid var(--border)}.note-entry:last-child{border-bottom:none}.note-entry-head{display:flex;align-items:center;gap:8px;margin-bottom:3px}.note-entry-text{white-space:pre-wrap}.sym-fno{color:#b45309}.tag-fno{background:#fef3c7;color:#92400e;border-color:#fcd34d}.note-cell{cursor:pointer}.note-cell:hover{color:var(--accent)}.app{max-width:none;padding:6px 10px;gap:6px;min-height:0}.kpi-row{gap:10px;margin-bottom:10px}.kpi{padding:6px 10px;min-width:96px}.kpi .value{font-size:15px}.kpi .label{font-size:10px}.panel-tight table.dash th,.panel-tight table.dash td{padding:2px 6px;font-size:11px;line-height:1.25;white-space:nowrap}.panel-tight table.dash th{font-size:10px;letter-spacing:.03em}.panel-tight table.dash td.l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}.panel-tight .barwrap{width:48px;height:6px}.panel-tight .pillars i{height:12px;width:6px}.panel-tight table.dash td.bar{width:60px}.panel-tight .sig{font-size:10px;padding:1px 6px}.panel-tight .scorenum{min-width:24px}.score-cell{cursor:pointer}.score-cell:hover .scorenum{color:var(--accent)}.topbar{padding:4px 10px;gap:10px;border-radius:8px}.actchips{display:flex;gap:4px}.actchip{border:1px solid transparent;cursor:pointer;font-family:inherit;padding:2px 8px;font-size:11px;text-transform:capitalize;opacity:.8}.actchip b{font-variant-numeric:tabular-nums}.actchip:hover{opacity:1}.actchip.on{opacity:1;border-color:currentColor}.topbar .filters{flex:1;padding:0;border:none;background:none;gap:6px;flex-wrap:nowrap;min-width:0}.topbar .filters .input,.topbar .filters .select{padding:4px 8px;font-size:12px;height:28px}.topbar .filters .search{max-width:170px}.topbar .filters .select{width:auto;max-width:150px}.topbar .filters .btn-ghost{padding:4px 10px;height:28px;white-space:nowrap}.topbar .filters .shown{margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums}.tabtitle{flex:1;font-weight:600;color:var(--muted)}.menu{position:relative;margin-left:auto}.menubtn{display:inline-flex;align-items:center;gap:6px;height:28px;border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:0 10px;cursor:pointer;font-size:15px;color:var(--text);font-family:inherit}.menubtn:hover,.menubtn.on{background:#eef1f8}.menubtn .dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok{background:var(--long)}.dot-warn{background:#b45309}.dot-bad{background:var(--short)}.menupop{position:absolute;right:0;top:34px;min-width:220px;z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px #13172224;padding:6px;display:flex;flex-direction:column;gap:2px}.menupop .tab{text-align:left;width:100%}.menusep{border-top:1px solid var(--border);margin:4px 0}.menustatus{display:flex;gap:6px;align-items:center;padding:4px 8px;flex-wrap:wrap}.menuuser{display:flex;gap:8px;align-items:center;padding:4px 8px}.menuuser img{width:20px;height:20px;border-radius:50%}.menuuser .btn-ghost{margin-left:auto}@media (max-width: 1100px){.topbar{flex-wrap:wrap}.topbar .filters{flex-wrap:wrap;flex-basis:100%;order:3}}button.brand{background:none;border:none;padding:0;cursor:pointer;font-family:inherit;color:var(--text)}button.brand:hover{color:var(--accent)}table.dash th.sorted{color:var(--text)}.sort-mark{margin-left:3px;white-space:nowrap}.sort-rank{display:inline-block;min-width:13px;padding:0 3px;margin-right:2px;border-radius:7px;font-size:9px;line-height:13px;text-align:center;background:var(--accent, #4c8dff);color:#fff;font-weight:600}.sort-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:4px 8px;font-size:11px;color:var(--muted, #888)}.sort-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;border-radius:10px;border:1px solid var(--border, #444);color:var(--text)}.sort-chip button,.sort-clear{background:none;border:none;cursor:pointer;color:inherit;font-size:11px;padding:0 2px;line-height:1}.sort-chip button:hover,.sort-clear:hover{color:var(--accent, #4c8dff)}.sort-clear{text-decoration:underline}.sort-bar{justify-content:flex-start}.sort-bar .hint{margin-left:auto}.colpick{position:relative}.colpop{position:absolute;top:100%;left:0;z-index:30;margin-top:4px;background:var(--surface, #fff);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000001f;padding:8px;min-width:200px}.colviews{display:flex;flex-wrap:wrap;gap:4px}.colrow{display:flex;align-items:center;gap:6px;padding:3px 4px;font-size:12px;color:var(--text);cursor:pointer;white-space:nowrap}.colrow:hover{background:#f3f5fb;border-radius:4px}.colrow input{margin:0}
