:root{color:#14213d;font-synthesis:none;--accent:#3156e8;--accent-soft:#eef2ff;--nav:#f6f8fc;--border:#d7deea;--muted:#66728a;--danger:#d92d38;--success:#16a34a;--radius:8px;background:#fff;font-family:Inter,Segoe UI,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,tr:focus-visible{outline-offset:2px;outline:3px solid #9db1ff}.app-shell{grid-template:58px 1fr/216px minmax(0,1fr);min-height:100vh;display:grid}.topbar{border-bottom:1px solid var(--border);z-index:20;background:#fff;grid-column:1/-1;justify-content:space-between;align-items:center;padding:0 24px;display:flex}.brand{color:#14213d;letter-spacing:.01em;font-size:19px;font-weight:750;text-decoration:none}.topbar-actions{align-items:center;gap:22px;display:flex}.role-label{color:var(--muted);font-size:13px}.role-label strong{color:#273552;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.sidebar{background:var(--nav);border-right:1px solid var(--border);z-index:30;grid-row:2;padding:22px 12px}.sidebar nav{flex-direction:column;gap:6px;display:flex}.sidebar nav a{border-radius:var(--radius);color:#35415d;border-left:3px solid #0000;align-items:center;gap:13px;min-height:46px;padding:0 14px;font-size:14px;text-decoration:none;display:flex}.sidebar nav a svg{stroke-width:1.8px;width:19px;height:19px}.sidebar nav a:hover{background:#edf1f8}.sidebar nav a.active{color:#214ae0;border-left-color:var(--accent);background:#e8edff;font-weight:650}.content{background:#fff;grid-column:2;min-width:0}.page{max-width:1540px;margin:0 auto;padding:28px 28px 48px}.page-heading{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:22px;display:flex}.page-heading h1{letter-spacing:-.015em;margin:0;font-size:24px;line-height:1.25}.page-heading p{color:var(--muted);margin:7px 0 0;font-size:14px}h2{margin:0 0 14px;font-size:17px}.button{cursor:pointer;color:#24314b;background:#fff;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;gap:7px;min-height:38px;padding:0 14px;font-size:13px;font-weight:600;display:inline-flex}.button svg{width:16px;height:16px}.button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.button.secondary{color:#2749c9;border-color:#aebbe0}.button.ghost{color:#273552;background:0 0;border-color:#0000}.button:hover:not(:disabled){filter:brightness(.97)}.button:disabled{opacity:.45;cursor:not-allowed}.icon-button{color:#263550;cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;width:38px;height:38px;display:grid}.icon-button svg{width:20px}.mobile-menu,.close-nav,.scrim{display:none}.text-button{color:#2850de;cursor:pointer;background:0 0;border:0;padding:5px 0}.filter-rail{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;padding:16px}.mobile-filter-toggle{margin-bottom:12px;display:none}.filter-title{align-items:center;gap:8px;margin-bottom:13px;display:flex}.filter-title svg{width:17px}.filter-grid{grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px 14px;display:grid}label{color:#34405a;flex-direction:column;gap:7px;font-size:12px;font-weight:600;display:flex}input,select,textarea{color:#1d2943;background:#fff;border:1px solid #bac4d6;border-radius:7px;width:100%;min-height:40px;padding:9px 11px;font-size:14px}textarea{resize:vertical;line-height:1.5}input::placeholder,textarea::placeholder{color:#8a95a9}.filter-actions{gap:9px;margin-top:15px;display:flex}.table-frame{border:1px solid var(--border);border-radius:var(--radius);background:#fff;overflow:hidden}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;letter-spacing:.015em;color:#34405a;background:#fbfcfe;font-size:11px;font-weight:750}th,td{white-space:nowrap;border-bottom:1px solid #e3e8f0;padding:12px 14px}tbody tr:last-child td{border-bottom:0}tr.clickable{cursor:pointer}tr.clickable:hover,tr.clickable:focus{background:#f0f4ff}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.status{align-items:center;gap:7px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;display:inline-flex}.status>span{background:#788397;border-radius:50%;width:7px;height:7px}.status-committed>span,.status-active>span,.status-running>span,.status-succeeded>span{background:var(--success)}.status-rejected>span,.status-revoked>span,.status-disabled>span,.status-failed>span,.status-denied>span{background:#ef4444}.pagination{min-height:62px;color:var(--muted);border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 14px;font-size:13px;display:flex}.pagination>div{gap:8px;display:flex}.state-panel{min-height:260px;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:28px;display:flex}.state-panel svg{stroke-width:1.5px;width:32px;height:32px}.state-panel strong{color:#34405a}.state-error svg,.field-error,.inline-alert{color:var(--danger)}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{place-items:center;min-height:100vh;display:grid}.fatal-error{text-align:center;background:#f8fafc;padding:24px}.fatal-error>div{border:1px solid var(--border);border-radius:var(--radius);background:#fff;max-width:560px;padding:34px}.fatal-error h1{margin:0 0 12px;font-size:24px}.fatal-error p{color:var(--muted);margin:0 0 22px;line-height:1.6}.with-drawer .page{padding-right:340px}.detail-drawer{border-left:1px solid var(--border);z-index:15;background:#fff;width:328px;padding:22px;position:fixed;top:58px;bottom:0;right:0;overflow-y:auto}.detail-drawer dl,.definition-panel dl{margin:0}.detail-drawer dt{color:var(--muted);margin-top:15px;font-size:11px}.detail-drawer dd{overflow-wrap:anywhere;white-space:normal;border-bottom:1px solid #e4e8ef;margin:6px 0 0;padding-bottom:13px;font-size:13px}.modal-heading{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-heading h2{margin:0}.login-page{background:#fff;min-height:100vh;padding:34px 42px}.login-brand{display:inline-block}.login-form{width:min(440px,100vw - 40px);margin:16vh auto 0}.login-form h1{letter-spacing:-.02em;margin:0 0 38px;font-size:30px}.login-intro{color:var(--muted);margin:-18px 0 24px;line-height:1.75}.grant-row{border-bottom:1px solid var(--border);color:#4e5a71;align-items:center;gap:13px;margin-bottom:22px;padding-bottom:14px;font-size:13px;display:flex}code{background:#f3f5f9;border:1px solid #e0e5ed;border-radius:5px;padding:3px 6px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.login-submit{width:100%;min-height:48px;margin-top:20px;font-size:15px}.security-note{color:#5e6b82;justify-content:center;align-items:center;gap:8px;margin-top:22px;font-size:13px;display:flex}.security-note svg{width:16px}.field-error{margin:7px 0 0;font-size:12px}.definition-panel{border-top:1px solid var(--border);grid-template-columns:minmax(360px,1fr) minmax(280px,1fr);gap:28px;padding-top:20px;display:grid}.definition-panel dl{grid-template-columns:160px 1fr;align-content:start;display:grid}.definition-panel dt,.definition-panel dd{border-bottom:1px solid #e4e8ef;margin:0;padding:12px 0}.definition-panel dt{color:var(--muted);font-size:12px}.capability-list{flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;display:flex}.section-block{margin-top:26px}.role-list{border-top:1px solid var(--border);border-bottom:1px solid var(--border);display:flex}.role-list article{border-right:1px solid var(--border);flex-direction:column;flex:1;gap:8px;padding:16px;display:flex}.role-list article:last-child{border-right:0}.role-list article div{justify-content:space-between;align-items:center;display:flex}.role-list span,.role-list small{color:var(--muted)}.inline-alert{background:#fff7f7;border:1px solid #f5b7bd;border-radius:6px;margin-bottom:15px;padding:10px 12px;font-size:13px}.modal-backdrop{z-index:100;background:#14213d52;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;gap:14px;width:min(470px,100%);max-height:calc(100vh - 40px);padding:22px;display:flex;overflow-y:auto;box-shadow:0 18px 45px #14213d2e}.credential-delivery{flex-direction:column;gap:12px;display:flex}.credential-delivery code{overflow-wrap:anywhere;white-space:normal;padding:12px}.credential-delivery p{color:var(--muted);font-size:13px}@media (width<=1120px){.filter-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}.with-drawer .page{padding-right:28px}.detail-drawer{width:min(420px,90vw);box-shadow:-12px 0 30px #14213d1f}}@media (width<=760px){.app-shell{padding-top:58px;display:block}.topbar{height:58px;padding:0 12px;position:fixed;top:0;left:0;right:0}.brand{font-size:16px}.role-label{display:none}.topbar .ghost{padding:0 6px}.topbar .ghost svg{display:none}.mobile-menu,.close-nav{display:grid}.sidebar{width:min(290px,85vw);transition:transform .18s;position:fixed;inset:0 auto 0 0;transform:translate(-105%);box-shadow:8px 0 28px #14213d26}.sidebar.is-open{transform:translate(0)}.close-nav{margin:0 0 12px auto}.scrim{z-index:25;background:#14213d47;border:0;display:block;position:fixed;inset:0}.page{padding:22px 16px 36px}.page-heading{align-items:center}.page-heading h1{font-size:21px}.filter-grid{grid-template-columns:1fr}.mobile-filter-toggle{display:inline-flex}.filter-rail:not(.is-mobile-open){display:none}.filter-actions{flex-wrap:wrap}.pagination{flex-direction:column;align-items:flex-start;gap:12px}.definition-panel{grid-template-columns:1fr}.definition-panel dl{grid-template-columns:120px 1fr}.role-list{flex-direction:column}.role-list article{border-right:0;border-bottom:1px solid var(--border)}.role-list article:last-child{border-bottom:0}.login-page{padding:24px 20px}.login-form{margin-top:12vh}.login-form h1{font-size:27px}th,td{padding:11px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
