:root{--navy:#1f3a5f;--navy-2:#2a4a77;--blue:#3a8fd0;--blue-soft:#e6f0fa;--bg:#f4f6f9;--card:#fff;--ink:#14202e;--muted:#5b6878;--line:#d9e0ea;--green:#1e8e3e;--green-bg:#e3f4e8;--yellow:#b57a00;--yellow-bg:#fff4d6;--red:#c62828;--red-bg:#fde8e8;--grey:#6b7280;--grey-bg:#eceff3;--radius:10px}@media (prefers-color-scheme:dark){:root{--bg:#0f1722;--card:#17212f;--ink:#e8eef6;--muted:#9aa8ba;--line:#2a3849;--blue-soft:#1c2e44;--green-bg:#12301d;--yellow-bg:#3a2f10;--red-bg:#3b1717;--grey-bg:#222c39;--yellow:#f0b43c;--green:#46c36a;--red:#ff6b6b}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);margin:0;font:14.5px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1{color:var(--navy);margin:0 0 4px;font-size:22px}h2{margin:0 0 10px;font-size:16px}h3{margin:16px 0 6px;font-size:14px}@media (prefers-color-scheme:dark){h1{color:#9cc4ee}}.sub{color:var(--muted);margin:0 0 18px}.shell{grid-template-columns:250px 1fr;min-height:100%;display:grid}.side{background:var(--navy);color:#fff;flex-direction:column;gap:2px;height:100vh;padding:14px 10px;display:flex;position:sticky;top:0;overflow-y:auto}.side .brand{background:#fff;border-radius:8px;margin-bottom:14px;padding:8px 10px}.side .brand img{width:100%;display:block}.side a{color:#d6e3f3;border-radius:8px;align-items:baseline;gap:10px;padding:9px 12px;text-decoration:none;display:flex}.side a .n{opacity:.6;font-variant-numeric:tabular-nums;width:14px}.side a:hover{background:var(--navy-2)}.side a.on{background:var(--blue);color:#fff;font-weight:600}.side .group{letter-spacing:.08em;text-transform:uppercase;opacity:.6;padding:14px 12px 4px;font-size:11px}.side .foot{opacity:.85;margin-top:auto;padding:10px 12px;font-size:12.5px}.side button.link{color:#fff;cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}main{width:100%;min-width:0;max-width:1280px;padding:26px 30px 60px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;padding:18px 20px}.grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;display:grid}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.stat .v{color:var(--navy);font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.stat .l{color:var(--muted);font-size:12.5px}@media (prefers-color-scheme:dark){.stat .v{color:#9cc4ee}}input,select,textarea{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:8px 10px}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--blue);outline-offset:1px}button{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;border-radius:8px;padding:8px 14px}button.primary{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:600}button.primary:hover{background:var(--navy-2)}button.small{padding:4px 9px;font-size:12.5px}button:disabled{opacity:.5;cursor:not-allowed}.row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.codebox{letter-spacing:.06em;min-width:260px;font:600 20px/1 ui-monospace,SF Mono,Menlo,monospace}table{border-collapse:collapse;width:100%;font-size:13.5px}th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:2px solid var(--line);background:var(--card);padding:8px;font-size:11.5px;position:sticky;top:0}td{border-bottom:1px solid var(--line);vertical-align:top;padding:7px 8px}tr:hover td{background:color-mix(in srgb, var(--blue-soft) 55%, transparent)}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12.5px}.trunc{text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}.tablewrap{overflow-x:auto}.pill{white-space:nowrap;border-radius:999px;padding:1px 9px;font-size:12px;font-weight:600;display:inline-block}.pill.green{background:var(--green-bg);color:var(--green)}.pill.yellow{background:var(--yellow-bg);color:var(--yellow)}.pill.red{background:var(--red-bg);color:var(--red)}.pill.grey{background:var(--grey-bg);color:var(--grey)}.pill.blue{background:var(--blue-soft);color:var(--navy-2)}@media (prefers-color-scheme:dark){.pill.blue{color:#9cc4ee}}.decision{border-radius:var(--radius);border:2px solid;align-items:center;gap:14px;margin-bottom:14px;padding:18px 20px;display:flex}.decision .ic{font-size:30px;line-height:1}.decision .t{font-size:19px;font-weight:700}.decision .m{margin-top:2px}.decision.green{background:var(--green-bg);border-color:var(--green)}.decision.yellow{background:var(--yellow-bg);border-color:var(--yellow)}.decision.red{background:var(--red-bg);border-color:var(--red)}.decision.neutral{background:var(--grey-bg);border-color:var(--grey)}.stages{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}@media (width<=800px){.stages{grid-template-columns:1fr}}.stage{overflow-wrap:anywhere;border:1px solid var(--line);border-radius:8px;min-width:0;padding:10px 12px}.stage .h{margin-bottom:2px;font-weight:700}.kv{grid-template-columns:190px 1fr;gap:4px 12px;display:grid}.kv dt{color:var(--muted)}.kv dd{overflow-wrap:anywhere;min-width:0;margin:0}.banner{border-left:4px solid var(--yellow);background:var(--yellow-bg);border-radius:6px;margin-bottom:10px;padding:10px 14px}.banner.err{border-color:var(--red);background:var(--red-bg)}.audit{color:var(--muted);margin:0;padding-left:18px;font-size:13px}.pager{color:var(--muted);align-items:center;gap:10px;margin-top:12px;display:flex}.center{place-items:center;min-height:100%;padding:20px;display:grid}.login{width:min(420px,100%)}.login img{background:#fff;border-radius:8px;width:100%;margin-bottom:18px;padding:10px 12px}.login input{width:100%;margin-bottom:10px}.err{color:var(--red)}.ok{color:var(--green)}progress{width:100%;height:10px}@media (width<=860px){.shell{grid-template-columns:1fr}.side{flex-flow:wrap;height:auto;position:static}.side .brand{width:100%}main{padding:18px 16px 50px}.kv{grid-template-columns:1fr}}@media print{.side,.noprint{display:none!important}.shell{display:block}body{background:#fff}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}a.button{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:8px 14px;text-decoration:none;display:inline-block}a.button:hover{border-color:var(--navy)}
