:root{--blue: #147a9c;--navy: #0b3b4d;--ink: #1f2933;--muted: #6b7480;--line: #dfe3e8;--bg: #f4f6f8;--warn: #b26a00;--crit: #c62828}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,sans-serif;color:var(--ink);background:var(--bg)}a{color:var(--blue)}button{font:inherit;border:1px solid var(--line);background:#fff;border-radius:4px;padding:6px 12px;cursor:pointer}button.primary{background:var(--blue);color:#fff;border-color:var(--blue)}button.danger{background:var(--crit);color:#fff;border-color:var(--crit)}button:disabled{opacity:.5;cursor:default}input,textarea{font:inherit;border:1px solid var(--line);border-radius:4px;padding:8px;width:100%}.topbar{background:var(--navy);color:#fff;padding:10px 20px;display:flex;justify-content:space-between;align-items:center}.topbar h1{font-size:18px;margin:0;font-weight:600}.topbar .nav{display:flex;align-items:center;gap:18px}.topbar .nav strong{font-size:16px}.topbar .nav a{color:#b9d4dd;text-decoration:none;font-size:14px;padding:4px 2px;border-bottom:2px solid transparent}.topbar .nav a:hover{color:#fff}.topbar .nav a.active{color:#fff;border-bottom-color:var(--blue)}.role-badge{background:#ffffff26;border-radius:999px;padding:2px 9px;font-size:12px;margin-right:10px}.topbar button{background:#ffffff1a;color:#fff;border-color:#ffffff40}.login{max-width:340px;margin:10vh auto;background:#fff;padding:28px;border-radius:8px;border:1px solid var(--line)}.login label{display:block;margin:12px 0 4px;font-weight:600;font-size:14px}.wrap{padding:18px 22px}table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);font-size:14px}th{background:#eef2f4}tr.clickable:hover{background:#f0f7f9;cursor:pointer}.pill{padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.pill.ACTIVE{background:#e3f4e8;color:#1f7a3d}.pill.PAUSED{background:#fff3d6;color:var(--warn)}.pill.SUBMITTED,.pill.EXPIRED{background:#e8eaed;color:#555}.pill.TERMINATED{background:#fde5e5;color:var(--crit)}.pill.ONLINE{background:#e3f4e8;color:#1f7a3d}.pill.OFFLINE{background:#fde5e5;color:var(--crit)}.pill.DRAFT{background:#e8eaed;color:#555}.pill.SCHEDULED{background:#e5eefb;color:#2b5fb0}.pill.CLOSED{background:#e8eaed;color:#555}.pill.USED{background:#e5eefb;color:#2b5fb0}.pill.REVOKED{background:#fde5e5;color:var(--crit)}.pill.SENT{background:#e3f4e8;color:#1f7a3d}.pill.FAILED{background:#fde5e5;color:var(--crit)}.pill.SKIPPED{background:#fff3d6;color:var(--warn)}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.page-head h2{margin:0;font-size:20px}.sub{color:var(--muted);font-size:12px}.err{background:#fdefef;border:1px solid #f3d2d2;color:var(--crit);border-radius:6px;padding:8px 12px;font-size:13px;margin:8px 0}.warn-text{color:var(--warn);font-size:13px;margin:6px 0}.back{display:inline-block;margin-bottom:8px;font-size:14px}.search{max-width:380px;margin-bottom:12px}.row-actions{display:flex;gap:6px;justify-content:flex-end}.row-actions button{padding:4px 9px;font-size:13px}button.link{border:0;background:none;color:var(--blue);padding:2px 4px}.panel{margin-bottom:20px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.panel-head h3{margin:0}.qcard{border:1px solid var(--line);border-radius:6px;padding:12px 14px;margin-bottom:10px}.qcard-head{display:flex;justify-content:space-between;gap:12px}.qcard .opts{list-style:none;margin:8px 0 6px;padding:0;font-size:14px}.qcard .opts li{padding:2px 0;color:var(--muted)}.qcard .opts li.correct{color:#1f7a3d;font-weight:600}.issue-panel{background:#f7fbfc;border:1px solid #d9e9ee;border-radius:8px;padding:14px;margin-bottom:14px}.issue-row{display:flex;gap:10px;align-items:flex-start}.typeahead{position:relative;flex:1}.ta-list{position:absolute;z-index:5;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:0 0 6px 6px;margin:0;padding:0;list-style:none;box-shadow:0 4px 12px #00000014}.ta-list li{padding:8px 10px;cursor:pointer;font-size:14px}.ta-list li:hover{background:#eef7fa}.issued-box{margin-top:12px;padding:12px 14px;background:#fff;border:1px solid #cfe8d8;border-radius:6px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.issued-code{font-size:24px;font-weight:700;letter-spacing:4px;font-family:Cascadia Code,Consolas,monospace;color:var(--navy)}.issued-box .sub{flex-basis:100%}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b3b4d59;display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;z-index:50}.modal{background:#fff;border-radius:10px;width:100%;max-width:520px;padding:20px 22px;max-height:88vh;overflow-y:auto}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h3{margin:0 0 6px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.field{display:block;margin:10px 0}.field>span,.field-label{display:block;font-weight:600;font-size:13px;margin-bottom:4px}.field-label{margin-top:12px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:14px}.check input{width:auto}.opt-row{display:flex;align-items:center;gap:8px;margin:6px 0}.opt-row input[type=checkbox],.opt-row input[type=radio]{width:auto}select{font:inherit;border:1px solid var(--line);border-radius:4px;padding:8px;width:100%}.risk{font-weight:700}.risk.hi{color:var(--crit)}.risk.mid{color:var(--warn)}.monitor{display:grid;grid-template-columns:420px 1fr 340px;gap:16px}.panel{background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px}.panel h3{margin:0 0 10px;font-size:15px}.video-box{background:#000;aspect-ratio:16/9;border-radius:6px;overflow:hidden}.video-box video{width:100%;height:100%;object-fit:contain}.feed{max-height:340px;overflow-y:auto;font-size:13px}.feed .row{padding:6px 4px;border-bottom:1px solid #eef1f3;display:flex;gap:8px}.feed .t{color:var(--muted);white-space:nowrap}.sev-WARNING{color:var(--warn)}.sev-CRITICAL{color:var(--crit);font-weight:600}.chat{display:flex;flex-direction:column;height:300px}.chat .log{flex:1;overflow-y:auto;font-size:13px}.chat .msg{margin:4px 0}.chat .msg.PROCTOR{text-align:right}.chat .bubble{display:inline-block;padding:6px 10px;border-radius:10px;background:#eef2f4}.chat .msg.PROCTOR .bubble{background:var(--blue);color:#fff}.alert{border-left:3px solid var(--warn);padding:8px 10px;margin-bottom:8px;background:#fff9ef}.alert.CRITICAL{border-color:var(--crit);background:#fdf1f1}.alert .meta{font-size:12px;color:var(--muted)}.controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
