@charset "UTF-8";:root{--bg: oklch(.985 .003 80);--bg-elevated: oklch(1 0 0);--bg-subtle: oklch(.97 .004 80);--bg-hover: oklch(.955 .005 80);--border: oklch(.91 .005 80);--border-strong: oklch(.85 .006 80);--text: oklch(.22 .01 60);--text-muted: oklch(.5 .01 60);--text-faint: oklch(.65 .008 60);--accent: oklch(.45 .12 25);--accent-hover: oklch(.4 .13 25);--accent-soft: oklch(.95 .025 25);--accent-text: oklch(.45 .12 25);--success: oklch(.55 .11 150);--success-soft: oklch(.96 .02 150);--warning: oklch(.65 .13 75);--warning-soft: oklch(.96 .03 75);--danger: oklch(.55 .18 25);--danger-soft: oklch(.96 .025 25);--radius: 6px;--radius-lg: 10px;--radius-sm: 4px;--shadow-sm: 0 1px 2px oklch(0 0 0 / .04);--shadow: 0 1px 3px oklch(0 0 0 / .06), 0 1px 2px oklch(0 0 0 / .04);--shadow-lg: 0 4px 16px oklch(0 0 0 / .08), 0 2px 4px oklch(0 0 0 / .04);--row-h: 40px;--pad-x: 24px;--pad-y: 20px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}[data-theme=dark]{--bg: oklch(.16 .005 60);--bg-elevated: oklch(.2 .006 60);--bg-subtle: oklch(.18 .005 60);--bg-hover: oklch(.23 .007 60);--border: oklch(.28 .008 60);--border-strong: oklch(.36 .01 60);--text: oklch(.95 .005 80);--text-muted: oklch(.7 .008 60);--text-faint: oklch(.55 .008 60);--accent: oklch(.65 .14 25);--accent-hover: oklch(.7 .15 25);--accent-soft: oklch(.28 .05 25);--accent-text: oklch(.78 .13 25);--success-soft: oklch(.28 .04 150);--warning-soft: oklch(.3 .05 75);--danger-soft: oklch(.3 .05 25);--shadow-sm: 0 1px 2px oklch(0 0 0 / .3);--shadow: 0 1px 3px oklch(0 0 0 / .4), 0 1px 2px oklch(0 0 0 / .3);--shadow-lg: 0 4px 16px oklch(0 0 0 / .5)}[data-density=compact]{--row-h: 32px;--pad-x: 16px;--pad-y: 14px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:var(--font-sans);font-size:13.5px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv02","cv03","cv04","cv11"}app-root{display:block;min-height:100vh}a{color:inherit}::selection{background:var(--accent-soft);color:var(--accent-text)}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}.h2{font-size:16px;font-weight:600;margin:0;letter-spacing:-.01em}.h3{font-size:13.5px;font-weight:600;margin:0}.section-title{font-size:11.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 10px}.shell{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;height:52px;padding:0 var(--pad-x);border-bottom:1px solid var(--border);background:var(--bg-elevated);position:sticky;top:0;z-index:50;gap:24px}.brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:13.5px;letter-spacing:-.01em;color:var(--text);white-space:nowrap}.brand-mark{width:22px;height:22px;border-radius:5px;background:var(--accent);color:#f8f8f8;display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:-.02em}.brand-sub{color:var(--text-muted);font-weight:400;margin-left:2px}.nav-tabs{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none}.nav-tabs::-webkit-scrollbar{display:none}.nav-tab{appearance:none;background:transparent;border:0;font:inherit;color:var(--text-muted);padding:6px 10px;border-radius:var(--radius);cursor:pointer;white-space:nowrap;position:relative;font-size:13px;display:inline-flex;align-items:center;gap:6px;text-decoration:none}.nav-tab:hover{background:var(--bg-hover);color:var(--text)}.nav-tab.active{color:var(--text);background:var(--bg-hover);font-weight:500}.nav-tab .badge{background:var(--accent-soft);color:var(--accent-text);font-size:10.5px;padding:1px 5px;border-radius:3px;font-variant-numeric:tabular-nums;font-weight:500}.user-chip{display:flex;align-items:center;gap:8px;padding:4px 6px 4px 4px;border-radius:var(--radius);cursor:pointer;border:0;background:transparent;font:inherit;color:var(--text)}.user-chip:hover{background:var(--bg-hover)}.role-pill{font-size:10.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);padding:2px 6px;border:1px solid var(--border);border-radius:3px;font-family:var(--font-mono)}.main{flex:1;padding:28px var(--pad-x) 64px;max-width:1240px;width:100%;margin:0 auto}.main.narrow{max-width:760px}.main.wide{max-width:none;padding-left:32px;padding-right:32px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border)}.page-head h1{font-size:22px;font-weight:600;letter-spacing:-.015em;margin:0 0 4px}.page-head .desc{color:var(--text-muted);font-size:13px;margin:0}.page-head-actions{display:flex;gap:8px;align-items:center}.crumbs{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-faint);margin-bottom:6px}.crumbs a{color:var(--text-muted);text-decoration:none;cursor:pointer}.crumbs a:hover{color:var(--text)}.crumbs .sep{opacity:.5}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg)}.login-card{width:100%;max-width:380px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:32px;text-align:center}.login-mark{width:40px;height:40px;border-radius:9px;background:var(--accent);color:#fff;display:grid;place-items:center;margin:0 auto 18px;font-family:var(--font-mono);font-weight:600;font-size:16px}@media (max-width: 720px){.topbar{gap:12px;padding:0 16px}.main{padding:20px 16px 48px}}.btn{appearance:none;border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text);font:inherit;font-size:13px;font-weight:500;padding:6px 12px;height:32px;border-radius:var(--radius);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .08s,border-color .08s;white-space:nowrap;text-decoration:none}.btn:hover{background:var(--bg-hover)}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#f8f8f8}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--bg-hover)}.btn-sm{height:26px;padding:3px 8px;font-size:12px}.btn-icon{width:28px;height:28px;padding:0;justify-content:center}.btn-danger{color:var(--danger);border-color:var(--border-strong)}.btn-danger:hover{background:var(--danger-soft)}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.card-head{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}.card-head h3{font-size:13.5px;font-weight:600;margin:0;letter-spacing:-.005em}.card-head .desc{color:var(--text-muted);font-size:12px;margin:0}.card-body{padding:16px}.card-body.flush{padding:0}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:24px}.stat{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px}.stat-label{font-size:11.5px;color:var(--text-muted);font-weight:500;letter-spacing:.01em;display:flex;align-items:center;gap:6px}.stat-value{font-size:26px;font-weight:600;letter-spacing:-.02em;margin-top:4px;font-variant-numeric:tabular-nums}.stat-sub{font-size:11.5px;color:var(--text-faint);margin-top:2px}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th,.tbl td{text-align:left;padding:0 14px;height:var(--row-h);border-bottom:1px solid var(--border);vertical-align:middle}.tbl th{font-size:11.5px;font-weight:500;color:var(--text-muted);letter-spacing:.02em;background:var(--bg-subtle);border-bottom:1px solid var(--border);position:sticky;top:0}.tbl tbody tr{cursor:pointer}.tbl tbody tr:hover{background:var(--bg-subtle)}.tbl tbody tr:last-child td{border-bottom:0}.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}.tbl td.actions{text-align:right}.tbl .row-checkbox{width:28px;padding-right:0}.tbl-toolbar{display:flex;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-elevated)}.tbl-toolbar .grow{flex:1}.input,.select,.textarea{appearance:none;border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text);font:inherit;font-size:13px;padding:6px 10px;height:32px;border-radius:var(--radius);width:100%}.select{padding-right:32px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 20 20' fill='none' stroke='%236f6861' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M5 7.5l5 5 5-5'/></svg>");background-repeat:no-repeat;background-position:right 10px center}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.textarea{height:auto;min-height:80px;padding:8px 10px;resize:vertical;line-height:1.5}.input-error{border-color:var(--danger)}.input-error:focus{box-shadow:0 0 0 3px var(--danger-soft)}.search-input{background:var(--bg-subtle);border-color:var(--border);height:28px;padding-left:28px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2399918a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='7'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>");background-repeat:no-repeat;background-position:8px center;width:240px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field-row{display:grid;gap:16px;grid-template-columns:1fr 1fr}.field-label{font-size:12.5px;font-weight:500;color:var(--text);display:flex;justify-content:space-between}.field-label .req{color:var(--danger)}.field-label .opt{color:var(--text-faint);font-weight:400}.field-help{font-size:12px;color:var(--text-muted)}.field-error{font-size:12px;color:var(--danger);display:flex;align-items:center;gap:4px}.charcount{font-size:11.5px;color:var(--text-faint);font-variant-numeric:tabular-nums}.check{width:16px;height:16px;border:1px solid var(--border-strong);border-radius:3px;background:var(--bg-elevated);display:inline-grid;place-items:center;cursor:pointer;flex-shrink:0}.check.checked{background:var(--accent);border-color:var(--accent)}.check.checked:after{content:"";width:8px;height:4px;border:1.5px solid white;border-top:0;border-right:0;transform:rotate(-45deg) translateY(-1px)}@media (max-width: 720px){.field-row{grid-template-columns:1fr}}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;padding:2px 7px;border-radius:10px;background:var(--bg-subtle);color:var(--text-muted);border:1px solid var(--border);white-space:nowrap}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.pill-success{color:var(--success);background:var(--success-soft);border-color:transparent}.pill-warning{color:oklch(.5 .13 75);background:var(--warning-soft);border-color:transparent}.pill-danger{color:var(--danger);background:var(--danger-soft);border-color:transparent}.pill-accent{color:var(--accent-text);background:var(--accent-soft);border-color:transparent}.pill-neutral{color:var(--text-muted)}.empty{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-icon{width:44px;height:44px;margin:0 auto 14px;border:1px dashed var(--border-strong);border-radius:10px;display:grid;place-items:center;color:var(--text-faint)}.empty h3{font-size:14px;font-weight:600;color:var(--text);margin:0 0 4px}.empty p{font-size:13px;margin:0 0 16px;max-width:360px;margin-inline:auto}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:200px 0}}.skel{background:linear-gradient(90deg,var(--bg-subtle) 0%,var(--bg-hover) 50%,var(--bg-subtle) 100%);background-size:400px 100%;animation:shimmer 1.4s linear infinite;border-radius:4px;height:12px}.row{display:flex;align-items:center;gap:8px}.col{display:flex;flex-direction:column;gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-24{gap:24px}.grow{flex:1}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.mono{font-family:var(--font-mono);font-size:12px}.right{text-align:right}.tabnum{font-variant-numeric:tabular-nums}.divider{height:1px;background:var(--border);margin:16px 0}
