:root{--color-primary: #7c3aed;--color-primary-hover: #6d28d9;--color-primary-active: #5b21b6;--color-primary-50: #f5f3ff;--color-primary-100: #ede9fe;--color-primary-200: #ddd6fe;--color-primary-light: #a78bfa;--color-on-primary: #ffffff;--color-accent-tint: rgba(124, 58, 237, .08);--color-bg: #f5f7fb;--color-surface: #ffffff;--color-surface-elevated: #ffffff;--color-border: #e2e8f0;--color-border-strong: #cbd5e1;--color-divider: #f1f5f9;--color-overlay: rgba(15, 23, 42, .5);--color-text: #0f172a;--color-text-muted: #64748b;--color-text-subtle: #94a3b8;--color-success: #16a34a;--color-success-bg: #d1fae5;--color-success-fg: #065f46;--color-warning: #d97706;--color-warning-bg: #fef3c7;--color-warning-fg: #92400e;--color-danger: #dc2626;--color-danger-bg: #fee2e2;--color-danger-fg: #991b1b;--color-info: #2563eb;--color-info-bg: #dbeafe;--color-info-fg: #1e40af;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 22px;--font-size-3xl: 28px;--line-height-base: 1.5;--line-height-tight: 1.3;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 40px;--space-8: 48px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 999px;--shadow-xs: 0 1px 1px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 16px rgba(15, 23, 42, .06), 0 2px 4px rgba(15, 23, 42, .04);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .1), 0 4px 8px rgba(15, 23, 42, .04);--shadow-focus: 0 0 0 3px var(--color-primary-100);--sidebar-width: 232px;--header-height: 56px;--container-max: 1280px;--t-fast: .12s;--t-base: .18s}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100vh}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em;line-height:var(--line-height-tight)}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}h4{font-size:var(--font-size-base)}p{margin:0}a{color:var(--color-primary);text-decoration:none;transition:color var(--t-fast) ease}a:hover{color:var(--color-primary-hover)}button{font-family:inherit}code{font-family:var(--font-mono);font-size:.9em;background:var(--color-divider);padding:1px 6px;border-radius:var(--radius-sm);color:var(--color-text)}::selection{background:var(--color-primary-200);color:var(--color-text)}.field-label{display:flex;flex-direction:column;gap:var(--space-1);flex:1;min-width:0}.field-label__title{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:500}.field-label__hint{font-size:var(--font-size-xs);color:var(--color-text-subtle)}.input,.select,.textarea{width:100%;padding:9px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-base);font-family:inherit;transition:border-color var(--t-fast) ease,box-shadow var(--t-fast) ease}.input::placeholder,.textarea::placeholder{color:var(--color-text-subtle)}.input:hover,.select:hover,.textarea:hover{border-color:var(--color-border-strong)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--color-divider);color:var(--color-text-muted);cursor:not-allowed}.textarea{font-family:inherit;resize:vertical}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%2364748b' d='M5 6L0 0h10z'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 14px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text);font-family:inherit;font-size:var(--font-size-sm);font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;transition:background var(--t-fast) ease,border-color var(--t-fast) ease,color var(--t-fast) ease,box-shadow var(--t-fast) ease;text-decoration:none}.btn:disabled{cursor:not-allowed;opacity:.5}.btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.btn-primary{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-on-primary)}.btn-primary:active:not(:disabled){background:var(--color-primary-active);border-color:var(--color-primary-active)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){border-color:var(--color-border-strong);background:var(--color-bg)}.btn-ghost{background:transparent;color:var(--color-text)}.btn-ghost:hover:not(:disabled){background:var(--color-divider)}.btn-danger{background:transparent;color:var(--color-danger);border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger-bg)}.btn-link{background:transparent;border:none;padding:4px 6px;color:var(--color-primary)}.btn-link:hover:not(:disabled){color:var(--color-primary-hover);text-decoration:underline}.btn-sm{padding:6px 10px;font-size:var(--font-size-xs)}.btn-lg{padding:12px 18px;font-size:var(--font-size-base)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.card-padding{padding:var(--space-5)}.card-padding-sm{padding:var(--space-4)}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--font-size-base)}.table thead th{text-align:left;padding:10px 14px;font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-bg);border-bottom:1px solid var(--color-border)}.table thead th:first-child{border-top-left-radius:var(--radius-lg)}.table thead th:last-child{border-top-right-radius:var(--radius-lg)}.table tbody td{padding:12px 14px;border-bottom:1px solid var(--color-divider);vertical-align:top}.table tbody tr:last-child td{border-bottom:none}.table tbody tr.row-clickable{cursor:pointer;transition:background var(--t-fast) ease}.table tbody tr.row-clickable:hover{background:var(--color-primary-50)}.table-wrapper{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-xs)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;letter-spacing:.02em;white-space:nowrap}.badge-neutral{background:var(--color-divider);color:var(--color-text-muted)}.badge-primary{background:var(--color-primary-100);color:var(--color-primary-active)}.badge-success{background:var(--color-success-bg);color:var(--color-success-fg)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning-fg)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger-fg)}.badge-info{background:var(--color-info-bg);color:var(--color-info-fg)}.muted{color:var(--color-text-muted)}.subtle{color:var(--color-text-subtle)}.mono{font-family:var(--font-mono);font-size:.85em}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes toastIn{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}@keyframes dialogIn{0%{transform:translateY(-4px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.4);opacity:.6}}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@media (max-width: 800px){:root{--sidebar-width: 64px}}
