@import "https://fonts.googleapis.com/css2?family=Exo+2:wght@300;400;500;600;700;800&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--portify-green:#7ba336;--portify-green-400:#8bb54e;--portify-green-600:#698c2e;--portify-green-700:#547126;--portify-soft-green:#d9eac3;--color-primary:var(--portify-green);--color-primary-hover:var(--portify-green-600);--color-danger:#c44545;--color-danger-hover:#a83a3a;--color-success:var(--portify-green);--color-warning:#d89b2a;--color-info:#3f7aab;--color-bg:#111;--color-surface:#191a1b;--color-surface-raised:#23272b;--color-border:#2e3236;--color-border-strong:#3f454c;--color-text:#f2f4f5;--color-text-muted:#969ca3;--sidebar-bg:#0c0c0c;--table-head-bg:#0e0e0e;--row-hover-bg:#1a1b1c;--code-bg:#0e0e0e;--btn-secondary-hover-bg:#2e3236;--skeleton-base:#1e2124;--skeleton-highlight:#2a2e33;--scrim:#000000b3;--font-display:"Exo 2", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--tracking-wider:.12em;--radius:8px;--radius-lg:12px;--radius-2xl:24px;--radius-pill:999px;--shadow:0 2px 4px #0006, 0 1px 2px #0000004d;--shadow-md:0 6px 16px #00000073, 0 2px 4px #0000004d;--shadow-lg:0 16px 32px #00000080, 0 4px 8px #00000059;--shadow-glow-green:0 0 0 3px #7ba33659;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-fast:.14s;--dur-base:.22s}:root[data-theme=light]{--portify-green:#7ba336;--portify-green-400:#698c2e;--portify-green-600:#698c2e;--portify-green-700:#547126;--color-primary:var(--portify-green);--color-primary-hover:var(--portify-green-600);--color-danger:#c44545;--color-danger-hover:#a83a3a;--color-success:#698c2e;--color-warning:#b57f1c;--color-info:#3f7aab;--color-bg:#f2f4f5;--color-surface:#fff;--color-surface-raised:#f8fafa;--color-border:#e4e7e9;--color-border-strong:#cbd0d4;--color-text:#111;--color-text-muted:#6b7178;--sidebar-bg:#fff;--table-head-bg:#f8fafa;--row-hover-bg:#f2f8e8;--code-bg:#f8fafa;--btn-secondary-hover-bg:#e4e7e9;--skeleton-base:#e4e7e9;--skeleton-highlight:#f2f4f5;--scrim:#1111118c;--shadow:0 2px 4px #1111110f, 0 1px 2px #1111110a;--shadow-md:0 6px 16px #11111114, 0 2px 4px #1111110a;--shadow-lg:0 16px 32px #1111111a, 0 4px 8px #1111110d}*{box-sizing:border-box;margin:0;padding:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;transition:background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);line-height:1.6}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.01em}::selection{background:var(--portify-soft-green);color:var(--color-bg)}.app-layout{min-height:100vh;display:flex}.sidebar,.main-content,.table-container,.filter-bar,.audit-card,.form-panel,.login-card,.sidebar nav a,th,td{transition:background-color var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out)}.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--color-border);flex-direction:column;justify-content:flex-start;align-self:flex-start;width:260px;height:100vh;padding:1.5rem 0;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar h1{font-family:var(--font-display);letter-spacing:.02em;border-bottom:1px solid var(--color-border);color:var(--color-text);padding:0 1.5rem 1.25rem;font-size:1.05rem;font-weight:700}.sidebar h1 span.brand-accent{color:var(--color-primary)}.sidebar-logo-wrap{padding:0 1rem .1rem}.app-logo{max-width:100%;height:auto;display:block}.app-logo-sidebar{width:150px}.sidebar nav{padding:0 0 1rem}.nav-group-label{text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--portify-green);padding:1rem 1.5rem .25rem;font-size:.65rem;font-weight:600}.sidebar nav a{color:var(--color-text-muted);transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-left:2px solid #0000;padding:.55rem 1.5rem;font-weight:500;text-decoration:none;display:block}.sidebar nav a:hover{background:var(--row-hover-bg);color:var(--color-text)}.sidebar nav a.active{color:var(--color-primary);border-left-color:var(--color-primary);background:#7ba3361f}.main-content{flex:1;width:100%;min-width:0;max-width:none;padding:1.5rem 2rem}.page-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-header h2{font-size:1.5rem}.btn{border-radius:var(--radius);font-family:var(--font-body);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);border:none;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:active{background:var(--portify-green-700)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:var(--color-danger-hover)}.btn-secondary{background:var(--color-surface-raised);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--btn-secondary-hover-bg);border-color:var(--color-border-strong)}.btn-sm{padding:.3rem .6rem;font-size:.8rem}.table-container{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:auto hidden}table{border-collapse:collapse;table-layout:auto;width:100%}th,td{text-align:left;border-bottom:1px solid var(--color-border);white-space:nowrap;text-overflow:ellipsis;max-width:340px;padding:.4rem .7rem;overflow:hidden}td:not(:first-child),.audit-card td:first-child{font-size:.8rem}th{background:var(--table-head-bg);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--color-text-muted);font-size:.72rem;font-weight:600}tr:last-child td{border-bottom:none}tr:hover td{background:var(--row-hover-bg)}.actions{gap:.5rem;display:flex}.user-detail-panel{max-width:1100px}.detail-drawer-backdrop{background:var(--scrim);z-index:150;animation:preview-fade-in var(--dur-base) var(--ease-out);position:fixed;inset:0}.detail-drawer{z-index:160;background:var(--color-surface);border-left:1px solid var(--color-border);width:640px;max-width:95vw;height:100vh;box-shadow:var(--shadow-xl,var(--shadow-lg));animation:preview-slide-in var(--dur-base) var(--ease-out);padding:1.5rem;position:fixed;top:0;right:0;overflow-y:auto}.detail-drawer-resizer{cursor:ew-resize;z-index:1;touch-action:none;width:8px;height:100%;position:absolute;top:0;left:0}.detail-drawer-resizer:before{content:"";width:2px;height:100%;transition:background var(--dur-fast) var(--ease-out);background:0 0;position:absolute;top:0;left:0}.detail-drawer-resizer:hover:before,.detail-drawer-resizer:active:before{background:var(--color-primary)}@keyframes preview-fade-in{0%{opacity:0}to{opacity:1}}@keyframes preview-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.detail-drawer-header{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:1rem;display:flex}.detail-drawer-header h3{word-break:break-all;margin-top:.15rem}.row-selected td{background:var(--row-hover-bg)}.row-selected td:first-child{box-shadow:inset 3px 0 0 var(--color-primary)}@media (width<=600px){.detail-drawer{width:100vw;max-width:100vw}}.icon-btn{justify-content:center;align-items:center;width:1.9rem;min-width:1.9rem;height:1.9rem;padding:0;display:inline-flex}.icon-btn svg{width:.95rem;height:.95rem}.form-overlay{background:var(--scrim);z-index:300;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.form-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:500px;max-height:90vh;box-shadow:var(--shadow-lg);padding:2rem;overflow-y:auto}.form-panel h3{margin-bottom:1.5rem}.form-group{margin-bottom:1rem}.form-group label{color:var(--color-text-muted);margin-bottom:.3rem;font-size:.85rem;font-weight:500;display:block}.form-group input,.form-group textarea,.form-group select{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);width:100%;color:var(--color-text);outline:none;padding:.5rem .75rem;font-size:.9rem;transition:border-color .15s}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--color-primary);box-shadow:var(--shadow-glow-green)}.form-group textarea{resize:vertical;min-height:80px}.form-actions{justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}.tag-list{flex-wrap:wrap;gap:.3rem;display:flex}td .tag-list{flex-wrap:nowrap}.federated-provider-list{max-width:240px}.tag{color:var(--portify-green-400);background:#7ba33624;border:1px solid #7ba33640;border-radius:4px;padding:.15rem .5rem;font-size:.75rem}.badge{border-radius:4px;padding:.15rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-success{color:#a2c770;background:#7ba33629}.badge-muted{background:var(--color-surface-raised);color:var(--color-text-muted)}.badge-danger-soft{color:#e08a8a;background:#c4454529}.badge-global{background:var(--color-surface-raised);color:var(--color-text-muted)}.badge-scope{color:#7fb0d6;background:#3f7aab2e}.error-message{color:#e08a8a;border-radius:var(--radius);background:#c445451f;border:1px solid #c4454547;margin-bottom:1rem;padding:.75rem 1rem}.loading{text-align:center;color:var(--color-text-muted);padding:2rem}.empty-state{text-align:center;color:var(--color-text-muted);padding:3rem}.compact-empty-state{padding:1.5rem}.page-intro{color:var(--color-text-muted);max-width:52rem;margin-top:.35rem}.filter-bar{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:1rem;padding:1rem;display:flex}.filter-group{min-width:220px}.filter-group label{color:var(--color-text-muted);margin-bottom:.3rem;font-size:.85rem;font-weight:500;display:block}.filter-group select,.filter-group input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);width:100%;color:var(--color-text);outline:none;padding:.5rem .75rem;font-size:.9rem}.filter-group input::placeholder{color:var(--color-text-muted)}.help-text{color:var(--color-text-muted);margin-top:.35rem;font-size:.8rem}.audit-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1rem;padding:1rem 1.25rem}.filter-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;display:grid}.filter-row{grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem;display:grid}.pagination-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.75rem;display:flex}.pagination-bar-top{margin-bottom:.75rem}.pagination-bar-top .pagination-bar{margin-top:0}.pagination-meta{color:var(--color-text-muted);gap:1rem;font-size:.85rem;display:flex}.pagination-actions{align-items:center;gap:.4rem;display:flex}.pagination-actions select{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);padding:.35rem .6rem;font-size:.85rem}.skeleton-line{background:linear-gradient(90deg, var(--skeleton-base) 25%, var(--skeleton-highlight) 50%, var(--skeleton-base) 75%);background-size:200% 100%;border-radius:4px;width:100%;height:.9rem;animation:1.2s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.clickable-row{cursor:pointer}.sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sortable-th:hover{color:var(--color-text)}.sortable-th-label{align-items:center;gap:.35rem;display:inline-flex}.sort-arrow{opacity:.35;font-size:.7em}.sort-arrow.active{opacity:1;color:var(--color-primary)}.nowrap-cell{white-space:nowrap}.exclude-panel{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--code-bg);margin-bottom:1rem;padding:.75rem}.exclude-add-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.6rem;display:flex}.exclude-add-row select,.exclude-add-row input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);padding:.4rem .6rem;font-size:.85rem}.exclude-add-row select{min-width:140px}.exclude-add-row input{flex:1;min-width:180px}.removable-tag{align-items:center;gap:.35rem;display:inline-flex}.removable-tag-remove{border-radius:var(--radius-pill);width:1rem;height:1rem;color:inherit;cursor:pointer;opacity:.7;transition:opacity var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:.95rem;line-height:1;display:inline-flex}.removable-tag-remove:hover:not(:disabled){opacity:1;background:color-mix(in oklch, var(--color-danger) 25%, transparent)}.removable-tag-remove:disabled{opacity:.4;cursor:default}.role-add-row{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.role-add-row select{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);min-width:0;color:var(--color-text);flex:1;padding:.4rem .6rem;font-size:.85rem}.clickable-row:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.clickable-row:focus-visible td:first-child{box-shadow:inset 3px 0 0 var(--color-primary)}.json-block{background:var(--code-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);max-height:320px;font-family:var(--font-mono);margin-top:.5rem;padding:1rem;font-size:.8rem;line-height:1.5;overflow:auto}.token-cell{white-space:nowrap;text-overflow:ellipsis;max-width:360px;overflow:hidden}.inline-form-panel{background:var(--code-bg);border-radius:var(--radius);border:1px solid var(--color-border);margin-bottom:1rem;padding:1rem}.inline-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.detail-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.detail-col-full{grid-column:1/-1}.detail-value-wrap{word-break:break-all;font-size:.85rem}.audit-truncate{white-space:nowrap;text-overflow:ellipsis;max-width:200px;display:block;overflow:hidden}.column-picker-bar{align-items:center;margin-bottom:.6rem;display:flex;position:relative}.column-picker-panel{z-index:50;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);grid-template-columns:repeat(3,minmax(140px,1fr));gap:.1rem 1.5rem;min-width:460px;padding:.6rem .75rem;display:grid;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 8px 32px #00000080}.column-picker-item{width:auto;padding:.3rem 0;font-size:.85rem}.custom-claim-detail-panel{max-width:900px}.audit-detail-panel{max-width:1100px}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.detail-label,.section-header{text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--portify-green);margin-bottom:.35rem;font-size:.8rem;font-weight:600}.section-header{margin-top:.5rem}.app-type-badge{align-items:center;gap:.35rem;font-size:.85rem;display:inline-flex}.app-type-icon{font-size:1.1rem}.app-type-readonly{padding:.45rem 0;font-size:.95rem}.form-group .checkbox-label{cursor:pointer;align-items:center;gap:.5rem;font-size:.9rem;display:inline-flex}.form-group .checkbox-label input[type=checkbox]{width:1rem;height:1rem}.checkbox-label-audit{width:100%;color:var(--color-text);white-space:nowrap;align-items:center;gap:.65rem;padding:.5rem 0;font-weight:500;display:inline-flex}.checkbox-label-audit input[type=checkbox]{appearance:none;border:1px solid var(--color-border-strong);background:var(--code-bg);border-radius:0;flex:none;place-content:center;width:1.05rem;height:1.05rem;margin:0;display:grid}.checkbox-label-audit input[type=checkbox]:before{content:"";width:.58rem;height:.58rem;box-shadow:inset 1em 1em var(--color-primary);clip-path:polygon(14% 44%,0 60%,44% 100%,100% 20%,84% 6%,43% 70%);transition:transform .12s ease-in-out;transform:scale(0)}.checkbox-label-audit input[type=checkbox]:checked{border-color:var(--color-primary);background:#7ba33624}.checkbox-label-audit input[type=checkbox]:checked:before{transform:scale(1)}.checkbox-label-audit input[type=checkbox]:focus-visible{outline-offset:2px;outline:2px solid #7ba33699}.authority-cell{text-overflow:ellipsis;white-space:nowrap;max-width:250px;overflow:hidden}.sidebar-footer{border-top:1px solid var(--color-border);background:var(--sidebar-bg);flex-direction:column;gap:.5rem;margin-top:auto;padding:1rem 1.5rem;display:flex}.user-info{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.theme-toggle{width:100%;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-body);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);background:0 0;align-items:center;gap:.5rem;padding:.45rem .6rem;font-size:.8rem;font-weight:500;display:inline-flex}.theme-toggle:hover{background:var(--row-hover-bg);color:var(--color-text);border-color:var(--color-border-strong)}.theme-toggle svg{flex:none;width:1rem;height:1rem}.language-toggle{width:100%;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius);transition:border-color var(--dur-fast) var(--ease-out);align-items:center;gap:.5rem;padding:.35rem .6rem;display:inline-flex}.language-toggle:hover{border-color:var(--color-border-strong)}.language-toggle svg{flex:none;width:1rem;height:1rem}.language-toggle select{color:var(--color-text);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;outline:none;flex:1;font-size:.8rem;font-weight:500}.language-toggle select option{background:var(--color-surface);color:var(--color-text)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.login-page{background:var(--color-bg);background-image:radial-gradient(at 50% 30%,#7ba33614 0%,#0000 70%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg);text-align:center;width:100%;max-width:400px;padding:3rem}.login-card h1{color:var(--color-text);letter-spacing:.02em;margin-bottom:.35rem;font-size:1.5rem;font-weight:700}.login-card h1 span.brand-accent{color:var(--color-primary)}.login-card .login-subtitle{text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--portify-green);margin-bottom:.25rem;font-size:.7rem;font-weight:600}.login-card p{color:var(--color-text-muted);margin-bottom:2rem}.app-logo-login{width:240px;margin:0 auto 1rem}.login-card .btn{justify-content:center;width:100%;padding:.75rem;font-size:1rem}@media (width<=900px){.app-layout{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--color-border);width:100%;height:auto;position:static;overflow-y:visible}.main-content{max-width:none;padding:1rem}.page-header{flex-direction:column;align-items:flex-start;gap:1rem}.filter-bar{flex-direction:column;align-items:stretch}.filter-group{width:100%;min-width:0}.actions{flex-wrap:wrap}.form-panel{max-width:calc(100vw - 1rem);padding:1rem}.detail-grid,.inline-form-grid,.filter-grid,.filter-row{grid-template-columns:1fr}.pagination-bar{flex-direction:column;align-items:stretch}}
