:root{--brand-50: #eef4ff;--brand-100: #dbe6ff;--brand-200: #bcd0ff;--brand-400: #6b93ff;--brand-500: #3b6cf6;--brand-600: #2f55d4;--brand-700: #2545ab;--bg: #f6f7fb;--bg-elevated: #ffffff;--bg-subtle: #f0f2f8;--bg-input: #ffffff;--border: #e2e6ef;--border-strong: #cdd3e1;--text: #1a2233;--text-muted: #5b6479;--text-faint: #8a93a8;--ok-bg: #e7f7ee;--ok-fg: #117a45;--ok-border: #b6e6cd;--warn-bg: #fdf3e2;--warn-fg: #95620c;--warn-border: #f3dcae;--danger-bg: #fdecec;--danger-fg: #b3261e;--danger-border: #f4c5c2;--info-bg: var(--brand-50);--info-fg: var(--brand-700);--info-border: var(--brand-200);--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);--shadow-md: 0 4px 12px rgba(16, 24, 40, .08), 0 2px 4px rgba(16, 24, 40, .06);--shadow-lg: 0 16px 48px rgba(16, 24, 40, .18);--sidebar-w: 248px;--header-h: 60px;--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--focus-ring: 0 0 0 3px rgba(59, 108, 246, .35)}@media (prefers-color-scheme: dark){:root{--bg: #0e1320;--bg-elevated: #161d2e;--bg-subtle: #1c2436;--bg-input: #121929;--border: #283149;--border-strong: #36415d;--text: #e7ebf4;--text-muted: #a4adc4;--text-faint: #76819b;--brand-50: #15203b;--brand-100: #1b2c50;--brand-200: #294079;--brand-500: #5e85ff;--brand-600: #4f78ff;--brand-700: #93b1ff;--ok-bg: #0f2c1f;--ok-fg: #4fd28b;--ok-border: #1d4a35;--warn-bg: #2e2410;--warn-fg: #e7b35b;--warn-border: #4a3a18;--danger-bg: #2e1717;--danger-fg: #f08a83;--danger-border: #4a2422;--info-bg: var(--brand-50);--info-fg: var(--brand-700);--info-border: var(--brand-200);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 6px 18px rgba(0, 0, 0, .4);--shadow-lg: 0 18px 50px rgba(0, 0, 0, .6);--focus-ring: 0 0 0 3px rgba(94, 133, 255, .45)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}a{color:var(--brand-600);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.01em}p{margin:0 0 .75rem}code,.mono{font-family:var(--font-mono);font-size:.85em}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;font:inherit;font-weight:600;line-height:1;padding:.6rem .95rem;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease;background:var(--bg-elevated);color:var(--text);border-color:var(--border-strong)}.btn:hover{background:var(--bg-subtle)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand-600);border-color:var(--brand-600);color:#fff}.btn-primary:hover{background:var(--brand-700);border-color:var(--brand-700)}.btn-danger{background:transparent;border-color:var(--danger-border);color:var(--danger-fg)}.btn-danger:hover{background:var(--danger-bg)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--bg-subtle);color:var(--text)}.btn-sm{padding:.38rem .6rem;font-size:.82rem}.btn-block{width:100%}label{font-weight:600;font-size:.82rem;color:var(--text-muted)}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.field .hint{font-size:.78rem;color:var(--text-faint);font-weight:400}input[type=text],input[type=search],input[type=datetime-local],input[type=date],input[type=url],select,textarea{font:inherit;color:var(--text);background:var(--bg-input);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.55rem .7rem;width:100%;transition:border-color .12s ease,box-shadow .12s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand-500);box-shadow:var(--focus-ring)}select{cursor:pointer}.chip{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .5rem;border-radius:999px;font-size:.74rem;font-weight:600;background:var(--bg-subtle);color:var(--text-muted);border:1px solid var(--border);white-space:nowrap}.chip.mono{font-family:var(--font-mono);font-weight:500}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.12rem .55rem;border-radius:999px;font-size:.74rem;font-weight:700;letter-spacing:.02em;border:1px solid transparent;text-transform:capitalize}.badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.badge-ok{background:var(--ok-bg);color:var(--ok-fg);border-color:var(--ok-border)}.badge-warn{background:var(--warn-bg);color:var(--warn-fg);border-color:var(--warn-border)}.badge-danger{background:var(--danger-bg);color:var(--danger-fg);border-color:var(--danger-border)}.badge-info{background:var(--info-bg);color:var(--info-fg);border-color:var(--info-border)}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:1.25rem}.card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.card-header h2,.card-header h3{font-size:1rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.86rem}thead th{text-align:left;font-weight:650;font-size:.74rem;letter-spacing:.03em;text-transform:uppercase;color:var(--text-faint);padding:.6rem .85rem;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;background:var(--bg-elevated)}tbody td{padding:.7rem .85rem;border-bottom:1px solid var(--border);vertical-align:top}tbody tr:hover{background:var(--bg-subtle)}tbody tr:last-child td{border-bottom:none}.alert{display:flex;gap:.6rem;padding:.75rem .9rem;border-radius:var(--radius-sm);border:1px solid transparent;font-size:.86rem}.alert-danger{background:var(--danger-bg);color:var(--danger-fg);border-color:var(--danger-border)}.alert-warn{background:var(--warn-bg);color:var(--warn-fg);border-color:var(--warn-border)}.alert-info{background:var(--info-bg);color:var(--info-fg);border-color:var(--info-border)}.stack{display:flex;flex-direction:column;gap:1.25rem}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.row-between{justify-content:space-between}.grow{flex:1 1 auto}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.nowrap{white-space:nowrap}.text-right{text-align:right}.empty{padding:2.5rem 1rem;text-align:center;color:var(--text-faint)}.spinner{width:18px;height:18px;border:2px solid var(--border-strong);border-top-color:var(--brand-600);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.loading-page{display:grid;place-items:center;min-height:60vh;gap:.75rem;color:var(--text-muted)}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:2s}*{scroll-behavior:auto!important}}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--header-h) 1fr;grid-template-areas:"sidebar topbar" "sidebar main";min-height:100vh}.sidebar{grid-area:sidebar;background:var(--bg-elevated);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:.6rem;padding:0 1.1rem;height:var(--header-h);border-bottom:1px solid var(--border);font-weight:700;letter-spacing:-.02em}.brand .logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--brand-500),var(--brand-700));display:grid;place-items:center;color:#fff;flex:none;box-shadow:var(--shadow-sm)}.brand .name{font-size:.95rem;line-height:1.1}.brand .name small{display:block;font-size:.68rem;font-weight:600;color:var(--text-faint);letter-spacing:.04em;text-transform:uppercase}.nav{padding:.75rem .6rem;display:flex;flex-direction:column;gap:.15rem}.nav-section-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:.9rem .6rem .35rem}.nav-link{display:flex;align-items:center;gap:.65rem;padding:.55rem .65rem;border-radius:var(--radius-sm);color:var(--text-muted);font-weight:600;text-decoration:none;transition:background .12s ease,color .12s ease}.nav-link:hover{background:var(--bg-subtle);color:var(--text);text-decoration:none}.nav-link.active{background:var(--brand-50);color:var(--brand-700)}.nav-link .icon{flex:none;width:18px;height:18px;display:grid;place-items:center}.sidebar-footer{margin-top:auto;padding:.9rem;border-top:1px solid var(--border);font-size:.75rem;color:var(--text-faint)}.topbar{grid-area:topbar;display:flex;align-items:center;gap:.75rem;padding:0 1.25rem;background:var(--bg-elevated);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.topbar .page-title{font-size:1.05rem;font-weight:650}.menu-toggle{display:none}.user-menu{position:relative}.user-button{display:flex;align-items:center;gap:.5rem;border:1px solid var(--border);background:var(--bg-elevated);border-radius:999px;padding:.25rem .7rem .25rem .3rem;cursor:pointer;font:inherit;color:var(--text)}.user-button:hover{background:var(--bg-subtle)}.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--brand-400),var(--brand-700));color:#fff;display:grid;place-items:center;font-weight:700;font-size:.78rem;flex:none}.user-button .who{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:600}.dropdown{position:absolute;right:0;top:calc(100% + 8px);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);min-width:220px;padding:.5rem;z-index:40}.dropdown .who-full{padding:.5rem .6rem;border-bottom:1px solid var(--border);margin-bottom:.35rem}.dropdown .who-full .email{font-weight:600;word-break:break-all}.dropdown .item{display:flex;width:100%;align-items:center;gap:.5rem;padding:.5rem .6rem;border:none;background:none;border-radius:var(--radius-sm);font:inherit;color:var(--text);cursor:pointer;text-align:left}.dropdown .item:hover{background:var(--bg-subtle)}.main{grid-area:main;padding:1.5rem;overflow-x:hidden}.page{max-width:1180px;margin:0 auto}.page-header{margin-bottom:1.25rem}.page-header h1{font-size:1.4rem;margin-bottom:.25rem}.page-header .sub{color:var(--text-muted)}.subnav{display:flex;gap:.35rem;border-bottom:1px solid var(--border);margin-bottom:1.25rem;overflow-x:auto}.subnav a{padding:.6rem .85rem;font-weight:600;color:var(--text-muted);border-bottom:2px solid transparent;white-space:nowrap}.subnav a:hover{color:var(--text);text-decoration:none}.subnav a.active{color:var(--brand-700);border-bottom-color:var(--brand-600)}@media (max-width: 900px){.app-shell{grid-template-columns:1fr;grid-template-areas:"topbar" "main"}.menu-toggle{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elevated);cursor:pointer;color:var(--text)}.sidebar{position:fixed;z-index:60;width:var(--sidebar-w);transform:translate(-100%);transition:transform .2s ease;box-shadow:var(--shadow-lg)}.sidebar.open{transform:translate(0)}.scrim{position:fixed;inset:0;background:#080c1680;z-index:55}}@media (prefers-reduced-motion: reduce){.sidebar{transition:none}}.modal-backdrop{position:fixed;inset:0;background:#080c168c;display:grid;place-items:center;padding:1rem;z-index:100;animation:fade-in .12s ease}.modal{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:calc(100vh - 2rem);display:flex;flex-direction:column;animation:pop-in .14s ease}.modal-lg{max-width:680px}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.1rem 1.25rem;border-bottom:1px solid var(--border)}.modal-header h2{font-size:1.1rem}.modal-header .sub{color:var(--text-muted);font-size:.85rem;margin-top:.15rem}.modal-body{padding:1.25rem;overflow-y:auto}.modal-footer{display:flex;justify-content:flex-end;gap:.6rem;padding:1rem 1.25rem;border-top:1px solid var(--border)}.icon-close{border:none;background:none;cursor:pointer;color:var(--text-faint);font-size:1.3rem;line-height:1;padding:.25rem;border-radius:var(--radius-sm)}.icon-close:hover{background:var(--bg-subtle);color:var(--text)}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.99)}}@media (prefers-reduced-motion: reduce){.modal-backdrop,.modal{animation:none}}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:.4rem}.segmented .seg{display:flex;flex-direction:column;gap:.2rem;text-align:left;padding:.7rem .8rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-input);cursor:pointer;font:inherit;color:var(--text);transition:border-color .12s ease,background .12s ease}.segmented .seg:hover{border-color:var(--brand-400)}.segmented .seg[aria-pressed=true]{border-color:var(--brand-600);background:var(--brand-50);box-shadow:inset 0 0 0 1px var(--brand-600)}.segmented .seg .seg-title{font-weight:700;font-size:.85rem}.segmented .seg .seg-desc{font-size:.74rem;color:var(--text-muted)}@media (max-width: 560px){.segmented{grid-auto-flow:row}}.scope-picker{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-input);max-height:220px;overflow-y:auto;padding:.35rem}.scope-option{display:flex;align-items:flex-start;gap:.6rem;padding:.5rem .6rem;border-radius:var(--radius-sm);cursor:pointer}.scope-option:hover{background:var(--bg-subtle)}.scope-option input{width:auto;margin-top:.15rem;accent-color:var(--brand-600)}.scope-option .scope-name{font-family:var(--font-mono);font-weight:600;font-size:.85rem}.scope-option .scope-desc{font-size:.76rem;color:var(--text-muted)}.scope-selected-row{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}.secret-box{display:flex;align-items:center;gap:.5rem;background:var(--bg-subtle);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);padding:.7rem .85rem;font-family:var(--font-mono);font-size:.82rem;word-break:break-all}.secret-box .secret-value{flex:1 1 auto;user-select:all}.secret-field{margin-bottom:.85rem}.secret-field .secret-label{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);margin-bottom:.3rem}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem}.metric{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.25rem;box-shadow:var(--shadow-sm)}.metric .label{font-size:.78rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.metric .value{font-size:1.9rem;font-weight:700;letter-spacing:-.02em;margin-top:.25rem}.metric .delta{font-size:.78rem;color:var(--text-faint);margin-top:.2rem}.metric.accent-ok .value{color:var(--ok-fg)}.metric.accent-danger .value{color:var(--danger-fg)}.filter-bar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end}.filter-bar .field{margin-bottom:0;min-width:150px}.signin{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:radial-gradient(1200px 600px at 80% -10%,var(--brand-50),transparent 60%),var(--bg)}.signin-card{width:100%;max-width:420px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:2rem;text-align:center}.signin-card .logo{width:52px;height:52px;border-radius:14px;margin:0 auto 1rem;background:linear-gradient(135deg,var(--brand-500),var(--brand-700));display:grid;place-items:center;color:#fff;box-shadow:var(--shadow-sm)}.signin-card h1{font-size:1.35rem}.signin-card .tagline{color:var(--text-muted);margin:.4rem 0 1.5rem}.signin-card .meta{margin-top:1.25rem;font-size:.78rem;color:var(--text-faint)}.signin-card .meta code{color:var(--text-muted)}.copy-ok{color:var(--ok-fg)}.dl{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:.5rem 1rem;font-size:.88rem}.dl dt{color:var(--text-muted);font-weight:600}.dl dd{margin:0;word-break:break-word}.decision-allow{color:var(--ok-fg);font-weight:700}.decision-deny{color:var(--danger-fg);font-weight:700}
