:root{color-scheme:light;--color-bg: #f4f5f8;--color-surface: #ffffff;--color-border: #e3e5eb;--color-text: #1a1d29;--color-text-muted: #6b7280;--color-text-subtle: #9297a3;--color-primary: #4f46e5;--color-primary-hover: #4338ca;--color-primary-soft: #eef2ff;--color-primary-contrast: #ffffff;--color-danger: #dc2626;--color-danger-bg: #fef2f2;--color-danger-border: #fecaca;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow-md: 0 8px 24px rgba(16, 24, 40, .08);--shadow-lg: 0 20px 48px rgba(16, 24, 40, .16);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--sidebar-width: 264px;--topbar-height: 68px;--color-success-bg: #ecfdf5;--color-success-text: #059669}:root[data-theme=dark]{color-scheme:dark;--color-bg: #0f1117;--color-surface: #171a23;--color-border: #272c3a;--color-text: #e5e7eb;--color-text-muted: #9ca3af;--color-text-subtle: #6b7280;--color-primary: #6366f1;--color-primary-hover: #818cf8;--color-primary-soft: rgba(99, 102, 241, .16);--color-primary-contrast: #ffffff;--color-danger: #f87171;--color-danger-bg: rgba(220, 38, 38, .16);--color-danger-border: #7f1d1d;--color-success-bg: rgba(5, 150, 105, .16);--color-success-text: #34d399;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 8px 24px rgba(0, 0, 0, .35);--shadow-lg: 0 20px 48px rgba(0, 0, 0, .5)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,p{margin:0}button,input{font-family:inherit;color:inherit}a{color:inherit;text-decoration:none}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--radius-sm);padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}.button:disabled{cursor:not-allowed;opacity:.65}.button--primary{background:var(--color-primary);color:var(--color-primary-contrast)}.button--primary:hover:not(:disabled){background:var(--color-primary-hover)}.button--ghost{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text)}.button--ghost:hover:not(:disabled){background:var(--color-bg)}.button--danger{background:var(--color-danger);color:#fff}.button--danger:hover:not(:disabled){background:#b91c1c}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:background-color .15s ease,color .15s ease}.icon-button:hover{background:var(--color-bg);color:var(--color-primary)}.icon-button--danger:hover{color:var(--color-danger)}.field{display:flex;flex-direction:column;gap:6px}.field__label{font-size:13px;font-weight:600;color:var(--color-text)}.field__input{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px;background:var(--color-surface);width:100%;transition:border-color .15s ease,box-shadow .15s ease}.field__input::placeholder{color:var(--color-text-subtle)}.field__input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.field__error{font-size:12px;color:var(--color-danger)}.alert{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);color:var(--color-danger);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.checkbox-field{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500}.checkbox-field input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge--success{background:var(--color-success-bg);color:var(--color-success-text)}.badge--muted{background:var(--color-bg);color:var(--color-text-muted)}.badge--info{background:var(--color-primary-soft);color:var(--color-primary)}.badge--danger{background:var(--color-danger-bg);color:var(--color-danger)}.code-badge{background:var(--color-primary-soft);color:var(--color-primary);border-radius:var(--radius-sm);padding:3px 8px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.page{display:flex;flex-direction:column;gap:20px}.page__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.page__header h2{font-size:18px;font-weight:700}.page__header p{margin-top:4px;font-size:13px;color:var(--color-text-muted)}.page__state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:64px 24px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:14px}.filters{display:flex;flex-wrap:wrap;gap:12px}.filters__field{display:flex;flex-direction:column;gap:6px;min-width:180px}.filters__field .field__label{font-size:12px}.table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow-x:auto}.pager{display:flex;align-items:center;justify-content:center;gap:16px}.pager__page-size{min-width:0;flex-direction:row;align-items:center;gap:8px}.pager__info{font-size:13px;color:var(--color-text-muted)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{text-align:left;padding:12px 20px;white-space:nowrap}.table th{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-subtle);border-bottom:1px solid var(--color-border)}.table tbody tr{border-bottom:1px solid var(--color-border)}.table tbody tr:last-child{border-bottom:none}.table tbody tr:hover{background:var(--color-bg)}.table__muted{color:var(--color-text-muted)}.table__actions-col{width:1%;text-align:right}.table__actions{display:inline-flex;gap:8px}.confirm-text{font-size:14px;color:var(--color-text-muted);margin-bottom:16px}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .7s linear infinite}.spinner--muted{border-color:var(--color-border);border-top-color:var(--color-primary)}.spinner--lg{width:28px;height:28px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}
