:root{--brand: #3b82f6;--brand-hover: #2563eb;--brand-soft: rgba(59, 130, 246, .12);--success: #10b981;--success-soft: rgba(16, 185, 129, .12);--warning: #f59e0b;--warning-soft: rgba(245, 158, 11, .12);--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .12);--radius-sm: 8px;--radius: 14px;--radius-lg: 20px;--gap: 16px;--nav-h: 60px;--header-h: 56px}:root,[data-theme=dark]{--bg: #0b1120;--bg-elevated: #111a2e;--surface: #16203a;--surface-hover: #1c2846;--border: rgba(148, 163, 184, .16);--border-strong: rgba(148, 163, 184, .28);--text: #f1f5f9;--text-secondary: #94a3b8;--text-tertiary: #64748b;--shadow: 0 4px 24px rgba(0, 0, 0, .28);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .4);--topbar-bg: rgba(11, 17, 32, .88);--nav-bg: rgba(17, 26, 46, .96);--toast-danger-text: #fecaca;--toast-success-text: #a7f3d0;color-scheme:dark}[data-theme=light]{--bg: #f4f6fb;--bg-elevated: #ffffff;--surface: #ffffff;--surface-hover: #f1f5f9;--border: rgba(15, 23, 42, .1);--border-strong: rgba(15, 23, 42, .18);--text: #0f172a;--text-secondary: #475569;--text-tertiary: #94a3b8;--shadow: 0 4px 20px rgba(15, 23, 42, .08);--shadow-lg: 0 12px 36px rgba(15, 23, 42, .14);--topbar-bg: rgba(255, 255, 255, .85);--nav-bg: rgba(255, 255, 255, .94);--toast-danger-text: #b91c1c;--toast-success-text: #047857;color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;min-height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background-color .2s ease,color .2s ease}.card,.data-item,.input,.toast{transition:background-color .2s ease,border-color .2s ease,color .2s ease}#app{min-height:100vh}a{color:var(--brand);text-decoration:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card-title{font-size:15px;font-weight:600;margin:0 0 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:0 18px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:15px;font-family:inherit;cursor:pointer;transition:all .16s ease;white-space:nowrap}.btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--brand)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:500}.btn-primary:hover:not(:disabled){background:var(--brand-hover);border-color:var(--brand-hover)}.btn-block{width:100%}.btn-sm{min-height:34px;padding:0 12px;font-size:13px}.field{margin-bottom:16px}.field-label{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:7px}.input{width:100%;min-height:44px;padding:0 14px;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);font-size:16px;font-family:inherit;outline:none;transition:border-color .16s ease}.input:focus{border-color:var(--brand)}.input::placeholder{color:var(--text-tertiary)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:500;line-height:1.5;white-space:nowrap}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--brand-soft);color:var(--brand)}.badge-muted{background:#94a3b824;color:var(--text-secondary)}.progress{height:8px;background:#94a3b829;border-radius:999px;overflow:hidden}.progress-bar{height:100%;border-radius:999px;background:var(--brand);transition:width .4s ease}.progress-bar.is-warning{background:var(--warning)}.progress-bar.is-danger{background:var(--danger)}.data-list{display:flex;flex-direction:column;gap:10px}.data-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.data-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 0;font-size:14px}.data-row-label{color:var(--text-secondary);flex-shrink:0}.data-row-value{text-align:right;word-break:break-all}.empty,.loading{padding:48px 20px;text-align:center;color:var(--text-tertiary);font-size:14px}.spinner{width:26px;height:26px;margin:0 auto 12px;border:2px solid var(--border-strong);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pager{display:flex;align-items:center;justify-content:center;gap:14px;padding:20px 0 4px;font-size:14px;color:var(--text-secondary)}.grid{display:grid;gap:var(--gap)}.grid-2{grid-template-columns:repeat(2,1fr)}.flex{display:flex}.flex-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.flex-center{display:flex;align-items:center;gap:8px}.flex-wrap{flex-wrap:wrap}.mt-16{margin-top:16px}.text-sm{font-size:13px}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.toast-wrap{position:fixed;top:calc(env(safe-area-inset-top,0px) + 14px);left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:8px;width:max-content;max-width:calc(100vw - 32px);pointer-events:none}.toast{padding:11px 18px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg);font-size:14px;animation:toast-in .22s ease}.toast.is-error{border-color:var(--danger);color:var(--toast-danger-text)}.toast.is-success{border-color:var(--success);color:var(--toast-success-text)}@keyframes toast-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media(min-width:768px){body,.input{font-size:14px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}}
