:root{--color-primary:#0a6cff;--color-primary-hover:#095edb;--color-primary-soft:#e8f1ff;--color-primary-soft-border:#bcd6ff;--gradient-brand:linear-gradient(135deg, #0a6cff 0%, #5b8cff 100%);--color-danger:#d93026;--color-danger-hover:#c22b21;--color-danger-soft:#fdeceb;--color-success:#1a7f37;--color-success-soft:#e6f4ea;--color-warning:#9a6700;--color-warning-soft:#fdf6e3;--color-bg:#fff;--color-bg-subtle:#f5f6f8;--color-bg-raised:#fff;--color-text:#1d2129;--color-text-secondary:#5f6672;--color-text-tertiary:#8a919c;--color-border:#e3e6ea;--color-border-strong:#cdd2d9;--shadow-xs:0 1px 2px #1018280a;--shadow-sm:0 1px 3px #1018280f, 0 1px 2px #1018280a;--shadow-md:0 4px 12px #10182814, 0 2px 4px #1018280a;--shadow-lg:0 12px 32px #1018281f, 0 4px 8px #1018280f;--radius-sm:6px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-lg:16px;--text-xl:18px;--text-2xl:22px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--dur-fast:.12s;--dur-base:.2s;--dur-slow:.28s;--z-sticky:20;--z-dialog:150;--z-toast:200}@media (prefers-color-scheme:dark){:root{--color-primary:#4d8dff;--color-primary-hover:#6ba1ff;--color-primary-soft:#1a2e4d;--color-primary-soft-border:#2b4a78;--gradient-brand:linear-gradient(135deg, #3b7bf0 0%, #6b9bff 100%);--color-danger:#ff6b60;--color-danger-hover:#ff857c;--color-danger-soft:#4a2320;--color-success:#4cc26a;--color-success-soft:#1e3a28;--color-warning:#e3b341;--color-warning-soft:#40351a;--color-bg:#111418;--color-bg-subtle:#1a1e25;--color-bg-raised:#1f242c;--color-text:#e8eaed;--color-text-secondary:#a8afba;--color-text-tertiary:#6f7783;--color-border:#2a303a;--color-border-strong:#3a4250;--shadow-xs:0 1px 2px #0000004d;--shadow-sm:0 1px 3px #0006, 0 1px 2px #0000004d;--shadow-md:0 4px 12px #00000073, 0 2px 4px #0000004d;--shadow-lg:0 12px 32px #0000008c, 0 4px 8px #0006}}*{box-sizing:border-box}html,body{background:var(--color-bg);color:var(--color-text);font-family:var(--font);font-size:var(--text-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;padding:0;line-height:1.6}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}.skip-link{background:var(--color-primary);color:#fff;padding:var(--space-2) var(--space-4);z-index:1000;border-radius:0 0 var(--radius) 0;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-shell header{z-index:var(--z-sticky);align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border);background:color-mix(in srgb, var(--color-bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);flex-wrap:wrap;display:flex;position:sticky;top:0}.app-shell .brand{align-items:center;gap:var(--space-2);font-size:var(--text-lg);letter-spacing:-.01em;color:var(--color-text);font-weight:700;display:flex}.app-shell .brand .brand-logo{border-radius:var(--radius);background:var(--gradient-brand);color:#fff;width:32px;height:32px;box-shadow:var(--shadow-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.app-shell .brand .brand-sub{font-size:var(--text-xs);color:var(--color-text-tertiary);letter-spacing:.02em;font-weight:400}.app-shell nav{gap:var(--space-1);flex-wrap:wrap;display:flex}.app-shell nav a{align-items:center;gap:var(--space-2);min-height:40px;padding:var(--space-1) var(--space-3);border-radius:var(--radius);color:var(--color-text-secondary);transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);font-weight:500;text-decoration:none;display:inline-flex}.app-shell nav a svg{flex-shrink:0;width:18px;height:18px}.app-shell nav a:hover{background:var(--color-bg-subtle);color:var(--color-text)}.app-shell nav a[aria-current=page]{background:var(--color-primary-soft);color:var(--color-primary);font-weight:600}.app-shell .spacer{flex:1}.app-shell main{padding:var(--space-6) var(--space-5);flex:1;width:100%;max-width:1160px;margin:0 auto}button{font:inherit;min-height:40px;padding:var(--space-2) var(--space-4);border-radius:var(--radius);border:1px solid var(--color-border-strong);background:var(--color-bg-raised);color:var(--color-text);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out)}button:hover:not(:disabled){background:var(--color-bg-subtle);border-color:var(--color-text-tertiary)}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--gradient-brand);color:#fff;box-shadow:var(--shadow-xs);border-color:#0000}button.primary:hover:not(:disabled){background:var(--gradient-brand);filter:brightness(1.06);box-shadow:var(--shadow-sm)}button.danger{background:var(--color-danger);color:#fff;border-color:#0000}button.danger:hover:not(:disabled){background:var(--color-danger-hover)}button.ghost{color:var(--color-text-secondary);background:0 0;border-color:#0000}button.ghost:hover:not(:disabled){background:var(--color-bg-subtle);color:var(--color-text)}button.link-like{min-height:0;color:var(--color-primary);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}button.link-like:hover{color:var(--color-primary-hover);background:0 0}.badge{font-size:var(--text-xs);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-weight:600;line-height:1.5;display:inline-flex}.badge svg{width:12px;height:12px}.badge-active{background:var(--color-success-soft);color:var(--color-success)}.badge-pending{background:var(--color-warning-soft);color:var(--color-warning)}.badge-error{background:var(--color-danger-soft);color:var(--color-danger)}.badge-neutral{background:var(--color-bg-subtle);color:var(--color-text-secondary)}.badge-info{background:var(--color-primary-soft);color:var(--color-primary)}label{margin-bottom:var(--space-1);font-weight:500;font-size:var(--text-sm);color:var(--color-text);display:block}input,select,textarea{font:inherit;width:100%;min-height:40px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius);background:var(--color-bg-raised);color:var(--color-text);transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out)}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}textarea{resize:vertical;min-height:88px}.form-field{margin-bottom:var(--space-4)}.form-actions{gap:var(--space-3);margin-top:var(--space-4);justify-content:flex-end;display:flex}.hint{color:var(--color-text-tertiary);font-size:var(--text-xs);margin-top:var(--space-1)}.table-wrap{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-raised);box-shadow:var(--shadow-xs);overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);vertical-align:middle}th{font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-tertiary);background:var(--color-bg-subtle);white-space:nowrap}tbody tr{transition:background var(--dur-fast) var(--ease-out)}tbody tr:hover{background:var(--color-bg-subtle)}tbody tr:last-child td{border-bottom:none}td .cell-secondary{font-size:var(--text-xs);color:var(--color-text-tertiary);font-family:var(--font-mono);display:block}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.page-header .page-title h2{font-size:var(--text-2xl);letter-spacing:-.02em;margin:0;font-weight:700}.page-header .page-title p{margin:var(--space-1) 0 0;color:var(--color-text-secondary);font-size:var(--text-sm)}.card{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);background:var(--color-bg-raised);box-shadow:var(--shadow-sm)}.alert-error{border:1px solid color-mix(in srgb, var(--color-danger) 40%, transparent);background:var(--color-danger-soft);color:var(--color-danger);border-radius:var(--radius);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-sm)}.alert-info{border:1px solid var(--color-primary-soft-border);background:var(--color-primary-soft);color:var(--color-primary);border-radius:var(--radius);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-sm)}.toast-region{bottom:var(--space-5);align-items:center;gap:var(--space-2);z-index:var(--z-toast);flex-direction:column;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{align-items:center;gap:var(--space-2);background:var(--color-text);color:var(--color-bg);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-lg);min-width:240px;max-width:480px;font-size:var(--text-sm);animation:toast-in var(--dur-base) var(--ease-out);display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.dialog-backdrop{padding:var(--space-4);z-index:var(--z-dialog);cursor:default;font:inherit;color:inherit;animation:fade-in var(--dur-fast) var(--ease-out);background:#00000073;border:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--color-bg-raised);border-radius:var(--radius-xl);padding:var(--space-5);width:100%;max-width:480px;max-height:90vh;box-shadow:var(--shadow-lg);animation:dialog-in var(--dur-base) var(--ease-out);overflow-y:auto}.dialog h3{margin:0 0 var(--space-4);font-size:var(--text-xl);letter-spacing:-.01em;font-weight:700}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-in{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.empty-state{text-align:center;padding:var(--space-7) var(--space-5);color:var(--color-text-secondary);background:var(--color-bg-subtle);border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg);font-size:var(--text-sm)}.empty-state .empty-icon{margin:0 auto var(--space-3);width:40px;height:40px;color:var(--color-text-tertiary);display:block}.skeleton{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-raised);padding:var(--space-4)}.skeleton-line{background:linear-gradient(90deg, var(--color-bg-subtle) 25%, var(--color-border) 50%, var(--color-bg-subtle) 75%);height:14px;margin-bottom:var(--space-3);background-size:200% 100%;border-radius:4px;animation:1.4s infinite shimmer}.skeleton-line:last-child{margin-bottom:0}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.row-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.row-actions button,.row-actions a{min-height:32px;padding:var(--space-1) var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-sm);align-items:center;gap:5px;text-decoration:none;display:inline-flex}.row-actions a{border:1px solid var(--color-border-strong);background:var(--color-bg-raised);color:var(--color-text);transition:background var(--dur-fast) var(--ease-out)}.row-actions a:hover{background:var(--color-bg-subtle);color:var(--color-primary)}.login-page{justify-content:center;align-items:center;gap:var(--space-5);min-height:100vh;padding:var(--space-5);background:radial-gradient(600px circle at 20% 10%, var(--color-primary-soft) 0%, transparent 60%), radial-gradient(500px circle at 85% 90%, color-mix(in srgb, var(--color-primary) 8%, transparent) 0%, transparent 55%), var(--color-bg);flex-direction:column;display:flex}.login-page .login-brand{align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;display:flex}.login-page .login-brand .logo{border-radius:var(--radius-xl);background:var(--gradient-brand);color:#fff;width:56px;height:56px;box-shadow:var(--shadow-md);justify-content:center;align-items:center;display:inline-flex}.login-page .login-brand h1{font-size:var(--text-2xl);letter-spacing:-.02em;margin:0;font-weight:700}.login-page .login-brand p{color:var(--color-text-secondary);font-size:var(--text-sm);margin:0}.login-form{width:100%;max-width:380px}.login-form .form-actions button{width:100%}.cell-strong{font-weight:600}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
