:root{--primary: #2563eb;--primary-hover: #1d4ed8;--primary-pressed: #1e40af;--danger: #dc2626;--danger-hover: #b91c1c;--success: #16a34a;--warning: #d97706;--text: #1f2937;--text-2: #6b7280;--bg: #f3f4f6;--card: #ffffff;--border: #e5e7eb;--radius: 8px;--shadow: 0 1px 3px rgba(0,0,0,.1);--font: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--ui-fs-base: 14px;--ui-lh-base: 1.5;--sidebar-bg: #111827;--sidebar-logo: #ffffff;--sidebar-text: #d1d5db;--sidebar-title: #9ca3af;--sidebar-hover: #1f2937;--sidebar-border: transparent}html[data-ui-theme=contrast]{--sidebar-bg: #000000;--sidebar-text: #ffffff;--sidebar-title: #e5e7eb;--sidebar-hover: #1f2937;--text: #111827;--text-2: #4b5563;--border: #d1d5db;--bg: #eceff3}html[data-ui-theme=light]{--sidebar-bg: #ffffff;--sidebar-logo: #111827;--sidebar-text: #374151;--sidebar-title: #6b7280;--sidebar-hover: #f3f4f6;--sidebar-border: #e5e7eb}html[data-ui-theme=large]{--sidebar-bg: #000000;--sidebar-text: #ffffff;--sidebar-title: #e5e7eb;--sidebar-hover: #1f2937;--text: #111827;--text-2: #4b5563;--border: #cbd5e1;--bg: #eceff3;--ui-fs-base: 16px;--ui-lh-base: 1.7}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);color:var(--text);background:var(--bg);font-size:var(--ui-fs-base);line-height:var(--ui-lh-base)}a{color:var(--primary);text-decoration:none}h1,h2,h3,h4{font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:var(--radius);border:1px solid transparent;font-size:14px;cursor:pointer;transition:all .15s;line-height:1;white-space:nowrap}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-primary:active:not(:disabled){background:var(--primary-pressed)}.btn-ghost{background:#fff;color:var(--text);border-color:var(--border)}.btn-ghost:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-danger-ghost{background:#fff;color:var(--danger);border-color:var(--danger)}.btn-sm{padding:5px 10px;font-size:13px}.btn:disabled{background:#e5e7eb;color:#9ca3af;cursor:not-allowed;border-color:var(--border)}.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.6);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner-dark{border-color:#0003;border-top-color:var(--primary)}@keyframes spin{to{transform:rotate(360deg)}}.container{padding:20px}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.page-title{font-size:20px;font-weight:600}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left}.table th{background:#f9fafb;color:var(--text-2);font-weight:500}.table tr:hover td{background:#f9fafb}.input,.select,.textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-family:var(--font);outline:none;transition:border .15s;background:#fff}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary)}.input.invalid{border-color:var(--danger)}.error-text{color:var(--danger);font-size:12px}.field{margin-bottom:14px}.field label{display:block;margin-bottom:6px;color:var(--text-2);font-size:13px}.tag{padding:2px 8px;border-radius:12px;font-size:12px}.tag-green{background:#dcfce7;color:var(--success)}.tag-red{background:#fee2e2;color:var(--danger)}.tag-yellow{background:#fef3c7;color:var(--warning)}.tag-gray{background:#f3f4f6;color:var(--text-2)}.tag-blue{background:#dbeafe;color:var(--primary)}.toast-wrap{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px}.toast{padding:10px 18px;border-radius:var(--radius);color:#fff;box-shadow:var(--shadow);font-size:14px;animation:fadein .2s}.toast-success{background:var(--success)}.toast-error{background:var(--danger)}.toast-warning{background:var(--warning)}.toast-neutral{background:var(--text-2)}@keyframes fadein{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:12px;width:480px;max-width:90vw;max-height:85vh;display:flex;flex-direction:column}.modal-head{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-body{padding:20px;overflow-y:auto}.modal-foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border)}.tab{padding:10px 16px;cursor:pointer;color:var(--text-2);border-bottom:2px solid transparent}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.skeleton{background:linear-gradient(90deg,#eee 25%,#f5f5f5 37%,#eee 63%);background-size:400% 100%;animation:sk 1.4s infinite;border-radius:4px}@keyframes sk{0%{background-position:100% 50%}to{background-position:0 50%}}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.gap-8{gap:8px}.gap-16{gap:16px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.text-danger{color:var(--danger)}.text-success{color:var(--success)}.text-2{color:var(--text-2)}.c-red{color:var(--danger)}.cursor-pointer{cursor:pointer}.empty{text-align:center;color:var(--text-2);padding:40px 0}.float-toolbar{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--card);box-shadow:0 4px 16px #00000026;border-radius:10px;padding:10px 18px;display:flex;gap:12px;align-items:center;z-index:900}html[data-ui-theme=large] .btn{font-size:15px;padding:10px 18px}html[data-ui-theme=large] .btn-sm{font-size:14px;padding:7px 12px}html[data-ui-theme=large] .input,html[data-ui-theme=large] .select,html[data-ui-theme=large] .textarea{font-size:15px;padding:10px 12px}html[data-ui-theme=large] .table th,html[data-ui-theme=large] .table td{font-size:15px;padding:12px 14px}html[data-ui-theme=large] .page-title{font-size:23px}html[data-ui-theme=large] .field label{font-size:14px}html[data-ui-theme=large] .tag{font-size:13px}html[data-ui-theme=large] .tab{font-size:15px}html[data-ui-theme=large] .modal{width:560px}
