:root{--surface:#fff;--surface-muted:#f4f6f8;--text:#172026;--text-muted:#60707d;--line:#d7dde3;--teal:#147d75;--blue:#2459a6;--amber:#9b6816;--red:#b43636;--shadow:0 12px 30px #17202614}*{box-sizing:border-box}html{background:var(--surface-muted)}body{color:var(--text);background:var(--surface-muted);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{border:1px solid var(--line);background:var(--surface);width:min(420px,100%);box-shadow:var(--shadow);border-radius:8px;gap:18px;padding:28px;display:grid}.login-heading{gap:6px;display:grid}.login-heading span{color:var(--teal);letter-spacing:0;text-transform:uppercase;font-size:.76rem;font-weight:700}.login-heading h1{margin:0;font-size:1.8rem;line-height:1.12}.login-field{color:var(--text-muted);gap:7px;font-size:.9rem;font-weight:700;display:grid}.login-field input{border:1px solid var(--line);width:100%;min-height:42px;color:var(--text);font:inherit;border-radius:8px;padding:9px 11px;font-weight:400}.primary-button{border:1px solid var(--teal);background:var(--teal);color:#fff;cursor:pointer;border-radius:8px;min-height:42px;font-weight:700}.app-shell{min-height:100vh}.shell-header{border-bottom:1px solid var(--line);background:var(--surface)}.shell-header-inner{justify-content:space-between;align-items:end;gap:24px;width:min(1120px,100% - 32px);margin:0 auto;padding:28px 0 22px;display:flex}.brand-block{gap:6px;display:grid}.brand-kicker{color:var(--teal);letter-spacing:0;text-transform:uppercase;font-size:.76rem;font-weight:700}.brand-block h1{margin:0;font-size:clamp(1.65rem,2.5vw,2.35rem);line-height:1.08}.brand-block p{max-width:760px;color:var(--text-muted);margin:0;font-size:.98rem;line-height:1.55}.shell-navigation{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.shell-navigation-link{border:1px solid var(--line);background:var(--surface);min-height:36px;color:var(--text-muted);border-radius:8px;padding:8px 12px;font-size:.92rem}.shell-navigation-link[aria-current=page]{color:var(--text);background:#147d7514;border-color:#147d7559}.shell-main{width:min(1120px,100% - 32px);margin:0 auto;padding:28px 0 48px}.page-stack{gap:28px;display:grid}.admin-tabs{gap:10px;display:grid}.admin-tab-list{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:8px;padding-bottom:2px;display:flex}.admin-tab{border:1px solid var(--line);background:var(--surface);min-height:40px;color:var(--text-muted);text-align:center;border-bottom-color:#0000;border-radius:8px 8px 0 0;justify-content:center;align-items:center;padding:8px 13px;font-size:.93rem;font-weight:700;display:inline-flex}.admin-tab--active{border-color:#147d756b;border-bottom-color:var(--surface);color:var(--text);background:#147d7514}.admin-tab:focus-visible{outline-offset:2px;outline:3px solid #2459a62e}.admin-tab-panel{gap:24px;display:grid}.admin-overview{gap:18px}.admin-overview .section-heading>div{gap:6px;display:grid}.admin-overview-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.admin-overview-metric{border:1px solid var(--line);background:var(--surface);border-radius:8px;align-content:space-between;gap:14px;min-height:132px;padding:18px;display:grid}.admin-overview-metric span{color:var(--text-muted);letter-spacing:0;text-transform:uppercase;font-size:.8rem;font-weight:700}.admin-overview-metric strong{font-size:1.8rem;line-height:1}.admin-overview-metric p{color:var(--text-muted);margin:0;font-size:.9rem;line-height:1.45}.status-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.status-card{border:1px solid var(--line);background:var(--surface);min-height:138px;box-shadow:var(--shadow);border-radius:8px;align-content:space-between;gap:18px;padding:18px;display:grid}.status-card span{color:var(--text-muted);letter-spacing:0;text-transform:uppercase;font-size:.82rem;font-weight:700}.status-card strong{overflow-wrap:anywhere;font-size:1.55rem;line-height:1.12}.status-card p{color:var(--text-muted);margin:0;font-size:.92rem;line-height:1.45}.status-card--success{border-top:4px solid var(--teal)}.status-card--info{border-top:4px solid var(--blue)}.status-card--warning{border-top:4px solid var(--amber)}.status-card--danger{border-top:4px solid var(--red)}.content-band{border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:16px;padding:24px 0;display:grid}.content-band h2{margin:0;font-size:1.18rem}.section-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.section-heading span{color:var(--text-muted);font-size:.88rem}.data-class-manager{position:relative}.data-class-toolbar{align-items:flex-start}.data-class-toolbar>div{gap:6px;display:grid}.data-class-table-shell{border:1px solid var(--line);background:var(--surface);border-radius:8px;overflow-x:auto}.data-class-table{border-collapse:collapse;width:100%;min-width:720px}.data-class-table th,.data-class-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:14px 16px}.data-class-table th{color:var(--text-muted);letter-spacing:0;text-transform:uppercase;font-size:.82rem;font-weight:700}.data-class-table tr:last-child td{border-bottom:0}.data-class-row--selected td{background:#147d750f}.data-class-table td{overflow-wrap:anywhere}.data-class-actions{flex-wrap:wrap;gap:8px;display:flex}.data-class-fields,.data-class-permissions{gap:14px;padding-top:4px;display:grid}.data-class-fields-heading,.data-class-permissions-heading{align-items:flex-start}.data-class-fields-heading>div,.data-class-permissions-heading>div{gap:6px;display:grid}.data-class-field-list{border:1px solid var(--line);background:var(--surface);border-radius:8px;display:grid;overflow-x:auto}.data-class-permission-table-shell{border:1px solid var(--line);background:var(--surface);border-radius:8px;overflow-x:auto}.data-class-permission-table{border-collapse:collapse;width:100%;min-width:760px}.data-class-permission-table th,.data-class-permission-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:14px 16px}.data-class-permission-table th{color:var(--text-muted);letter-spacing:0;text-transform:uppercase;font-size:.82rem;font-weight:700}.data-class-permission-table tr:last-child td{border-bottom:0}.data-class-permission-table td{overflow-wrap:anywhere}.data-class-field-row{border-bottom:1px solid var(--line);grid-template-columns:72px minmax(130px,1fr) minmax(140px,1fr) minmax(100px,130px) minmax(84px,96px) minmax(120px,150px) minmax(96px,120px) minmax(82px,92px) minmax(170px,auto);align-items:center;gap:12px;min-width:1180px;padding:12px 14px;display:grid}.data-class-field-row:last-child{border-bottom:0}.data-class-field-row span,.data-class-field-row strong{overflow-wrap:anywhere}.data-class-field-row--head{color:var(--text-muted);letter-spacing:0;text-transform:uppercase;font-size:.82rem;font-weight:700}.data-class-field-row--dragged{opacity:.72;background:#2459a614}.drag-handle{border:1px solid var(--line);background:var(--surface-muted);width:36px;height:36px;color:var(--text-muted);cursor:grab;border-radius:6px;place-items:center;font-weight:700;display:grid}.data-class-field-row:active .drag-handle{cursor:grabbing}.form-section{border:0;border-bottom:1px solid var(--line);gap:14px;min-width:0;margin:0;padding:0 0 20px;display:grid}.form-section--with-action{padding-right:48px;position:relative}.form-section legend{padding:0;font-size:1rem;font-weight:700}.fieldset-action{position:absolute;top:0;right:0}.form-grid{gap:14px;display:grid}.form-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-field{gap:7px;min-width:0;display:grid}.form-field span,.checkbox-field span{color:var(--text-muted);font-size:.86rem;font-weight:700}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--line);background:var(--surface);width:100%;min-width:0;color:var(--text);font:inherit;border-radius:6px}.form-field input,.form-field select{min-height:42px;padding:9px 10px}.form-field textarea{resize:vertical;min-height:96px;padding:10px}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:#2459a6bf;outline:3px solid #2459a624}.metadata-field-list{gap:12px;display:grid}.metadata-field-row{grid-template-columns:minmax(140px,1fr) minmax(160px,1fr) minmax(120px,150px) minmax(112px,auto) 36px;align-items:end;gap:12px;min-width:0;display:grid}.checkbox-field{align-items:center;gap:8px;min-height:42px;padding-bottom:1px;display:flex}.checkbox-field input{width:18px;height:18px;accent-color:var(--teal)}.permission-rights{flex-wrap:wrap;gap:16px;display:flex}.icon-button{width:36px;height:36px;color:var(--text);cursor:pointer;background:#147d7514;border:1px solid #147d7573;border-radius:8px;place-items:center;font-size:1.2rem;font-weight:700;line-height:1;display:grid}.icon-button--muted{border-color:var(--line);background:var(--surface-muted);color:var(--text-muted)}.icon-button:disabled,.primary-action:disabled,.secondary-action:disabled,.danger-action:disabled{cursor:not-allowed;opacity:.58}.empty-inline{border:1px dashed var(--line);min-height:42px;color:var(--text-muted);border-radius:6px;padding:11px 12px}.form-actions{justify-content:flex-start;display:flex}.state-message-list{color:var(--text-muted);margin:0;padding-left:18px;line-height:1.55}.result-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.result-heading strong,.result-heading span{overflow-wrap:anywhere}.result-heading span{color:var(--teal);background:#147d7514;border:1px solid #147d7547;border-radius:999px;padding:5px 8px;font-size:.82rem;font-weight:700}.result-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0;display:grid}.result-grid div{min-width:0}.result-grid dt{color:var(--text-muted);font-size:.78rem;font-weight:700}.result-grid dd{overflow-wrap:anywhere;margin:4px 0 0}.result-table{border-top:1px solid var(--line);display:grid}.result-table-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(120px,1fr) minmax(140px,1fr) minmax(80px,120px) minmax(70px,90px);gap:12px;min-width:0;padding:10px 0;display:grid}.result-table-row span{overflow-wrap:anywhere}.result-table-row--head{color:var(--text-muted);font-size:.82rem;font-weight:700}.module-list{gap:10px;display:grid}.module-row{border-top:1px solid var(--line);grid-template-columns:minmax(160px,1fr) minmax(120px,180px) minmax(120px,180px);align-items:center;gap:12px;min-height:56px;padding:12px 0;display:grid}.module-row:first-child{border-top:0}.module-row strong,.module-row span{overflow-wrap:anywhere}.module-row span{color:var(--text-muted)}.module-admin-manager,.tenant-permission-manager{gap:18px}.module-admin-heading,.tenant-permission-heading{align-items:flex-start}.module-admin-heading>div,.tenant-permission-heading>div{gap:6px;display:grid}.module-admin-grid,.tenant-permission-grid{grid-template-columns:minmax(0,1.1fr) minmax(340px,.9fr);align-items:start;gap:22px;display:grid}.module-admin-column,.tenant-permission-column{gap:14px;min-width:0;display:grid}.module-admin-subheading,.tenant-permission-subheading{align-items:flex-start}.module-admin-subheading h3,.tenant-permission-subheading h3{margin:0;font-size:1rem}.module-admin-table-shell,.tenant-user-table-shell,.tenant-module-permission-table-shell,.tenant-overview-table-shell{border:1px solid var(--line);background:var(--surface);border-radius:8px;overflow-x:auto}.module-admin-table,.tenant-user-table,.tenant-module-permission-table,.tenant-overview-table{border-collapse:collapse;width:100%;min-width:680px}.tenant-module-permission-table{min-width:760px}.module-admin-table th,.module-admin-table td,.tenant-user-table th,.tenant-user-table td,.tenant-module-permission-table th,.tenant-module-permission-table td,.tenant-overview-table th,.tenant-overview-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:13px 14px}.module-admin-table th,.tenant-user-table th,.tenant-module-permission-table th,.tenant-overview-table th{color:var(--text-muted);letter-spacing:0;text-transform:uppercase;font-size:.8rem;font-weight:700}.module-admin-table tr:last-child td,.tenant-user-table tr:last-child td,.tenant-module-permission-table tr:last-child td,.tenant-overview-table tr:last-child td{border-bottom:0}.module-admin-table td>strong,.tenant-user-table td>strong,.tenant-module-permission-table td>strong,.tenant-overview-table td>strong,.module-admin-table td>span,.tenant-user-table td>span,.tenant-module-permission-table td>span,.tenant-overview-table td>span{overflow-wrap:anywhere;display:block}.module-admin-table td>span,.tenant-user-table td>span,.tenant-module-permission-table td>span,.tenant-overview-table td>span{color:var(--text-muted);margin-top:3px;font-size:.86rem}.module-admin-row--selected td,.tenant-user-row--selected td{background:#147d750f}.module-detail-panel,.tenant-assignment-panel{gap:14px;min-width:0;display:grid}.module-class-list{border-top:1px solid var(--line);display:grid}.module-class-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(140px,1fr) minmax(120px,180px) minmax(90px,120px);gap:12px;min-width:0;padding:10px 0;display:grid}.module-class-row strong,.module-class-row span{overflow-wrap:anywhere}.module-class-row span{color:var(--text-muted)}.result-grid--tenant{grid-template-columns:repeat(2,minmax(0,1fr))}.state-message{border:1px solid var(--line);background:var(--surface);border-radius:8px;gap:10px;padding:16px;display:grid}.state-message strong{font-size:1rem}.state-message-body{color:var(--text-muted);line-height:1.55}.state-message--info{border-left:4px solid var(--blue)}.state-message--success{border-left:4px solid var(--teal)}.state-message--warning{border-left:4px solid var(--amber)}.state-message--danger{border-left:4px solid var(--red)}.state-page{background:var(--surface-muted);place-items:center;min-height:100vh;padding:24px;display:grid}.primary-action{background:var(--teal);color:#fff;cursor:pointer;border:1px solid #147d7573;border-radius:8px;justify-content:center;align-items:center;width:fit-content;min-height:38px;padding:8px 14px;display:inline-flex}.secondary-action,.danger-action{cursor:pointer;text-align:center;border-radius:8px;justify-content:center;align-items:center;width:fit-content;min-height:38px;padding:8px 12px;display:inline-flex}.secondary-action{border:1px solid var(--line);background:var(--surface);color:var(--text)}.secondary-action--selected{color:var(--text);background:#147d7514;border-color:#147d756b}.danger-action{color:var(--red);background:#b4363614;border:1px solid #b4363670}.dialog-backdrop{z-index:20;background:#17202661;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.dialog-panel{border:1px solid var(--line);background:var(--surface);width:min(540px,100%);max-height:calc(100vh - 48px);box-shadow:var(--shadow);border-radius:8px;overflow:auto}.dialog-form{gap:16px;padding:20px;display:grid}.dialog-heading{justify-content:space-between;align-items:start;gap:12px;display:flex}.dialog-heading h3{margin:0;font-size:1.08rem}.dialog-text{color:var(--text-muted);overflow-wrap:anywhere;margin:0;line-height:1.55}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.tenant-permission-user-picker{max-width:440px}@media (max-width:820px){.shell-header-inner{flex-direction:column;align-items:start}.shell-navigation{justify-content:flex-start}.status-grid,.admin-overview-grid,.module-row,.module-admin-grid,.tenant-permission-grid,.module-class-row,.result-grid--tenant,.form-grid--two,.metadata-field-row,.result-grid,.result-table-row{grid-template-columns:1fr}.form-section--with-action{padding-right:0}.fieldset-action{position:static}.result-heading{flex-direction:column;align-items:flex-start}.data-class-toolbar,.data-class-fields-heading,.data-class-permissions-heading,.dialog-actions{flex-direction:column;align-items:stretch}.data-class-toolbar .primary-action,.data-class-fields-heading .primary-action,.data-class-permissions-heading .primary-action,.dialog-actions .primary-action,.dialog-actions .secondary-action,.dialog-actions .danger-action{width:100%}}@media (max-width:560px){.dialog-backdrop{align-items:end;padding:16px}.dialog-panel{width:100%;max-height:calc(100vh - 32px)}}
