:root{--font-family-body:system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--font-family-code:Source Code Pro, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--t-body-xxs-500:normal 500 11px/14px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-body-xs-400:normal 400 12px/16px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-body-xs-500:normal 500 12px/16px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-body-sm-400:normal 400 14px/20px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-body-sm-500:normal 500 14px/20px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-body-sm-600:normal 600 14px/20px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-body-primary-400:normal 400 16px/24px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-body-primary-500:normal 500 16px/24px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-title-h5:normal 600 18px/28px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-title-h4:normal 600 20px/28px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-title-h3:normal 600 24px/32px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-title-h2:normal 600 28px/40px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-input-title:normal 500 12px/16px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-input-text-primary:normal 400 14px/20px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--t-input-error-message:normal 400 12px/16px system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif;--border-1:1px;--border-2:2px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:100px;--size-md:24px;--size-2xl:36px;--size-4xl:44px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:20px;--spacing-2xl:24px;--spacing-3xl:32px;--spacing-4xl:40px;--spacing-5xl:48px;--spacing-6xl:64px;--c-neutral-1400:#141517;--c-neutral-1300:#191a1c;--c-neutral-1200:#242629;--c-neutral-1100:#2e3136;--c-neutral-1000:#32363c;--c-neutral-900:#3d434b;--c-neutral-800:#4a5059;--c-neutral-700:#5e6672;--c-neutral-600:#7e8794;--c-neutral-500:#939ca9;--c-neutral-400:#a2acba;--c-neutral-300:#b8c0cd;--c-neutral-200:#dfe3e9;--c-neutral-100:#f0f2f5;--c-neutral-50:#f7f8fa;--c-white:#fff;--c-white-50:#ffffff80;--c-green-500:#038026;--c-green-400:#2e964b;--c-green-300:#6db581;--c-green-100:#e6f2e9;--c-orange-500:#ff9500;--c-orange-400:#ffa72b;--c-orange-300:#ffc26b;--c-orange-500-transparent:#ff950014;--c-violet-700:#352452;--c-violet-500:#6637b2;--c-violet-300:#ac97cf;--c-blue-800:#161b27;--c-blue-700:#263973;--c-blue-600:#334d9c;--c-blue-500:#3961db;--c-blue-400:#5777d9;--c-blue-300:#8ca1de;--c-blue-500-transparent:#325cdb14;--c-red-800:#23181a;--c-red-600:#8f2a2a;--c-red-500:#cc3c3c;--c-red-400:#d55d5d;--c-red-300:#e18e8e;--c-red-200:#eaafaf;--c-red-500-transparent:#cc3c3c14}:root,:root[data-theme=dark]{--bg-default:var(--c-neutral-1400);--bg-dark:var(--c-neutral-1100);--bg-faded:var(--c-neutral-900);--bg-disabled:var(--c-neutral-1300);--bg-muted:var(--c-neutral-1200);--bg-emphasis:var(--c-neutral-1200);--bg-active:var(--c-neutral-1100);--bg-action:var(--c-blue-500);--bg-action-emphasis:var(--c-blue-600);--bg-action-muted:var(--c-blue-800);--bg-critical:var(--c-red-500);--bg-critical-emphasis:var(--c-red-600);--bg-critical-disabled:var(--c-red-800);--bg-success:var(--c-green-500);--bg-warning:var(--c-orange-500);--bg-warning-transparent:var(--c-orange-500-transparent);--border-action:var(--c-blue-500);--border-default:var(--c-neutral-900);--border-disabled:var(--c-neutral-1000);--border-emphasis:var(--c-neutral-500);--border-muted:var(--c-neutral-1100);--border-faded:var(--c-neutral-800);--border-critical:var(--c-red-500);--border-success:var(--c-green-300);--border-warning:var(--c-orange-300);--fg-action:var(--c-blue-400);--fg-action-muted:var(--c-blue-300);--fg-attention:var(--c-orange-500);--fg-critical:var(--c-red-500);--fg-critical-muted:var(--c-red-200);--fg-default:var(--c-white);--fg-faded:var(--c-neutral-400);--fg-neutral:var(--c-neutral-300);--fg-muted:var(--c-neutral-600);--fg-disabled:var(--c-neutral-700);--fg-success:var(--c-green-400);--fg-code:var(--c-violet-300);--fg-inverted:var(--c-neutral-1400);--fg-white:var(--c-white)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background-color:var(--bg-default);color:var(--fg-default);font:var(--t-body-sm-400);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,figure{margin:0}a{color:var(--c-blue-300);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:var(--border-2) solid var(--c-blue-400);outline-offset:2px;border-radius:var(--radius-sm)}code,.mono{font-family:var(--font-family-code)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page{flex-direction:column;min-height:100%;display:flex}.page__center{padding:var(--spacing-2xl) var(--spacing-lg) var(--spacing-6xl);flex:1;justify-content:center;align-items:center;display:flex}.brand{align-items:center;gap:var(--spacing-md);padding:var(--spacing-xl) var(--spacing-2xl);display:flex}.brand__mark{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--c-blue-400), var(--c-blue-600));flex:none;width:28px;height:28px}.brand__name{font:var(--t-body-primary-500);color:var(--fg-default);letter-spacing:.2px}.brand__sub{font:var(--t-body-xs-400);color:var(--fg-muted)}.stack{gap:var(--spacing-lg);flex-direction:column;display:flex}.stack--sm{gap:var(--spacing-sm)}.row{gap:var(--spacing-md);flex-wrap:wrap;display:flex}.row--end{justify-content:flex-end}.grid-2{gap:var(--spacing-lg);grid-template-columns:1fr 1fr;display:grid}@media (width<=620px){.grid-2{grid-template-columns:1fr}}.spacer{flex:1}.card{background-color:var(--bg-muted);border:var(--border-1) solid var(--border-muted);border-radius:var(--radius-lg);padding:var(--spacing-3xl);width:100%}.card--narrow{max-width:440px}.card--wide{max-width:620px}.card__title{font:var(--t-title-h3);margin-bottom:var(--spacing-sm)}.card__lede{font:var(--t-body-sm-400);color:var(--fg-faded);margin-bottom:var(--spacing-2xl)}.field{gap:var(--spacing-xs);flex-direction:column;display:flex}.field__label{font:var(--t-input-title);color:var(--fg-neutral);align-items:center;gap:var(--spacing-xs);display:flex}.field__optional{color:var(--fg-muted);font:var(--t-body-xxs-500)}.input{width:100%;height:var(--size-2xl);padding:0 var(--spacing-md);background-color:var(--bg-dark);border:var(--border-1) solid var(--border-faded);border-radius:var(--radius-md);color:var(--fg-default);font:var(--t-input-text-primary);transition:border-color .12s,background-color .12s}.input::placeholder{color:var(--fg-disabled)}.input:hover:not(:disabled){border-color:var(--border-emphasis)}.input:focus{border-color:var(--border-action);box-shadow:0 0 0 3px var(--c-blue-500-transparent);outline:none}.input:disabled{background-color:var(--bg-disabled);color:var(--fg-disabled);cursor:not-allowed}.input--invalid{border-color:var(--border-critical)}.input--invalid:focus{border-color:var(--border-critical);box-shadow:0 0 0 3px var(--c-red-500-transparent)}.input--mono{font-family:var(--font-family-code);letter-spacing:.3px}textarea.input{height:auto;padding:var(--spacing-sm) var(--spacing-md);resize:vertical}select.input{cursor:pointer}.field__error{min-height:16px;font:var(--t-input-error-message);color:var(--c-red-300)}.field__hint,.field__status{font:var(--t-body-xs-400);color:var(--fg-muted)}.field__status--ok{color:var(--fg-success)}.checkbox{align-items:flex-start;gap:var(--spacing-sm);cursor:pointer;font:var(--t-body-sm-400);color:var(--fg-neutral);display:flex}.checkbox input{accent-color:var(--c-blue-500);width:var(--spacing-lg);height:var(--spacing-lg);flex:none;margin:2px 0 0}.strength{gap:var(--spacing-xs);flex-direction:column;display:flex}.strength__track{height:var(--spacing-xs);border-radius:var(--radius-full);background-color:var(--bg-active);overflow:hidden}.strength__fill{border-radius:var(--radius-full);width:0;height:100%;transition:width .16s,background-color .16s}.strength[data-score="0"] .strength__fill{background-color:var(--c-red-500);width:8%}.strength[data-score="1"] .strength__fill{background-color:var(--c-red-400);width:25%}.strength[data-score="2"] .strength__fill{background-color:var(--c-orange-400);width:50%}.strength[data-score="3"] .strength__fill{background-color:var(--c-blue-400);width:75%}.strength[data-score="4"] .strength__fill{background-color:var(--c-green-400);width:100%}.strength__label{font:var(--t-body-xs-400);color:var(--fg-muted)}.strength__rules{margin:var(--spacing-xs) 0 0;gap:2px var(--spacing-md);grid-template-columns:1fr 1fr;padding:0;list-style:none;display:grid}.strength__rule{font:var(--t-body-xs-400);color:var(--fg-muted);align-items:center;gap:var(--spacing-xs);display:flex}.strength__rule:before{content:"○";font-size:10px}.strength__rule--met{color:var(--fg-success)}.strength__rule--met:before{content:"●"}.btn{justify-content:center;align-items:center;gap:var(--spacing-sm);height:var(--size-2xl);padding:0 var(--spacing-lg);border-radius:var(--radius-md);border:var(--border-1) solid transparent;font:var(--t-body-sm-500);cursor:pointer;white-space:nowrap;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.btn:disabled{cursor:not-allowed;opacity:.55}.btn--block{width:100%}.btn--lg{height:var(--size-4xl);font:var(--t-body-primary-500)}.btn--sm{height:28px;padding:0 var(--spacing-md);font:var(--t-body-xs-500)}.btn--primary{background-color:var(--bg-action);color:var(--fg-white)}.btn--primary:hover:not(:disabled){background-color:var(--bg-action-emphasis)}.btn--secondary{border-color:var(--border-faded);color:var(--fg-neutral);background-color:#0000}.btn--secondary:hover:not(:disabled){border-color:var(--border-emphasis);color:var(--fg-default);background-color:var(--bg-active)}.btn--danger{border-color:var(--border-critical);color:var(--c-red-300);background-color:#0000}.btn--danger:hover:not(:disabled){background-color:var(--bg-critical);color:var(--fg-white)}.btn--link{height:auto;color:var(--c-blue-300);font:var(--t-body-sm-400);background:0 0;border:none;padding:0}.btn--link:hover:not(:disabled){text-decoration:underline}.banner{gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-md);border:var(--border-1) solid var(--border-default);background-color:var(--bg-dark);font:var(--t-body-sm-400);color:var(--fg-neutral);display:flex}.banner__body{gap:var(--spacing-xs);flex-direction:column;min-width:0;display:flex}.banner__title{font:var(--t-body-sm-600);color:var(--fg-default)}.banner--critical{border-color:var(--border-critical);background-color:var(--c-red-500-transparent);color:var(--c-red-200)}.banner--critical .banner__title{color:var(--c-red-300)}.banner--warning{border-color:var(--border-warning);background-color:var(--bg-warning-transparent);color:var(--c-orange-300)}.banner--warning .banner__title{color:var(--c-orange-300)}.banner--success{border-color:var(--border-success);color:var(--c-green-300);background-color:#0380261a}.banner--success .banner__title{color:var(--c-green-300)}.banner--info{border-color:var(--border-action);background-color:var(--c-blue-500-transparent);color:var(--c-blue-300)}.banner--info .banner__title{color:var(--c-blue-300)}.badge{align-items:center;gap:var(--spacing-xs);height:var(--size-md);padding:0 var(--spacing-sm);border-radius:var(--radius-md);font:var(--t-body-xs-500);background-color:var(--bg-active);color:var(--fg-neutral);border:var(--border-1) solid var(--border-muted);white-space:nowrap;display:inline-flex}.badge--active{color:var(--c-green-300);border-color:var(--border-success);background-color:#0380261f}.badge--revoked{color:var(--fg-muted);border-color:var(--border-disabled)}.badge--exhausted,.badge--expired,.badge--admin{color:var(--c-orange-300);border-color:var(--border-warning);background-color:var(--bg-warning-transparent)}.badge--group{font-family:var(--font-family-code);color:var(--c-violet-300);border-color:var(--c-violet-700);background-color:#6637b224}.table-wrap{border:var(--border-1) solid var(--border-muted);border-radius:var(--radius-lg);overflow-x:auto}.table{border-collapse:collapse;width:100%;font:var(--t-body-sm-400);min-width:720px}.table th{text-align:left;font:var(--t-body-xs-500);text-transform:uppercase;letter-spacing:.4px;color:var(--fg-muted);padding:var(--spacing-md) var(--spacing-lg);background-color:var(--bg-emphasis);border-bottom:var(--border-1) solid var(--border-muted);white-space:nowrap}.table td{padding:var(--spacing-md) var(--spacing-lg);border-bottom:var(--border-1) solid var(--border-muted);color:var(--fg-neutral);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover td{background-color:var(--bg-active)}.table__empty{padding:var(--spacing-5xl);text-align:center;color:var(--fg-muted)}.cell-groups{gap:var(--spacing-xs);flex-wrap:wrap;display:flex}.cell-muted{color:var(--fg-muted)}.copyfield{align-items:stretch;gap:var(--spacing-sm);display:flex}.copyfield__value{min-width:0;padding:var(--spacing-md);background-color:var(--bg-dark);border:var(--border-1) solid var(--border-faded);border-radius:var(--radius-md);font-family:var(--font-family-code);color:var(--fg-code);word-break:break-all;-webkit-user-select:all;user-select:all;flex:1;font-size:13px;line-height:20px}.admin{flex-direction:column;min-height:100%;display:flex}.admin__bar{align-items:center;gap:var(--spacing-2xl);padding:0 var(--spacing-2xl);border-bottom:var(--border-1) solid var(--border-muted);background-color:var(--bg-muted);display:flex}.admin__nav{gap:var(--spacing-xs);display:flex}.admin__tab{padding:var(--spacing-lg) var(--spacing-md);color:var(--fg-muted);font:var(--t-body-sm-500);border-bottom:var(--border-2) solid transparent;cursor:pointer;background:0 0;border-top:none;border-left:none;border-right:none;margin-bottom:-1px}.admin__tab:hover{color:var(--fg-default);text-decoration:none}.admin__tab--active{color:var(--fg-default);border-bottom-color:var(--c-blue-500)}.admin__main{padding:var(--spacing-3xl);flex:1;width:100%;max-width:1200px;margin:0 auto}.section{gap:var(--spacing-lg);margin-bottom:var(--spacing-5xl);flex-direction:column;display:flex}.section__head{justify-content:space-between;align-items:center;gap:var(--spacing-lg);flex-wrap:wrap;display:flex}.section__title{font:var(--t-title-h4)}.section__desc{font:var(--t-body-sm-400);color:var(--fg-muted);margin-top:var(--spacing-xs)}.modal-backdrop{padding:var(--spacing-lg);z-index:10;background-color:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background-color:var(--bg-muted);border:var(--border-1) solid var(--border-muted);border-radius:var(--radius-lg);padding:var(--spacing-2xl);width:100%;max-width:560px;max-height:90vh;overflow-y:auto}.modal__title{font:var(--t-title-h5);margin-bottom:var(--spacing-sm)}.spinner{width:var(--spacing-lg);height:var(--spacing-lg);border:2px solid var(--c-white-50);border-top-color:#0000;border-radius:50%;flex:none;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.loading{justify-content:center;align-items:center;gap:var(--spacing-md);padding:var(--spacing-5xl);color:var(--fg-muted);display:flex}.result__icon{width:var(--spacing-5xl);height:var(--spacing-5xl);margin-bottom:var(--spacing-lg);border-radius:50%;justify-content:center;align-items:center;font-size:26px;display:flex}.result__icon--success{color:var(--c-green-300);border:var(--border-1) solid var(--border-success);background-color:#03802626}.result__icon--failure{background-color:var(--c-red-500-transparent);color:var(--c-red-300);border:var(--border-1) solid var(--border-critical)}.steps{padding-left:var(--spacing-xl);color:var(--fg-neutral);font:var(--t-body-sm-400);margin:0}.steps li{margin-bottom:var(--spacing-sm)}.footnote{padding:var(--spacing-lg) var(--spacing-2xl);color:var(--fg-disabled);font:var(--t-body-xs-400);text-align:center}.filters{gap:var(--spacing-md);flex-wrap:wrap;align-items:flex-end;display:flex}.filters .field{min-width:180px}.pager{justify-content:space-between;align-items:center;gap:var(--spacing-md);color:var(--fg-muted);font:var(--t-body-xs-400);display:flex}
