:root{--color-canvas: #f8fafb;--color-surface: #ffffff;--color-surface-subtle: #f3f7f7;--color-text: #0f1b31;--color-muted: #607086;--color-border: #dbe3e8;--color-border-strong: #c5d1d8;--color-primary: #0f8178;--color-primary-strong: #09675f;--color-primary-soft: #eaf6f4;--color-info: #2874d0;--color-warning: #d58a08;--color-danger: #cf3e3e;--color-success: #14865b;--radius-sm: 6px;--radius-md: 9px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgb(15 27 49 / 5%);--shadow-md: 0 12px 32px rgb(15 27 49 / 8%);--focus-ring: 0 0 0 3px rgb(15 129 120 / 18%);color:var(--color-text);background:var(--color-canvas);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:geometricPrecision}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--color-canvas);overflow-x:hidden}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button,input,select,textarea{font:inherit}button{cursor:pointer}.boot{gap:12px;display:grid;min-height:100vh;place-items:center;color:#44546a}.boot__mark{display:grid;width:42px;height:42px;place-items:center;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;font-weight:800}.app-shell{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh}.app-shell--collapsed{grid-template-columns:72px minmax(0,1fr)}.sidebar{display:flex;flex-direction:column;gap:24px;border-right:1px solid #d9e0e8;background:var(--color-surface);padding:20px 14px}.app-shell--collapsed .brand>div:last-child,.app-shell--collapsed .nav-item span,.app-shell--collapsed .sidebar-collapse span:last-child{display:none}.app-shell--collapsed .brand,.app-shell--collapsed .nav-item,.app-shell--collapsed .sidebar-collapse{justify-content:center}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{display:grid;width:38px;height:38px;flex:0 0 auto;place-items:center;border-radius:8px;border:1px solid #a8d6d0;background:var(--color-primary-soft);color:var(--color-primary);color:#fff;font-size:13px;font-weight:800}.brand strong,.admin-chip strong{display:block;overflow:hidden;color:#16202a;font-size:14px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.brand span,.admin-chip span{display:block;overflow:hidden;color:#6a7888;font-size:12px;line-height:1.5;text-overflow:ellipsis;white-space:nowrap}nav{display:grid;gap:4px}.sidebar-collapse{display:flex;align-items:center;gap:10px;margin-top:auto;border:0;border-top:1px solid var(--color-border);background:transparent;padding:16px 10px 0;color:var(--color-muted)}.nav-item,.icon-button,.link-button,.secondary,.danger,.table-row,.tenant-item{border:1px solid transparent;background:transparent;color:#304052}.nav-item{display:flex;align-items:center;gap:10px;min-height:40px;border-radius:7px;padding:0 10px;text-align:left}.nav-item:hover,.nav-item.active{border-color:#c9d8e5;background:#eef6f6;color:#0d615b}.nav-item.active{position:relative}.nav-item.active:before{position:absolute;top:7px;bottom:7px;left:-11px;width:3px;border-radius:0 3px 3px 0;background:var(--color-primary);content:""}.main{min-width:0;padding:20px 24px 36px}.topbar{display:grid;grid-template-columns:minmax(210px,1fr) minmax(210px,300px) 40px auto 40px 40px;align-items:center;gap:10px;margin:-20px -24px 18px;border-bottom:1px solid var(--color-border);background:var(--color-surface);padding:14px 24px}.mobile-menu,.sidebar-backdrop,.icon-button.mobile-menu{display:none}.scope,.admin-chip,.mode-chip,.search,select,input,textarea{border:1px solid #d4dde7;border-radius:7px;background:#fff}.scope{padding:8px 12px}.scope span{display:block;color:#6a7888;font-size:11px}.scope strong{font-size:13px}.search{display:flex;align-items:center;gap:8px;padding:0 12px}.search input,label input,label select,textarea,select{width:100%;min-width:0;border:1px solid #d4dde7;border-radius:7px;color:#1d2a36;outline:none}.search input{height:38px;border:0}select,label input{height:40px;padding:0 10px}textarea{resize:vertical;padding:10px}.icon-button{display:grid;width:40px;height:40px;place-items:center;border-color:#d4dde7;border-radius:7px;background:#fff}.admin-chip{max-width:210px;padding:6px 10px}.mode-chip{display:flex;align-items:center;min-height:40px;padding:0 12px;color:#304052;font-size:13px;font-weight:700}.alert,.secret-box{margin-bottom:12px;border-radius:7px;padding:10px 12px;font-size:13px}.alert.error{border:1px solid #f0b7b1;background:#fff1ef;color:#9f2f24}.alert.success{border:1px solid #b7dccb;background:#edf9f3;color:#176848}.secret-box{display:grid;gap:6px;border:1px solid #f0ce8f;background:#fff8e8}.secret-box code{overflow-wrap:anywhere;color:#5f4200;font-size:12px}.content-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.9fr);gap:14px}.metric-row{display:grid;grid-column:1 / -1;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.metric,.panel{border:1px solid #d9e0e8;border-radius:8px;background:#fff;box-shadow:0 1px 2px #1018280a}.metric{padding:14px}.metric span{color:#647386;font-size:12px}.metric strong{display:block;margin-top:8px;font-size:26px;letter-spacing:0}.metric.teal{border-top:3px solid #0f766e}.metric.blue{border-top:3px solid #2f6fed}.metric.amber{border-top:3px solid #c47a12}.metric.green{border-top:3px solid #25865c}.panel{min-width:0;padding:14px}.panel.wide{min-height:320px}.panel.full{min-height:calc(100vh - 120px)}.split{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,.8fr);gap:14px}.stack{display:grid;gap:14px;align-content:start}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.panel-header h2{margin:0;color:#17202a;font-size:16px;line-height:1.3}.panel-header span{flex:0 0 auto;color:#68778a;font-size:12px}.panel-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.table{display:grid;gap:2px}.table-row{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(130px,.7fr) minmax(120px,.7fr) minmax(60px,.3fr);align-items:center;gap:12px;width:100%;min-height:54px;border-radius:6px;padding:8px 10px;text-align:left}.table-head{min-height:32px;background:#f3f6f8;color:#6a7888;font-size:12px;font-weight:700}.table-row:not(.table-head):hover,.table-row.selected{background:#edf6f6}.user-table .table-row{grid-template-columns:minmax(180px,1.2fr) minmax(190px,1fr) minmax(70px,.35fr) minmax(130px,auto)}.row-actions{display:inline-flex;justify-content:flex-end;gap:6px}.row-action{width:34px;height:34px;opacity:0;transition:opacity .12s ease}.table-row:hover .row-action,.table-row.selected .row-action,.row-action:focus-visible{opacity:1}.danger-icon{border-color:#f0b7b1;color:#9f2f24}.danger-icon:hover{background:#fff1ef}.table-row strong,.role-item strong{display:block;overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.table-row small,.role-item span{display:block;overflow:hidden;color:#6a7888;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.tenant-list,.role-list,.timeline,.form-panel{display:grid;gap:10px}.form-panel.inset{border:1px solid #d9e0e8;border-radius:7px;padding:12px}.group-summary{display:grid;gap:8px}.group-summary-item{display:grid;gap:4px;border:1px solid #d9e0e8;border-radius:7px;padding:10px}.group-summary-item span,.group-summary-item small{overflow:hidden;color:#6a7888;font-size:11px;text-overflow:ellipsis}.tenant-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:44px;border-color:#d9e0e8;border-radius:7px;padding:0 10px;text-align:left}.tenant-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tenant-item small{display:block;overflow:hidden;color:#6a7888;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.tenant-item.active{border-color:#72b8b3;background:#eef8f7}.role-item,.event-line,.token-item{display:flex;align-items:center;gap:10px;min-width:0}.role-item{border:1px solid #d9e0e8;border-radius:7px;padding:10px}.token-list{display:grid;gap:8px}.checkbox-list{display:grid;gap:8px;margin:4px 0 10px}.checkbox-row{display:flex;align-items:center;gap:10px;min-height:34px}.form-panel .checkbox-row{display:flex}.checkbox-row input{width:16px;height:16px}.token-item{justify-content:space-between;border:1px solid #d9e0e8;border-radius:7px;padding:8px}.token-item span{min-width:0}.event-line{min-height:34px;color:#37475a;font-size:13px}.event-line .green{color:#25865c}.event-line .blue{color:#2f6fed}.event-line .amber{color:#c47a12}.form-panel label{display:grid;gap:5px;color:#475568;font-size:12px;font-weight:700}.read-only-field{display:grid;gap:5px}.read-only-field span{color:#475568;font-size:12px;font-weight:700}.read-only-field code{overflow-wrap:anywhere;border:1px solid #d4dde7;border-radius:7px;background:#f3f6f8;padding:10px;color:#304052;font-size:12px}.primary,.secondary,.danger{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;border-radius:7px;padding:0 12px;font-weight:700}.link-button{justify-self:center;min-height:32px;padding:0;color:#0f766e;font-weight:700}.link-button:hover{color:#0a5751}.primary{border:1px solid #0f766e;background:#0f766e;color:#fff}.primary:disabled,.secondary:disabled,.danger:disabled{cursor:not-allowed;opacity:.55}.secondary{border-color:#d4dde7;background:#fff}.danger{border-color:#f0b7b1;background:#fff1ef;color:#9f2f24}input:disabled{background:#f3f6f8;color:#68778a}.checkbox-list{display:grid;gap:6px;max-height:180px;overflow:auto;border:1px solid #d9e0e8;border-radius:7px;padding:8px}.checkbox-list label{display:flex;align-items:center;gap:8px;font-weight:600}.checkbox-list span{min-width:0}.checkbox-list strong,.checkbox-list small{display:block}.checkbox-list small{color:#6a7888;font-size:11px}.checkbox-list input{width:16px;height:16px}.empty-state{display:grid;max-width:560px;gap:8px;color:#58697d}.empty-state.compact{gap:6px;font-size:13px}.login-screen{display:grid;min-height:100vh;place-items:center;background:linear-gradient(180deg,#f6f8faf0,#eef4f4f0),#f6f8fa;padding:24px}.login-panel{display:grid;width:min(420px,100%);gap:14px;border:1px solid #d9e0e8;border-radius:8px;background:#fff;padding:22px;box-shadow:0 18px 42px #1b2d401f}.login-brand{margin-bottom:6px}.modal-backdrop{position:fixed;z-index:10;inset:0;display:grid;place-items:center;background:#17202a6b;padding:18px}.modal-panel{width:min(520px,100%);max-height:min(720px,calc(100vh - 36px));overflow:auto;border:1px solid #d9e0e8;border-radius:8px;background:#fff;padding:16px;box-shadow:0 18px 42px #1b2d402e}.modal-header{display:grid;grid-template-columns:minmax(0,1fr) 40px;align-items:start;gap:10px}.modal-header .panel-header{margin-bottom:10px}@media(max-width:980px){.app-shell{grid-template-columns:76px minmax(0,1fr)}.brand div:last-child,.nav-item span{display:none}.topbar,.content-grid,.split,.metric-row{grid-template-columns:1fr}.admin-chip{max-width:none}}@media(max-width:680px){.main{padding:12px}.sidebar{padding:12px 8px}.table-row{grid-template-columns:1fr;align-items:start}}.page-heading{grid-column:1 / -1;margin:4px 0 2px}.page-section .panel.wide{min-height:0}.page-heading h1{margin:0;font-size:clamp(24px,2.5vw,32px);line-height:1.15;letter-spacing:-.025em}.page-heading p{margin:7px 0 0;color:var(--color-muted);font-size:14px}.button{display:inline-flex;min-height:38px;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--radius-sm);padding:0 14px;font-size:13px;font-weight:700}.button--primary{background:var(--color-primary);color:#fff}.button--primary:hover{background:var(--color-primary-strong)}.button--secondary{border-color:var(--color-border);background:#fff;color:var(--color-text)}.button--danger{border-color:#f1b9b9;background:#fff5f5;color:#a52727}.button--ghost{background:transparent;color:var(--color-muted)}.button__spinner{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .65s linear infinite}.field{display:grid;gap:7px}.field__label{color:#3e4d61;font-size:12px;font-weight:700}.field__hint,.field__error{font-size:11px}.field__hint{color:var(--color-muted)}.field__error{color:var(--color-danger)}.status-badge{display:inline-flex;align-items:center;gap:7px;color:var(--color-muted);font-size:12px;font-weight:650}.status-badge>span{width:7px;height:7px;border-radius:50%;background:#aab4c0}.status-badge--success>span{background:var(--color-success)}.status-badge--warning>span{background:var(--color-warning)}.status-badge--danger>span{background:var(--color-danger)}.skeleton{display:block;min-height:14px;border-radius:4px;background:linear-gradient(90deg,#eef2f4 25%,#f8fafb,#eef2f4 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{background-position:-200% 0}}@media(max-width:980px){.app-shell,.app-shell--collapsed{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;z-index:30;top:0;bottom:0;left:0;width:260px;transform:translate(-100%);box-shadow:var(--shadow-md);transition:transform .18s ease}.app-shell--mobile-open .sidebar{transform:translate(0)}.sidebar.sidebar--open{transform:translate(0)!important}.app-shell--mobile-open .brand>div:last-child,.app-shell--mobile-open .nav-item span,.app-shell--mobile-open .sidebar-collapse span:last-child{display:block}.app-shell--mobile-open .nav-item,.app-shell--mobile-open .brand,.app-shell--mobile-open .sidebar-collapse{justify-content:flex-start}.sidebar-backdrop{position:fixed;z-index:20;inset:0;border:0;background:#0f1b316b}.app-shell--mobile-open .sidebar-backdrop{display:block}.icon-button.mobile-menu{display:grid}.topbar{grid-template-columns:40px minmax(180px,1fr) minmax(180px,260px) 40px auto 40px 40px}}@media(max-width:720px){.main{padding:12px}.topbar{grid-template-columns:40px minmax(0,1fr) 40px 40px;margin:-12px -12px 16px;padding:10px 12px}.topbar .scope,.topbar .admin-chip{display:none}.topbar>select{min-width:0}.metric-row{grid-template-columns:repeat(2,minmax(0,1fr))}.panel,.metric{border-radius:var(--radius-md)}.table{min-width:0;overflow-x:auto}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
