:root{--rds-bg:#f6f7f9;--rds-surface:#fff;--rds-border:#dfe3e8;--rds-text:#1b1f24;--rds-text-muted:#5c6672;--rds-text-faint:#8c96a3;--rds-accent:#1f5fa8;--rds-ok:#167f4a;--rds-ok-bg:#e6f4ec;--rds-warn:#8a5a00;--rds-warn-bg:#fdf3e0;--rds-pending:#4a5666;--rds-pending-bg:#eef0f3}@media (prefers-color-scheme:dark){:root{--rds-bg:#14171b;--rds-surface:#1c2026;--rds-border:#2c323a;--rds-text:#f2f4f7;--rds-text-muted:#a8b1bd;--rds-text-faint:#78828f;--rds-accent:#6ea8e8;--rds-ok:#6ee7a8;--rds-ok-bg:#16301f;--rds-warn:#f0c069;--rds-warn-bg:#33270f;--rds-pending:#a8b1bd;--rds-pending-bg:#23282f}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--rds-bg);color:var(--rds-text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-size:15px;line-height:1.55}.page{max-width:860px;margin:0 auto;padding:48px 24px 64px}.header{border-bottom:1px solid var(--rds-border);margin-bottom:28px;padding-bottom:20px}.title{letter-spacing:-.01em;margin:0;font-size:26px;font-weight:650}.subtitle{color:var(--rds-text-muted);margin:6px 0 0;font-size:14px}.envBadge{border:1px solid var(--rds-border);background:var(--rds-surface);color:var(--rds-text-muted);letter-spacing:.02em;text-transform:uppercase;border-radius:999px;margin-top:14px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-block}.sectionTitle{letter-spacing:.04em;text-transform:uppercase;color:var(--rds-text-faint);margin:32px 0 12px;font-size:13px;font-weight:650}.statusGrid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.statusCard{border:1px solid var(--rds-border);background:var(--rds-surface);border-radius:8px;padding:16px 18px}.statusCard h2{color:var(--rds-text-muted);margin:0;font-size:14px;font-weight:600}.statusValue{border-radius:5px;margin-top:10px;padding:3px 10px;font-size:13px;font-weight:650;display:inline-block}.statusValue.ok{color:var(--rds-ok);background:var(--rds-ok-bg)}.statusValue.warn{color:var(--rds-warn);background:var(--rds-warn-bg)}.statusValue.pending{color:var(--rds-pending);background:var(--rds-pending-bg)}.statusDetail{color:var(--rds-text-faint);word-break:break-word;margin:10px 0 0;font-size:12.5px}.statusDetail code{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px}.moduleList{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.moduleList li{border:1px dashed var(--rds-border);color:var(--rds-text-muted);background:var(--rds-surface);border-radius:6px;padding:5px 11px;font-size:13px}.note{color:var(--rds-text-muted);margin:14px 0 0;font-size:13px}.footer{border-top:1px solid var(--rds-border);color:var(--rds-text-faint);margin-top:40px;padding-top:18px;font-size:12.5px}.centred{max-width:26rem;margin:0 auto;padding:2rem 0}.authForm{flex-direction:column;gap:1rem;margin-top:1.5rem;display:flex}.field{flex-direction:column;gap:.35rem;display:flex}.field label{color:var(--rds-text,#1f2933);font-size:.9rem;font-weight:600}.field input{color:#1f2933;background:#fff;border:1px solid #9aa5b1;border-radius:6px;padding:.6rem .7rem;font-family:inherit;font-size:1rem}.field input:focus-visible,.primaryButton:focus-visible,.secondaryButton:focus-visible{outline-offset:2px;outline:3px solid #2563eb}.field input[aria-invalid=true]{border-color:#b91c1c}.field input:disabled{color:#64748b;background:#f1f5f9}.primaryButton,.secondaryButton{cursor:pointer;border:1px solid #0000;border-radius:6px;padding:.6rem 1.1rem;font-family:inherit;font-size:1rem;font-weight:600}.primaryButton{color:#fff;background:#1d4ed8}.primaryButton:disabled,.secondaryButton:disabled{opacity:.6;cursor:progress}.secondaryButton{color:#1f2933;background:#fff;border-color:#9aa5b1}.formError{color:#b91c1c;min-height:1.25rem;font-size:.9rem}.formNotice{color:#065f46;background:#ecfdf5;border:1px solid #6ee7b7;border-radius:6px;margin-top:1rem;padding:.6rem .8rem;font-size:.9rem}.formNote{color:#52606d;font-size:.85rem;line-height:1.5}.dashboardHeader{border-bottom:1px solid #cbd2d9;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}.sessionBox{align-items:center;gap:.9rem;display:flex}.sessionWho{text-align:right;flex-direction:column;display:flex}.sessionName{font-weight:600}.sessionUser{color:#52606d;font-size:.85rem}.roleList,.permissionList{flex-direction:column;gap:.4rem;margin:0 0 .6rem;padding:0;list-style:none;display:flex}.roleList li{flex-direction:column;display:flex}.roleLabel{font-weight:600}.roleKey,.permissionList code{color:#52606d;font-size:.8rem}@media (prefers-color-scheme:dark){.field label{color:#e4e7eb}.field input{color:#e4e7eb;background:#1f2933;border-color:#52606d}.field input:disabled{color:#9aa5b1;background:#323f4b}.secondaryButton{color:#e4e7eb;background:#1f2933;border-color:#52606d}.formNotice{color:#d1fae5;background:#064e3b;border-color:#047857}.formError{color:#fca5a5}.formNote,.sessionUser,.roleKey,.permissionList code{color:#9aa5b1}.dashboardHeader{border-color:#3e4c59}}.visuallyHidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tabBar{border-bottom:1px solid #cbd2d9;margin:0 0 1.5rem}.tabBar ul{flex-wrap:wrap;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.tab{appearance:none;font:inherit;color:#3e4c59;cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;padding:.6rem 1.1rem}.tab:hover{background:#f5f7fa}.tabActive{color:#102a43;background:#fff;border-color:#cbd2d9;margin-bottom:-1px;font-weight:600}.tab:focus-visible,.linkButton:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.panel{margin-bottom:2rem}.panelHeader{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.headerActions{flex-wrap:wrap;gap:.6rem;display:flex}.filterBar{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem;display:grid}.emptyState{color:#52606d;text-align:center;border:1px dashed #cbd2d9;border-radius:8px;padding:1.5rem}.tableScroll{border:1px solid #cbd2d9;border-radius:8px;overflow-x:auto}.dataTable{border-collapse:collapse;width:100%;font-size:.92rem}.dataTable th,.dataTable td{text-align:left;vertical-align:top;border-bottom:1px solid #e4e7eb;padding:.6rem .8rem}.dataTable thead th{text-transform:uppercase;letter-spacing:.03em;color:#52606d;white-space:nowrap;background:#f5f7fa;font-size:.8rem}.dataTable tbody tr:last-child th,.dataTable tbody tr:last-child td{border-bottom:none}.dataTable .numeric{text-align:right;font-variant-numeric:tabular-nums}.rowSelected{background:#eff6ff}.rowActions{flex-wrap:wrap;gap:.75rem;display:flex}.groupNameCell{font-weight:500}.groupIndent{display:inline-block}.treeMark{color:#9aa5b1;margin-inline-end:.35rem}.linkButton{appearance:none;font:inherit;color:#1d4ed8;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.pill{white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:.15rem .55rem;font-size:.78rem;font-weight:600;display:inline-block}.pillActive,.pill-active{color:#14532d;background:#dcfce7;border-color:#86efac}.pill-registered{color:#312e81;background:#e0e7ff;border-color:#a5b4fc}.pill-suspended{color:#78350f;background:#fef3c7;border-color:#fcd34d}.pill-retired,.pillMuted{color:#3e4c59;background:#e4e7eb;border-color:#cbd2d9}.inlineForm{background:#f9fafb;border:1px solid #cbd2d9;border-radius:8px;margin-bottom:1.5rem;padding:1.2rem}.inlineFormTitle{margin:0 0 1rem;font-size:1.05rem}.formGrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;display:grid}.fieldWide{grid-column:1/-1}.fieldCheck{flex-direction:row;grid-column:1/-1;align-items:center;gap:.5rem;display:flex}.fieldCheck input{width:auto}.field select,.field textarea{font:inherit;color:inherit;background:#fff;border:1px solid #cbd2d9;border-radius:6px;width:100%;padding:.55rem .7rem}.fieldHelp{color:#52606d;margin:.35rem 0 0;font-size:.82rem}.formActions{flex-wrap:wrap;gap:.6rem;margin-top:1rem;display:flex}.detailPanel{background:#fff;border:1px solid #cbd2d9;border-radius:8px;margin-top:1.5rem;padding:1.2rem}.detailGrid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.9rem 1.5rem;margin:0 0 1.2rem;display:grid}.detailGrid dt{text-transform:uppercase;letter-spacing:.03em;color:#52606d;font-size:.78rem}.detailGrid dd{margin:.2rem 0 0}.detailActions{border-top:1px solid #e4e7eb;flex-wrap:wrap;align-items:center;gap:.75rem;padding-top:1rem;display:flex}.actionGroup{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.actionGroup label{color:#52606d;font-size:.85rem}.pager{color:#52606d;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem;font-size:.9rem;display:flex}.importSteps{margin:0 0 1rem;padding-inline-start:1.2rem;font-size:.92rem;line-height:1.6}.importSteps li{margin-bottom:.5rem}.codeBlock{color:#e4e7eb;white-space:pre;background:#1f2933;border-radius:6px;margin:.4rem 0;padding:.5rem .7rem;font-size:.8rem;display:block;overflow-x:auto}.importResult{border:1px solid;border-radius:8px;margin-top:1rem;padding:1rem}.importOk{background:#ecfdf5;border-color:#6ee7b7}.importBad{background:#fef2f2;border-color:#fca5a5}.dialogBackdrop{z-index:100;background:#102a438c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.dialog{background:#fff;border-radius:10px;width:100%;max-width:32rem;padding:1.5rem;box-shadow:0 12px 40px #102a434d}.dialogTitle{margin:0 0 .8rem;font-size:1.15rem}.dialogBody p{margin:0 0 .6rem;font-size:.95rem}.dialogActions{justify-content:flex-end;gap:.6rem;margin-top:1.2rem;display:flex}@media (max-width:640px){.panelHeader{flex-direction:column;align-items:stretch}.headerActions{justify-content:stretch}.headerActions button{flex:1}.pager{text-align:center;justify-content:center}.sessionWho{text-align:left}}@media (prefers-color-scheme:dark){.tabBar{border-color:#3e4c59}.tab{color:#cbd2d9}.tab:hover{background:#1f2933}.tabActive{color:#e4e7eb;background:#111827;border-color:#3e4c59}.field select,.field textarea{color:#e4e7eb;background:#1f2933;border-color:#52606d}.tableScroll,.inlineForm,.detailPanel,.emptyState{border-color:#3e4c59}.inlineForm,.detailPanel{background:#111827}.dataTable thead th{color:#cbd2d9;background:#1f2933}.dataTable th,.dataTable td{border-color:#323f4b}.rowSelected{background:#1e3a5f}.detailActions{border-color:#323f4b}.emptyState,.fieldHelp,.detailGrid dt,.pager,.actionGroup label,.treeMark{color:#9aa5b1}.linkButton{color:#93c5fd}.pillActive,.pill-active{color:#d1fae5;background:#064e3b;border-color:#047857}.pill-registered{color:#dbeafe;background:#1e3a8a;border-color:#3b82f6}.pill-suspended{color:#fef3c7;background:#78350f;border-color:#b45309}.pill-retired,.pillMuted{color:#cbd2d9;background:#323f4b;border-color:#52606d}.importOk{background:#064e3b;border-color:#047857}.importBad{background:#4c1d1d;border-color:#b91c1c}.dialog{color:#e4e7eb;background:#111827}}.auditTable th,.auditTable td{vertical-align:top}.auditTime{white-space:nowrap;font-variant-numeric:tabular-nums}.auditType{word-break:break-word;font-size:.82rem}.auditSummary{min-width:18rem;max-width:40rem}.pill-audit-success{color:#14532d;background:#dcfce7;border-color:#86efac}.pill-audit-failure{color:#7f1d1d;background:#fef2f2;border-color:#fca5a5}.pill-audit-denied{color:#78350f;background:#fef3c7;border-color:#fcd34d}.auditDetailRow>td{background:#f9fafb;padding:1rem .8rem 1.2rem}.auditDetail dl{margin-bottom:1rem}.auditDetail dd code,.auditType{overflow-wrap:anywhere}.auditDetailHeading{text-transform:uppercase;letter-spacing:.03em;color:#52606d;margin:1rem 0 .4rem;font-size:.8rem}.auditDetail p{margin:0;font-size:.95rem}.filterBar .formActions{grid-column:1/-1;margin-top:0}@media (max-width:640px){.auditSummary{min-width:0}.filterBar .formActions button{flex:1}}@media (prefers-color-scheme:dark){.auditDetailRow>td{background:#111827}.auditDetailHeading{color:#9aa5b1}.pill-audit-success{color:#d1fae5;background:#064e3b;border-color:#047857}.pill-audit-failure{color:#fecaca;background:#4c1d1d;border-color:#b91c1c}.pill-audit-denied{color:#fef3c7;background:#78350f;border-color:#b45309}}.historySection{border-top:1px solid #e4e7eb;margin-top:1.5rem;padding-top:1.25rem}.historyHeading{margin:0 0 .75rem;font-size:.95rem;font-weight:600}.historyTime{white-space:nowrap;font-variant-numeric:tabular-nums}.historyCount{text-align:right;font-variant-numeric:tabular-nums}.pill-session{color:#075985;background:#e0f2fe;border-color:#7dd3fc}.pill-session-unhappy{color:#78350f;background:#fef3c7;border-color:#fcd34d}.historySection .emptyState{padding:1rem}@media (max-width:640px){.historyTable th,.historyTable td{font-size:.85rem}.historySection{margin-top:1.25rem;padding-top:1rem}}@media (prefers-color-scheme:dark){.historySection{border-top-color:#2d3748}.pill-session{color:#bae6fd;background:#0c4a6e;border-color:#0369a1}.pill-session-unhappy{color:#fef3c7;background:#78350f;border-color:#b45309}}.preparationSection,.enrollmentSection{border-top:1px solid #e4e7eb;margin-top:1.5rem;padding-top:1.25rem}.tokenValue{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;background:#f9fafb;border:1px solid #cbd2d9;border-radius:6px;margin:0 0 .75rem;padding:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1rem;line-height:1.5;display:block}.tokenValue:focus-visible{outline-offset:2px;outline:2px solid #0b69a3}.tokenLabel{color:#3e4c59;margin-bottom:.35rem;font-size:.85rem;font-weight:600;display:block}.srOnly{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.preparationCard{background:#f9fafb;border:1px solid #cbd2d9;border-radius:8px;padding:1rem}.preparationCard-active{background:#f0fdf4;border-color:#86efac}.preparationStatus{flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 .75rem;display:flex}.preparationCard .detailGrid{margin-bottom:.75rem}.preparationCard .detailActions{align-items:center;margin-top:1rem;padding-top:.75rem}.pill-prepared,.pill-request-pending{color:#14532d;background:#dcfce7;border-color:#86efac}.pill-request-authorized,.pill-request-in-progress{color:#312e81;background:#e0e7ff;border-color:#a5b4fc}.pill-request-completed{color:#075985;background:#e0f2fe;border-color:#7dd3fc}.pill-request-expired,.pill-request-cancelled{color:#3e4c59;background:#e4e7eb;border-color:#cbd2d9}.pill-request-failed{color:#7f1d1d;background:#fef2f2;border-color:#fca5a5}@media (max-width:640px){.preparationSection{margin-top:1.25rem;padding-top:1rem}.preparationCard{padding:.85rem}}@media (prefers-color-scheme:dark){.preparationSection,.enrollmentSection{border-top-color:#2d3748}.tokenValue{background:#1f2933;border-color:#3e4c59}.tokenLabel{color:#9aa5b1}.preparationCard{background:#1f2933;border-color:#3e4c59}.preparationCard-active{background:#052e16;border-color:#047857}.pill-prepared,.pill-request-pending{color:#d1fae5;background:#064e3b;border-color:#047857}.pill-request-authorized,.pill-request-in-progress{color:#dbeafe;background:#1e3a8a;border-color:#3b82f6}.pill-request-completed{color:#bae6fd;background:#0c4a6e;border-color:#0369a1}.pill-request-expired,.pill-request-cancelled{color:#cbd2d9;background:#323f4b;border-color:#52606d}.pill-request-failed{color:#fecaca;background:#4c1d1d;border-color:#b91c1c}}.qrSection{margin-top:1.5rem}.qrCard{border:1px solid var(--border,#d0d7de);border-radius:8px;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.qrCard-active{border-color:#2da44e}.qrStatus{margin:0}.qrSticker{background:#fff;border:1px solid #d0d7de;border-radius:6px;flex-direction:column;align-self:flex-start;align-items:center;gap:.35rem;padding:.75rem;display:flex}.qrStickerImage{max-width:100%;display:block}.qrStickerLabel{text-align:center;margin:0;font-size:.85rem;font-weight:600}.qrStickerHost{color:#57606a;margin:0;font-size:.75rem}.qrReference,.qrUrl{word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem}@media print{body *{visibility:hidden}.qrSticker,.qrSticker *{visibility:visible}.qrSticker{border:1px solid #000;position:absolute;top:0;left:0}.qrStickerImage{max-width:none}}.publicPage{background:var(--rds-bg);min-height:100dvh;color:var(--rds-text);justify-content:center;align-items:flex-start;padding:1rem;display:flex}.publicCard{background:var(--rds-surface);border:1px solid var(--rds-border);border-radius:10px;flex-direction:column;gap:1rem;width:100%;max-width:30rem;padding:1.25rem;display:flex}.publicHeader{border-bottom:1px solid var(--rds-border);padding-bottom:.75rem}.publicTitle{margin:0;font-size:1.35rem;line-height:1.25}.publicDevice{flex-direction:column;gap:.25rem;display:flex}.publicDeviceHeading{letter-spacing:.04em;text-transform:uppercase;color:var(--rds-text-muted);margin:0;font-size:.8rem;font-weight:600}.publicDeviceLabel{overflow-wrap:anywhere;margin:0;font-size:1.15rem;font-weight:600}.publicNotice{background:var(--rds-pending-bg);color:var(--rds-pending);border-radius:8px;margin:0;padding:.75rem;font-size:1rem;line-height:1.5}.publicNotice:focus{outline:none}.publicNotice:focus-visible{outline:2px solid var(--rds-accent);outline-offset:2px}.publicNotice--available{background:var(--rds-warn-bg);color:var(--rds-warn)}.publicNotice--confirmed{background:var(--rds-ok-bg);color:var(--rds-ok)}.publicConfirmButton,.publicRetryButton{cursor:pointer;border-radius:8px;width:100%;min-height:2.75rem;padding:.75rem 1rem;font-size:1.05rem;font-weight:600}.publicConfirmButton{border:1px solid var(--rds-accent);background:var(--rds-accent);color:#fff}.publicConfirmButton:disabled{cursor:progress;opacity:.7}.publicRetryButton{border:1px solid var(--rds-border);color:var(--rds-text);background:0 0}.publicConfirmButton:focus-visible,.publicRetryButton:focus-visible{outline:2px solid var(--rds-accent);outline-offset:2px}.publicConfirmedAt{color:var(--rds-text-muted);margin:0;font-size:.9rem}.publicFootnote{border-top:1px solid var(--rds-border);color:var(--rds-text-muted);margin:0;padding-top:.75rem;font-size:.85rem;line-height:1.5}.publicCode{border-top:1px solid var(--rds-border);flex-direction:column;gap:.75rem;padding-top:.75rem;display:flex}.publicCodeHeading{letter-spacing:.04em;text-transform:uppercase;color:var(--rds-text-muted);margin:0;font-size:.8rem;font-weight:600}.publicCodeForm{flex-direction:column;gap:.5rem;display:flex}.publicCodeLabel{font-size:.9rem;font-weight:600}.publicCodeInput{letter-spacing:.25em;text-align:center;border:1px solid var(--rds-border);background:var(--rds-surface);width:100%;min-height:3rem;color:var(--rds-text);border-radius:8px;padding:.6rem .75rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.5rem}.publicCodeInput:focus-visible{outline:2px solid var(--rds-accent);outline-offset:2px}.publicCodeInput:disabled{opacity:.7;cursor:progress}.publicCodeHint{color:var(--rds-text-muted);margin:0;font-size:.85rem}.publicNotice--code-verified{background:var(--rds-ok-bg);color:var(--rds-ok)}.publicNotice--code-rejected,.publicNotice--code-throttled{background:var(--rds-warn-bg);color:var(--rds-warn)}.codeReveal{border:1px solid var(--rds-warn);background:var(--rds-warn-bg);border-radius:8px;flex-direction:column;gap:.6rem;padding:.85rem;display:flex}.codeRevealCaption{color:var(--rds-warn);margin:0;font-size:.85rem}.codeRevealValue{letter-spacing:.2em;text-align:center;color:var(--rds-text);-webkit-user-select:all;user-select:all;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.9rem;font-weight:700}.codeRevealValue:focus-visible{outline:2px solid var(--rds-accent);outline-offset:3px}.codeRevealWarning{color:var(--rds-warn);margin:0;font-size:.85rem;font-weight:600}@media print{.codeReveal{display:none!important}}.codeHandoff{border-top:1px solid var(--rds-warn);flex-direction:column;gap:.4rem;padding-top:.6rem;display:flex}.codeHandoffHeading{letter-spacing:.03em;text-transform:uppercase;color:var(--rds-warn);margin:0;font-size:.8rem;font-weight:700}.codeHandoffSteps{color:var(--rds-text);flex-direction:column;gap:.3rem;margin:0;padding-left:1.2rem;font-size:.85rem;line-height:1.45;display:flex}.codeHandoffNote{color:var(--rds-text-muted);margin:0;font-size:.8rem;font-style:italic}.publicCodeFacts{color:var(--rds-text-muted);flex-direction:column;gap:.35rem;margin:0;padding-left:1.15rem;font-size:.9rem;line-height:1.45;display:flex}
