:root{--bg:#f7f7f5;--surface:#fff;--text:#111;--text-secondary:#5c5c5c;--text-muted:#8a8a8a;--hairline:#e5e5e2;--focus:#111;--danger:#8a2b2b;--ok:#1f5c3d;--sidebar-width:220px;--font:"IBM Plex Sans", "Source Han Sans SC", "Noto Sans SC", "PingFang SC", "Helvetica Neue", Arial, sans-serif;--font-display:"IBM Plex Sans", "Source Han Sans SC", "Noto Sans SC", "PingFang SC", "Helvetica Neue", Arial, sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:1px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.signin{justify-content:center;align-items:center;min-height:100vh;padding:2.5rem 1.25rem 3rem;display:flex}.signin-inner{text-align:center;width:min(360px,100%)}.signin-mark{width:44px;height:44px;margin:0 auto 1.25rem}.signin-wordmark{font-family:var(--font-display);letter-spacing:.42em;text-indent:.42em;margin:0 0 2.75rem;font-size:.72rem;font-weight:500}.signin-identity{letter-spacing:.02em;margin:0 0 .35rem;font-size:1.35rem;font-weight:500}.signin-role{color:var(--text-secondary);margin:0 0 1.75rem;font-size:.92rem}.field{text-align:left;margin-bottom:1rem}.field label{letter-spacing:.08em;color:var(--text-secondary);margin-bottom:.45rem;font-size:.78rem;display:block}.field input,.field select,.field textarea{border:1px solid var(--hairline);background:var(--surface);border-radius:0;width:100%;padding:.7rem .8rem}.password-row{border:1px solid var(--hairline);background:var(--surface);grid-template-columns:1fr auto;gap:0;display:grid}.password-row input{border:0}.arrow-submit{cursor:pointer;background:0 0;border:0;width:2.75rem;font-size:1.15rem;line-height:1}.arrow-submit:disabled{opacity:.35;cursor:not-allowed}.signin-links{color:var(--text-secondary);flex-direction:column;gap:.75rem;margin-top:1.5rem;font-size:.88rem;display:flex}.signin-links button{cursor:pointer;color:inherit;background:0 0;border:0;padding:0}.form-error{color:var(--danger);text-align:left;margin:0 0 1rem;font-size:.88rem}.form-status{color:var(--ok);margin:0 0 1rem;font-size:.88rem}.shell{grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:52px 1fr;grid-template-areas:"top top""side main";min-height:100vh;display:grid}.shell-top{border-bottom:1px solid var(--hairline);background:var(--surface);grid-area:top;justify-content:space-between;align-items:center;padding:0 1.25rem;display:flex}.shell-brand{align-items:center;gap:.65rem;display:flex}.shell-brand img{width:22px;height:22px}.shell-brand span{letter-spacing:.28em;font-size:.72rem;font-weight:500}.shell-user{position:relative}.shell-user>button{cursor:pointer;background:0 0;border:0;font-size:.92rem}.shell-menu{background:var(--surface);border:1px solid var(--hairline);z-index:20;min-width:160px;padding:.35rem 0;position:absolute;top:calc(100% + .4rem);right:0}.shell-menu button{text-align:left;cursor:pointer;background:0 0;border:0;width:100%;padding:.55rem .9rem;font-size:.9rem;display:block}.shell-menu button:hover{background:#f2f2ef}.shell-side{border-right:1px solid var(--hairline);background:var(--surface);grid-area:side;padding:1rem .75rem 2rem;overflow:auto}.nav-section{margin-bottom:1.1rem}.nav-section-label,.nav-link{padding:.35rem .55rem;font-size:.9rem;display:block}.nav-section-label{color:var(--text-muted);letter-spacing:.04em;margin-bottom:.15rem;font-size:.78rem}.nav-link{color:var(--text-secondary);border-left:2px solid #0000}.nav-link.active{color:var(--text);border-left-color:var(--text)}.nav-link.disabled,.nav-link[aria-disabled=true]{opacity:.45;cursor:default}.nav-child{padding-left:1.1rem;font-size:.86rem}.shell-main{grid-area:main;padding:1.5rem 1.75rem 2.5rem;overflow:auto}.page-title{margin:0 0 .35rem;font-size:1.35rem;font-weight:500}.page-sub{color:var(--text-secondary);margin:0 0 1.5rem;font-size:.92rem}.toolbar{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.btn{border:1px solid var(--text);background:var(--text);color:#fff;cursor:pointer;padding:.45rem .85rem;font-size:.88rem}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-ghost{color:var(--text);background:0 0}.btn-danger{border-color:var(--danger);color:var(--danger);background:0 0}.table-wrap{border:1px solid var(--hairline);background:var(--surface);overflow:auto}table.data{border-collapse:collapse;width:100%;font-size:.9rem}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--hairline);white-space:nowrap;padding:.7rem .85rem}table.data th{color:var(--text-secondary);letter-spacing:.04em;font-size:.78rem;font-weight:500}table.data tr:last-child td{border-bottom:0}.row-actions{gap:.65rem;display:flex}.row-actions button{cursor:pointer;color:var(--text-secondary);text-underline-offset:2px;background:0 0;border:0;padding:0;font-size:.86rem;text-decoration:underline}.panel{border:1px solid var(--hairline);background:var(--surface);max-width:560px;padding:1.1rem 1.15rem}.panel .field{margin-bottom:.85rem}.panel-actions{flex-wrap:wrap;gap:.6rem;margin-top:1rem;display:flex}.toast{background:var(--text);color:#fff;z-index:40;padding:.65rem .9rem;font-size:.88rem;position:fixed;bottom:1.25rem;right:1.25rem}.coming{color:var(--text-muted);margin-top:2rem;font-size:.95rem}.perm-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--hairline);width:100%;font-size:.88rem}.perm-table th,.perm-table td{border-bottom:1px solid var(--hairline);text-align:center;padding:.55rem .7rem}.perm-table th:first-child,.perm-table td:first-child{text-align:left}.perm-table tr:last-child td{border-bottom:0}.role-tabs{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.role-tabs button{border:1px solid var(--hairline);background:var(--surface);cursor:pointer;padding:.4rem .7rem;font-size:.88rem}.role-tabs button.active{border-color:var(--text)}.boot{min-height:100vh;color:var(--text-muted);place-items:center;font-size:.9rem;display:grid}.work-grid{gap:.85rem;max-width:640px;display:grid}.work-item{border:1px solid var(--hairline);background:var(--surface);padding:.9rem 1rem}.work-item h3{margin:0 0 .25rem;font-size:.98rem;font-weight:500}.work-item p{color:var(--text-muted);margin:0;font-size:.86rem}.dialog-backdrop{z-index:30;background:#11111147;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border:1px solid var(--hairline);width:min(420px,100%);padding:1.15rem 1.2rem}.dialog h2{margin:0 0 .5rem;font-size:1.05rem;font-weight:500}.dialog p{color:var(--text-secondary);margin:0 0 1rem;font-size:.9rem}.dialog-wide{width:min(720px,100%)}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;margin-bottom:1rem;display:flex}.filter-bar label{letter-spacing:.04em;color:var(--text-secondary);flex-direction:column;gap:.35rem;font-size:.78rem;display:flex}.filter-bar input,.filter-bar select{border:1px solid var(--hairline);background:var(--surface);min-width:140px;color:var(--text);border-radius:0;padding:.5rem .65rem}.ops-table{border-collapse:collapse;background:var(--surface);width:100%;font-size:.88rem}.ops-table th,.ops-table td{text-align:left;border-bottom:1px solid var(--hairline);vertical-align:top;padding:.65rem .8rem}.ops-table th{color:var(--text-secondary);letter-spacing:.04em;white-space:nowrap;font-size:.76rem;font-weight:500}.ops-table tr:last-child td{border-bottom:0}.dropzone{border:1px dashed var(--text-muted);background:var(--surface);text-align:center;margin-bottom:1.25rem;padding:2rem 1.25rem}.dropzone.is-active{border-color:var(--text);background:#f2f2ef}.dropzone p{color:var(--text-secondary);margin:0 0 .85rem;font-size:.92rem}.upload-queue{border:1px solid var(--hairline);background:var(--surface);overflow:auto}.progress-track{align-items:center;gap:.5rem;min-width:120px;display:flex}.progress-fill{background:var(--text);flex:1;max-width:80px;height:2px}.progress-indeterminate{color:var(--text-secondary);font-size:.86rem}.status-text{font-weight:500}.muted-line{color:var(--text-muted);margin-top:.25rem;font-size:.82rem}.danger-text{color:var(--danger)}.stat-row{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);flex-wrap:wrap;gap:1rem 1.75rem;margin-bottom:1.25rem;padding:.85rem 0;display:flex}.stat-label{letter-spacing:.06em;color:var(--text-muted);margin-bottom:.2rem;font-size:.72rem;display:block}.section-title{margin:0 0 .65rem;font-size:.98rem;font-weight:500}.pager{color:var(--text-secondary);justify-content:space-between;align-items:center;margin-top:.85rem;font-size:.86rem;display:flex}.pager .row-actions button:disabled{opacity:.35;cursor:not-allowed}@media (width<=900px){.shell{grid-template-columns:1fr;grid-template-areas:"top""main"}.shell-side{display:none}}
