:root{--portal-bg:#f9f7f4;--portal-surface:#fff;--portal-border:#e5e0d8;--portal-text:#1a1310;--portal-text-muted:#7a6f65;--portal-accent:#6b4226;--portal-accent-light:#f0e8df;--portal-green:#16a34a;--portal-amber:#d97706;--portal-red:#dc2626;--portal-blue:#2563eb}*,:before,:after{box-sizing:border-box}html{color:var(--portal-text);background:var(--portal-bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif}body{background:var(--portal-bg);min-height:100vh;margin:0}.portal-header{background:var(--portal-surface);border-bottom:1px solid var(--portal-border);z-index:40;position:sticky;top:0}.portal-header-inner{align-items:center;gap:1rem;max-width:72rem;height:4.5rem;margin:0 auto;padding:0 1.5rem;display:flex}.portal-logo{width:auto;height:2.5rem}.portal-header-title{color:var(--portal-text);font-size:1rem;font-weight:700;text-decoration:none}.portal-header-user{align-items:center;gap:.75rem;margin-left:auto;display:flex}.portal-header-email{color:var(--portal-text-muted);font-size:.75rem;display:none}@media (min-width:640px){.portal-header-email{display:block}}.portal-header-nav{align-items:center;gap:.25rem;display:flex}.portal-nav-link{color:var(--portal-text-muted);border-radius:.375rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.portal-nav-link:hover,.portal-nav-link.active{background:var(--portal-accent-light);color:var(--portal-accent)}.portal-signout-btn{color:var(--portal-text-muted);border:1px solid var(--portal-border);cursor:pointer;background:0 0;border-radius:.375rem;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.875rem;transition:background .15s;display:flex}.portal-signout-btn:hover{background:var(--portal-accent-light);color:var(--portal-accent)}.portal-signout-btn:disabled{opacity:.5;cursor:not-allowed}.portal-main{max-width:72rem;margin:0 auto;padding:2rem 1.5rem}.portal-section-label{letter-spacing:.05em;text-transform:uppercase;color:var(--portal-text-muted);margin-bottom:1rem;font-size:.75rem;font-weight:600}.portal-tool-grid{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1rem;margin-bottom:2.5rem;display:grid}.portal-tile{background:var(--portal-surface);border:1px solid var(--portal-border);color:inherit;border-radius:.75rem;flex-direction:column;gap:.5rem;padding:1.25rem;text-decoration:none;transition:box-shadow .15s,border-color .15s;display:flex}.portal-tile:not(.portal-tile--locked):hover{border-color:var(--portal-accent);box-shadow:0 2px 8px #6b42261a}.portal-tile--locked{opacity:.7}.portal-tile-icon{width:2rem;height:2rem;color:var(--portal-accent);margin-bottom:.25rem}.portal-tile-icon--locked{color:var(--portal-text-muted)}.portal-tile-name{color:var(--portal-text);align-items:center;gap:.5rem;font-size:.9375rem;font-weight:600;display:flex}.portal-tile-description{color:var(--portal-text-muted);flex:1;font-size:.8125rem;line-height:1.5}.portal-tile-action{color:var(--portal-accent);align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;font-weight:500;display:flex}.portal-tile-action--muted{color:var(--portal-text-muted)}.portal-tile-request-btn{color:var(--portal-accent);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.25rem;margin-top:.5rem;padding:0;font-size:.8125rem;font-weight:500;transition:color .15s;display:flex}.portal-tile-request-btn:hover{color:#4a2d17}.portal-badge{letter-spacing:.025em;border-radius:9999px;align-items:center;padding:.125rem .5rem;font-size:.6875rem;font-weight:600;display:inline-flex}.portal-badge--beta{color:#92400e;background:#fef3c7}.portal-badge--planned{color:#6b7280;background:#f3f4f6}.portal-denied-banner{color:#92400e;background:#fef3c7;border:1px solid #fde68a;border-radius:.5rem;align-items:center;gap:.75rem;margin-bottom:1.5rem;padding:.875rem 1rem;font-size:.875rem;display:flex}.portal-denied-banner-request{color:var(--portal-accent);cursor:pointer;white-space:nowrap;background:0 0;border:none;margin-left:auto;padding:0;font-size:.875rem;font-weight:500;text-decoration:underline}.portal-empty{background:var(--portal-surface);border:1px solid var(--portal-border);color:var(--portal-text-muted);border-radius:.75rem;margin-bottom:2rem;padding:1.5rem;font-size:.875rem;line-height:1.6}.portal-login-container{background:var(--portal-bg);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.portal-login-card{background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:1rem;flex-direction:column;align-items:center;gap:1.5rem;width:100%;max-width:26rem;padding:2.5rem;display:flex}.portal-login-logo{width:auto;height:3.5rem}.portal-login-title{color:var(--portal-text);text-align:center;margin:0;font-size:1.125rem;font-weight:700}.portal-login-subtitle{color:var(--portal-text-muted);text-align:center;margin:0;font-size:.875rem}.portal-login-error{color:var(--portal-red);background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;width:100%;padding:.75rem 1rem;font-size:.875rem}.portal-ms-btn{width:100%;color:var(--portal-text);background:var(--portal-surface);border:1.5px solid var(--portal-border);cursor:pointer;border-radius:.5rem;justify-content:center;align-items:center;gap:.625rem;padding:.75rem 1.5rem;font-size:.9375rem;font-weight:500;transition:background .15s,border-color .15s;display:flex}.portal-ms-btn:hover{background:var(--portal-accent-light);border-color:var(--portal-accent)}.portal-ms-btn:disabled{opacity:.5;cursor:not-allowed}.portal-admin-nav{border-bottom:1px solid var(--portal-border);align-items:center;gap:.25rem;margin-bottom:1.5rem;padding-bottom:.5rem;display:flex}.portal-table{border-collapse:collapse;width:100%;font-size:.875rem}.portal-table th{text-align:left;letter-spacing:.04em;text-transform:uppercase;color:var(--portal-text-muted);border-bottom:1px solid var(--portal-border);padding:.625rem .875rem;font-size:.75rem;font-weight:600}.portal-table td{border-bottom:1px solid var(--portal-border);color:var(--portal-text);padding:.75rem .875rem}.portal-table tr:last-child td{border-bottom:none}.portal-table tr:hover td{background:var(--portal-bg)}.portal-table-card{background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:.75rem;overflow:hidden}.portal-toggle{cursor:pointer;background:#e5e7eb;border:none;border-radius:9999px;align-items:center;width:2.75rem;height:1.5rem;padding:0;transition:background .2s;display:inline-flex;position:relative}.portal-toggle[aria-checked=true]{background:var(--portal-green)}.portal-toggle:disabled{opacity:.5;cursor:not-allowed}.portal-toggle-thumb{background:#fff;border-radius:50%;width:1.1rem;height:1.1rem;transition:transform .2s;position:absolute;left:.2rem;box-shadow:0 1px 3px #0003}.portal-toggle[aria-checked=true] .portal-toggle-thumb{transform:translate(1.25rem)}.portal-detail-card{background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:.75rem;margin-bottom:1.5rem;overflow:hidden}.portal-detail-card-header{border-bottom:1px solid var(--portal-border);padding:1.25rem 1.5rem}.portal-detail-card-body{padding:0}.portal-audit-row{border-bottom:1px solid var(--portal-border);align-items:center;gap:.75rem;padding:.625rem 1.5rem;font-size:.8125rem;display:flex}.portal-audit-row:last-child{border-bottom:none}.portal-audit-date{color:var(--portal-text-muted);min-width:8rem}.portal-audit-action{font-weight:500}.portal-audit-action--granted{color:var(--portal-green)}.portal-audit-action--revoked{color:var(--portal-red)}.portal-audit-by{color:var(--portal-text-muted)}.portal-page-title{color:var(--portal-text);margin:0 0 1.5rem;font-size:1.25rem;font-weight:700}.portal-filter-bar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.portal-filter-input{border:1px solid var(--portal-border);background:var(--portal-surface);min-width:12rem;color:var(--portal-text);border-radius:.5rem;outline:none;flex:1;padding:.5rem .875rem;font-size:.875rem;transition:border-color .15s}.portal-filter-input:focus{border-color:var(--portal-accent)}.portal-filter-select{border:1px solid var(--portal-border);background:var(--portal-surface);color:var(--portal-text);cursor:pointer;border-radius:.5rem;outline:none;padding:.5rem .875rem;font-size:.875rem}.portal-filter-checkbox-label{color:var(--portal-text-muted);cursor:pointer;white-space:nowrap;align-items:center;gap:.375rem;font-size:.875rem;display:flex}.portal-request-card{background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:.75rem;margin-bottom:1rem;padding:1.25rem}.portal-request-meta{color:var(--portal-text-muted);margin-bottom:.5rem;font-size:.8125rem}.portal-request-note{color:var(--portal-text);background:var(--portal-bg);border-radius:.375rem;margin:.75rem 0;padding:.625rem .875rem;font-size:.875rem;font-style:italic}.portal-request-actions{align-items:center;gap:.75rem;margin-top:1rem;display:flex}.portal-btn{cursor:pointer;border:none;border-radius:.5rem;align-items:center;gap:.375rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:background .15s;display:inline-flex}.portal-btn:disabled{opacity:.5;cursor:not-allowed}.portal-btn--primary{background:var(--portal-accent);color:#fff}.portal-btn--primary:hover:not(:disabled){background:#4a2d17}.portal-btn--ghost{border:1px solid var(--portal-border);color:var(--portal-text-muted);background:0 0}.portal-btn--ghost:hover:not(:disabled){background:var(--portal-bg)}.portal-btn--danger{background:var(--portal-red);color:#fff}.portal-btn--danger:hover:not(:disabled){background:#b91c1c}.portal-btn--success{background:var(--portal-green);color:#fff}.portal-btn--success:hover:not(:disabled){background:#15803d}.portal-inline-error{color:var(--portal-red);margin-top:.25rem;font-size:.75rem}.portal-count-badge{background:var(--portal-accent);color:#fff;border-radius:9999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;font-size:.6875rem;font-weight:700;display:inline-flex}.portal-checkbox-row{color:var(--portal-text);align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:.875rem;display:flex}.portal-back-link{color:var(--portal-text-muted);align-items:center;gap:.375rem;margin-bottom:1rem;font-size:.875rem;text-decoration:none;transition:color .15s;display:inline-flex}.portal-back-link:hover{color:var(--portal-accent)}:focus-visible{outline:2px solid var(--portal-accent);outline-offset:2px}.portal-user-inactive{opacity:.5}.portal-warning-icon{color:var(--portal-amber)}.portal-access-row{border-bottom:1px solid var(--portal-border);align-items:center;gap:1rem;padding:.875rem 1.5rem;display:flex}.portal-access-row:last-child{border-bottom:none}.portal-access-tool-name{color:var(--portal-text);min-width:10rem;font-size:.9375rem;font-weight:500}.portal-access-tool-desc{color:var(--portal-text-muted);flex:1;font-size:.8125rem}.portal-access-status{margin-right:.5rem}.portal-modal{width:min(32rem,100vw - 2rem);max-width:none;color:var(--portal-text);background:0 0;border:0;border-radius:.875rem;margin:auto;padding:0;box-shadow:0 24px 70px #24181038}.portal-modal::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1a13107a}.portal-modal-panel{border:1px solid var(--portal-border);background:var(--portal-surface);border-radius:.875rem;overflow:hidden}.portal-modal-header{border-bottom:1px solid var(--portal-border);justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.5rem 1.5rem 1.125rem;display:flex}.portal-modal-eyebrow{color:var(--portal-accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .3rem;font-size:.6875rem;font-weight:700}.portal-modal-title{color:var(--portal-text);margin:0;font-size:1.25rem;line-height:1.3}.portal-modal-close{width:2rem;height:2rem;color:var(--portal-text-muted);cursor:pointer;background:0 0;border:0;border-radius:.375rem;justify-content:center;align-items:center;padding:0;display:inline-flex}.portal-modal-close:hover:not(:disabled){background:var(--portal-bg);color:var(--portal-text)}.portal-modal-close:disabled{cursor:not-allowed;opacity:.5}.portal-modal-body{padding:1.35rem 1.5rem 1.5rem}.portal-modal-description{color:var(--portal-text-muted);margin:0 0 1.25rem;font-size:.875rem;line-height:1.55}.portal-modal-label{color:var(--portal-text);margin-bottom:.5rem;font-size:.875rem;font-weight:600;display:block}.portal-modal-label span{color:var(--portal-text-muted);font-weight:400}.portal-modal-footer{border-top:1px solid var(--portal-border);background:var(--portal-bg);justify-content:flex-end;gap:.625rem;padding:1rem 1.5rem;display:flex}.portal-modal-success{align-items:flex-start;gap:.875rem;display:flex}.portal-modal-success svg{color:var(--portal-green);flex:none}.portal-modal-success p{margin:0;font-size:.9375rem;line-height:1.6}.portal-textarea{border:1px solid var(--portal-border);background:var(--portal-surface);width:100%;color:var(--portal-text);resize:vertical;border-radius:.5rem;outline:none;padding:.625rem .875rem;font-family:inherit;font-size:.875rem;transition:border-color .15s}.portal-textarea:focus{border-color:var(--portal-accent);box-shadow:0 0 0 3px #6b42261a}@media (max-width:480px){.portal-modal{width:calc(100vw - 1rem)}.portal-modal-header,.portal-modal-body{padding-left:1.125rem;padding-right:1.125rem}.portal-modal-footer{padding:.875rem 1.125rem}}.portal-pagination{color:var(--portal-text-muted);justify-content:space-between;align-items:center;margin-top:1rem;font-size:.875rem;display:flex}.portal-section+.portal-section{margin-top:2.5rem}
