:root{--bg:#fff;--surface:#fff;--surface-2:#f6f6f7;--border:#e4e4e7;--border-strong:#cfcfd4;--text:#111113;--muted:#6b6b73;--accent:#111113;--accent-text:#fff;--danger:#b42318;--danger-bg:#fef3f2;--ok:#067647;--warn-bg:#fffaeb;--warn-border:#f0d9a0;--warn-text:#9a6700;--radius:8px;--shadow:0 1px 2px #0000000d, 0 8px 24px #0000000f;--sidebar-w:232px;--sidebar-w-collapsed:60px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}[data-theme=dark]{--bg:#0b0b0c;--surface:#131315;--surface-2:#1b1b1e;--border:#27272b;--border-strong:#3a3a40;--text:#f2f2f3;--muted:#9a9aa3;--accent:#f2f2f3;--accent-text:#111113;--danger:#ff8a80;--danger-bg:#2a1513;--ok:#5fd39a;--warn-bg:#241e0e;--warn-border:#5b4b1c;--warn-text:#f0c36d;--shadow:0 1px 2px #0006, 0 8px 24px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}
*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0;font-size:14px;line-height:1.45}h1{margin:0;font-size:20px;font-weight:600}h2{margin:0;font-size:15px;font-weight:600}a{color:inherit}.muted{color:var(--muted)}.error{color:var(--danger);margin:0}.success{color:var(--ok);margin:0}.warn{color:var(--warn-text)}.stack{flex-direction:column;gap:12px;display:flex}.wide{max-width:980px}.row-gap{flex-wrap:wrap;align-items:center;gap:8px;display:flex}input,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;min-width:0;padding:7px 10px}input:focus,select:focus,.btn:focus-visible,.icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input:disabled{background:var(--surface-2);color:var(--muted)}.btn{font:inherit;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:7px 12px;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.btn.primary:hover:not(:disabled){opacity:.88;background:var(--accent)}.btn.danger{color:var(--danger)}.btn.small{padding:3px 8px;font-size:12.5px}.btn:disabled,.btn.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.icon-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:5px;display:inline-flex}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.field{flex-direction:column;gap:4px;display:flex}.field>span{color:var(--muted);font-size:12.5px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.card.notice{background:var(--surface-2)}.card.attention{background:var(--warn-bg);border-color:var(--warn-border)}.card p{margin:0}
.login-wrap{place-items:center;min-height:100vh;display:grid}.login-card{width:360px;box-shadow:var(--shadow);flex-direction:column;gap:12px;display:flex}.login-card p{margin:0}.brand-title{letter-spacing:-.02em;font-size:24px}.shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;display:grid}.shell.collapsed{grid-template-columns:var(--sidebar-w-collapsed) 1fr}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;height:100vh;padding:12px 8px;display:flex;position:sticky;top:0;overflow:hidden}.sidebar-top{justify-content:space-between;align-items:center;padding:4px 6px 12px;display:flex}.brand{letter-spacing:-.02em;font-size:16px;font-weight:700}.nav{flex-direction:column;flex:1;gap:12px;display:flex;overflow-y:auto}.nav-group{flex-direction:column;gap:2px;display:flex}.nav-group-title{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:4px 10px;font-size:11.5px}.nav-item{color:var(--muted);border-radius:6px;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;display:flex}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--surface-2);color:var(--text);font-weight:600}.sidebar-bottom{border-top:1px solid var(--border);padding-top:8px;position:relative}.user-btn{width:100%;color:var(--text);cursor:pointer;text-align:left;font:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;padding:6px;display:flex}.user-btn:hover{background:var(--surface-2)}.avatar{background:var(--accent);width:28px;height:28px;color:var(--accent-text);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.user-meta{flex-direction:column;min-width:0;display:flex}.user-meta strong{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.user-meta small{color:var(--muted)}.version{color:var(--muted);padding:6px 8px 0;font-size:12px}.menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:190px;box-shadow:var(--shadow);z-index:20;padding:4px;position:absolute;bottom:calc(100% - 4px);left:0;right:0}.menu-item{width:100%;color:var(--text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;display:flex}.menu-item:hover{background:var(--surface-2)}.collapsed .label,.collapsed .brand,.collapsed .nav-group-title{display:none}.collapsed .sidebar-top{justify-content:center;padding-inline:0}.collapsed .nav{gap:6px}.collapsed .nav-item,.collapsed .user-btn{justify-content:center}.collapsed .menu{width:200px;left:0;right:auto}.content{flex-direction:column;gap:16px;min-width:0;padding:24px 28px 48px;display:flex}.banner{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--radius);padding:10px 14px}.page-head{align-items:baseline;gap:12px;display:flex}
.table-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.table-card.dim{opacity:.6;transition:opacity .15s}.toolbar{justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.toolbar.wrap{flex-wrap:wrap;padding:0}.table-scroll{border-block:1px solid var(--border);max-height:calc(100vh - 230px);overflow:auto}.table-card>.table-scroll:last-child{border-bottom:0}.data-table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:max-content;min-width:100%}.data-table th,.data-table td{text-align:left;white-space:nowrap;border-bottom:1px solid var(--border);padding:8px 12px}.data-table thead th{background:var(--surface-2);z-index:2;font-size:12.5px;font-weight:600;position:sticky;top:0}.data-table thead tr.filter-row th{background:var(--surface);padding:6px 8px;font-weight:400;top:37px}.data-table tbody tr:hover td{background:var(--surface-2)}.data-table td.num{text-align:right}.data-table .truncate{text-overflow:ellipsis;max-width:280px;overflow:hidden}.empty{text-align:center;color:var(--muted);padding:32px!important}.th-btn{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;font-weight:600;display:inline-flex}.th-btn svg{width:14px;height:14px}.th-plain{font-weight:600}.filter-row input{width:0;min-width:100%;padding:4px 8px;font-size:12.5px}.filter-row th{min-width:104px}.filter-row th:empty{min-width:0}.filter-row input[type=date]{width:100%;min-width:130px}.range{flex-direction:column;gap:4px;display:flex}.range input{min-width:100%}.sticky-col{z-index:1;background:inherit;width:40px;position:sticky;left:0;padding-inline:6px!important}thead .sticky-col{z-index:3}tbody .sticky-col{background:var(--surface)}.pin-first thead th:first-child{z-index:4;position:sticky;top:0;left:0}.pin-first thead tr.filter-row th:first-child{top:37px}.pin-first tbody td:first-child{z-index:1;background:var(--surface);position:sticky;left:0}.skeleton{background:linear-gradient(90deg, var(--surface-2), var(--border), var(--surface-2));background-size:200% 100%;border-radius:4px;width:80%;min-width:48px;height:12px;animation:1.2s linear infinite shimmer;display:block}@keyframes shimmer{to{background-position:-200% 0}}.tabs{flex-wrap:wrap;gap:4px;display:flex}.tab{color:var(--muted);border-radius:6px;padding:6px 10px;text-decoration:none}.tab:hover{background:var(--surface-2)}.tab.active{background:var(--accent);color:var(--accent-text)}
.form-card{flex-direction:column;gap:14px;max-width:980px;display:flex}.form-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.dialog{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);max-width:440px;box-shadow:var(--shadow);padding:20px}.dialog::backdrop{background:#00000073}.dialog>*+*{margin-top:12px}.dialog p{margin:0}
.stats{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;padding:10px 12px;display:flex}.stat strong{font-size:20px}.stat span{color:var(--muted);font-size:12.5px}.stat.bad strong{color:var(--danger)}.badge{border:1px solid var(--border-strong);border-radius:999px;margin-right:4px;padding:1px 8px;font-size:12px;display:inline-block}.badge.invalid,.badge.conflict{color:var(--danger);border-color:var(--danger)}.badge.new{border-color:var(--ok);color:var(--ok)}.badge.dup{border-color:var(--border-strong);color:var(--muted)}.review td.details{white-space:normal;min-width:260px;max-width:520px}.review tr.row-muted td{opacity:.55}.review tr.row-bad td{background:var(--danger-bg)}.review tr.row-warn td{background:var(--warn-bg)}.diff{border-collapse:collapse;margin-top:6px;font-size:12.5px}.diff th,.diff td{border:0;padding:2px 10px 2px 0;position:static;background:0 0!important}.sticky-actions{background:var(--bg);border-top:1px solid var(--border);padding:12px 0;position:sticky;bottom:0}
details.legend{display:block}details.legend>summary{cursor:pointer;font-weight:600}details.legend[open]>summary{margin-bottom:8px}details.legend ul{color:var(--muted);flex-direction:column;gap:3px;margin:0;padding-left:18px;display:flex}.legend a{text-decoration:underline}.rebuild-box{border-top:1px solid var(--border);margin-top:12px;padding-top:12px}.rebuild-box p{color:var(--muted);margin:0}
